WdfRequestRetrieveUnsafeUserInputBuffer 函数 (wdfrequest.h)

[仅适用于 KMDF]

WdfRequestRetrieveUnsafeUserInputBuffer 方法检索 I/O 请求的输入缓冲区(如果请求访问数据缓冲区的技术既不是缓冲的,也不是直接 I/O)。

语法

NTSTATUS WdfRequestRetrieveUnsafeUserInputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *InputBuffer,
  [out, optional] size_t     *Length
);

参数

[in] Request

框架请求对象的句柄。

[in] MinimumRequiredLength

驱动程序处理 I/O 请求所需的最小缓冲区大小(以字节为单位)。

[out] InputBuffer

指向接收缓冲区地址的位置的指针。

[out, optional] Length

指向接收缓冲区大小(以字节为单位)的位置的指针。 此参数是可选的,可以为 NULL

返回值

如果操作成功,WdfRequestRetrieveUnsafeUserInputBuffer 将返回STATUS_SUCCESS。 否则,此方法可能会返回以下值之一:

返回代码 说明
STATUS_INVALID_PARAMETER
输入参数无效。
STATUS_INVALID_DEVICE_REQUEST
如果发生以下情况之一,则返回此值:
STATUS_BUFFER_TOO_SMALL
MinimumRequiredLength 参数指定大于缓冲区实际大小的缓冲区大小。
 

此方法还可能返回其他 NTSTATUS 值

如果驱动程序提供无效的对象句柄,则会发生 bug 检查。

注解

必须从 EvtIoInCallerContext 回调函数调用 WdfRequestRetrieveUnsafeUserInputBuffer 方法。 调用 WdfRequestRetrieveUnsafeUserInputBuffer 后,驱动程序必须调用 WdfRequestProbeAndLockUserBufferForRead

如果请求的 I/O 控制代码IRP_MJ_WRITEIRP_MJ_DEVICE_CONTROL,驱动程序可以调用 WdfRequestRetrieveUnsafeUserInputBuffer

驱动程序可以访问检索到的缓冲区,直到它完成 Request 参数表示的 I/O 请求

有关 WdfRequestRetrieveUnsafeUserInputBuffer 的详细信息,请参阅 在 Framework-Based Drivers 中访问数据缓冲区

示例

有关使用 WdfRequestRetrieveUnsafeUserInputBuffer 的代码示例,请参阅 WdfRequestProbeAndLockUserBufferForRead

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
标头 wdfrequest.h (包括 Wdf.h)
Library Wdf01000.sys (请参阅框架库 Versioning.)
IRQL PASSIVE_LEVEL
DDI 符合性规则 BufAfterReqCompletedIntIoctl (kmdf) BufAfterReqCompletedIntIoctlA (kmdf) BufAfterReqCompletedIoctl (kmdf) BufAfterReqCompletedIoctlA (kmdf) BufAfterReqCompletedRead () kmdf) BufAfterReqCompletedWrite (kmdf) BufAfterReqCompletedWriteA (kmdf) DriverCreate (kmdf) InputBufferAPI (kmdf) InvalidReqAccess (kmdf) InvalidReqAccessLocal (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另请参阅

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer