Compartir a través de


Función FltAllocatePoolAlignedWithTag (fltkernel.h)

FltAllocatePoolAlignedWithTag asigna un búfer alineado con el dispositivo para su uso en una operación de E/S no almacenada en caché.

Sintaxis

PVOID FLTAPI FltAllocatePoolAlignedWithTag(
  [in] PFLT_INSTANCE Instance,
  [in] POOL_TYPE     PoolType,
  [in] SIZE_T        NumberOfBytes,
  [in] ULONG         Tag
);

Parámetros

[in] Instance

Puntero de instancia opaco para una instancia de controlador de minifiltro propiedad del autor de la llamada que está asociada al volumen. Este parámetro es obligatorio y no puede ser NULL.

[in] PoolType

Tipo de grupo que se va a asignar. Uno de los siguientes:

NonPagedPool

PagedPool

NonPagedPoolCacheAligned

PagedPoolCacheAligned

Consulte POOL_TYPE para obtener una descripción de los tipos de memoria del grupo disponibles.

[in] NumberOfBytes

Número de bytes que se van a asignar. Este parámetro es necesario y puede ser cero.

[in] Tag

Especifica la etiqueta de grupo para la memoria asignada. Normalmente, los controladores especifican la etiqueta de grupo como una cadena de uno a cuatro caracteres ASCII de 7 bits, delimitados por comillas simples (por ejemplo, "abcd"). Este parámetro es necesario y no puede ser cero.

Valor devuelto

Si no hay suficiente grupo disponible para satisfacer la solicitud, FltAllocatePoolAlignedWithTag devuelve un puntero NULL . De lo contrario, FltAllocatePoolAlignedWithTag devuelve un puntero al búfer recién asignado.

Comentarios

FltAllocatePoolAlignedWithTag asigna un búfer alineado de acuerdo con el dispositivo subyacente para el volumen especificado. Estos búferes alineados con el dispositivo son necesarios para la E/S no almacenada en caché. (También se pueden usar para E/S almacenadas en caché). Por lo tanto, al llamar a rutinas que realizan E/S no almacenadas en caché, como FltReadFile y FltWriteFile, los controladores de minifiltro deben llamar a FltAllocatePoolAlignedWithTag en lugar de ExAllocatePoolWithTag.

Si el autor de la llamada especifica un valor de cero para el parámetro NumberOfBytes , FltAllocatePoolAlignedWithTag asigna la menor cantidad de memoria que cumple el requisito de alineación.

El sistema asocia la etiqueta de grupo especificada por el parámetro Tag con el búfer asignado. Las herramientas de programación, como el depurador de Windows (WinDbg), pueden mostrar la etiqueta de grupo asociada a cada búfer asignado. El valor de la etiqueta de grupo se muestra normalmente en orden invertido. Por ejemplo, si un autor de la llamada pasa "Fred" como valor del parámetro Tag , este valor aparecerá como "derF" si el grupo se volcado o cuando se realiza el seguimiento del uso del grupo en el depurador.

Para obtener más información sobre la administración de memoria, consulte Administración de memoria.

Cuando el búfer que FltAllocatePoolAlignedWithTag asigna ya no es necesario, el autor de la llamada es responsable de liberarlo llamando a FltFreePoolAlignedWithTag.

Los autores de llamadas de FltAllocatePoolAlignedWithTag se pueden ejecutar en IRQL DISPATCH_LEVEL solo si se especifica unelemento XxxPoolType nonPaged. De lo contrario, los llamadores deben ejecutarse en IRQL <= APC_LEVEL.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL (consulte la sección Comentarios)

Consulte también

ExAllocatePoolWithTag

FltFreePoolAlignedWithTag

FltReadFile

FltWriteFile