Partilhar via


Regra KsInvalidStreamPointer (ks)

A regra KsInvalidStreamPointer verifica se um driver de miniporto KS fornece um Ponteiro de Fluxo KS válido como um argumento de função. As violações típicas são causadas pelo manuseio incorreto do ponteiro ou por uma corrupção do ponteiro causada pelo uso incorreto da memória.

Um ponteiro de fluxo válido é um ponteiro de fluxo de borda à esquerda ou à direita ou um ponteiro de fluxo que foi clonado por meio de KsStreamPointerClone. Para obter mais informações, consulte Ponteiros de fluxo de borda à esquerda e à direita.

Essa regra também verifica se KsStreamPointerDelete não foi usado para tentar excluir um ponteiro de fluxo não clonado.

Modelo do driver: KS

Verificação de bug (s) encontrada (s) com esta regra: Verificação de bug 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)

Exemplo

O código a seguir viola essa regra.

PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);

//
// ERROR: KsStreamPointerDelete can only be called on clone stream pointers.
//

KsStreamPointerDelete (StreamPointer);

Este código também viola a regra.

KsStreamPointerDelete (NULL);

Como testar

Em tempo de execução

Para verificar essa regra, abra uma janela do Prompt de Comando. Insira um comando do Verificador de Driver e especifique /domain ks.

Por exemplo:

Para obter mais informações, consulte Verificador de Driver.

verificador /domínio ks [opções] /driver <yourdriver>

Em tempo de execução

Execute o Verificador de Driver e selecione a opção de verificação de conformidade de DDI.

Aplicável ao

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock