Creating Contexts 建立上下文

2022-03-07 14:14:00 字數 1704 閱讀 7293

一旦乙個微過濾驅動已經註冊了它使用的上下文型別,它能建立乙個上下文通過呼叫fltallocatecontext。這個例程根據上下文型別標準選擇正確的上下文定義。

例如,我們建立乙個上下文例項如下:

status = fltallocatecontext(

fltobjects->filter,           //驅動

flt_instance_context,         //上下文型別

ctx_instance_context_size,    //上下文大小

nonpagedpool,                 //池子型別

&instancecontext);            //返回的上下文

它的原型如下:ntstatus

fltallocatecontext(

in pflt_filterfilter

,

in flt_context_typecontexttype

,

in size_tcontextsize

,

in pool_typepooltype

,

out pflt_context*returnedcontext

);

這裡只有第二個第三個和第四個需要驅動開發者指定,二三可以從定義 flt_context_registration 結構體裡找到,如下

,        //池子標籤

第四個引數分為分頁(pagedpool)和非分頁(nonpagedpool)

上面的例子是固定大小的上下文定義,因為size是乙個常量 。(如果size的值為flt_variable_sized_contexts,它將是可變長的上下文定義。)注意,flags成員沒有設定fltfl_context_registration_no_exact_size_match flag。這種情況,如果賦給fltallocatecontext的size值和上下文定義的size值匹配,則建立成功,fltallocatecontext分配例項上下文從正確的非分頁後備列表。如果不匹配,則失敗,返回值status_flt_context_allocation_not_found.

fltallocatecontext例項引用依賴上下文。當上下文不需要了,微過濾驅動必須釋放引用。因此,每呼叫fltallocatecontext必須呼叫和他匹配的fltreleasecontext。

它的原型如下:

void

fltreleasecontext(

in pflt_contextcontext

);

呼叫釋放資源:

fltreleasecontext(instancecontext);

建立初始上下文

initialcontext類實現context介面,呼叫其構造方法便可建立初始上下文 即搜尋請求物件的起始點 建立初始上下文需要設定以下兩個環境屬性 上下文工廠物件spi context.initial context factory,指定要使用哪個具體服務提供程式。連線字串context.pro...

1 1基本上下文建立

package com.godme.pojo public class person public void setname string name public intgetage public void setage int age override public string tostring...

建立以及響應選單 上下文選單

建立選單 override oncreateoptionmenu menu menu,menuinflater inflater 用引數inflater的inflate方法,把menu檔案的資源傳入menu中,該選單指的是位於工具欄的選單。響應選單 override onoprionsitemsel...