Partager via


Pilote de lecteur WDM

Routines requises

Les routines suivantes sont requises par un pilote de lecteur WDM.

DriverEntry

Initialise l’objet driver et la table dispatch.

AddDevice

Crée un objet d’appareil pour le lecteur smart carte. En outre, AddDevice peut appeler l’une des routines de bibliothèque de pilotes suivantes :

Décharger

Supprime le pilote du système.

DispatchCreate

-et-

DispatchClose

Prend en charge IRP_MJ_CREATE et IRP_MJ_CLOSE<, respectivement. Pour établir une connexion au lecteur, le gestionnaire de ressources envoie IRP_MJ_CREATE au pilote de lecteur. Pour rompre la connexion, le gestionnaire de ressources envoie IRP_MJ_CLOSE.

DispatchCleanup

Prend en charge IRP_MJ_CLEANUP, que le gestionnaire de ressources envoie au pilote de lecteur pour annuler les demandes d’E/S en attente.

DispatchPnP

Prend en charge IRP_MJ_PNP

DispatchPower

Prend en charge IRP_MJ_POWER.

DispatchDeviceControl

Prend en charge IRP_MJ_DEVICE_CONTROL et est le point d’entrée le main pour les demandes de carte intelligentes. Lors de la réception de IRP_MJ_DEVICE_CONTROL, DispatchDeviceControl doit immédiatement appeler SmartcardDeviceControl (WDM), qui est la routine de bibliothèque de pilotes smart carte qui gère les demandes de contrôle d’appareil. L’exemple de code suivant montre comment appeler cette routine de bibliothèque à partir d’un pilote WDM :

NTSTATUS
DriverDeviceControl(
    PDEVICE_OBJECT DeviceObject,
    PIRP Irp
    )
{
    PDEVICE_EXTENSION deviceExtension = DeviceObject -&gt; DeviceExtension;

    return SmartcardDeviceControl(
        &(deviceExtension-&gt;SmartcardExtension),
        Irp
        );

S’il ne parvient pas à gérer le IOCTL particulier indiqué dans l’appel, SmartcardDeviceControl appelle le rappel du pilote pour les demandes IOCTL inconnues.