IO_DRIVER_CREATE_CONTEXT結構 (ntddk.h)
IO_DRIVER_CREATE_CONTEXT 結構可用來將其他參數傳遞至 IoCreateFileEx 和 FltCreateFileEx2 例程。 此結構是選擇性的。
舊版篩選驅動程式會使用 IoCreateFileEx 例程,而minifilter驅動程式會使用 FltCreateFileEx2 例程。
語法
typedef struct _IO_DRIVER_CREATE_CONTEXT {
CSHORT Size;
struct _ECP_LIST *ExtraCreateParameter;
PVOID DeviceObjectHint;
PTXN_PARAMETER_BLOCK TxnParameters;
PESILO SiloContext;
} IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;
成員
Size
IoInitializeDriverCreateContext 例程初始化的唯讀成員。
ExtraCreateParameter
ECP_LIST 結構的指標,其中包含額外的建立參數 (ECP) 項目清單。 如需重要資訊,請參閱下列
DeviceObjectHint
如果使用IO_DRIVER_CREATE_CONTEXT將其他建立參數傳遞至 FltCreateFileEx2 例程,則必須將這個成員 NULL。
如果使用IO_DRIVER_CREATE_CONTEXT將其他建立參數傳遞至 IoCreateFileEx 例程,則此成員是將建立要求傳送至裝置物件的指標。 裝置物件必須是檔案或目錄所在磁碟區之文件系統驅動程式堆疊中的舊版篩選或檔系統裝置物件。 在 IoCreateFileEx 案例中,此參數是選擇性的,而且可以 NULL。 如果此參數 NULL,則要求會傳送至驅動程式堆疊頂端的裝置物件。
TxnParameters
您想要與建立作業建立關聯的交易指標。 如果這個成員的值是交易的有效指標,則建立作業將會是交易的一部分。 如果這個成員的值 NULL,則建立作業將不會是交易的一部分。
SiloContext
檔案所在的容器。 此成員是在 Windows 10 版本 1607 中引進的。
言論
IO_DRIVER_CREATE_CONTEXT結構可以從分頁或非分頁集區配置。 IoInitializeDriverCreateContext 例程必須先初始化IO_DRIVER_CREATE_CONTEXT結構,才能使用 結構。
IO_DRIVER_CREATE_CONTEXT結構的成員(不包括
ECP_LIST結構包含額外的建立參數 (ECP) 專案清單。 ECP 清單中的每個 ECP 專案 ECP_LIST (ECP 內容結構) 都會作為額外的 create 參數,IoCreateFileEx 和 FltCreateFileEx2。
若要將 ECP 指定為建立作業的一部分,請使用正確的例程,初始化 IO_DRIVER_CREATE_CONTEXT 結構 成員
ExtraCreateParameter: 對於舊版篩選驅動程式,必須使用 FsRtlAllocateExtraCreateParameterList 例程來配置ECP_LIST結構的記憶體集區。 操作系統不會自動釋放ECP_LIST結構。 相反地,一旦配置ECP_LIST結構,它最終必須使用 FsRtlFreeExtraCreateParameterList 例程來釋放它。
針對小型篩選驅動程式,必須使用 FltAllocateExtraCreateParameterList 例程來配置ECP_LIST結構的記憶體集區。 操作系統不會自動釋放ECP_LIST結構。 相反地,配置ECP_LIST結構之後,最終必須使用 FltFreeExtraCreateParameterList 例程來釋放它。
如果使用 ECP,則必須使用適當的例程來建立、操作和釋放它們。 例如,迷你篩選驅動程式會使用 FltInsertExtraCreateParameter 例程,將 ECP 專案插入 ECP 清單中。 下列 另請參閱 一節列出其中許多必要的例程。
從呼叫 IoCreateFileEx 或 FltCreateFileEx2傳回時,ECP 清單會保持不變,而且可以傳遞至其他 IoCreateFileEx 或 FltCreateFileEx2 呼叫新的建立作業。
若要在交易內容中建立或開啟檔案,請將IO_DRIVER_CREATE_CONTEXT結構
TxnParameters 成員設定為 ioGetTransactionParameterBlock 例程所傳回的值。
要求
要求 | 價值 |
---|---|
標頭 | ntddk.h (包括 Ntddk.h、Ntifs.h、Fltkernel.h) |
另請參閱
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList
FltFreeExtraCreateParameterList
FsRtlAllocateExtraCreateParameterList
FsRtlFreeExtraCreateParameterList
IoCreateFileSpecifyDeviceObjectHint