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