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 必須藉由呼叫 WDF_FILEOBJECT_CONFIG_INIT 來初始化。
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) |