WDF_FILEOBJECT_CLASS列舉 (wdfdevice.h)

[適用於 KMDF 和 UMDF]

WDF_FILEOBJECT_CLASS列舉會定義值,識別驅動程式是否需要架構檔案物件來代表應用程式或其他驅動程序嘗試建立或開啟的檔案。 這些值也會指定架構可以儲存物件句柄的位置。

Syntax

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 檔案物件不包含 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