Condividi tramite


Set di regole di avviso (KMDF)

Usare queste regole per verificare che il driver possa elaborare correttamente i runtime di integrazione in vari contesti e seguire le procedure consigliate da Microsoft.

Contenuto della sezione

Argomento Descrizione

DeferredRequestCompleted

La regola DeferredRequestCompleted specifica che se una richiesta di I/O presentata alla coda di I/O predefinita di un driver non viene completata nella funzione di callback, ma viene posticipata per un'elaborazione successiva, la richiesta deve essere completata in una funzione di callback di elaborazione posticipata, a meno che la richiesta non venga inoltrata e recapitata al framework o a meno che non venga chiamato il metodo WdfRequestStopAcknowledge .

DriverAttributeChanged

La regola DriverAttributeChanged specifica che un driver non deve modificare il livello di esecuzione o l'ambito di sincronizzazione di un driver KMDF.

DrvAckIoStop

La regola DrvAckIoStop verifica che il driver sia a conoscenza delle richieste in sospeso mentre la coda gestita dall'alimentazione viene spenta e il driver riconosce, completa o annulla di conseguenza le richieste in sospeso. Nel caso di richieste di I/O autogestito, il driver deve anche gestire correttamente queste richieste dalla relativa funzione EvtDeviceSelfManagedIoSuspend . Un driver che non riesce a gestire queste richieste durante un'alimentazione causa il controllo bug 0x9F: DRIVER_POWER_STATE_FAILURE.

EvtIoResumeGetParam

La regola EvtIoResumeGetParam specifica che WdfRequestGetParameters non viene chiamato all'interno della funzione di callback EvtIoResumeGetParam .

EvtIoStopGetParam

La regola EvtIoStopGetParam controlla che WdfRequestGetParameters non venga chiamato all'interno del callback EvtIoStop .

EvtIoStopResume

La regola EvtIoStopResume specifica che se un driver registra una funzione di callback EvtIoStop e quindi chiama WdfRequestStopAcknowledge con il parametro Requeue uguale a FALSE, il driver deve registrare una funzione di callback EvtIoResume . Il framework recapita le richieste alla funzione di callback EvtIoResume quando il dispositivo entra nuovamente nello stato D0.

EvtSurpriseRemoveNoRequestComplete

La regola EvtSurpriseRemoveNoRequestComplete specifica che i driver WDF non devono completare le richieste dal callback EvtDeviceSurpriseRemoval , ma devono essere usate le funzioni di callback di I/O autogestito. Il callback EvtDeviceSurpriseRemoval non è sincronizzato con il percorso di spegnimento.

FDOPowerPolicyOwnerAPI

La regola FDOPowerPolicyOwnerAPI specifica che se un driver FDO abbandona la proprietà dei criteri di risparmio energia, i metodi WdfDeviceInitSetPowerPolicyEventCallbacks, WdfDeviceAssignS0IdleSettings e WdfDeviceAssignSxWakeSettings possono essere chiamati solo nei percorsi di esecuzione in cui il driver è un proprietario dei criteri di alimentazione. SDV genera un avviso per questa regola.

NoCancelFromEvtSurpriseRemove

La regola NoCancelFromEvtSurpriseRemove specifica che i driver WDF non devono annullare le richieste dalla funzione di callback EvtDeviceSurpriseRemoval . È invece necessario usare le funzioni di callback di I/O autogestte. La funzione di callback EvtDeviceSurpriseRemoval non è sincronizzata con il percorso di accensione.

PagedCodeAtD0

La regola PagedCodeAtD0 specifica che un driver non deve contrassegnare il codice come impaginabile all'interno di funzioni di callback presenti nel percorso del codice di alimentazione.

ParentObjectCheck

La regola ParentObjectCheck specifica che il driver deve chiamare WdfMemoryCreate specificando un oggetto padre usando una struttura WDF_OBJECT_ATTRIBUTES . Se il driver non imposta un oggetto padre per l'oggetto memoria framework, il framework imposta il driver come padre predefinito, in modo che, a meno che il driver non elimini in modo esplicito l'oggetto memoria framework rimarrà nella memoria fino a quando l'oggetto driver non viene scaricato.

ReqNotCanceledLocal

La regola ReqNotCanceledLocal specifica che se una richiesta contrassegnata come annullabile viene completata in una funzione di callback di coda I/O predefinita, il metodo WdfRequestUnmarkCancelable deve essere chiamato sulla richiesta di I/O prima del completamento. La richiesta di I/O deve essere completata, a meno che la richiesta non venga annullata prima di chiamare WdfRequestUnmarkCancelable.

ReqSendFail

La regola ReqSendFail specifica che un driver deve impostare lo stato di completamento corretto nei casi in cui il metodo WdfRequestSend potrebbe non riuscire.

RequestCompletedLocal

La regola RequestCompletedLocal specifica che se una richiesta di I/O non viene completata nelle funzioni di callback EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl e EvtIoInternalDeviceControl e se WdfRequestMarkCancelable non è stato chiamato nella richiesta all'interno della funzione di callback, potrebbe verificarsi un problema con il completamento della richiesta nel codice del driver.

RequestForUrbXrb

Se il driver client chiama WdfUsbTargetDeviceCreateWithParameters e specifica la versione del contratto client USBD_CLIENT_CONTRACT_VERSION_602 nella struttura di WDF_USB_DEVICE_CREATE_CONFIG (per usare le nuove funzionalità dello stack di driver USB per Windows 8), le DDI che usano un contesto DI BILANCIAMENTo internamente userebbero solo se si applica una delle condizioni preliminari seguenti:

SyncReqSend

La regola SyncReqSend specifica che tutte le richieste di invio sincrone vengono eseguite usando metodi di interfaccia del driver del dispositivo KMDF specifici della funzione sincrona e che i metodi hanno un valore di timeout diverso da zero impostato.

SyncReqSend2

La regola SyncReqSend2 specifica che le richieste sincrone inviate hanno un valore di timeout diverso da zero impostato.

Per selezionare il set di regole di avviso

  1. Selezionare il progetto driver (con estensione vcxProj) in Microsoft Visual Studio. Dal menu Driver fare clic su Launch Static Driver Verifier....From the Driver menu, click Launch Static Driver Verifier....

  2. Fare clic sulla scheda Regole . In Set di regole selezionare Avviso.

    Per selezionare il set di regole predefinito da una finestra del prompt dei comandi per gli sviluppatori di Visual Studio, specificare Warning.sdv con l'opzione /check . Ad esempio:

    msbuild /t:sdv /p:Inputs="/check:Warning.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Per altre informazioni, vedere Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).