Поделиться через


Правило KsInvalidStreamPointer (ks)

Правило KsInvalidStreamPointer проверяет, предоставляет ли драйвер минипорта KS допустимый указатель потока KS в качестве аргумента функции. Типичные нарушения вызваны неправильной обработкой указателя или повреждением указателя, вызванным неправильным использованием памяти.

Допустимый указатель потока — это указатель на начальный или конечный пограничный потоковый указатель или указатель потока, который был клонирован через KsStreamPointerClone. Дополнительные сведения см. в разделе "Ведущие" и "Конечные пограничные указатели потока".

Это правило также проверяет, не используется ли KsStreamPointerDelete для удаления клонированного указателя потока.

Модель драйвера: KS

Ошибки, обнаруженные с помощью этого правила: проверка ошибок 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x0008100C)

Пример

Следующий код нарушает это правило.

PKKSSTREAM_POINTER StreamPointer = KsPinGetLeadingEdgeStreamPointer (Pin, KSSTREAM_POINTER_STATE_UNLOCKED);

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

KsStreamPointerDelete (StreamPointer);

Этот код также нарушает правило.

KsStreamPointerDelete (NULL);

Как тестировать

во время выполнения

Чтобы проверить это правило, откройте окно командной строки. Введите команду средства проверки драйверов и укажите /domain ks.

Например:

Дополнительные сведения см. в разделе "Проверка драйверов".

проверяющий /домен ks [параметры] /driver <yourdriver>

во время выполнения

Запустите средство проверки драйвера и выберите параметр проверки соответствия DDI.

Применяется к

KsStreamPointerDelete

KsStreamPointerAdvance

KsStreamPointerAdvanceOffsetsAndUnlock

KsStreamPointerCancelTimeout

KsStreamPointerGetIrp

KsStreamPointerGetMdl

KsStreamPointerGetNextClone

KsStreamPointerLock

KsStreamPointerScheduleTimeout

KsStreamPointerSetStatusCode

KsStreamPointerUnlock