The SRV_CALL Structure
The server call context structure, SRV_CALL, maintains information about each specific network server connection maintained by a network mini-redirector.
A global list of the SRV_CALL structures is maintained in global data by RDBSS. Each SRV_CALL structure has a few elements common with other RDBSS structures, along with elements that are unique to a SRV_CALL structure. The RDBSS routines that manage SRV_CALL structures only modify the following elements:
Signature and reference count
A name and associated table information
A list of associated NET_ROOT entries
A set of timing parameters that control how often the network mini-redirector wants to be called by RDBSS in different circumstances (idle timeouts, for example)
The associated network mini-redirector driver ID
Whatever additional storage is request by the network mini-redirector (or the creator of the SRV_CALL data structure)
The Unicode name of the SRV_CALL structure is carried in the structure itself at the end. Extra space reserved for use by the network mini-redirector begins at the end of the known SRV_CALL data structure so that a network mini-redirector can simply refer to this extra space using context fields from an include file.
The finalization of a SRV_CALL structure consists of two parts:
Destroying the association with all NET_ROOTS
Freeing the memory
There can be a delay between these two actions, and a field in the SRV_CALL structure prevents the first step from being duplicated.