WDF_DEVICE_IO_BUFFER_RETRIEVAL 枚举 (wudfddi_types.h)

[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]

WDF_DEVICE_IO_BUFFER_RETRIEVAL枚举用于指定 UMDF 何时向驱动程序提供 I/O 请求的缓冲区。

语法

typedef enum _WDF_DEVICE_IO_BUFFER_RETRIEVAL {
  WdfDeviceIoBufferRetrievalInvalid,
  WdfDeviceIoBufferRetrievalCopyImmediately,
  WdfDeviceIoBufferRetrievalDeferred,
  WdfDeviceIoBufferRetrievalMaximum
} WDF_DEVICE_IO_BUFFER_RETRIEVAL, *PWDF_DEVICE_IO_BUFFER_RETRIEVAL;

常量

 
WdfDeviceIoBufferRetrievalInvalid
预留给系统使用。
WdfDeviceIoBufferRetrievalCopyImmediately
UMDF 在 UMDF 收到 I/O 请求后立即将其复制到 UMDF 驱动程序主机进程) ,使 I/O 请求的缓冲区可供驱动程序 (使用。 有关更多信息,请参见下面的“备注”部分。
WdfDeviceIoBufferRetrievalDeferred
UMDF 仅当驱动程序尝试访问缓冲区时,将 I/O 请求的缓冲区复制到 UMDF 驱动程序主机进程) ,使 I/O 请求的缓冲区可供驱动程序 (使用。 有关更多信息,请参见下面的“备注”部分。
WdfDeviceIoBufferRetrievalMaximum
预留给系统使用。

注解

WDF_DEVICE_IO_BUFFER_RETRIEVAL枚举用作 IWDFDeviceInitialize2::SetIoTypePreference 的输入。

在版本 1.9 之前的 UMDF 版本中,UMDF 始终通过在 UMDF 收到 I/O 请求后立即将缓冲区复制到 UMDF 驱动程序主机进程) ,使驱动程序 (可以使用 I/O 请求的缓冲区。 IWDFIoRequest::GetInputMemoryIWDFIoRequest::GetOutputMemory 是驱动程序可以调用以访问缓冲区的唯一对象方法。

UMDF 1.9 及更高版本可以支持立即或延迟检索请求缓冲区。 所有新驱动程序都应启用延迟检索,因为它通常提供比即时检索更好的驱动程序性能。 如果驱动程序未启用延迟检索,则 UMDF 使用即时检索。

若要延迟检索缓冲区,驱动程序必须调用 IWDFDeviceInitialize2::SetIoTypePreference 并指定 WdfDeviceIoBufferRetrievalDeferred 值。 驱动程序启用延迟检索后,可以使用缓冲或直接 访问方法调用以下方法来访问请求缓冲区:

IWDFIoRequest2::RetrieveInputBuffer

IWDFIoRequest2::RetrieveInputMemory

IWDFIoRequest2::RetrieveOutputBuffer

IWDFIoRequest2::RetrieveOutputMemory

启用延迟检索的驱动程序不能使用 IWDFIoRequest::GetInputMemoryIWDFIoRequest::GetOutputMemory 访问缓冲区。

有关访问 I/O 请求的数据缓冲区的详细信息,请参阅 访问 UMDF-Based 驱动程序中的数据缓冲区

要求

要求
最低 UMDF 版本 1.9
标头 wudfddi_types.h (包括 Wudfddi.h)

另请参阅

WDF_DEVICE_IO_TYPE (UMDF)