Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Gebruik deze regels om te controleren of uw stuurprogramma I/O-aanvraagpakketten (IRP) correct voltooit of annuleert.
In deze sectie
| Onderwerp | Beschrijving |
|---|---|
De regel ChangeQueueState geeft aan dat het WDF-stuurprogramma niet probeert de status van de wachtrij te wijzigen van gelijktijdige threads of dat de status van het wijzigen van DDIs's niet na elkaar wordt aangeroepen vanuit dezelfde thread. Callbackfuncties voor wachtrijstatussen zijn WdfIoQueueStop, WdfIoQueueStopSynchronously, WdfIoQueuePurge, WdfIoQueuePurgeSynchronously, WdfIoQueueDrain, WdfIoQueueDrainSynchronously, WdfIoQueueStopAndPurge en WdfIoQueueStopAndPurgeSynchronously. Als deze DDIS's worden aangeroepen wanneer er al een statuswijziging in de wachtrij wordt uitgevoerd, zal dit ertoe leiden dat een computer vastloopt of niet meer reageert. |
|
De regel CompleteCanceledReq geeft aan dat als de aanvraag al is geannuleerd, de aanvraag niet meer geldig is en het stuurprogramma deze niet mag voltooien. Terwijl het stuurprogramma een aanvraag verwijdert die eerder is gemarkeerd als geannuleerd, moet het controleren of de aanvraag nog niet is geannuleerd. Als het stuurprogramma deze controle niet doet, kan het stuurprogramma een aanvraag voltooien die is vrijgemaakt. |
|
DoubleCompletion |
De DoubleCompletion-regel geeft aan dat stuurprogramma's een I/O-aanvraag niet twee keer moeten voltooien. De volgende methoden mogen niet tweemaal in een rij worden aangeroepen voor dezelfde aanvraag: WdfRequestComplete, WdfRequestCompleteWithInformation, WdfRequestCompleteWithPriorityBoost. |
De DoubleCompletionLocal-regel geeft aan dat stuurprogramma's geen I/O-aanvraag twee keer mogen voltooien. |
|
De regel EvtIoStopCancel geeft aan dat het stuurprogramma binnen de functie EvtIoStop callback een van de volgende methoden aanroept voor I/O-aanvragen die niet kunnen worden geannuleerd. |
|
De regel EvtIoStopCompleteOrStopAck geeft aan dat het stuurprogramma binnen de functie EvtIoStop callback een van de volgende methoden aanroept voor elke I/O-aanvraag die wordt gepresenteerd door het framework. Als dit niet gebeurt, kan het stuurprogramma verhinderen dat het systeem een andere lagere energiestatus invoert. |
|
De regel EvtSurpriseRemoveNoSuspendQueue geeft aan dat WDF-stuurprogramma's de wachtrij niet mogen afhandelen, stoppen of leegmaken via de EvtDeviceSurpriseRemoval callbackfunctie, maar in plaats daarvan gebruik moeten maken van zelfbeheerde I/O callbackfuncties. De callback-functie EvtDeviceSurpriseRemoval wordt niet gesynchroniseerd met het uitschakeltraject. |
|
De fileObjectConfigured-regel geeft aan dat een aanroep naar de methode WdfRequestGetFileObject wordt voorafgegaan door een aanroep naar WdfDeviceInitSetFileObjectConfig. |
|
De regel InternalIoctlReqs geeft aan dat interne IOCTL-aanvragen niet worden doorgegeven aan ongepaste INTERFACES voor KMDF-aanvragen verzenden van apparaatstuurprogramma's (DDIs). |
|
De regel InvalidReqAccess geeft aan dat aanvragen niet worden geopend nadat ze zijn voltooid of geannuleerd. Deze regel kan overlappen met andere regels, zoals regels die controleren op dubbele voltooiing of regels die controleren op aanvragen, zijn twee keer gemarkeerd als geannuleerd. |
|
De regel InvalidReqAccessLocal geeft aan dat lokaal gemaakte aanvragen niet worden geopend nadat ze zijn voltooid of geannuleerd. Deze regel kan overlappen met andere regels, zoals regels die controleren op dubbele voltooiing of regels die controleren op aanvragen, zijn twee keer gemarkeerd als geannuleerd. |
|
De regel IoctlReqs geeft aan dat IOCTL-aanvragen niet mogen worden doorgegeven aan ongepaste KMDF-verzoek- of stuurprogrammainterfaces (DDIs) voor apparaten. |
|
De MarkCancOnCancReqLocal-regel geeft aan dat de methode WdfRequestMarkCancelable niet twee opeenvolgende keren kan worden aangeroepen voor dezelfde I/O-aanvraag. |
|
De regel NoIoQueuePurgeSynchronously controleert of WDF-stuurprogramma's de WdfIoQueueStopSynchronously, WdfIoQueueDrainSynchronously, WdfIoQueueStopAndPurgeSynchronously, of WdfIoQueuePurgeSynchronously functies niet aanroepen vanuit de volgende EvtIO-queue object event-callbackfuncties: |
|
De OutputBufferAPI-regel geeft aan dat de juiste DDIs's voor het ophalen van buffers worden gebruikt in de functie EvtIoWrite callback. Binnen de callback-functie EvtIoWrite kunnen de volgende DDI's niet worden aangeroepen voor het ophalen van buffers: |
|
De regel ReadReqs geeft aan dat leesaanvragen niet worden doorgegeven aan ongepaste KMDF-methoden. |
|
De regel ReqCompletionRoutine geeft aan dat een voltooiingsroutine moet worden ingesteld voordat een aanvraag naar een I/O-doel wordt verzonden. |
|
De regel ReqDelete geeft aan dat door het stuurprogramma gemaakte aanvragen niet worden doorgegeven aan WdfRequestCompleteXxx-functies . In plaats daarvan moet de aanvraag na voltooiing worden verwijderd. |
|
De reqIsCancOnCancReq-regel geeft aan dat de methode WdfRequestIsCanceled alleen kan worden aangeroepen op een aanvraag die niet is gemarkeerd als geannuleerd. |
|
De regel ReqMarkCancelableSend geeft aan dat aanvragen die door het stuurprogramma worden doorgestuurd, niet zijn gemarkeerd als geannuleerd door WdfRequestMarkCancelable aan te roepen. |
|
De regel DeferredRequestCompleted geeft aan dat voor een niet-filterstuurprogramma elke aanvraag die wordt gepresenteerd aan de standaard I/O-wachtrij van het stuurprogramma moet worden voltooid, tenzij de aanvraag wordt uitgesteld of doorgestuurd, of als WdfRequestStopAcknowledge wordt aangeroepen. |
|
De regel RequestFormattedValid geeft aan dat het stuurprogramma alle aanvragen formatteert, met uitzondering van een WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET aanvraag, voordat deze naar een I/O-doel wordt verzonden. |
|
De requestGetStatusValid-regel die aangeeft dat WdfRequestGetStatus moet worden aangeroepen voor een aanvraag in een van de volgende situaties:
|
|
Met de regel RequestSendAndForgetNoFormatting wordt gecontroleerd of het stuurprogramma een aanvraag niet formatteert met de I/O-doelopmaakfuncties voordat deze wordt verzonden naar een I/O-doel met de verzendoptie WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET. |
|
De regel RequestSendAndForgetNoFormatting2 controleert of het stuurprogramma geen verzoek formatteert met behulp van de I/O-target opmaakfuncties voordat het naar een I/O-doel wordt verzonden met de optie WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET. |
|
De StopAckWithinEvtIoStop-regel geeft aan dat de functie WdfRequestStopAcknowledge alleen wordt aangeroepen vanuit de functie EvtIoStop callback. |
|
De regel WdfIoQueueFindRequestFailed geeft aan dat WdfIoQueueRetrieveFoundRequest of WdfObjectDereference alleen moet worden aangeroepen nadat WdfIoQueueFindRequestFailed STATUS_SUCCESS retourneert . |
|
De WdfIoQueueRetrieveFoundRequest-regel geeft aan dat de methode WdfIoQueueRetrieveFoundRequest alleen wordt aangeroepen nadat WdfIoQueueFindRequest wordt aangeroepen en geretourneerd STATUS_SUCCESS en er geen WdfObjectDereference wordt aangeroepen voor dezelfde aanvraag. |
|
De WdfIoQueueRetrieveNextRequest-regel geeft aan dat WdfIoQueueRetrieveNextRequest niet wordt aangeroepen nadat WdfIoQueueFindRequest is aangeroepen. |
|
De regel WriteReqs geeft aan dat een schrijfaanvraag niet wordt doorgegeven aan ongepaste KMDF-methoden. |
De regelset RequestProcessing selecteren
Selecteer uw stuurprogrammaproject (.vcxProj) in Microsoft Visual Studio. Klik in het Stuurprogramma menu op Statische stuurprogrammaverificatie starten….
Klik op het tabblad Regels . Selecteer onder Regelsetsde optie RequestProcessing.
Als u de standaardregelset wilt selecteren in een opdrachtpromptvenster voor Visual Studio-ontwikkelaars, geeft u RequestProcessing.sdv op met de optie /check . Voorbeeld:
msbuild /t:sdv /p:Inputs="/check:RequestProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32Voor meer informatie, zie Static Driver Verifier gebruiken om defecten te vinden in stuurprogramma's en Static Driver Verifier-opdrachten (MSBuild).