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