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:
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:
Destroying the association with all SRV_OPEN structures
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.