Função FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)

A rotina FsRtlAllocateExtraCreateParameterFromLookasideList 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 FsRtlAllocateExtraCreateParameterFromLookasideList(
  [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] EcpType

Ponteiro para um GUID que indica o tipo de ECP para o qual uma estrutura de contexto deve ser alocada. Para obter mais informações sobre ECPs, consulte Usando parâmetros de criação extra com uma operação de IRP_MJ_CREATE.

[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 para a qual o parâmetro LookasideList aponta, FsRtlAllocateExtraCreateParameterFromLookasideList alocará a estrutura de contexto ECP 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 por FsRtlAllocateExtraCreateParameterFromLookasideList será cobrado na cota de memória do processo atual. Para obter mais informações sobre valores de sinalizador de bit, consulte o parâmetro Flags de FsRtlAllocateExtraCreateParameter. No caso mais típico, quando FsRtlAllocateExtraCreateParameterFromLookasideList aloca memória para a estrutura de contexto ECP da lista lookaside, FsRtlAllocateExtraCreateParameterFromLookasideList ignora o sinalizador de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA.

[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 lookaside inicializada da qual FsRtlAllocateExtraCreateParameterFromLookasideList tenta alocar o pool (para a estrutura de contexto ECP). Para inicializar a lista lookaside, use a rotina FsRtlInitExtraCreateParameterLookasideList .

[out] EcpContext

Ponteiro para um local que recebe um ponteiro para a estrutura de contexto ECP alocada. Se FsRtlAllocateExtraCreateParameterFromLookasideList não conseguiu alocar pool suficiente para a estrutura de contexto ECP, FsRtlAllocateExtraCreateParameterFromLookasideList define EcpContext como NULL e retorna status código STATUS_INSUFFICIENT_RESOURCES.

Retornar valor

A rotina FsRtlAllocateExtraCreateParameterFromLookasideList pode retornar um dos seguintes valores:

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

Comentários

Use a rotina FsRtlInitExtraCreateParameterLookasideList para inicializar uma lista lookaside de pool paginada ou não paga. Use a rotina FsRtlAllocateExtraCreateParameterFromLookasideList para alocar uma estrutura de contexto ECP da lista lookaside e a rotina FsRtlFreeExtraCreateParameter para desalocar a estrutura de contexto ECP.

Use a rotina FsRtlDeleteExtraCreateParameterLookasideList para liberar uma lista lookaside.

Os drivers devem liberar todas as estruturas de contexto ECP e listas lookaside criadas antes de descarregar. No entanto, se um sistema de arquivos ou um 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 IRP_MJ_CREATE sejam geradas.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte FsRtlAllocateExtraCreateParameterFromLookasideList está disponível a partir do Windows Vista.
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Confira também

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK