Compartir a través de


Administración de tablas de prefijo

RDBSS define estructuras de datos que permiten el uso de tablas de prefijo para catalogar SRV_CALL, NET_ROOT y nombres de V_NET_ROOT.

La implementación actual de la administración de nombres en RDBSS usa una tabla que tiene los siguientes componentes:

  • Una cola de nombres insertados

  • Una marca de versión

  • Un recurso de bloqueo de tabla que controla el acceso a la tabla

  • Valor que indica si las coincidencias de nombre no distinguen mayúsculas de minúsculas.

  • Un cubo de entradas de valor hash para esta tabla de prefijos

El recurso de bloqueo de tabla se usa de la manera normal: compartido para las operaciones de búsqueda, exclusivo de las operaciones de cambio.

La marca de versión cambia con cada cambio. El motivo de la cola es que el paquete de tabla de prefijo permite enumerar varios autores de llamada a la vez. La cola de nombres insertados y marca de versión permite que varios autores de llamada se enumeren simultáneamente. La cola podría usarse como una búsqueda más rápida de nombres de archivo, pero la tabla de prefijos es definitivamente el enfoque correcto para NET_ROOT estructuras.

RdBSS usa internamente estas rutinas de administración de tablas de prefijo en respuesta a una llamada desde MUP para reclamar un nombre o para formar la ruta de acceso de creación para una estructura de NET_ROOT. Estos miniireccionadores de red también pueden usar estas rutinas de administración de tablas de prefijo RDBSS, siempre y cuando se adquiera el bloqueo adecuado antes de acceder a la tabla y el bloqueo se libere cuando se complete el trabajo. El uso normal de un controlador sería el siguiente:

  • Adquiera un bloqueo compartido llamando a RxAcquirePrefixTableLockShared.

  • Busque un nombre llamando a RxPrefixTableLookupName.

  • Libere el bloqueo compartido llamando a RxReleasePrefixTableLock.

Tenga en cuenta que ciertas rutinas solo se implementan en Windows XP y versiones anteriores de Windows. RxPrefixTableLookupName es la única rutina de administración de tablas de prefijo implementada en todas las versiones de Windows.

Las rutinas de administración de tablas de prefijo RDBSS incluyen lo siguiente:

Rutina Descripción

RxpAcquirePrefixTableLockExclusive

Esta rutina adquiere un bloqueo exclusivo en una tabla de prefijos que se usa para catalogar SRV_CALL y NET_ROOT nombres.

Esta rutina solo está disponible en Windows XP y Windows 2000. RdBSS usa internamente esta rutina y no debe ser utilizada por los miniireccionadores de red.

RxpAcquirePrefixTableLockShared

Esta rutina adquiere un bloqueo compartido en una tabla de prefijos que se usa para catalogar SRV_CALL y NET_ROOT nombres.

Esta rutina solo está disponible en Windows XP y Windows 2000. RdBSS usa internamente esta rutina y no debe ser utilizada por los miniireccionadores de red.

RxPrefixTableLookupName

La rutina busca un nombre en una tabla de prefijos que se usa para catalogar SRV_CALL y NET_ROOT nombres y convierte desde el puntero subyacente a la estructura contenedora.

RxpReleasePrefixTableLock

Esta rutina libera un bloqueo en una tabla de prefijos usada para catalogar SRV_CALL y NET_ROOT nombres.

Esta rutina solo está disponible en Windows XP y Windows 2000. RdBSS usa internamente esta rutina y no debe ser utilizada por los miniireccionadores de red.

A partir de Windows Server 2003, las rutinas mencionadas en la tabla anterior, excepto RxPrefixTableLookupName, se reemplazan por macros. Se definen las macros siguientes que llaman a las rutinas de la tabla de prefijos con menos parámetros.

Macro Descripción

RxAcquirePrefixTableLockExclusive (TABLE, WAIT)

Esta macro adquiere el bloqueo de tabla de prefijo en modo exclusivo para las operaciones de cambio.

RxAcquirePrefixTableLockShared (TABLE, WAIT)

Esta macro adquiere el bloqueo de tabla de prefijo en modo compartido para las operaciones de búsqueda.

RxIsPrefixTableLockAcquired (TABLE)

Esta macro indica si el bloqueo de tabla de prefijo se adquirió en modo exclusivo o compartido.

RxIsPrefixTableLockExclusive (TABLE)

Esta macro indica si el bloqueo de tabla de prefijo se adquirió en modo exclusivo.

RxReleasePrefixTableLock (TABLE)

Esta macro libera el bloqueo de la tabla de prefijos.