Função FltAllocateExtraCreateParameterFromLookasideList (fltkernel.h)

A rotina FltAllocateExtraCreateParameterFromLookasideList aloca o pool de memória de uma determinada lista lookaside para uma estrutura de contexto de parâmetro de criação extra (ECP) e gera um ponteiro para essa estrutura.

Sintaxe

NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
  [in]           PFLT_FILTER                                    Filter,
  [in]           LPCGUID                                        EcpType,
  [in]           ULONG                                          SizeOfContext,
  [in]           FSRTL_ALLOCATE_ECP_FLAGS                       Flags,
  [in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
  [in, out]      PVOID                                          LookasideList,
  [out]          PVOID                                          *EcpContext
);

Parâmetros

[in] Filter

Ponteiro de filtro opaco para o driver de minifiltro. Esse ponteiro identifica exclusivamente o driver de minifiltro e permanece constante desde que o driver de minifiltro seja carregado.

[in] EcpType

Ponteiro para um GUID que indica o tipo da estrutura de contexto ECP. Consulte Usando GUIDs em drivers para obter mais informações.

[in] SizeOfContext

O tamanho, em bytes, da estrutura de contexto ECP.

[in] Flags

Define as opções de alocação do pool. Se o valor do parâmetro SizeOfContext for maior que o tamanho, em bytes, da lista lookaside fornecida, a estrutura de contexto ECP será alocada do pool do sistema em vez da lista lookaside. Nesse caso, se o parâmetro Flags contiver o valor do sinalizador de bit FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, o pool de sistemas alocado pela rotina será cobrado em relação à cota de memória do processo atual. Consulte o parâmetro Flags de FltAllocateExtraCreateParameter para obter mais informações. No caso mais típico quando a memória para a estrutura de contexto ECP é alocada da lista lookaside, o sinalizador de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA não é usado pela rotina.

[in, optional] CleanupCallback

Ponteiro opcional para uma rotina de retorno de chamada de limpeza definida por minifiltro do tipo PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. A rotina de retorno de chamada de limpeza é chamada quando a estrutura de contexto ECP é excluída. Defina esse parâmetro como NULL se uma rotina de retorno de chamada de limpeza não for aplicável.

[in, out] LookasideList

Ponteiro para uma lista inicializada lookaside na qual tentar alocar o pool de (para a estrutura de contexto do ECP). Para inicializar a lista lookaside, use a rotina FltInitExtraCreateParameterLookasideList .

[out] EcpContext

Recebe um ponteiro para a estrutura de contexto ECP alocada. Se a rotina não conseguir alocar pool suficiente para a estrutura de contexto ECP, EcpContext será NULL e a rotina retornará status código STATUS_INSUFFICIENT_RESOURCES.

Retornar valor

A rotina FltAllocateExtraCreateParameterFromLookasideList pode retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_INSUFFICIENT_RESOURCES A rotina FltAllocateExtraCreateParameterFromLookasideList não pôde alocar memória suficiente para uma estrutura de contexto ECP. Nesse caso, EcpContext será NULL.
STATUS_SUCCESS A estrutura de contexto do ECP foi alocada com êxito. Nesse caso, um ponteiro para a estrutura alocada é retornado pelo parâmetro EcpContext .

Comentários

Essa rotina está disponível a partir do Windows Vista.

A rotina FltAllocateExtraCreateParameterFromLookasideList aloca o pool de memória para uma estrutura de contexto ECP da lista inicializada inicializada ou não paginada. No entanto, se o tamanho da estrutura de contexto ECP (conforme definido pelo parâmetro SizeOfContext ) for maior do que a lista lookaside, a rotina alocará de forma análoga a memória do pool de sistemas paginado ou não paginado.

Use a rotina FltInitExtraCreateParameterLookasideList para inicializar uma lista lookaside de pool paginada ou não paginada. Use a rotina FltAllocateExtraCreateParameterFromLookasideList para alocar uma estrutura de contexto ECP da lista lookaside e a rotina FltFreeExtraCreateParameter para desalocar a estrutura de contexto do ECP.

Use a rotina FltDeleteExtraCreateParameterLookasideList para liberar uma lista lookaside.

Os drivers devem liberar todas as estruturas de contexto ECP e listas lookaside que eles criam antes de descarregar. No entanto, se um sistema de arquivos ou driver de filtro do sistema de arquivos anexar um ECP a um ECP_LIST existente ou recém-criado durante o processamento de uma solicitação de IRP_MJ_CREATE, esse ECP será limpo automaticamente quando o IRP for concluído. Como resultado, um driver de filtro não precisa limpo ECPs adicionados dinamicamente. Isso permite que o ECP de um driver de filtro seja propagado corretamente entre os pontos de nova análise – um processo que pode exigir que várias solicitações de IRP_MJ_CREATE sejam geradas.

Para obter mais informações sobre como usar listas lookaside com drivers, consulte Using Lookaside Listas.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
IRQL <= APC_LEVEL

Confira também

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK