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