WDF_FILEOBJECT_CLASS枚举 (wdfdevice.h)
[适用于 KMDF 和 UMDF]
WDF_FILEOBJECT_CLASS 枚举定义值,用于标识驱动程序是否需要框架文件对象来表示应用程序或其他驱动程序尝试创建或打开的文件。 这些值还指定框架可以存储对象的句柄的位置。
语法
typedef enum _WDF_FILEOBJECT_CLASS {
WdfFileObjectInvalid = 0,
WdfFileObjectNotRequired = 1,
WdfFileObjectWdfCanUseFsContext = 2,
WdfFileObjectWdfCanUseFsContext2 = 3,
WdfFileObjectWdfCannotUseFsContexts = 4,
WdfFileObjectCanBeOptional = 0x80000000
} WDF_FILEOBJECT_CLASS, *PWDF_FILEOBJECT_CLASS;
常数
WdfFileObjectInvalid 值:0 保留供内部使用。 |
WdfFileObjectNotRequired 值:1 驱动程序不需要框架文件对象。 |
WdfFileObjectWdfCanUseFsContext 值:2 驱动程序需要框架文件对象。 框架可以将对象的句柄存储在文件的 Windows 驱动程序模型 (WDM) FILE_OBJECT 结构的 FsContext 成员中。 |
WdfFileObjectWdfCanUseFsContext2 值:3 驱动程序需要框架文件对象。 框架可以将对象的句柄存储在文件的 WDM FILE_OBJECT结构的 FsContext2 成员中。 |
WdfFileObjectWdfCannotUseFsContexts 值:4 驱动程序需要框架文件对象。 框架无法将对象的句柄存储在文件的 WDM FILE_OBJECT结构的 FsContext 或 FsContext2 成员中,因为一个或多个驱动程序正在使用这些成员。 因此,框架必须在内部存储句柄。 |
WdfFileObjectCanBeOptional 值:0x80000000 驱动程序通常需要框架文件对象,但驱动程序还可以处理框架文件对象缺失或不同的特殊情况。 有关这些情况的详细信息,请参阅以下“备注”部分。 WdfFileObjectCanBeOptional 是驱动程序可以使用 WdfFileObjectWdfCanUseFsContext、WdfFileObjectWdfCanUseFsContext2或 WdfFileObjectWdfCannotUseFsContexts 枚举器值进行 OR 的位标志。 大多数基于框架的驱动程序不使用此位标志。 WdfFileObjectCanBeOptional 值在 KMDF 版本 1.9 及更高版本中提供。 |
言论
WDF_FILEOBJECT_CLASS 枚举用于 WDF_FILEOBJECT_CONFIG 结构。
如果驱动程序调用 WdfRequestGetFileObject 以获取 I/O 请求的框架文件对象,并且如果你知道驱动程序接收的某些 WDM I/O 请求数据包(IRP)不包含 WDM 文件对象,驱动程序可以设置 WdfFileObjectCanBeOptional 位标志。
如果驱动程序设置 WdfFileObjectWdfCanUseFsContext、WdfFileObjectWdfCanUseFsContext2或 WdfFileObjectWdfCannotUseFsContexts 值,并且不会 不 设置 WdfFileObjectCanBeOptional 位标志, 框架的验证程序 在驱动程序调用 WdfRequestGetFileObject 方法时报告以下情况的错误:
- IRP 不包括 WDM 文件对象。
- IRP 包括 WDM 文件对象,但文件对象与文件创建 IRP 包含的对象不同。
要求
要求 | 价值 |
---|---|
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfdevice.h (包括 Wdf.h) |