Правило BufAfterReqCompletedIntIoctlA (kmdf)
Правило BufAfterReqCompletedIntIoctlA проверяет, что после завершения запроса доступ к его буферу невозможен (только внутри обратного вызова EvtIoInternalDeviceControl ). Буфер был получен путем вызова WdfRequestRetrieveInputBuffer или WdfRequestRetrieveOutputBuffer или WdfRequestRetrieveUnsafeUserInputBuffer или WdfRequestRetrieveUnsafeUserOutputBuffer.
В функции обратного вызова событий очереди ввода-вывода EvtIoInternalDeviceControl буфер запроса, полученный путем вызова WdfRequestRetrieveInputBuffer или WdfRequestRetrieveOutputBuffer или WdfRequestRetrieveUnsafeUserInputBuffer или WdfRequestRetrieveUnsafeUserOutputBuffer , не может быть получен после WdfRequestComplete, WdfRequestCompleteWithInformation или WdfRequestCompleteWithPriorityBoost методы были вызваны в запросе. Рассматриваются следующие возможные функции доступа к буферу: RtlMoveMemory (с буфером в качестве 1-го и 2-го параметров), RtlZeroMemory, RtlCompareMemory, ZwReadFile, ZwWriteFile, WDF_MEMORY_DESCRIPTOR_INIT_BUFFER, WdfMemoryCreatePreallocated, WdfMemoryAssignBuffer, WdfMemoryCopyFromBuffer, WdfMemoryCopyToBuffer.
Модель драйвера: KMDF
Как тестировать
Во время компиляции |
---|
Запустите Static Driver Verifier и укажите правило BufAfterReqCompletedIntIoctlA . Выполните следующие действия, чтобы выполнить анализ кода.
Дополнительные сведения см. в разделе Использование средства проверки статических драйверов для поиска дефектов в драйверах. |
Применяется к
WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile