共用方式為


FltSetVolumeContext 函式 (fltkernel.h)

FltSetVolumeContext 設定磁碟區的內容。

語法

NTSTATUS FLTAPI FltSetVolumeContext(
  [in]            PFLT_VOLUME               Volume,
  [in]            FLT_SET_CONTEXT_OPERATION Operation,
  [in]            PFLT_CONTEXT              NewContext,
  [out, optional] PFLT_CONTEXT              *OldContext
);

參數

[in] Volume

磁碟區的不透明磁碟區指標。

[in] Operation

旗標,指定要執行之作業的詳細數據。 此參數必須是下列其中一項:

意義
FLT_SET_CONTEXT_REPLACE_IF_EXISTS 如果已針對 Volume設定內容,FltSetVolumeContext 會將其取代為 newContext >。 否則,它會將 NewContext 插入磁碟區的內容清單中。
FLT_SET_CONTEXT_KEEP_IF_EXISTS 如果已為此磁碟區設定內容,FltSetVolumeContext 會傳回STATUS_FLT_CONTEXT_ALREADY_DEFINED,而且不會取代現有的內容或遞增參考計數。 如果尚未設定內容,例程會將 NewContext 插入磁碟區的內容清單中,並遞增參考計數。

[in] NewContext

要為磁碟區設定之新內容的指標。 這是必要參數,而且無法 NULL

[out, optional] OldContext

呼叫端配置的變數指標,該變數會接收磁碟區 磁碟區之現有磁碟區內容的位址。 這個參數是選擇性的,而且可以 NULL。 如需此參數的詳細資訊,請參閱下列一節。

傳回值

FltSetVolumeContext 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:

傳回碼 描述
STATUS_FLT_CONTEXT_ALREADY_DEFINED 如果已針對 作業指定FLT_SET_CONTEXT_KEEP_IF_EXISTS,這個錯誤碼表示內容已經附加至磁碟區。
STATUS_FLT_CONTEXT_ALREADY_LINKED NewContext 參數所指向的內容已經連結至 物件。 換句話說,這個錯誤碼表示由於呼叫 FltSetXxxContext 例程,NewContext 已在使用中。
STATUS_FLT_DELETING_OBJECT 正在拆毀指定的 磁碟區。 這是錯誤碼。
STATUS_INVALID_PARAMETER 傳遞了無效的參數。 例如,NewContext 參數不會指向有效的磁碟區內容,或針對 Operation指定了無效的值。 這是錯誤碼。

言論

如需內容的詳細資訊,請參閱 關於小型篩選內容

小型篩選驅動程式會呼叫 FltSetVolumeContext 將內容附加至磁碟區,或移除或取代現有的磁碟區內容。 小型篩選驅動程式只能將一個內容附加至磁碟區。

參考計數

如果 FltSetVolumeContext 成功:

  • NewContext 上的參考計數會遞增。 不再需要 NewContext 時,迷你篩選程序必須呼叫 FltReleaseContext 以遞減其參考計數。

否則,如果 FltSetVolumeContext 失敗:

  • NewContext 的參考計數保持不變。
  • 如果 oldContext 不是 NULL,而且未指向 NULL_CONTEXT,則 OldContext 是目前與磁碟區相關聯之內容的參考指標。 呼叫 fltSetVolumeContext 的篩選條件必須針對不再需要內容指標時呼叫 FltReleaseContextOldContext

不論成功為何:

  • 呼叫 fltSetVolumeContext 篩選必須呼叫 FltReleaseContext,以遞減由 FltAllocateContext遞增之 NewContext 物件上的參考 計數。

如需詳細資訊,請參閱 參考內容

其他內容作業

如需詳細資訊,請參閱 設定內容發行內容

要求

要求 價值
最低支援的用戶端 適用於 SP4、Windows XP SP2、Windows Server 2003 SP1 和更新版本的作系統Microsoft Windows 2000 更新匯總 1 中提供和支援。
目標平臺 普遍
標頭 fltkernel.h (包括 Fltkernel.h)
連結庫 FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

另請參閱

FltAllocateContext

FltDeleteContext

FltDeleteVolumeContext

FltGetVolumeContext

FltReleaseContext