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 列舉值。 大部分架構型驅動程式不會使用此位旗標。 WdfFileObjectCanBeOptional 值可在 1.9 版和更新版本的 KMDF 中使用。 |
言論
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) |