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
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList