The V_NET_ROOT Structure

The V_NET_ROOT structure provides a mechanism for mapping into a share (for example, a user drive mapping that points below the root of the associated share point). The V_NET_ROOT name can be in one of the following formats:

\server\share\d1\d2
\;m:\server\share\d1\d2

The format of the name depends on whether there is a local device ("X:", for example) associated with this V_NET_ROOT structure. In the case of a local drive mapping (d1\d2, for example), the local drive mapping gets prefixed onto each CreateFile that is opened on this V_NET_ROOT structure.

V_NET_ROOT structures are also used to supply alternate credentials. The purpose for this kind of a V_NET_ROOT structure is to propagate the alternate credentials into the NET_ROOT as the default. For this to work, there must be no other references.

A list of the V_NET_ROOT structures is maintained by RDBSS for each NET_ROOT. Each V_NET_ROOT structure has a few elements common with other RDBSS structures, along with elements that are unique to a V_NET_ROOT structure. The RDBSS routines that manage V_NET_ROOT structures only modify the following elements:

  • Signature and reference count

  • A pointer to the associated NET_ROOT structure and links

  • Name information for table lookup (prefix)

  • Name for a prefix to be added to whatever name the user sees (this is for simulating a NET_ROOT structure that is not mapped at the root of the actual NET_ROOT structure)

The finalization of a V_NET_ROOT structure consists of two parts:

  1. Destroying the association with all SRV_OPEN structures

  2. Freeing the memory

There can be a delay between these two actions, and a field in the V_NET_ROOT structure prevents the first step from being duplicated.