Regra KsInvalidStreamPointer (ks)

A regra KsInvalidStreamPointer verifica se um driver de miniporto KS fornece um ponteiro de Stream KS válido como um argumento de função. Violações típicas são causadas por manipulação incorreta de ponteiro ou corrupção de ponteiro causada pelo uso incorreto de 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 Stream 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 de driver: KS

Marcar de bugs encontradas com esta regra: 0xC4 de Verificação de Bugs: 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);

Esse 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 Verificador de Driver e especifique /domain ks.

Por exemplo:

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

verifier /domain 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 da DDI .

Aplica-se a

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock