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

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK