Функция WdfRequestRetrieveUnsafeUserInputBuffer (wdfrequest.h)
[Относится только к KMDF]
Метод WdfRequestRetrieveUnsafeUserInputBuffer извлекает входной буфер запроса ввода-вывода, если метод запроса для доступа к буферам данных не является ни буферизованным, ни прямым вводом-выводом.
Синтаксис
NTSTATUS WdfRequestRetrieveUnsafeUserInputBuffer(
[in] WDFREQUEST Request,
[in] size_t MinimumRequiredLength,
[out] PVOID *InputBuffer,
[out, optional] size_t *Length
);
Параметры
[in] Request
Дескриптор объекта запроса платформы.
[in] MinimumRequiredLength
Минимальный размер буфера в байтах, необходимый драйверу для обработки запроса ввода-вывода.
[out] InputBuffer
Указатель на расположение, которое получает адрес буфера.
[out, optional] Length
Указатель на расположение, которое получает размер буфера в байтах. Этот параметр является необязательным и может иметь значение NULL.
Возвращаемое значение
WdfRequestRetrieveUnsafeUserInputBuffer возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Недопустимый входной параметр. |
|
Это значение возвращается, если происходит одно из следующих действий:
|
|
Параметр MinimumRequiredLength указывает размер буфера, превышающий фактический размер буфера. |
Этот метод также может возвращать другие значения NTSTATUS.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Метод WdfRequestRetrieveUnsafeUserInputBuffer должен вызываться из функции обратного вызова EvtIoInCallerContext . После вызова WdfRequestRetrieveUnsafeUserInputBuffer драйвер должен вызвать WdfRequestProbeAndLockUserBufferForRead.
Драйвер может вызывать WdfRequestRetrieveUnsafeUserInputBuffer , если код элемента управления вводом-выводом запроса IRP_MJ_WRITE или IRP_MJ_DEVICE_CONTROL.
Драйвер может получить доступ к полученному буферу, пока не завершит запрос ввода-вывода , который представляет параметр Request .
Дополнительные сведения о WdfRequestRetrieveUnsafeUserInputBuffer см. в статье Доступ к буферам данных в драйверах Framework-Based.
Примеры
Пример кода, в котором используется WdfRequestRetrieveUnsafeUserInputBuffer, см. в разделе WdfRequestProbeAndLockUserBufferForRead.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfrequest.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), InputBufferAPI(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |