Bagikan melalui


Merilis Konteks

Minifilter merilis konteks dengan memanggil FltReleaseContext. Setiap panggilan yang berhasil ke salah satu rutinitas berikut akhirnya harus dicocokkan dengan panggilan ke FltReleaseContext:

Perhatikan bahwa penunjuk OldContext yang dikembalikan oleh FltSetXxxContext dan penunjuk Konteks yang dikembalikan oleh FltDeleteContext juga harus dirilis ketika tidak lagi diperlukan.

Dalam contoh kode berikut, diambil dari minifilter sampel CTX, rutinitas CtxInstanceSetup membuat dan mengatur konteks instans lalu memanggil FltReleaseContext:

status = FltAllocateContext(
           FltObjects->Filter,           //Filter
           FLT_INSTANCE_CONTEXT,         //ContextType
           CTX_INSTANCE_CONTEXT_SIZE,    //ContextSize
           NonPagedPool,                 //PoolType
           &instanceContext);            //ReturnedContext
...
status = FltSetInstanceContext(
           FltObjects->Instance,              //Instance
           FLT_SET_CONTEXT_KEEP_IF_EXISTS,    //Operation
           instanceContext,                   //NewContext
           NULL);                             //OldContext

if (instanceContext != NULL) {
  FltReleaseContext(instanceContext);
}
return status;

Perhatikan bahwa FltReleaseContext dipanggil terlepas dari apakah panggilan ke FltSetInstanceContext berhasil: