Macro FsRtlInitPerStreamContext (ntifs.h)

La macro FsRtlInitPerStreamContext inicializa una estructura de contexto del controlador de filtro.

Sintaxis

void FsRtlInitPerStreamContext(
   _fc,
   _owner,
   _inst,
   _cb
);

Parámetros

_fc

Puntero a una estructura de FSRTL_PER_STREAM_CONTEXT asignada por el autor de la llamada que se usará para mantener la información de contexto de una secuencia de archivos. Esta estructura se puede usar tal cual o incrustada en una estructura de contexto definida por controlador. Ambos tipos de estructura se asignan normalmente mediante una llamada a ExAllocatePoolWithTag.

_owner

Puntero a una variable asignada por el autor de la llamada que identifica de forma única el propietario de la estructura de contexto por secuencia. El formato de esta variable es el controlador de filtro - específico. Los escritores de filtros deben elegir un valor que sea significativo y conveniente, como la dirección de un objeto de controlador o un objeto de dispositivo. Los autores de llamadas deben especificar un valor distinto de NULL para este parámetro.

_inst

Puntero a un controlador de filtro : variable asignada que se puede usar para distinguir entre las estructuras de contexto por secuencia creadas por el mismo controlador de filtro. El formato de esta variable es el controlador de filtro - específico. Los escritores de filtros deben elegir un valor que sea significativo y práctico, como la dirección del objeto de contexto de secuencia para la secuencia de archivos. (Para obtener esta dirección de un objeto de archivo, use la macro FsRtlGetPerStreamContextPointer ). Este parámetro es opcional y puede ser NULL.

_cb

Puntero a una rutina de devolución de llamada que libera la estructura de contexto por secuencia. Los autores de llamadas deben especificar un valor distinto de NULL para este parámetro. Esta rutina y sus parámetros se definen de la siguiente manera:

typedef
VOID (*PFREE_FUNCTION) (
          IN PVOID Buffer
          );

Búfer

Puntero a la estructura de contexto por secuencia que se va a liberar. La rutina FreeCallback normalmente convierte este puntero al tipo de puntero de estructura adecuado y lo libera llamando a ExFreePool.

Valor devuelto

None

Observaciones

Un controlador de filtro del sistema de archivos usa la macro FsRtlInitPerStreamContext para inicializar una estructura de contexto por secuencia recién asignada antes de asociarla a una secuencia de archivos. La estructura de contexto inicializada se puede pasar como parámetro a FsRtlInsertPerStreamContext.

FsRtlInitPerStreamContext almacena la dirección de la rutina FreeCallback en el miembro FreeCallback de la estructura FSRTL_PER_STREAM_CONTEXT.

Se llama a la rutina FreeCallback en IRQL <= APC_LEVEL. Normalmente, se llama a en irQL PASSIVE_LEVEL.

Nota La rutina FreeCallback no puede llamar recursivamente al sistema de archivos ni adquirir ningún recurso del sistema de archivos. Además, esta rutina debe suponer que el objeto de archivo para la secuencia de archivos ya se ha liberado.
 
Para asociar una estructura de contexto por secuencia inicializada con una secuencia de archivos, llame a FsRtlInsertPerStreamContext.

Una vez asociada la estructura de contexto a una secuencia de archivos, se puede recuperar llamando a FsRtlLookupPerStreamContext o quitando mediante una llamada a FsRtlRemovePerStreamContext.

Para obtener más información, vea Seguimiento de Per-Stream contexto en un controlador de filtro del sistema de archivos heredado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP; Paquete acumulativo de actualizaciones para Windows 2000 Service Pack 4 (SP4)
Plataforma de destino Escritorio
Encabezado ntifs.h (incluya Ntifs.h)
IRQL Cualquier nivel

Consulte también

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts