Compartir a través de


Estructura NET_ROOT

Una estructura raíz de red, NET_ROOT, contiene información para cada servidor de red específico\conexión compartida mantenida por un minidirector de red.

Un NET_ROOT es lo que los RDBSS y un controlador minidirector de red quieren tratar, no con un servidor. En consecuencia, RDBSS normalmente crea y abre una estructura de NET_ROOT y llama al controlador minidirector de red responsable de abrir el servidor. Se espera que el controlador minidirector de red rellene los campos adecuados en la estructura de NET_ROOT pasada.

RDBSS mantiene una lista de las estructuras de NET_ROOT para cada SRV_CALL. Cada estructura NET_ROOT tiene algunos elementos comunes con otras estructuras RDBSS, junto con elementos que son únicos de una estructura de NET_ROOT. Las rutinas de RDBSS que administran NET_ROOT estructuras solo modifican los siguientes elementos:

  • Recuento de firmas y referencias

  • Nombre y información de tabla asociada

  • Puntero atrás a la estructura de SRV_CALL asociada

  • Información de tamaño de las distintas subestructuras

  • Tabla de búsqueda de estructuras FCB asociadas

  • Sea cual sea el almacenamiento adicional que solicite el minidirector de red (o el creador de la estructura de datos de NET_ROOT)

Una estructura de NET_ROOT también contiene una lista de estructuras de RX_CONTEXT que esperan a que se complete la transición de NET_ROOT antes de reanudar el procesamiento de IRP. Esto suele ocurrir cuando las solicitudes simultáneas se dirigen a un servidor. Una de estas solicitudes se inicia mientras se ponen en cola las otras. El minidirector de red reserva espacio adicional para su uso comienza al final de la estructura de datos NET_ROOT conocida para que un minidirector de red pueda hacer referencia simplemente a este espacio adicional mediante campos de contexto de un archivo de inclusión.

La finalización de una estructura de NET_ROOT consta de dos partes:

  1. Destruir la asociación con todos los V_NET_ROOTS

  2. Liberar la memoria

Puede haber un retraso entre estas dos acciones y un campo de la estructura NET_ROOT impide que se duplique el primer paso.