Condividi tramite


Gestione tabelle prefissi

RDBSS definisce strutture di dati che consentono l'uso di tabelle di prefisso per catalogare SRV_CALL, NET_ROOT e V_NET_ROOT nomi.

L'implementazione corrente della gestione dei nomi in RDBSS usa una tabella con i componenti seguenti:

  • Coda di nomi inseriti

  • Un timbro di versione

  • Risorsa di blocco tabella che controlla l'accesso alla tabella

  • Valore che indica se le corrispondenze dei nomi sono senza distinzione tra maiuscole e minuscole

  • Un bucket di voci di valore hash per questa tabella di prefisso

La risorsa di blocco tabella viene usata in modo normale: condivisa per le operazioni di ricerca, esclusiva per le operazioni di modifica.

Il timbro della versione cambia con ogni modifica. Il motivo della coda è che il pacchetto tabella prefisso consente a più chiamanti di enumerare in una volta. La coda dei nomi inseriti e del timbro della versione consente a più chiamanti di enumerare simultaneamente. La coda può essere usata come ricerca più veloce per i nomi di file, ma la tabella prefisso è sicuramente l'approccio corretto per le strutture NET_ROOT.

Queste routine di gestione delle tabelle di prefisso vengono usate internamente da RDBSS in risposta a una chiamata da MUP per richiedere un nome o per formare il percorso di creazione per una struttura NET_ROOT. Queste routine di gestione delle tabelle di prefisso RDBSS possono essere usate anche dai mini-reindirizzamenti di rete, purché il blocco appropriato venga acquisito prima di accedere alla tabella e il blocco viene rilasciato al termine del lavoro. L'uso normale da parte di un driver sarà il seguente:

  • Acquisire un blocco condiviso chiamando RxAcquirePrefixTableLockShared.

  • Cercare un nome chiamando RxPrefixTableLookupName.

  • Rilasciare il blocco condiviso chiamando RxReleasePrefixTableLock.

Si noti che alcune routine vengono implementate solo in Windows XP e nelle versioni precedenti di Windows. RxPrefixTableLookupName è l'unica routine di gestione delle tabelle di prefisso implementata in tutte le versioni di Windows

Le routine di gestione delle tabelle di prefisso RDBSS includono quanto segue:

Routine Descrizione

RxpAcquirePrefixTableLockExclusive

Questa routine acquisisce un blocco esclusivo in una tabella prefisso usata per catalogare SRV_CALL e NET_ROOT nomi.

Questa routine è disponibile solo in Windows XP e Windows 2000. Questa routine viene usata internamente da RDBSS e non deve essere usata dai mini-reindirizzamenti di rete.

RxpAcquirePrefixTableLockShared

Questa routine acquisisce un blocco condiviso in una tabella prefisso usata per catalogare SRV_CALL e NET_ROOT nomi.

Questa routine è disponibile solo in Windows XP e Windows 2000. Questa routine viene usata internamente da RDBSS e non deve essere usata dai mini-reindirizzamenti di rete.

RxPrefixTableLookupName

La routine cerca un nome in una tabella prefisso usata per catalogare SRV_CALL e NET_ROOT nomi e converte dal puntatore sottostante alla struttura contenente.

RxpReleasePrefixTableLock

Questa routine rilascia un blocco in una tabella di prefisso usata per catalogare SRV_CALL e NET_ROOT nomi.

Questa routine è disponibile solo in Windows XP e Windows 2000. Questa routine viene usata internamente da RDBSS e non deve essere usata dai mini-reindirizzamenti di rete.

A partire da Windows Server 2003, le routine indicate nella tabella precedente, ad eccezione di RxPrefixTableLookupName, vengono sostituite da macro. Le macro seguenti sono definite che chiamano le routine di tabella del prefisso con un minor numero di parametri.

Macro Descrizione

RxAcquirePrefixTableLockExclusive (TABLE, WAIT)

Questa macro acquisisce il blocco tabella prefisso in modalità esclusiva per le operazioni di modifica.

RxAcquirePrefixTableLockShared (TABLE, WAIT)

Questa macro acquisisce il blocco tabella prefisso in modalità condivisa per le operazioni di ricerca.

RxIsPrefixTableLockAcquired (TABLE)

Questa macro indica se il blocco tabella prefisso è stato acquisito in modalità esclusiva o condivisa.

RxIsPrefixTableLockExclusive (TABLE)

Questa macro indica se il blocco tabella prefisso è stato acquisito in modalità esclusiva.

RxReleasePrefixTableLock (TABLE)

Questa macro libera il blocco tabella prefisso.