FltSetInstanceContext function

Download EaseFilter Filter Driver SDK Setup File
Download EaseFilter Filter Driver SDK Zip File

FltSetInstanceContext sets a context for a minifilter driver instance.


NTSTATUS FLTAPI FltSetInstanceContext(
  PFLT_INSTANCE             Instance,
  PFLT_CONTEXT              NewContext,
  PFLT_CONTEXT              *OldContext



Opaque instance pointer for the instance.


Flag specifying details of the operation to be performed. This parameter must be one of the following:


If a context is already set for this Instance, replace it with NewContext. Otherwise, set NewContext as the context for Instance.


If a context is already set for this Instance, return STATUS_FLT_CONTEXT_ALREADY_DEFINED. Otherwise, set NewContext as the context for Instance.


Pointer to the new context to be set for the instance. This parameter is required and cannot be NULL.


Pointer to a caller-allocated variable that receives the address of the existing instance context, if one is already set. This parameter is optional and can be NULL. (For more information about this parameter, see the following Remarks section.)

Return value

FltSetInstanceContext returns STATUS_SUCCESS or an appropriate NTSTATUS value such as one of the following:

Return code Description
If FLT_SET_CONTEXT_KEEP_IF_EXISTS was specified for Operation, this error code indicates that a context is already attached to the instance. Only one context can be attached to an instance.
The context pointed to by the NewContext parameter is already linked to an object. In other words, this error code indicates that NewContext is already in use due to a successful prior call of an FltSetXxxContext routine.
The specified Instance is being torn down. This is an error code.
One of the following:
  • The NewContext parameter does not point to a valid instance context.
  • An invalid value was specified for Operation.


A minifilter driver calls FltSetInstanceContext to attach an instance context to a caller-owned minifilter driver instance or to remove or replace an existing instance context. A minifilter driver can attach only one context to an instance.

A successful call to FltSetInstanceContext increments the reference count on NewContext. If FltSetInstanceContext fails, the reference count remains unchanged. In either case, the filter calling FltSetInstanceContext must call FltReleaseContext to decrement the NewContext object. If FltSetInstanceContext fails and if the OldContext parameter is not NULL and does not point to NULL_CONTEXT then OldContext is a referenced pointer to the context currently associated with the transaction. The filter calling FltSetInstanceContext must call FltReleaseContext for OldContext as well.

Note that the OldContext pointer returned by FltSetInstanceContext must also be released by calling FltReleaseContext when it is no longer needed. For more information, see Setting Contexts and Releasing Contexts.

To get an instance context, call FltGetInstanceContext.

To allocate a new context, call FltAllocateContext.

To delete an instance context, call FltDeleteInstanceContext or FltDeleteContext.

For more information about context reference counting, see Referencing Contexts.


Minimum supported client Available and supported in Microsoft Windows 2000 Update Rollup 1 for SP4, Windows XP SP2, Windows Server 2003 SP1, and later versions of the operating system. Not available nor supported on Windows 2000 SP4 and earlier operating systems.
Target Platform Universal
Header fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys