Función FsRtlAllocateExtraCreateParameter (ntifs.h)
El FsRtlAllocateExtraCreateParameter rutina 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
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 el 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 el FsRtlAllocateExtraCreateParameter rutina). 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 de 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. |
Observaciones
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 asignado este grupo y se ha inicializado la estructura de contexto ECP, se usa la rutina FltInsertExtraCreateParameter para insertar la estructura de 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 se usan una o varias ECP 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 las ECP que se agregan dinámicamente. Esto permite que el ECP de un controlador de filtro se propague correctamente a través de los puntos de reanálisis, un proceso que puede requerir que se generen varias solicitudes de IRP_MJ_CREATE.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | La rutina FsRtlAllocateExtraCreateParameter está disponible a partir de Windows Vista. |
de la plataforma de destino de |
Universal |
encabezado de |
ntifs.h (incluya Ntifs.h) |
biblioteca de |
NtosKrnl.lib |
DLL de |
NtosKrnl.exe |
irQL | <= APC_LEVEL |
Consulte también
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList