Função FsRtlAllocateExtraCreateParameter (ntifs.h)
A rotina FsRtlAllocateExtraCreateParameter aloca memória para uma estrutura de contexto ECP (parâmetro de criação extra) e gera um ponteiro para essa estrutura.
Sintaxe
NTSTATUS FsRtlAllocateExtraCreateParameter(
[in] LPCGUID EcpType,
[in] ULONG SizeOfContext,
[in] FSRTL_ALLOCATE_ECP_FLAGS Flags,
[in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
[in] ULONG PoolTag,
[out] PVOID *EcpContext
);
Parâmetros
[in] EcpType
Um 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.
[in] Flags
Define as opções de alocação do pool. O seguinte descreve como o pool será alocado quando um ou mais dos valores de sinalizador listados forem combinados com o parâmetro Flags usando uma operação OR bit a bit:
FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL – o pool não paginado será alocado. Se esse valor de sinalizador não for usado, o pool de páginas será alocado.
FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA - Todo o pool alocado por FsRtlAllocateExtraCreateParameter será cobrado em relação à cota de memória do processo atual.
Se mais de um sinalizador for usado, todos os efeitos associados aos valores de sinalizador utilizados ocorrerão.
[in, optional] CleanupCallback
Ponteiro opcional para uma rotina de retorno de chamada de limpeza definida por filtro do tipo PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. A rotina de retorno de chamada de limpeza é chamada quando a estrutura ECP (criada pela rotina FsRtlAllocateExtraCreateParameter ) é excluída. Defina esse parâmetro como NULL se uma rotina de retorno de chamada de limpeza não for aplicável.
[in] PoolTag
Especifica a marca de pool para a memória alocada. Para obter mais informações, consulte o parâmetro Tag de ExAllocatePoolWithTag.
[out] EcpContext
Recebe um ponteiro para a estrutura de contexto ECP alocada. Se a rotina não alocar pool suficiente, o valor apontado por EcpContext será NULL e FsRtlAllocateExtraCreateParameter retornará status STATUS_INSUFFICIENT_RESOURCES de código.
Retornar valor
FltAllocateExtraCreateParameter retorna um código status, como um dos seguintes:
Código de retorno | Descrição |
---|---|
STATUS_INSUFFICIENT_RESOURCES | FsRtlAllocateExtraCreateParameter não pôde alocar memória suficiente para uma estrutura ECP. Nesse caso, EcpContext é NULL. |
STATUS_SUCCESS | A estrutura ECP foi alocada com êxito. Nesse caso, um ponteiro para a estrutura alocada é retornado no parâmetro EcpContext . |
Comentários
Por padrão, a rotina FsRtlAllocateExtraCreateParameter aloca o pool de memória paginada para uma estrutura de contexto ECP. Se o FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL bitmask for usado conforme descrito no parâmetro Flags , um pool de memória não paginado será alocado. Depois que esse pool é alocado e a estrutura de contexto ECP é inicializada, a rotina FltInsertExtraCreateParameter é usada para inserir a estrutura de contexto ECP (elemento de lista ECP) em uma estrutura de lista ECP (ECP_LIST).
Se o chamador aloca ECP_LIST e um ou mais ECPs são usados em uma chamada para IoCreateFileEx, a descrição anterior está correta. Nesse caso, o sistema não libera nenhum dos ECPs, portanto, o chamador pode fazer várias chamadas para IoCreateFileEx com o mesmo conjunto de ECP. 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.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | A rotina FsRtlAllocateExtraCreateParameter 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
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList