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) |