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 队列以接收文件创建请求,则框架会将文件创建请求转发到下一个较低的驱动程序。 如果驱动程序提供回调函数或队列来处理请求,则框架不会转发文件创建请求,因此驱动程序必须 转发、 完成或 取消 请求。
- 在调用驱动程序的 EvtFileCleanup 和 EvtFileClose 回调函数后,框架会将文件清理和关闭请求发送到下一个较低级别的驱动程序。
如果 AutoForwardCleanupClose 设置为 WdfUseDefault,则框架对筛选器驱动程序使用 WdfTrue 行为,对函数驱动程序使用 WdfFalse 行为。
AutoForwardCleanupClose 的驱动程序行为
驱动程序的本地 I/O 目标必须始终接收相同数量的 I/O 请求,请求类型为 WdfRequestTypeCreate、 WdfRequestTypeCleanup 和 WdfRequestTypeClose。 因此,如果驱动程序提供 EvtDeviceFileCreate 回调 函数或接收文件创建请求的 I/O 队列,则必须使用以下规则:- 如果驱动程序将 AutoForwardCleanupClose 设置为 WdfTrue,则驱动程序必须将所有文件创建请求转发到本地 I/O 目标。 必须遵循此规则,因为无论驱动程序是否提供 EvtFileCleanup 和 EvtFileClose 回调函数,框架都将将所有清理和关闭请求转发到本地目标。
- 如果驱动程序将 AutoForwardCleanupClose 设置为 WdfFalse,则驱动程序 不得 将文件创建请求转发到本地 I/O 目标。 必须遵循此规则,因为无论驱动程序是否提供 EvtFileCleanup 和 EvtFileClose 回调函数,框架都不会将清理和关闭请求转发到本地目标。
- 如果驱动程序将 AutoForwardCleanupClose 设置为 WdfDefault,则驱动程序必须遵循 WdfTrue 的规则(如果它是筛选器驱动程序)。 如果驱动程序是函数驱动程序,则驱动程序必须遵循 WdfFalse 的规则。
要求
要求 | 值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfdevice.h (包括 Wdf.h) |