Regola KsInvalidStreamPointer (ks)
La regola KsInvalidStreamPointer verifica se un driver miniport KS fornisce un puntatore di flusso KS valido come argomento di funzione. Le violazioni tipiche sono causate da una gestione errata del puntatore o da un danneggiamento del puntatore causato da un uso errato della memoria.
Un puntatore di flusso valido è un puntatore di flusso iniziale o finale o un puntatore di flusso clonato tramite KsStreamPointerClone. Per altre informazioni, vedere Puntatori di flusso perimetrali iniziali e finali.
Questa regola verifica inoltre che KsStreamPointerDelete non sia stato usato per tentare di eliminare un puntatore di flusso non clonato.
Modello di driver: KS
Controllo bug trovato con questa regola: Controllo bug 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)
Esempio
Il codice seguente viola questa regola.
PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);
//
// ERROR: KsStreamPointerDelete can only be called on clone stream pointers.
//
KsStreamPointerDelete (StreamPointer);
Questo codice viola anche la regola.
KsStreamPointerDelete (NULL);
Come eseguire il test
In fase di esecuzione |
---|
Per verificare questa regola, aprire una finestra del prompt dei comandi. Immettere un comando Driver Verifier e specificare /domain ks. Ad esempio: Per altre informazioni, vedere Driver Verifier. |
verifier /domain ks [opzioni] /driver <yourdriver>
In fase di esecuzione |
---|
Eseguire Driver Verifier e selezionare l'opzione di controllo della conformità DDI. |
Si applica a
KsStreamPointerDelete
KsStreamPointerAdvance
KsStreamPointerAdvanceOffsetsAndUnlock
KsStreamPointerCancelTimeout
KsStreamPointerGetIrp
KsStreamPointerGetMdl
KsStreamPointerGetNextClone
KsStreamPointerLock
KsStreamPointerScheduleTimeout
KsStreamPointerSetStatusCode
KsStreamPointerUnlock