RxCreateNetRoot allocates and initializes a NET_ROOT structure and inserts the name into the net name table on the associated device object.
PNET_ROOT RxCreateNetRoot( _In_ PSRV_CALL SrvCall, _In_ PUNICODE_STRING Name, _In_ ULONG NetRootFlags, _In_opt_ PRX_CONNECTION_ID RxConnectionId );
- SrvCall [in]
A pointer to the associated SRV_CALL structure.
- Name [in]
A pointer to the name to be inserted in the name table.
- NetRootFlags [in]
The value to set the Flags member of the NET_ROOT which is used to denote the state of the NET_ROOT structure.
- RxConnectionId [in, optional]
A pointer to the connection ID to be associated with the name to be inserted in the prefix name table. This parameter can be NULL in which case no connection ID will be associated with the name inserted in the prefix name table.
RxCreateNetRoot returns a pointer to a newly created NET_ROOT data structure on success or a NULL pointer on failure.
The RxCreateNetRoot routine is not normally called by network mini-redirector drivers directly. RDBSS calls this routine internally when an I/O request packet is received for IRP_MJ_CREATE and a NET_ROOT needs to be created. This IRP is normally received by RDBSS in response to a user-mode application requesting a file create operation on a network share. It is also possible for another kernel driver to issue such an IRP.
Before calling RxCreateNetRoot, a lock on the name table associated with the device object member of the SrvCall parameter must be acquired in exclusive mode.
The NET_ROOT flags are split into two groups, those visible to network mini redirectors and those invisible to network mini redirectors. The visible ones are the lower 16-bits of the Flags member of the NET_ROOT. This routine does not check or test which flags are being set.
On success, the reference count for the SRV_CALL structure is incremented.
- The NET_ROOT Structure
- The SRV_CALL Structure