Compartilhar via


Função FsRtlAllocateExtraCreateParameterList (ntifs.h)

A rotina FsRtlAllocateExtraCreateParameterList aloca memória de pool de páginas para uma estrutura ECP_LIST e gera um ponteiro para essa estrutura.

Sintaxe

NTSTATUS FsRtlAllocateExtraCreateParameterList(
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

Parâmetros

[in] Flags

Define as opções de alocação do pool. Se o sinalizador FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA for combinado com o parâmetro Flags usando uma operação OR bit a bit, qualquer pool alocado por FsRtlAllocateExtraCreateParameterList será cobrado contra a cota de memória do processo atual.

[out] EcpList

Recebe um ponteiro para uma estrutura de lista ECP inicializada. Se FsRtlAllocateExtraCreateParameterList não alocar pool suficiente, * EcpList será NULL e FsRtlAllocateExtraCreateParameterList retornará o código de status STATUS_INSUFFICIENT_RESOURCES.

Valor de retorno

FsRtlAllocateExtraCreateParameterList pode retornar um dos seguintes valores:

Código de retorno Descrição
STATUS_INSUFFICIENT_RESOURCES FsRtlAllocateExtraCreateParameterList não pôde alocar memória suficiente para uma estrutura de lista ECP. Nesse caso, * EcpList será NULL.
STATUS_SUCCESS A memória da estrutura de ECP_LIST foi alocada e inicializada com êxito. Nesse caso, um ponteiro para a estrutura de lista inicializada é retornado no parâmetro EcpList .

Observações

Se o sistema operacional libera automaticamente a memória que FsRtlAllocateExtraCreateParameterList depende de quando FsRtlAllocateExtraCreateParameterList é chamado, conforme mostrado nas seguintes situações:

  • Um chamador pode invocar FsRtlAllocateExtraCreateParameterList para alocar o ECP_LIST e adicionar uma ou mais estruturas de contexto ECP antes que o chamador invoque a rotina de IoCreateFileEx . Nessa situação, o sistema operacional não libera nenhuma das estruturas de contexto ECP. Portanto, o chamador pode fazer várias chamadas para IoCreateFileEx com o mesmo conjunto de ECP. Quando o chamador terminar de ECP_LIST, o chamador deverá chamar a rotina FltFreeExtraCreateParameter para liberar o ECP_LIST.

  • Enquanto um driver de filtro do sistema de arquivos ou sistema de arquivos processa uma solicitação IRP_MJ_CREATE, o driver de filtro do sistema de arquivos ou do sistema de arquivos pode chamar FltInsertExtraCreateParameter para anexar um ECP a um ECP_LIST existente. Se o ECP_LIST não existir, o chamador deverá chamar FsRtlAllocateExtraCreateParameterList para criar o ECP_LIST. Nessa situação, o ECP_LIST e a estrutura de contexto ECP são limpos automaticamente pelo gerenciador de E/S quando a operação de criação é concluída. Isso permite que o ECP do driver de filtro ou do sistema de arquivos seja propagado corretamente no processamento de pontos de nova análise. Esse processo pode exigir que várias solicitações de IRP_MJ_CREATE sejam geradas.

Se o sinalizador de FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA for usado com o parâmetro sinalizadores , um pool de páginas será alocado. Caso contrário, um pool de páginas será alocado usando uma lista lookaside interna.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows Vista
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte também

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx