Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 necesario y no se puede 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. Los controladores normalmente 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.
Observaciones
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 E/S sin almacenamiento en caché. (También se pueden usar para E/S en caché). Por lo tanto, al llamar a rutinas que realizan E/S sin 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 cantidad más pequeña 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 volca 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 unXxxPoolType NonPaged. De lo contrario, los autores de llamadas deben ejecutarse en IRQL <= APC_LEVEL.
Requisitos
| Requisito | Valor |
|---|---|
| de la plataforma de destino de | Universal |
| encabezado de | fltkernel.h (incluya Fltkernel.h) |
| biblioteca de | FltMgr.lib |
| irQL | <= APC_LEVEL (consulte la sección Comentarios) |