FltSetInstanceContext 函式 (fltkernel.h)
FltSetInstanceContext 設定迷你篩選驅動程序實例的內容。
語法
NTSTATUS FLTAPI FltSetInstanceContext(
[in] PFLT_INSTANCE Instance,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
參數
[in] Instance
實例的不透明實例指標。
[in] Operation
旗標,指定要執行之作業的詳細數據。 此參數必須是下列其中一項:
旗 | 意義 |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | 如果實例已設定 Instance 參數指向的內容,FltSetInstanceContext 會將該內容取代為 NewContext 中所指定的內容。 否則,它會將 NewContext 設定為 實例的內容。 |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | 如果這個 實例已經設定內容,FltSetInstanceContext 會傳回STATUS_FLT_CONTEXT_ALREADY_DEFINED,而且不會取代現有的內容或遞增參考計數。 如果尚未設定內容,例程會設定 NewContext 做為 Instance 的內容,並遞增參考計數。 |
[in] NewContext
要為實例設定之新內容的指標。 這是必要參數,而且無法 NULL。
[out] OldContext
如果已設定實例內容,則為呼叫端配置的變數指標,該變數會接收現有實例內容的位址。 這個參數是選擇性的,而且可以 NULL。 如需此參數的詳細資訊,請參閱下列一節。
傳回值
FltSetInstanceContext 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:
傳回碼 | 描述 |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | 如果已為 Operation 參數指定FLT_SET_CONTEXT_KEEP_IF_EXISTS,這個錯誤碼表示內容已經附加至 實例。 只有一個內容可以附加至 實例。 |
STATUS_FLT_CONTEXT_ALREADY_LINKED | NewContext 參數所指向的內容已經連結至 物件。 換句話說,這個錯誤碼表示由於呼叫 FltSetXxxContext 例程,NewContext 已在使用中。 |
STATUS_FLT_DELETING_OBJECT | Instance 參數中指定的實例正在被拆毀。 這是錯誤碼。 |
STATUS_INVALID_PARAMETER | 傳遞了無效的參數。 例如,NewContext 參數不會指向有效的檔案內容,或為 Operation 參數指定了無效的值。 這是錯誤碼。 |
言論
如需內容的詳細資訊,請參閱 關於小型篩選內容。
小型篩選驅動程式會呼叫 FltSetInstanceContext,將實例內容附加至呼叫端擁有的迷你篩選驅動程序實例,或移除或取代現有的實例內容。 小型篩選驅動程式只能將一個內容附加至 實例。
參考計數
如果 FltSetInstanceContext 成功:
- NewContext 上的參考計數會遞增。 當不再需要 newContext 所指向的內容時,迷你篩選程式必須呼叫 FltReleaseContext 以遞減其參考計數。
否則,如果 FltSetInstanceContext 失敗:
- NewContext 的參考計數保持不變。
- 如果 OldContext 未 NULL 且未指向 NULL_CONTEXT,則 OldContext 是目前與實例相關聯之內容的參考指標。 呼叫 FltSetInstanceContext 的篩選條件最終必須呼叫 OldContext 的 FltReleaseContext,以及不再需要內容指標時呼叫。
不論成功為何:
- 呼叫 FltSetInstanceContext 的篩選必須呼叫 fltReleaseContext,以遞減 NewContext 物件上的參考計數,FltAllocateContext遞增。
如需詳細資訊,請參閱 參考內容。
其他內容作業
若要設定新的內容,請呼叫 FltAllocateContext。
若要取得實例內容,請呼叫 FltGetInstanceContext。
若要刪除實例內容,請呼叫 FltDeleteInstanceContext 或 FltDeleteContext。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於SP4、Windows XP SP2、Windows Server 2003 SP1 和更新版本的作系統,Microsoft Windows 2000 更新匯總 1 中提供及支援。 |
目標平臺 | 普遍 |
標頭 | fltkernel.h (包括 Fltkernel.h) |
連結庫 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |