Règle KsInvalidStreamPointer (ks)

La règle KsInvalidStreamPointer vérifie si un pilote KS miniport fournit un pointeur KS Stream valide en tant qu’argument de fonction. Les violations classiques sont dues à une gestion incorrecte du pointeur ou à une altération du pointeur causée par une utilisation incorrecte de la mémoire.

Un pointeur de flux valide est un pointeur de flux de bord de début ou de fin ou un pointeur de flux qui a été cloné via KsStreamPointerClone. Pour plus d’informations, consultez Pointeurs de bord de début et de fin Stream.

Cette règle vérifie également que KsStreamPointerDelete n’a pas été utilisé pour tenter de supprimer un pointeur de flux non cloné.

Modèle de pilote : KS

Bogues case activée trouvés avec cette règle : 0xC4 de vérification des bogues : DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)

Exemple

Le code suivant enfreint cette règle.

PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);

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

KsStreamPointerDelete (StreamPointer);

Ce code enfreint également la règle.

KsStreamPointerDelete (NULL);

Comment tester

Au moment de l'exécution

Pour vérifier cette règle, ouvrez une fenêtre d’invite de commandes. Entrez une commande Driver Verifier et spécifiez /domain ks.

Par exemple :

Pour plus d’informations, consultez Type de débogage.

vérificateur /domain ks [options] /driver<yourdriver>

Au moment de l'exécution

Exécutez Driver Verifier et sélectionnez l’option de vérification de conformité DDI .

S’applique à

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock