FltSetStreamContext 函式 (fltkernel.h)
FltSetStreamContext 例程會設定檔案數據流的內容。
語法
NTSTATUS FLTAPI FltSetStreamContext(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
參數
[in] Instance
迷你篩選驅動程序實例的不透明實例指標,其內容要插入、移除或取代於附加至檔案數據流的內容清單中。
[in] FileObject
[in] Operation
旗標,指定要執行之作業的詳細數據。 此參數必須是下列其中一項:
旗 | 意義 |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | 如果已為 Instance設定內容,FltSetStreamContext 會將它取代為 NewContext 中所指定的內容。 否則,它會將 NewContext 插入檔案數據流的內容清單中。 |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | 如果這個 實例已經設定內容,FltSetStreamContext 會傳回STATUS_FLT_CONTEXT_ALREADY_DEFINED,而且不會取代現有的內容或遞增參考計數。 如果尚未設定內容,則例程會將 NewContext 插入檔案數據流的內容清單中,並遞增參考計數。 |
[in] NewContext
要為檔案數據流設定之新內容的指標。 這是必要參數,而且無法 NULL。
[out] OldContext
已設定實例 參數之 現有數據流內容位址的呼叫端配置變數指標。 這個參數是選擇性的,而且可以 NULL。 如需此參數的詳細資訊,請參閱下列一節。
傳回值
FltSetStreamContext 例程會傳回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 參數指定了無效的值。 這是錯誤碼。 |
STATUS_NOT_SUPPORTED | 檔案系統不支援此檔案數據流的每個數據流內容。 這是錯誤碼。 |
言論
如需內容的詳細資訊,請參閱 關於小型篩選內容。
小型篩選驅動程式會呼叫 FltSetStreamContext 將數據流內容附加至檔案數據流,或移除或取代現有的數據流內容。 小型篩選驅動程式可以將每個迷你篩選驅動程序實例一個內容附加至檔案數據流。
FltSetStreamContext 無法在未開啟 的 FileObject上呼叫。 因此無法從數據流的預先建立回呼呼叫,因為該時間點尚未開啟數據流。 不過,小型篩選驅動程式可以在預先建立回呼中配置和設定數據流內容,使用完成內容參數將它傳遞至建立後回呼,並在建立后回呼中設定數據流上的數據流內容。
參考計數
如果 FltSetStreamContext 成功:
- NewContext 上的參考計數會遞增。 不再需要 NewContext 時,迷你篩選程序必須呼叫 FltReleaseContext 以遞減其參考計數。
否則,如果 FltSetStreamContext 失敗:
- NewContext 的參考計數保持不變。
- 如果 OldContext 不是 NULL,而且未指向 NULL_CONTEXT 則 OldContext 是目前與數據流相關聯之內容的參考指標。 呼叫 fltSetStreamContext 的篩選必須呼叫 OldContext OldContext 的 FltReleaseContext,以及不再需要內容指標時。
不論成功為何:
- 呼叫 fltSetStreamContext 篩選必須呼叫 FltReleaseContext,以遞減 NewContext 物件上的參考計數,FltAllocateContext遞增。
如需詳細資訊,請參閱 參考內容。
其他內容作業
若要判斷指定的檔案是否支持數據流內容,請呼叫 FltSupportsStreamContexts
若要設定新的內容,請呼叫 FltAllocateContext。
若要取得數據流內容,請呼叫 FltGetStreamContext。
若要刪除資料流內容,請呼叫 FltDeleteStreamContext 或 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 |