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
FltAllocateExtraCreateParameterFromLookasideList
FltAllocateExtraCreateParameterList