共用方式為


建立情境

一旦小型篩選程式註冊其使用的內容類型,就可以呼叫 FltAllocateContext來建立內容。 此例程會根據 註冊內容類型中所述的準則,選取要使用的適當內容定義。

在分配內容並嘗試設定之前,迷你篩選器可以呼叫下列例程,以判斷基礎檔案系統是否支援檔案、資料流或資料流句柄內容:

在下列程式代碼範例中,取自 CTX 範例迷你篩選程式 驅動程式,CtxInstanceSetup 例程呼叫 FltAllocateContext 來建立實例內容:

status = FltAllocateContext(
      FltObjects->Filter,           //Filter
      FLT_INSTANCE_CONTEXT,         //ContextType
      CTX_INSTANCE_CONTEXT_SIZE,    //ContextSize
      NonPagedPool,                 //PoolType
      &instanceContext);            //ReturnedContext

在 CTX 範例中,下列內容定義會針對實例內容註冊:

{ FLT_INSTANCE_CONTEXT,              //ContextType
  0,                                 //Flags
  CtxContextCleanup,                 //ContextCleanupCallback
  CTX_INSTANCE_CONTEXT_SIZE,         //Size
  CTX_INSTANCE_CONTEXT_TAG },        //PoolTag

內容定義是固定大小的,因為 Size 成員是CTX_INSTANCE_CONTEXT_SIZE(而不是FLT_VARIABLE_SIZED_CONTEXTS,FLT_VARIABLE_SIZED_CONTEXTS用於表示可變大小的內容定義)。 請注意,FLTFL_CONTEXT_REGISTRATION_NO_EXACT_SIZE_MATCH旗標並未在 旗標成員 中設定。 在此情況下,如果 ContextSize 參數的值 FltAllocateContext 符合內容定義 Size 成員的值,FltAllocateContext 從適當的非分頁外觀清單中配置實例內容。 如果值不相符,FltAllocateContext 會失敗,傳回值為 STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND。

成功時,FltAllocateContext 將新內容上的參考計數初始化為一個。 當不再需要上下文時,迷你篩選驅動程式必須釋放此參考。 因此,FltAllocateContext 的每個呼叫都必須與後續呼叫 FltReleaseContext相符。

建立上下文之後,Minifilter 可以針對物件 設定