Partager via


Règle KsInvalidStreamPointer (ks)

La règle KsInvalidStreamPointer vérifie si un pilote miniport KS fournit un pointeur KS Stream valide en tant qu’argument de fonction. Les violations classiques sont causées par 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 périphérie de début ou de fin ou un pointeur de flux cloné via KsStreamPointerClone. Pour plus d’informations, consultez Pointeurs de flux edge de début et de fin.

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

Vérification des bogues trouvées avec cette règle : Vérification des bogues 0xC4 : 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 le vérificateur de pilote et sélectionnez l’option de vérification de conformité DDI.

S’applique à

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock