Ensemble de règles LocalIrpProcessing (WDM)
Utilisez ces règles pour vérifier que votre pilote gère correctement les paquets de demandes d’E/S (IRP) créés par le pilote.
Contenu de cette section
Rubrique | Description |
---|---|
La règle IoAllocateComplete spécifie qu’un pilote ne doit pas appeler IoCompleteRequest si l’IRP a été créé avec IoAllocateIrp. |
|
La règle IoAllocateFree spécifie qu’un pilote doit utiliser IoFreeIrp uniquement sur les irPs précédemment alloués avec IoAllocateIrp. |
|
La règle IoAllocateForward spécifie que si un IRP est généré par un appel à IoAllocateIrp, le pilote doit définir une routine d’achèvement avant d’appeler IoCallDriver ou PoCallDriver. |
|
La règle IoAllocateIrpSignalEventInCompletion spécifie que le pilote doit appeler KeSetEvent dans la routine d’achèvement lorsque l’indicateur Irp-PendingReturned> est défini et que la routine d’achèvement traite une IRP asynchrone créée localement. |
|
La règle IoAllocateIrpSignalEventInCompletion2 spécifie que KeSetEvent doit être appelé dans la routine d’achèvement lorsque l’indicateur Irp-PendingReturned> est défini et que la routine d’achèvement traite un IRP asynchrone créé localement. |
|
La règle IoAllocateIrpSignalEventInCompletion3 spécifie que KeSetEvent doit être appelé dans la routine d’achèvement lorsque l’indicateur Irp-PendingReturned> est défini et que la routine d’achèvement traite un IRP asynchrone créé localement. |
|
La règle IoAllocateIrpSignalEventInCompletionTimeout signale un défaut si elle détecte que ce pilote attendra indéfiniment le retour du pilote inférieur, car l’événement de l’IRP doit être signalé dans la routine d’achèvement. |
|
La règle IoBuildDeviceControlNoFree spécifie qu’un pilote qui appelle IoBuildDeviceIoControlRequest ne doit pas appeler IoFreeIrp. |
|
La règle IoBuildDeviceControlWait spécifie que la routine KeWaitForSingleObject doit être appelée si IoCallDriver ou PoCallDriver retourne STATUS_PENDING. |
|
La règle IoBuildDeviceControlWaitTimeout signale un défaut si elle détecte que ce pilote attendra indéfiniment le retour du pilote inférieur, car l’événement de l’IRP doit être signalé dans la routine d’achèvement. |
|
La règle IoBuildDeviceIoControlSetEvent spécifie qu’un pilote qui appelle IoBuildDeviceIoControlRequest ne doit pas appeler KeSetEvent si le pilote fournit un pointeur vers un objet d’événement alloué et initialisé par l’appelant. Le KeSetEvent n’a pas besoin d’être appelé par le pilote pour cette IRP. |
|
La règle IoBuildFsdComplete spécifie qu’un pilote ne doit pas appeler IoCompleteRequest si l’IRP a été créé avec IoBuildAsynchronousFsdRequest. |
|
La règle IoBuildFsdForward spécifie qu’une routine d’achèvement doit être définie avant qu’un pilote appelle IoCallDriver ou PoCallDriver si l’IRP est généré par un appel à IoBuildAsynchronousFsdRequest. |
|
La règle IoBuildFsdFree spécifie qu’un pilote doit utiliser IoFreeIrp uniquement sur les IRP qu’il a précédemment alloués avec IoBuildAsynchronousFsdRequest. |
|
La règle IoBuildFsdIrpSignalEventInCompletion spécifie que le pilote doit appeler KeSetEvent dans la routine d’achèvement lorsque l’indicateur Irp-PendingReturned> est défini et que la routine d’achèvement traite une IRP asynchrone créée localement. |
|
La règle IoBuildFsdIrpSignalEventInCompletion2 spécifie que KeSetEvent doit être appelé dans la routine d’achèvement lorsque l’indicateur Irp-PendingReturned> est défini et que la routine d’achèvement traite un IRP asynchrone créé localement. |
|
La règle IoBuildFsdIrpSignalEventInCompletion3 spécifie que KeSetEvent doit être appelé dans la routine d’achèvement lorsque l’indicateur Irp-PendingReturned> est défini et que la routine d’achèvement traite un IRP asynchrone créé localement. |
|
La règle IoBuildFsdIrpSignalEventInCompletionTimeout signale un défaut lorsque le pilote attend indéfiniment le retour du pilote inférieur, car l’événement de l’IRP doit être signalé dans la routine d’achèvement. |
|
La règle IoBuildSynchronousFsdRequestNoFree spécifie qu’un pilote qui appelle IoBuildSynchronousFsdRequest ne doit pas appeler IoFreeIrp. |
|
La règle IoBuildSynchronousFsdRequestWait spécifie que KeWaitForSingleObject doit être appelé dans le cas où IoCallDriver ou PoCallDriver retourne STATUS_PENDING. |
|
La règle IoBuildSynchronousFsdRequestWaitTimeout signale un défaut si elle détecte que ce pilote attendra indéfiniment le retour du pilote inférieur, car l’événement IRP doit être signalé dans la routine d’achèvement. |
|
La règle RequestedPowerIrp spécifie que le pilote appelle PoRequestPowerIrp avec la variable de |
Pour sélectionner l’ensemble de règles LocalIrpProcessing
Sélectionnez votre projet de pilote (.vcxProj) dans Microsoft Visual Studio. Dans le menu Pilote , cliquez sur Lancer le vérificateur de pilote statique....
Cliquez sur l’onglet Règles . Sous Ensembles de règles, sélectionnez LocalIrpProcessing.
Pour sélectionner l’ensemble de règles par défaut dans une fenêtre d’invite de commandes du développeur Visual Studio, spécifiez LocalIrpProcessing.sdv avec l’option /case activée. Par exemple :
msbuild /t:sdv /p:Inputs="/check:LocalIrpProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Pour plus d’informations, consultez Utilisation du vérificateur de pilote statique pour rechercher des défauts dans les pilotes et commandes msBuild (Static Driver Verifier).