Macro FsRtlInitPerStreamContext (ntifs.h)

A macro FsRtlInitPerStreamContext inicializa uma estrutura de contexto do driver de filtro.

Sintaxe

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

Parâmetros

_fc

Ponteiro para uma estrutura de FSRTL_PER_STREAM_CONTEXT alocada pelo chamador a ser usada para manter informações de contexto para um fluxo de arquivos. Essa estrutura pode ser usada como está ou inserida em uma estrutura de contexto por fluxo definida pelo driver. Os dois tipos de estrutura geralmente são alocados chamando ExAllocatePoolWithTag.

_owner

Ponteiro para uma variável alocada pelo chamador que identifica exclusivamente o proprietário da estrutura de contexto por fluxo. O formato dessa variável é driver de filtro – específico. Os gravadores de filtro devem escolher um valor significativo e conveniente, como o endereço de um objeto de driver ou objeto de dispositivo. Os chamadores devem especificar um valor não NULL para esse parâmetro.

_inst

Ponteiro para um driver de filtro – variável alocada que pode ser usada para distinguir entre as estruturas de contexto por fluxo criadas pelo mesmo driver de filtro. O formato dessa variável é driver de filtro – específico. Os gravadores de filtro devem escolher um valor significativo e conveniente, como o endereço do objeto de contexto de fluxo para o fluxo de arquivos. (Para obter esse endereço de um objeto de arquivo, use a macro FsRtlGetPerStreamContextPointer .) Esse parâmetro é opcional e pode ser NULL.

_cb

Ponteiro para uma rotina de retorno de chamada que libera a estrutura de contexto por fluxo. Os chamadores devem especificar um valor não NULL para esse parâmetro. Essa rotina e seus parâmetros são definidos da seguinte maneira:

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

Buffer

Ponteiro para a estrutura de contexto por fluxo a ser liberada. A rotina FreeCallback normalmente converte esse ponteiro para o tipo de ponteiro de estrutura apropriado e o libera chamando ExFreePool.

Retornar valor

Nenhum

Comentários

Um driver de filtro do sistema de arquivos usa a macro FsRtlInitPerStreamContext para inicializar uma estrutura de contexto por fluxo recém-alocada antes de associá-la a um fluxo de arquivos. A estrutura de contexto inicializada pode ser passada como um parâmetro para FsRtlInsertPerStreamContext.

FsRtlInitPerStreamContext armazena o endereço da rotina FreeCallback no membro FreeCallback da estrutura FSRTL_PER_STREAM_CONTEXT.

A rotina FreeCallback é chamada em IRQL <= APC_LEVEL. Normalmente, ele é chamado em IRQL PASSIVE_LEVEL.

Nota A rotina FreeCallback não pode chamar recursivamente para o sistema de arquivos ou adquirir recursos do sistema de arquivos. Além disso, essa rotina deve assumir que o objeto de arquivo para o fluxo de arquivos já foi liberado.
 
Para associar uma estrutura de contexto por fluxo inicializada a um fluxo de arquivos, chame FsRtlInsertPerStreamContext.

Depois que a estrutura de contexto tiver sido associada a um fluxo de arquivos, ela poderá ser recuperada chamando FsRtlLookupPerStreamContext ou removida chamando FsRtlRemovePerStreamContext.

Para obter mais informações, consulte Acompanhamento Per-Stream contexto em um driver de filtro do sistema de arquivos herdado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP; Pacote cumulativo de atualizações para Windows 2000 Service Pack 4 (SP4)
Plataforma de Destino Área de Trabalho
Cabeçalho ntifs.h (inclua Ntifs.h)
IRQL Qualquer nível

Confira também

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts