Правило 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