Share via


Función FltAllocateExtraCreateParameterList (fltkernel.h)

La rutina FltAllocateExtraCreateParameterList asigna memoria de grupo paginada para una estructura de lista de parámetros de creación adicional (ECP) y genera un puntero a esa estructura.

Sintaxis

NTSTATUS FLTAPI FltAllocateExtraCreateParameterList(
  [in]  PFLT_FILTER                  Filter,
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

Parámetros

[in] Filter

Puntero de filtro opaco para el controlador de minifiltro. Este puntero identifica de forma única el controlador de minifiltro y permanece constante siempre y cuando se cargue el controlador de minifiltro.

[in] Flags

Define las opciones de asignación del grupo. Si la marca de FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA se combina con el parámetro Flags mediante una operación OR bit a bit, cualquier grupo asignado por la rutina se cobrará con la cuota de memoria del proceso actual.

[out] EcpList

Recibe un puntero a una estructura de lista ECP inicializada. Si la rutina no pudo asignar suficiente grupo, *EcpList será NULL y la rutina devolverá el código de estado STATUS_INSUFFICIENT_RESOURCES.

Valor devuelto

FltAllocateExtraCreateParameterList puede devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterList no pudo asignar suficiente memoria para una estructura de lista ecp. En este caso, *EcpList será NULL.
STATUS_SUCCESS La estructura de la lista ECP se asignó e inicializó correctamente. En este caso, se devuelve un puntero a la estructura de lista inicializada en el parámetro *EcpList .

Comentarios

Si el sistema operativo libera automáticamente la memoria que FltAllocateExtraCreateParameterList asigna depende de cuándo se llama a FltAllocateExtraCreateParameterList , como se muestra en las situaciones siguientes:

  • Un llamador puede invocar FltAllocateExtraCreateParameterList para asignar el ECP_LIST y agregar una o varias estructuras de contexto ECP antes de que el autor de la llamada invoque la rutina FltCreateFileEx2 . En esta situación, el sistema operativo no libera ninguna de las estructuras de contexto ECP. Por lo tanto, el autor de la llamada puede realizar varias llamadas a FltCreateFileEx2 con el mismo conjunto de ECP. Cuando el autor de la llamada haya terminado con el ECP_LIST, el autor de la llamada debe llamar a la rutina FltFreeExtraCreateParameterList para liberar la ECP_LIST.

  • Mientras un controlador de filtro del sistema de archivos procesa una solicitud de IRP_MJ_CREATE , el controlador de filtro del sistema de archivos puede llamar a FltInsertExtraCreateParameter para asociar un ECP a un ECP_LIST existente. Si el ECP_LIST no existe, el llamador debe llamar a FltAllocateExtraCreateParameterList para crear el ECP_LIST. En esta situación, el administrador de E/S limpia automáticamente el ECP_LIST y la estructura de contexto ecp cuando se completa la operación de creación. Esto permite que el ECP de un controlador de filtro se propague correctamente en el procesamiento de puntos de reanálisis. Este proceso puede requerir que se generen varias solicitudes de IRP_MJ_CREATE.

Si la marca FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA se usa con el parámetro Flags , como se ha descrito anteriormente, se asigna un grupo paginable normal. De lo contrario, se asigna un grupo paginable mediante una lista de aspecto interno.

estructura de ECP_LIST

ECP_LIST es una estructura opaca declarada por el sistema operativo. ECP_LIST contiene una lista de entradas adicionales del parámetro create (ECP).

La rutina FltAllocateExtraCreateParameterList debe usarse para asignar memoria para la estructura de ECP_LIST . El sistema operativo no libera automáticamente la memoria asignada por FltAllocateExtraCreateParameterList ; debe desasignarse explícitamente llamando a la rutina FltFreeExtraCreateParameterList . Tenga en cuenta que los elementos de la lista ECP restantes se liberarán automáticamente cuando se llame a FltFreeExtraCreateParameterList .

El tipo de datos PECP_LIST se usa para declarar un puntero a una variable de tipo ECP_LIST.

Syntax

struct ECP_LIST {
  ;      // Reserved.
};

La estructura ECP_LIST se declara en Ntifs.h (incluya Ntifs.h).

Requisitos

Requisito Value
Cliente mínimo compatible Esta rutina está disponible a partir de Windows Vista.
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

Consulte también

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx