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


Функция 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, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:

Код возврата Описание
STATUS_INVALID_PARAMETER
Недопустимый входной параметр.
STATUS_INVALID_DEVICE_REQUEST
Это значение возвращается, если происходит одно из следующих действий:
STATUS_BUFFER_TOO_SMALL
Параметр 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)

См. также раздел

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer