Función FltAllocateExtraCreateParameterFromLookasideList (fltkernel.h)

La rutina FltAllocateExtraCreateParameterFromLookasideList asigna el grupo de memoria de una lista de lookaside determinada para una estructura de contexto de parámetros de creación adicional (ECP) y genera un puntero a esa estructura.

Sintaxis

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

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

[in] EcpType

Puntero a un GUID que indica el tipo de la estructura de contexto ecp. Consulte Uso de GUID en Controladores para obtener más información.

[in] SizeOfContext

Tamaño, en bytes, de la estructura de contexto ECP.

[in] Flags

Define las opciones de asignación del grupo. Si el valor del parámetro SizeOfContext es mayor que el tamaño, en bytes, de la lista de lookaside dada, la estructura de contexto ECP se asignará desde el grupo del sistema en lugar de la lista de lookaside. En este caso, si el parámetro Flags contiene el valor de marca de bits FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA, el grupo del sistema asignado por la rutina se cobrará con la cuota de memoria del proceso actual. Consulte el parámetro Flags de FltAllocateExtraCreateParameter para obtener más información. En el caso más típico cuando la memoria de la estructura de contexto ECP se asigna desde la lista de búsqueda, la marca de bits de FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA no la usa la rutina.

[in, optional] CleanupCallback

Puntero opcional a una rutina de devolución de llamada de limpieza definida por minifiltro de tipo PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. Se llama a la rutina de devolución de llamada de limpieza cuando se elimina la estructura de contexto ecp. Establezca este parámetro en NULL si no se aplica una rutina de devolución de llamada de limpieza.

[in, out] LookasideList

Puntero a una lista inicializada de aspecto en la que se intenta asignar el grupo desde (para la estructura de contexto ecp). Para inicializar la lista de aspecto, use la rutina FltInitExtraCreateParameterLookasideList .

[out] EcpContext

Recibe un puntero a la estructura de contexto ECP asignada. Si la rutina no pudo asignar suficiente grupo para la estructura de contexto ecp, EcpContext será NULL y la rutina devolverá el código de estado STATUS_INSUFFICIENT_RESOURCES.

Valor devuelto

La rutina FltAllocateExtraCreateParameterFromLookasideList puede devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INSUFFICIENT_RESOURCES La rutina FltAllocateExtraCreateParameterFromLookasideList no pudo asignar memoria suficiente para una estructura de contexto ECP. En este caso, EcpContext será NULL.
STATUS_SUCCESS La estructura del contexto ECP se asignó correctamente. En este caso, el parámetro EcpContext devuelve un puntero a la estructura asignada.

Comentarios

Esta rutina está disponible a partir de Windows Vista.

La rutina FltAllocateExtraCreateParameterFromLookasideList asigna el grupo de memoria para una estructura de contexto ECP a partir de la lista de lookaside paginada o no paginada especificada. Sin embargo, si el tamaño de la estructura de contexto ECP (definido por el parámetro SizeOfContext ) es mayor que la lista de aspecto, la rutina asigna memoria de forma análoga desde el grupo de sistemas paginado o no paginado.

Use la rutina FltInitExtraCreateParameterLookasideList para inicializar una lista de búsqueda de grupo paginada o no paginada. Use la rutina FltAllocateExtraCreateParameterFromLookasideList para asignar una estructura de contexto ECP de la lista de búsqueda y la rutina FltFreeExtraCreateParameter para desasignar la estructura del contexto ECP.

Use la rutina FltDeleteExtraCreateParameterLookasideList para liberar una lista de aspecto.

Los controladores deben liberar todas las estructuras de contexto ecP y las listas de búsqueda que crean antes de descargarse. Sin embargo, si un sistema de archivos o un controlador de filtro del sistema de archivos adjunta un ECP a un ECP_LIST existente o recién creado mientras procesa una solicitud de IRP_MJ_CREATE, este ECP se limpia automáticamente cuando se completa el IRP. Como resultado, un controlador de filtro no tiene que limpiar las ECP que se agregan dinámicamente. Esto permite que el ECP de un controlador de filtro se propague correctamente en los puntos de reanálisis, un proceso que puede requerir que se generen varias solicitudes de IRP_MJ_CREATE.

Para obtener más información sobre el uso de listas de lookaside con controladores, vea Uso de lookaside Listas.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

Consulte también

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK