IO_DRIVER_CREATE_CONTEXT 結構 (ntddk.h)
IO_DRIVER_CREATE_CONTEXT 結構可用來將其他參數傳遞至 IoCreateFileEx 和 FltCreateFileEx2 例程。 這個結構是選擇性的。
IoCreateFileEx 例程是由舊版篩選驅動程式使用,而 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 結構的成員 (排除 Size 成員) 函式做為 IoCreateFileEx 和 FltCreateFileEx2 例程的其他參數。 相對於 IoCreateFileEx 和 FltCreateFileEx2 例程的介面,下列資訊可能很有説明:
ECP_LIST 結構包含額外的建立參數清單, (ECP) 專案。 ECP 清單中的每個 ECP 專案 (ECP 內容結構) (ECP_LIST 結構) 函式作為 IoCreateFileEx 和 FltCreateFileEx2 的額外建立參數。
若要將 ECP 指定為建立作業的一部分,請使用正確的例程,初始化 IO_DRIVER_CREATE_CONTEXT 結構的 ExtraCreateParameter 成員:
針對舊版篩選驅動程式, 必須使用 FsRtlAllocateExtraCreateParameterList 例程來配置ECP_LIST結構的記憶體集區。 操作系統不會自動釋放ECP_LIST結構。 相反地,配置ECP_LIST結構之後,最終必須使用 FsRtlFreeExtraCreateParameterList 例程釋放它。
對於 minifilter 驅動程式, FltAllocateExtraCreateParameterList 例程必須用來配置ECP_LIST結構的記憶體集區。 操作系統不會自動釋放ECP_LIST結構。 相反地,配置ECP_LIST結構之後,最終必須使用 FltFreeExtraCreateParameterList 例程來釋放它。
如果使用 ECP,則必須使用適當的例程來建立、操作和釋放它們。 例如,迷你篩選驅動程式會使用 FltInsertExtraCreateParameter 例程,將 ECP 專案插入 ECP 清單中。 The following See Also section lists many of these required routines.
從 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