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 结构的 FsContextFsContext2 成员中,因为一个或多个驱动程序正在使用这些成员。 因此,框架必须在内部存储句柄。
WdfFileObjectCanBeOptional
值: 0x80000000
驱动程序通常需要框架文件对象,但驱动程序还可以处理框架文件对象缺失或不同的特殊情况。 有关这些情况的详细信息,请参阅以下“备注”部分。

WdfFileObjectCanBeOptional 是驱动程序可以使用 WdfFileObjectWdfCanUseFsContextWdfFileObjectWdfCanUseFsContext2WdfFileObjectWdfCannotUseFsContexts 枚举器值的位标志。

大多数基于框架的驱动程序不使用此位标志。

WdfFileObjectCanBeOptional 值在 1.9 版及更高版本的 KMDF 中可用。

注解

WDF_FILEOBJECT_CLASS 枚举在 WDF_FILEOBJECT_CONFIG 结构中使用。

如果驱动程序调用 WdfRequestGetFileObject 以获取 I/O 请求的框架文件对象,并且你知道驱动程序收到的某些 WDM I/O 请求数据包 (IRP) 不包含 WDM 文件对象,则驱动程序可以设置 WdfFileObjectCanBeOptional 位标志。

如果驱动程序设置了 WdfFileObjectWdfCanUseFsContextWdfFileObjectWdfCanUseFsContext2WdfFileObjectWdfCannotUseFsContexts 值,并且设置 WdfFileObjectCanBeOptional 位标志,则当驱动程序调用 WdfRequestGetFileObject 方法时,框架的验证程序将报告以下情况的错误:

  • IRP 不包括 WDM 文件对象。
  • IRP 包含 WDM 文件对象,但文件对象与文件创建 IRP 包含的对象不同。
如果设置了 WdfFileObjectCanBeOptional 位标志,框架的验证程序将忽略此类情况。

要求

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

另请参阅

FILE_OBJECT

WDF_FILEOBJECT_CONFIG