Compartilhar via


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 por 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 por 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 deNULL não 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 deNULL não para esse parâmetro. Essa rotina e seus parâmetros são definidos da seguinte maneira:

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

do Buffer

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

Valor de retorno

Nenhum

Observações

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 de do FreeCallback é chamada em IRQL <= APC_LEVEL. Normalmente, ele é chamado no IRQL PASSIVE_LEVEL.

Observação a rotina de do FreeCallback não pode ser recursivamente chamada para o sistema de arquivos ou adquirir recursos do sistema de arquivos. Além disso, essa rotina deve assumir que o objeto de arquivo do fluxo de arquivos já foi liberado.
 
Para associar uma estrutura de contexto inicializada por fluxo 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 controle Per-Stream contexto em um driver de filtro do sistema de arquivos herdado.

Requisitos

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

Consulte também

ExAllocatePoolWithTag

ExFreePool

FSRTL_PER_STREAM_CONTEXT

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlSetupAdvancedHeader

FsRtlSupportsPerStreamContexts

FsRtlTeardownPerStreamContexts