FSRTL_PER_FILE_CONTEXT structure

A legacy file system filter driver can use a FSRTL_PER_FILE_CONTEXT structure to associate driver-specific context information to an open file.

Syntax


typedef struct _FSRTL_PER_FILE_CONTEXT {
  LIST_ENTRY     Links;
  PVOID          OwnerId;
  PVOID          InstanceId;
  PFREE_FUNCTION FreeCallback;
} FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;

Members

Links

A link for this structure in the list of all per-file context structures that are associated with the same file. FsRtlInsertPerFileContext inserts this member into the list of all per-file context structures for a file.

OwnerId

A pointer to a filter-driver-allocated buffer that uniquely identifies the owner of the per-file context structure. The format of this variable is filter-driver-specific. Filter drivers must set this member to a non-NULL value.

InstanceId

A pointer to a filter-driver-allocated buffer that can be used to distinguish among the per-file context structures that are created by the same filter driver. The format of this variable is filter-driver-specific. Filter drivers can set this member to NULL.

FreeCallback

A pointer to a callback routine that frees the per-file context structure. Filter drivers must set this member to a non-NULL value.

Remarks

In order to associate context information with a file, a legacy filter driver first allocates a FSRTL_PER_FILE_CONTEXT structure and initializes it using FsRtlInsertPerFileContext. The driver then uses FsRtlInsertPerFileContext to associate that FSRTL_PER_FILE_CONTEXT object with the file. When the system tears down the file context object for a file, it calls FsRtlTeardownPerFileContexts which calls the FreeCallback routine that is specified in the FSRTL_PER_FILE_CONTEXT object. That callback must free the driver-specific context object.

Filter writers should choose an OwnerID value that is both meaningful and convenient, such as the address of a driver object or device object.

Filter writers should choose an InstanceID value that is both meaningful and convenient, such as the address of the file context object for the file. Use the FsRtlGetPerFileContextPointer macro to retrieve that address from a file object.

The FSRTL_PER_FILE_CONTEXT structure can be used as-is, or embedded in a driver-defined, per-file context structure.

The FSRTL_PER_FILE_CONTEXT structure can be allocated from paged or nonpaged pool.

Requirements

Version

Available starting withWindows Vista.

Header

Ntifs.h (include Fltkernel.h or Ntifs.h)

See also

FsRtlGetPerFileContextPointer
FsRtlInitPerFileContext
FsRtlInsertPerFileContext
FsRtlTeardownPerFileContexts
PFREE_FUNCTION
Tracking Per-File Context in a Legacy File System Filter Driver

 

 

Send comments about this topic to Microsoft

Show: