共用方式為


刪除上下文

成功呼叫 FltSetXxxContext 設定的每個上下文最終必須被刪除。

篩選管理員會在發生下列情況時自動刪除內容:

  • 刪除內容所附加的物件
  • 小型篩選器實例從磁碟區分離
  • 小型篩選驅動程式已卸除

因此,小型篩選程式很少需要明確刪除內容。

迷你篩選器可以透過呼叫以下其中一個內容刪除程序來刪除內容:

只有在目前 設為物件的情境時,才能刪除情境。 如果尚未設定該上下文,或該上下文已被成功呼叫 FltSetXxxContext 取代,則無法刪除該上下文。

如果 OldContext 不是 NULL則 FltDeleteXxxContext 例程會傳回 OldContext 參數中舊內容的指標,而不會指向NULL_CONTEXT。 如果 OldContextNULL,篩選管理員就會遞減內容上的參考計數,然後釋放該內容,除非微篩選器有未處理的參考。

下列程式代碼範例示範如何刪除資料流內容:

status = FltDeleteStreamContext(
 FltObjects->Instance,      //Instance
 FltObjects->FileObject,    //FileObject
           &oldContext);              //OldContext
//
// Perform any needed processing
// ...
//
if (oldContext != NULL) {
 FltReleaseContext(oldContext);
}

在此範例中, FltDeleteStreamContext

  • 從數據流中移除流上下文。
  • 不會遞減上下文的參考計數,因為 OldContext 參數不是 NULL。
  • 傳回 OldContext 參數中已刪除內容的位址(已從數據流移除的內容)。

由於非 NULL OldContext 參數,在執行任何必要的處理之後,過濾器必須藉由呼叫 FltReleaseContext 來釋放已刪除的上下文。