Responsabilités requises de DriverEntry
Les responsabilités ordonnées requises d’une routine DriverEntry sont les suivantes :
Points d’entrée pour les routines standard du conducteur.
Le pilote stocke des points d’entrée pour un grand nombre de ses routines standard dans l’objet pilote ou l’extension du pilote. Ces points d’entrée incluent ceux pour la routine AddDevice du pilote, les routines de répartition, la routine StartIo et la routine de déchargement . Par exemple, un pilote définit les points d’entrée de ses routines AddDevice, DispatchPnP et DispatchPower avec des instructions comme celles-ci (Xxx est un espace réservé pour un préfixe fourni par le fournisseur identifiant le pilote) :
: DriverObject->DriverExtension->AddDevice = XxxAddDevice; DriverObject->MajorFunction[IRP_MJ_PNP] = XxxDispatchPnp; DriverObject->MajorFunction[IRP_MJ_POWER] = XxxDispatchPower; :
D’autres routines standard, telles que les routines ISR ou IoCompletion , sont spécifiées en appelant des routines de support système. Pour plus d’informations, consultez les descriptions des routines de pilotes standard individuelles.
Créez et/ou initialisez différents objets, types ou ressources à l’échelle du pilote. Notez que la plupart des routines standard utilisent des objets par appareil. Les pilotes doivent donc configurer ces objets dans leurs routines AddDevice ou après avoir reçu une demande IRP_MN_START_DEVICE .
Si le pilote a un thread dédié à l’appareil ou attend sur des objets de répartiteur définis par le noyau, la routine DriverEntry peut initialiser des objets de répartiteur de noyau. (Selon la façon dont le pilote utilise le ou les objets, il peut effectuer cette tâche dans sa routine AddDevice ou après avoir reçu une demande de IRP_MN_START_DEVICE .)
Libérez toute la mémoire allouée et n’est plus nécessaire.
Retournez NTSTATUS indiquant si le pilote a correctement chargé et peut accepter et traiter les demandes du gestionnaire PnP pour configurer, ajouter et démarrer ses appareils. (Voir Valeurs de retour DriverEntry.)