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 :
- SmartcardInitialize (WDM) pour terminer l’initialisation du pilote. L’appel de cette routine dans AddDevice est obligatoire.
- SmartcardLogError (WDM) pour enregistrer une erreur. Les pilotes doivent appeler cette routine dans AddDevice si SmartcardInitialize (WDM) échoue.
- Carte à puceCreateLink (WDM) pour créer un lien symbolique pour l’appareil lecteur dans le registre.
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 -> DeviceExtension;
return SmartcardDeviceControl(
&(deviceExtension->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.