Gestion d’un IRP que l’infrastructure ne prend pas en charge

[S’applique à KMDF uniquement]

L’infrastructure ne prend pas en charge les demandes d’E/S qui ont les codes IRP principaux suivants :

Si l’infrastructure reçoit un IRP qui contient l’un de ces codes de fonction d’E/S, l’infrastructure ne traite pas l’IRP. Si votre pilote est un pilote de filtre, l’infrastructure transmet l’IRP au pilote inférieur suivant dans la pile de pilotes. Si votre pilote n’est pas un pilote de filtre, l’infrastructure appelle IoCompleteRequest pour terminer l’IRP avec une valeur status de STATUS_INVALID_DEVICE_REQUEST.

Si votre pilote doit gérer les IRP qui contiennent l’un de ces codes de fonction d’E/S, il doit appeler WdfDeviceInitAssignWdmIrpPreprocessCallback pour inscrire une fonction de rappel d’événement EvtDeviceWdmIrpPreprocess pour un code de fonction d’E/S.

Lorsque le pilote reçoit un IRP qui contient un code de fonction d’E/S pour lequel le pilote a inscrit une fonction de rappel EvtDeviceWdmIrpPreprocess , l’infrastructure transmet l’IRP à la fonction de rappel. La fonction de rappel doit ensuite traiter l’IRP en suivant les règles WDM pour la gestion des IRP. Le pilote doit appeler IoCompleteRequest pour terminer l’IRP, ou il doit appeler IoCallDriver pour passer l’IRP au pilote inférieur suivant.

Pour obtenir un exemple de fonction de rappel EvtDeviceWdmIrpPreprocess qui gère un IRP que l’infrastructure ne prend pas en charge, consultez l’exemple de pilote série .