LocalIrpProcessing-Regelsatz (WDM)
Verwenden Sie diese Regeln, um zu überprüfen, ob Ihr Treiber E/A-Anforderungspakete (IRP) ordnungsgemäß verarbeitet, die vom Treiber erstellt werden.
In diesem Abschnitt
Thema | BESCHREIBUNG |
---|---|
Die IoAllocateComplete-Regel gibt an, dass ein Treiber IoCompleteRequest nicht aufrufen soll, wenn das IRP mit IoAllocateIrp erstellt wurde. |
|
Die IoAllocateFree-Regel gibt an, dass ein Treiber IoFreeIrp nur für IRPs verwenden soll, die zuvor IoAllocateIrp zugeordnet wurden. |
|
Die IoAllocateForward-Regel gibt an, dass der Treiber vor dem Aufrufen von IoCallDriver oder PoCallDriver eine Vervollständigungsroutine festlegen muss, wenn ein IRP durch einen Aufruf von IoAllocateIrp generiert wird. |
|
Die IoAllocateIrpSignalEventInCompletion-Regel gibt an, dass der Treiber KeSetEvent in der Abschlussroutine aufrufen soll, wenn das Flag Irp-PendingReturned> festgelegt ist und die Vervollständigungsroutine ein lokal erstelltes asynchrones IRP verarbeitet. |
|
Die IoAllocateIrpSignalEventInCompletion2-Regel gibt an, dass KeSetEvent in der Abschlussroutine aufgerufen werden muss, wenn das Irp-PendingReturned-Flag> festgelegt ist und die Vervollständigungsroutine ein lokal erstelltes asynchrones IRP verarbeitet. |
|
Die IoAllocateIrpSignalEventInCompletion3-Regel gibt an, dass KeSetEvent in der Abschlussroutine aufgerufen werden muss, wenn das Flag Irp-PendingReturned> festgelegt ist und die Abschlussroutine ein lokal erstelltes asynchrones IRP verarbeitet. |
|
Die IoAllocateIrpSignalEventInCompletionTimeout-Regel meldet einen Fehler, wenn erkannt wird, dass dieser Treiber unbegrenzt wartet, bis der niedrigere Treiber zurückkehrt, da das Ereignis des IRP in der Abschlussroutine signalisiert werden muss. |
|
Die IoBuildDeviceControlNoFree-Regel gibt an, dass ein Treiber, der IoBuildDeviceIoControlRequest aufruft, IoFreeIrp nicht aufrufen darf. |
|
Die IoBuildDeviceControlWait-Regel gibt an, dass die KeWaitForSingleObject-Routine aufgerufen werden soll, wenn IoCallDriver oder PoCallDriver STATUS_PENDING zurückgibt. |
|
Die IoBuildDeviceControlWaitTimeout-Regel meldet einen Fehler, wenn erkannt wird, dass dieser Treiber unbegrenzt wartet, bis der niedrigere Treiber zurückkehrt, da das Ereignis des IRP in der Abschlussroutine signalisiert werden muss. |
|
Die IoBuildDeviceIoControlSetEvent-Regel gibt an, dass ein Treiber, der IoBuildDeviceIoControlRequest aufruft, KeSetEvent nicht aufrufen darf, wenn der Treiber einen Zeiger auf ein vom Aufrufer zugeordnetes und initialisiertes Ereignisobjekt bereitstellt. Das KeSetEvent muss nicht vom Treiber für dieses IRP aufgerufen werden. |
|
Die IoBuildFsdComplete-Regel gibt an, dass ein Treiber IoCompleteRequest nicht aufrufen soll, wenn das IRP mit IoBuildAsynchronousFsdRequest erstellt wurde. |
|
Die IoBuildFsdForward-Regel gibt an, dass eine Vervollständigungsroutine festgelegt werden muss, bevor ein Treiber IoCallDriver oder PoCallDriver aufruft, wenn die IRP durch einen Aufruf von IoBuildAsynchronousFsdRequest generiert wird. |
|
Die IoBuildFsdFree-Regel gibt an, dass ein Treiber IoFreeIrp nur für IRPs verwenden soll, die er zuvor IoBuildAsynchronousFsdRequest zugeordnet hat. |
|
Die IoBuildFsdIrpSignalEventInCompletion-Regel gibt an, dass der Treiber KeSetEvent in der Abschlussroutine aufrufen soll, wenn das Flag Irp-PendingReturned> festgelegt ist und die Abschlussroutine ein lokal erstelltes asynchrones IRP verarbeitet. |
|
Die IoBuildFsdIrpSignalEventInCompletion2-Regel gibt an, dass KeSetEvent in der Abschlussroutine aufgerufen werden muss, wenn das Flag Irp-PendingReturned> festgelegt ist und die Abschlussroutine ein lokal erstelltes asynchrones IRP verarbeitet. |
|
Die IoBuildFsdIrpSignalEventInCompletion3-Regel gibt an, dass KeSetEvent in der Abschlussroutine aufgerufen werden muss, wenn das Flag Irp-PendingReturned> festgelegt ist und die Vervollständigungsroutine ein lokal erstelltes asynchrones IRP verarbeitet. |
|
Die IoBuildFsdIrpSignalEventInCompletionTimeout-Regel meldet einen Fehler, wenn der Treiber unbegrenzt wartet, bis der niedrigere Treiber zurückkehrt, da das Ereignis des IRP in der Abschlussroutine signalisiert werden muss. |
|
Die Regel IoBuildSynchronousFsdRequestNoFree gibt an, dass ein Treiber, der IoBuildSynchronousFsdRequest aufruft, IoFreeIrp nicht aufrufen darf. |
|
Die IoBuildSynchronousFsdRequestWait-Regel gibt an, dass KeWaitForSingleObject für den Fall aufgerufen werden soll, dass IoCallDriver oder PoCallDriver STATUS_PENDING zurückgibt. |
|
Die IoBuildSynchronousFsdRequestWaitTimeout-Regel meldet einen Fehler, wenn erkannt wird, dass dieser Treiber unbegrenzt wartet, bis der niedrigere Treiber zurückkehrt, da das Ereignis des IRP in der Abschlussroutine signalisiert werden muss. |
|
Die RequestedPowerIrp-Regel gibt an, dass der Treiber PoRequestPowerIrp aufruft , wobei die |
So wählen Sie den Regelsatz LocalIrpProcessing aus
Wählen Sie Ihr Treiberprojekt (VCXProj) in Microsoft Visual Studio aus. Klicken Sie im Menü Treiber auf Statische Treiberüberprüfung starten....
Klicken Sie auf die Registerkarte Regeln . Wählen Sie unter Regelsätzedie Option LocalIrpProcessing aus.
Um den Standardregelsatz aus einem Visual Studio-Entwicklereingabeaufforderungsfenster auszuwählen, geben Sie LocalIrpProcessing.sdv mit der Option /check an. Beispiel:
msbuild /t:sdv /p:Inputs="/check:LocalIrpProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Weitere Informationen finden Sie unter Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).