Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
RxFinalizeVNetRoot
Collapse the table of content
Expand the table of content

RxFinalizeVNetRoot function

RxFinalizeVNetRoot finalizes the given V_NET_ROOT structure. The caller must have an exclusive lock on the netname table associated with the device object.

Syntax


BOOLEAN RxFinalizeVNetRoot(
  _Out_ PV_NET_ROOT ThisVNetRoot,
  _In_  BOOLEAN     RecursiveFinalize,
  _In_  BOOLEAN     ForceFinalize
);

Parameters

ThisVNetRoot [out]

A pointer to the V_NET_ROOT structure to finalize.

RecursiveFinalize [in]

The value indicating whether the finalization should be done recursively. This parameter in not currently used.

ForceFinalize [in]

The value indicating whether the finalization should be forced, regardless of the reference count.

If ForceFinalize is FALSE, then the NodeReferenceCount member of the V_NET_ROOT structure pointed to by ThisVNetRoot must be 1 for the V_NET_ROOT to be finalized.

Return value

RxFinalizeVNetRoot returns TRUE on success or FALSE if the finalization did not occur:

Remarks

The RxFinalizeVNetRoot routine is not normally called by network mini-redirector drivers directly. RDBSS calls this routine internally when the reference count on the V_NET_ROOT is decremented to 1.

RxFinalizeVNetRoot is also called by the RxFinalizeConnection routine if the Level parameter to RxFinalizeConnection is set to TRUE. RxFinalizeConnection is normally called by a network mini-redirector driver in response to receiving a custom IOCTL request from user mode. For example, a user might execute from the command line a "NET USE x: /d" to delete a share. This request would be mapped through the network provider DLL provided by the network mini-redirector to a custom IOCTL request sent to the network mini-redirector kernel driver which would call the RxFinalizeConnection routine to delete the connection and any associated V_NET_ROOT structures.

RxFinalizeVNetRoot is also called by the RxForceFinalizeAllVNetRoots routine to finalize each V_NET_ROOT associated with a NET_ROOT structure.

Before calling RxFinalizeVNetRoot, a lock on the netname table associated with the device object must be acquired in exclusive mode.

If the UpperFinalization member of the V_NET_ROOT is 0, then RxFinalizeVNetRoot will iterate through all the FCBs that belong to the NET_ROOT associated with this V_NET_ROOT and orphan all of the SRV_OPEN structures that are associated with the V_NET_ROOT.

RxFinalizeVNetRoot will call the MRxFinalizeVNetRoot routine provided by the network mini-redirector to finalize the V_NET_ROOT before the memory for the V_NET_ROOT structure will be released.

Requirements

Target platform

Desktop

Header

Fcb.h (include Mrxfcb.h or Fcb.h)

IRQL

<= APC_LEVEL

See also

MRxFinalizeVNetRoot
RxCreateNetFcb
RxCreateNetFobx
RxCreateNetRoot
RxCreateSrvCall
RxCreateSrvOpen
RxCreateVNetRoot
RxDereference
RxFinalizeConnection
RxFinalizeNetFcb
RxFinalizeNetFobx
RxFinalizeNetRoot
RxFinalizeSrvCall
RxFinalizeSrvOpen
RxFinishFcbInitialization
RxForceFinalizeAllVNetRoots
RxReference
RxSetSrvCallDomainName
RxpDereferenceNetFcb
RxpReferenceNetFcb
The V_NET_ROOT Structure

 

 

Send comments about this topic to Microsoft

Show:
© 2015 Microsoft