WDF_FILEOBJECT_CONFIG结构 (wdfdevice.h)

[适用于 KMDF 和 UMDF]

WDF_FILEOBJECT_CONFIG 结构包含驱动程序框架文件对象的配置信息。

语法

typedef struct _WDF_FILEOBJECT_CONFIG {
  ULONG                      Size;
  PFN_WDF_DEVICE_FILE_CREATE EvtDeviceFileCreate;
  PFN_WDF_FILE_CLOSE         EvtFileClose;
  PFN_WDF_FILE_CLEANUP       EvtFileCleanup;
  WDF_TRI_STATE              AutoForwardCleanupClose;
  WDF_FILEOBJECT_CLASS       FileObjectClass;
} WDF_FILEOBJECT_CONFIG, *PWDF_FILEOBJECT_CONFIG;

成员

Size

此结构的大小(以字节为单位)。

EvtDeviceFileCreate

指向驱动程序的 EvtDeviceFileCreate 回调函数或 NULL 的指针。

EvtFileClose

指向驱动程序的 EvtFileClose 回调函数的指针,或 NULL

EvtFileCleanup

指向驱动程序的 EvtFileCleanup 回调函数的指针,或 NULL

AutoForwardCleanupClose

WDF_TRI_STATE类型的值。 有关此成员的详细信息,请参阅以下注释部分。

FileObjectClass

一个WDF_FILEOBJECT_CLASS类型的值,该值标识驱动程序是否需要框架文件对象来表示应用程序或其他驱动程序创建或打开的每个文件。 此外,此值指定框架可以存储对象句柄的位置。

注解

WDF_FILEOBJECT_CONFIG 结构用作 WdfDeviceInitSetFileObjectConfig 方法的输入。

必须 通过调用 WDF_FILEOBJECT_CONFIG_INIT 初始化 WDF_FILEOBJECT_CONFIG

AutoForwardCleanupClose 的框架行为

如果 AutoForwardCleanupClose 设置为 WdfTrue,则框架将执行以下操作:
  • 如果驱动程序不提供 EvtDeviceFileCreate 回调函数,并且未调用 WdfDeviceConfigureRequestDispatching 来设置 I/O 队列以接收文件创建请求,则框架会将文件创建请求转发到下一个较低的驱动程序。 如果驱动程序提供回调函数或队列来处理请求,则框架不会转发文件创建请求,因此驱动程序必须 转发完成取消 请求。
  • 在调用驱动程序的 EvtFileCleanupEvtFileClose 回调函数后,框架会将文件清理和关闭请求发送到下一个较低级别的驱动程序。
如果 AutoForwardCleanupClose 设置为 WdfFalse,则框架不会转发文件创建、清理或关闭请求。 相反,框架会完成对驱动程序的请求。

如果 AutoForwardCleanupClose 设置为 WdfUseDefault,则框架对筛选器驱动程序使用 WdfTrue 行为,对函数驱动程序使用 WdfFalse 行为。

AutoForwardCleanupClose 的驱动程序行为

驱动程序的本地 I/O 目标必须始终接收相同数量的 I/O 请求,请求类型为 WdfRequestTypeCreateWdfRequestTypeCleanupWdfRequestTypeClose。 因此,如果驱动程序提供 EvtDeviceFileCreate 回调 函数或接收文件创建请求的 I/O 队列,则必须使用以下规则:
  • 如果驱动程序将 AutoForwardCleanupClose 设置为 WdfTrue,则驱动程序必须将所有文件创建请求转发到本地 I/O 目标。 必须遵循此规则,因为无论驱动程序是否提供 EvtFileCleanupEvtFileClose 回调函数,框架都将将所有清理和关闭请求转发到本地目标。
  • 如果驱动程序将 AutoForwardCleanupClose 设置为 WdfFalse,则驱动程序 不得 将文件创建请求转发到本地 I/O 目标。 必须遵循此规则,因为无论驱动程序是否提供 EvtFileCleanupEvtFileClose 回调函数,框架都不会将清理和关闭请求转发到本地目标。
  • 如果驱动程序将 AutoForwardCleanupClose 设置为 WdfDefault,则驱动程序必须遵循 WdfTrue 的规则(如果它是筛选器驱动程序)。 如果驱动程序是函数驱动程序,则驱动程序必须遵循 WdfFalse 的规则。

要求

要求
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfdevice.h (包括 Wdf.h)