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