Struttura NET_ROOT

Una struttura radice net, NET_ROOT, contiene informazioni per ogni server di rete specifico\condivisione connessione gestita da un mini redirector di rete.

Un NET_ROOT è ciò che il servizio RDBSS e un driver mini-redirector di rete vogliono gestire, non un server. Di conseguenza, RDBSS crea e apre normalmente una struttura di NET_ROOT e chiama il driver mini-redirector di rete responsabile dell'apertura del server. Il driver mini-redirector di rete dovrebbe popolare i campi appropriati nella struttura NET_ROOT passata.

Un elenco delle strutture NET_ROOT viene gestito da RDBSS per ogni SRV_CALL. Ogni struttura NET_ROOT ha alcuni elementi comuni ad altre strutture RDBSS, insieme a elementi univoci per una struttura NET_ROOT. Le routine RDBSS che gestiscono NET_ROOT strutture modificano solo gli elementi seguenti:

  • Firma e conteggio dei riferimenti

  • Nome e informazioni sulla tabella associate

  • Puntatore indietro alla struttura di SRV_CALL associata

  • Informazioni sulle dimensioni per le varie sottostruttura

  • Tabella di ricerca delle strutture FCB associate

  • Qualsiasi risorsa di archiviazione aggiuntiva richiesta dal mini-redirector di rete (o dall'autore della struttura dei dati NET_ROOT)

Una struttura NET_ROOT contiene anche un elenco di strutture RX_CONTEXT in attesa del completamento della transizione NET_ROOT prima della ripresa dell'elaborazione di IRP. Ciò si verifica in genere quando le richieste simultanee vengono indirizzate a un server. Una di queste richieste viene avviata mentre le altre richieste vengono accodate. Spazio aggiuntivo riservato per l'uso da parte del mini-redirector di rete inizia alla fine della struttura di dati NET_ROOT nota, in modo che un mini-redirector di rete possa semplicemente fare riferimento a questo spazio aggiuntivo usando i campi di contesto da un file di inclusione.

La finalizzazione di una struttura NET_ROOT è costituita da due parti:

  1. Distruggere l'associazione con tutti i V_NET_ROOTS

  2. Liberare la memoria

Può verificarsi un ritardo tra queste due azioni e un campo nella struttura NET_ROOT impedisce che il primo passaggio venga duplicato.