Función FsRtlAllocateExtraCreateParameter (ntifs.h)

La rutina FsRtlAllocateExtraCreateParameter asigna memoria para una estructura de contexto de parámetro de creación adicional (ECP) y genera un puntero a esa estructura.

Sintaxis

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

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.

[in] Flags

Define las opciones de asignación del grupo. A continuación se describe cómo se asignará el grupo cuando uno o varios de los valores de marca enumerados se combinen con el parámetro Flags mediante una operación OR bit a bit:

  • FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL: se asignará un grupo no paginado. Si no se usa este valor de marca, se asignará el grupo paginado.

  • FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA: todos los grupos asignados por FsRtlAllocateExtraCreateParameter se cobrarán con la cuota de memoria del proceso actual.

Si se usa más de una marca, se producirán todos los efectos asociados a los valores de marca utilizados.

[in, optional] CleanupCallback

Puntero opcional a una rutina de devolución de llamada de limpieza definida por filtro 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 ECP (creada por la rutina FsRtlAllocateExtraCreateParameter ). Establezca este parámetro en NULL si no se aplica una rutina de devolución de llamada de limpieza.

[in] PoolTag

Especifica la etiqueta de grupo para la memoria asignada. Para obtener más información, vea el parámetro Tag de ExAllocatePoolWithTag.

[out] EcpContext

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

Valor devuelto

FltAllocateExtraCreateParameter devuelve un código de estado como uno de los siguientes:

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

Comentarios

De forma predeterminada, la rutina FsRtlAllocateExtraCreateParameter asigna un grupo de memoria paginada para una estructura de contexto ECP. Si la máscara de bits FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL se usa como se describe en el parámetro Flags , se asigna un grupo de memoria no paginado. Una vez que se ha asignado este grupo y se ha inicializado la estructura del contexto ECP, la rutina FltInsertExtraCreateParameter se usa para insertar la estructura del contexto ECP (elemento de lista ECP) en una estructura de lista de ECP (ECP_LIST).

Si el autor de la llamada asigna ECP_LIST y una o varias ECP se usan en una llamada a IoCreateFileEx, la descripción anterior es correcta. En este caso, el sistema no libera ninguno de los ECP, por lo que el autor de la llamada puede realizar varias llamadas a IoCreateFileEx con el mismo conjunto de ECP. 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 los 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.

Requisitos

Requisito Value
Cliente mínimo compatible La rutina FsRtlAllocateExtraCreateParameter está disponible a partir de Windows Vista.
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Consulte también

ECP_LIST

FltAllocateExtraCreateParameterFromLookasideList

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK