Compartir a través de


Regla KsInvalidStreamPointer (ks)

La regla KsInvalidStreamPointer comprueba si un controlador de miniporte KS proporciona un puntero de secuencia KS válido como argumento de función. Las infracciones típicas son causadas por un control de puntero incorrecto o por daños en el puntero causados por un uso incorrecto de la memoria.

Un puntero de flujo válido es un puntero de flujo perimetral inicial o final o un puntero de secuencia que se ha clonado a través de KsStreamPointerClone. Para obtener más información, consulte Punteros de flujo de borde inicial y final.

Esta regla también comprueba que KsStreamPointerDelete no se ha usado para intentar eliminar un puntero de flujo no clonado.

Modelo de controlador: KS

Comprobaciones de errores encontradas con esta regla: Comprobación de errores 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)

Ejemplo

El código siguiente infringe esta regla.

PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);

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

KsStreamPointerDelete (StreamPointer);

Este código también infringe la regla.

KsStreamPointerDelete (NULL);

Cómo probar

En tiempo de ejecución

Para comprobar esta regla, abra una ventana del símbolo del sistema. Escriba un comando Driver Verifier y especifique /domain ks.

Por ejemplo:

Para obtener más información, consulte Comprobador de controladores.

comprobador /domain ks [options] /driver <yourdriver>

En tiempo de ejecución

Ejecute el Comprobador de controladores y seleccione la opción comprobación de cumplimiento de DDI.

Se aplica a

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock