Compartir a través de


Rutinas gratuitas y asignación de grupos

RDBSS proporciona una serie de rutinas que se usarán para la asignación de grupos. Normalmente, estas rutinas se llaman mediante macros, no llamando directamente a estas rutinas. Las macros controlan automáticamente las diferencias entre las compilaciones comerciales y comprobadas.

En una compilación comprobada, estas rutinas se diseñaron para agregar contenedores alrededor de la asignación normal del kernel y rutinas libres. Estos contenedores para la asignación de grupos y las rutinas gratuitas proporcionan información adicional de depuración y llaman a un conjunto de rutinas que realizan varios tipos de comprobación y protección antes de llamar a la asignación del grupo de kernel y rutinas gratuitas. Sin embargo, estas características no se implementan actualmente en estas rutinas gratuitas y de asignación, pero se pueden agregar en futuras versiones.

En una compilación gratuita, estas rutinas se convierten en llamadas directas a la asignación del kernel y rutinas gratuitas, ExAllocatePoolWithTag y ExFreePool.

En la tabla siguiente se enumeran las rutinas gratuitas y la asignación de grupos de RDBSS.

Rutina Descripción

_RxAllocatePoolWithTag

Esta rutina asigna memoria de un grupo con una etiqueta de cuatro bytes al principio del bloque que puede ayudar a detectar problemas de memoria.

Se recomienda llamar a la macro RxAllocatePoolWithTag en lugar de usar esta rutina directamente.

_RxCheckMemoryBlock

Esta rutina comprueba un bloque de memoria para una firma de encabezado RX_POOL_HEADER especial. Tenga en cuenta que un controlador minidirector de red tendría que agregar este bloque de firma especial a la memoria asignada para poder usar la rutina.

Esta rutina no debe usarse porque no se ha implementado este bloque de encabezado especial.

_RxFreePool

Esta rutina libera un grupo de memoria.

Se recomienda llamar a la macro RxFreePool en lugar de usar esta rutina directamente.

Una serie de macros, que se definen en el archivo de encabezado ntrxdef.h , llaman a estas rutinas. En lugar de llamar directamente a las rutinas enumeradas en la tabla anterior, normalmente se usan las siguientes macros.

Macro Descripción

RxAllocatePoolWithTag (tipo, tamaño, etiqueta)

En las compilaciones activadas, esta macro asigna memoria de un grupo con una etiqueta de cuatro bytes al principio del bloque que puede ayudar a detectar instancias de recolección de memoria.

En las compilaciones comerciales, esta macro se convierte en una llamada directa a ExAllocatePoolWithTag.

RxCheckMemoryBlock (ptr)

En las compilaciones activadas, esta macro comprueba un bloque de memoria para una firma de encabezado RX_POOL_HEADER especial.

En las compilaciones comerciales, esta macro no hace nada.

RxFreePool (ptr)

En las compilaciones activadas, esta macro libera un grupo de memoria.

En las compilaciones comerciales, esta macro se convierte en una llamada directa a ExFreePool.