檔系統迷你篩選預先作業回呼_Flt_CompletionContext_Outptr_批注
當您宣告文件系統迷你篩選前置作業回呼函式PFLT_PRE_OPERATION_CALLBACK時,請使用_Flt_CompletionContext_Outptr_批注。 將此批注放在 CompletionContext 參數上。 此批注會指示程序代碼分析工具檢查 CompletionContext 是否正確,以FLT_PREOP_CALLBACK_STATUS傳回值。
如果作業前回呼函式 (PFLT_PRE_OPERATION_CALLBACK) 會傳回FLT_PREOP_SUCCESS_WITH_CALLBACK或FLT_PREOP_SYNCHRONIZE CompletionContext 可能不是 NULL。 對於任何其他FLT_PREOP_CALLBACK_STATUS傳回值, CompletionContext 必須是 NULL。 CompletionContext 是篩選定義的狀態,會從篩選的前置作業回呼傳遞至對應的作業後回呼函式, (PFLT_POST_OPERATION_CALLBACK) 。 只有在篩選從其作業前回呼函式傳回FLT_PREOP_SUCCESS_WITH_CALLBACK或FLT_PREOP_SYNCHRONIZE時,才會呼叫後續作業回呼。 如果篩選條件未將任何狀態從其作業前回呼函式傳遞至其後置作業回呼函式, 則 CompletionContext 為 NULL,因此其後置作業回呼函式中的 CompletionContext 會是 NULL。 每個個別篩選會決定是否要從前置作業回呼函式傳回 CompletionContext 中的狀態,因此每個個別篩選條件最多可以知道它是否應該在其後續作業回呼函式中查看 CompletionContext 。
範例
下列範例顯示名為 SwapPreReadBuffers之PFLT_PRE_OPERATION_CALLBACK函式的函式原型。 CompletionContext 參數會接收將傳遞至作業後回呼函式的內容,並以批注_Flt_CompletionContext_Outptr_宣告。
FLT_PREOP_CALLBACK_STATUS
SwapPreReadBuffers(
_Inout_ PFLT_CALLBACK_DATA Data,
_In_ PCFLT_RELATED_OBJECTS FltObjects,
_Flt_CompletionContext_Outptr_ PVOID *CompletionContext
);
_Flt_CompletionContext_Outptr_批注定義於specstrings.h中。 使用註釋可以新增寶貴的錯誤檢查,而不會增加程式碼的額外負荷或複雜度。