FLT_CONTEXT_REGISTRATION 結構可用來註冊內容類型。
語法
typedef struct _FLT_CONTEXT_REGISTRATION {
FLT_CONTEXT_TYPE ContextType;
FLT_CONTEXT_REGISTRATION_FLAGS Flags;
PFLT_CONTEXT_CLEANUP_CALLBACK ContextCleanupCallback;
SIZE_T Size;
ULONG PoolTag;
PFLT_CONTEXT_ALLOCATE_CALLBACK ContextAllocateCallback;
PFLT_CONTEXT_FREE_CALLBACK ContextFreeCallback;
PVOID Reserved1;
} FLT_CONTEXT_REGISTRATION, *PFLT_CONTEXT_REGISTRATION;
成員
ContextType
內容的類型。 這個成員是必要的,而且必須是下列其中一個值:
FLT_FILE_CONTEXT (僅限 Windows Vista 和更新版本。
FLT_INSTANCE_CONTEXT
FLT_STREAM_CONTEXT
FLT_STREAMHANDLE_CONTEXT
FLT_SECTION_CONTEXT (僅限 Windows 8 和更新版本。
FLT_TRANSACTION_CONTEXT (僅限 Windows Vista 和更新版本。
FLT_VOLUME_CONTEXT
Flags
旗標的位掩碼,指定篩選管理員如何從固定大小內容的外觀清單中配置新內容。 這個成員可以是零或下列值。
| 旗 | 意義 |
|---|---|
| FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH | 如果迷你篩選程式使用固定大小的內容,而且指定此旗標,如果 lookaside 清單中的內容大小大於或等於要求的大小,篩選管理員就會從 lookaside 清單中配置內容。 否則,只有在 lookaside 清單中的內容大小等於要求的大小時,篩選管理員才會從 lookaside 清單配置內容。 |
ContextCleanupCallback
小型篩選定義的 ContextCleanupCallback 類型 PFLT_CONTEXT_CLEANUP_CALLBACK例程的指標。 篩選管理員會在刪除內容之前立即呼叫此例程。 如果迷你篩選程式沒有記憶體或指標可清除內容內部,則此成員是選擇性的,而且可以 NULL。
Size
如果迷你篩選程式使用固定大小內容,則以位元組為單位的內容大小。 零是有效的大小值。 如果迷你篩選程式使用可變大小的內容,則需要此成員,且必須設定為FLT_VARIABLE_SIZED_CONTEXTS。
PoolTag
要用於內容的集區標籤。 這個標記指定為一到四個 7 位 ASCII 字元的字串,會出現在發生之系統的任何損毀傾印中。 如果 ContextAllocateCallback 成員 NULL,則此成員為必要,且不可為零。
ContextAllocateCallback
小型篩選定義的 ContextAllocateCallback 類型 PFLT_CONTEXT_ALLOCATE_CALLBACK例程的指標。 這個成員是選擇性的,而且可以 NULL。 如果未 NULL,則會忽略 Size 和 PoolTag 成員。
ContextFreeCallback
PFLT_CONTEXT_FREE_CALLBACK類型的迷你篩選定義 ContextFreeCallback 例程的指標。 這個成員是選擇性的,而且可以 NULL。 如果未 NULL,則會忽略 Size 和 PoolTag 成員。
Reserved1
保留供系統使用。 迷你篩選必須將這個成員設定為 NULL。
言論
當小型篩選程式從其 DriverEntry 例程呼叫 FltRegisterFilter 時,它必須註冊所使用的每個內容類型。
為了註冊這些內容類型,迷你篩選程式會建立FLT_CONTEXT_REGISTRATION結構的可變長度陣列,並將數位的指標儲存在 ContextRegistrationFLT_REGISTRATION 結構的成員中,迷你篩選會作為 FltRegisterFilterRegistration 參數傳遞。 這個陣列的最後一個項目必須是 {FLT_CONTEXT_END}。
針對迷你篩選所使用的每個內容類型,迷你篩選程序必須根據下列規則提供至少一個FLT_CONTEXT_REGISTRATION結構:
- 如果迷你篩選程式提供具有非NULL ContextAllocateCallback 成員的FLT_CONTEXT_REGISTRATION結構,它就無法為該內容類型提供任何其他FLT_CONTEXT_REGISTRATION結構。
- 如果迷你篩選提供兩個或多個相同的FLT_CONTEXT_REGISTRATION結構,則只會使用第一個結構。 將會忽略其他專案。
- 每個內容類型只能提供一個具有 Size 成員FLT_CONTEXT_REGISTRATION結構FLT_VARIABLE_SIZED_CONTEXTS。
- 每個內容類型只能提供三個具有 Size FLT_VARIABLE_SIZED_CONTEXTS 成員的 FLT_CONTEXT_REGISTRATION 結構。
要求
| 要求 | 價值 |
|---|---|
| 標頭 | fltkernel.h (包括 Fltkernel.h) |