Compartilhar via


A estrutura de NET_ROOT

Uma estrutura raiz de rede, NET_ROOT, contém informações para cada conexão específica de servidor de rede\compartilhamento mantida por um minidiretório de rede.

Um NET_ROOT é o que o RDBSS e um driver de minidiretório de rede querem lidar, não com um servidor. Assim, o RDBSS normalmente cria e abre uma estrutura NET_ROOT e chama o driver de minidiretor de rede responsável por abrir o servidor. Espera-se que o driver de minidiretor de rede preencha os campos apropriados na estrutura de NET_ROOT passada.

Uma lista das estruturas de NET_ROOT é mantida pelo RDBSS para cada SRV_CALL. Cada estrutura NET_ROOT tem alguns elementos comuns com outras estruturas RDBSS, juntamente com elementos exclusivos de uma estrutura NET_ROOT. As rotinas rdbss que gerenciam estruturas de NET_ROOT modificam apenas os seguintes elementos:

  • Contagem de assinaturas e referências

  • Um nome e informações de tabela associadas

  • Um ponteiro de fundo para a estrutura de SRV_CALL associada

  • Informações de tamanho para as várias subestruturas

  • Uma tabela de pesquisa de estruturas FCB associadas

  • Qualquer armazenamento adicional é solicitado pelo minidiretório de rede (ou o criador da estrutura de dados NET_ROOT)

Uma estrutura de NET_ROOT também contém uma lista de estruturas de RX_CONTEXT que aguardam a conclusão da transição de NET_ROOT antes da retomada do processamento do IRP. Isso normalmente acontece quando solicitações simultâneas são direcionadas a um servidor. Uma dessas solicitações é iniciada enquanto as outras solicitações são enfileiradas. O espaço extra reservado para uso pelo minidiretório de rede começa no final da estrutura de dados NET_ROOT conhecida para que um minidiretório de rede possa simplesmente se referir a esse espaço extra usando campos de contexto de um arquivo de inclusão.

A finalização de uma estrutura de NET_ROOT consiste em duas partes:

  1. Destruindo a associação com todos os V_NET_ROOTS

  2. Liberando a memória

Pode haver um atraso entre essas duas ações e um campo na estrutura NET_ROOT impede que a primeira etapa seja duplicada.