Export (0) Print
Expand All
Expand Minimize

Network Mini-Redirector Support Routines

This section contains references, in alphabetical order, for the system-supplied RxXxx support routines provided by the Redirected Drive Buffering Subsystem (RDBSS) that can be used by kernel-mode network mini-redirector drivers.

In this section

TopicDescription

RxAcquireExclusiveFcbResourceInMRx

RxAcquireExclusiveFcbResourceInMRx acquires the FCB resource for a network mini-redirector driver in exclusive mode. This routine will wait for the FCB resource to be free if it was previously acquired and does not return control until the exclusive resource has been acquired.

RxAcquireSharedFcbResourceInMRx

RxAcquireSharedFcbResourceInMRx acquires the FCB resource for a network mini-redirector driver in shared mode. This routine will wait for the FCB resource to be free if it was previously acquired exclusively and does not return control until the shared resource has been acquired.

RxAcquireSharedFcbResourceInMRxEx

RxAcquireSharedFcbResourceInMRxEx acquires the FCB resource for a network mini-redirector driver in shared mode. This routine will wait for the FCB resource to be free if it was previously acquired exclusively and does not return control until the shared resource has been acquired.

RxAssert

RxAssert sends an ASSERT string on checked builds of RDBSS to a kernel debugger if one is installed. For retail builds of RDBSS, calls to this routine will bug check.

RxAssociateContextWithMid

RxAssociateContextWithMid associates the supplied opaque context with an available multiplex ID (MID) from a MID_ATLAS.

RxCancelTimerRequest

RxCancelTimerRequest cancels a recurrent timer request. The request to be canceled is identified by the worker thread routine and associated context.

RxCeAllocateIrpWithMDL

RxCeAllocateIrpWithMDL allocates an IRP and associates it with an existing memory descriptor list.

RxCeBuildAddress

RxCeBuildAddress associates a transport address with a transport binding.

RxCeBuildConnection

RxCeBuildConnection establishes a connection between a local RDBSS connection address and a given remote address.

RxCeBuildConnectionOverMultipleTransports

RxCeBuildConnectionOverMultipleTransports establishes a connection between a local RDBSS connection address and a given remote address and supports multiple transports. A set of local addresses are specified and this routine attempts to connect to the target server via all the transports associated with the local addresses. One connection is chosen as the winner depending on the connect options.

RxCeBuildTransport

RxCeBuildTransport binds an RDBSS transport object to a specified transport name.

RxCeBuildVC

RxCeBuildVC adds a virtual circuit to a specified RDBSS connection..

RxCeCancelConnectRequest

RxCeCancelConnectRequest cancels a previously issued connection request. Note that this routine is not currently implemented.

RxCeFreeIrp

RxCeFreeIrp frees an IRP.

RxCeInitiateVCDisconnect

RxCeInitiateVCDisconnect initiates a disconnect on the virtual circuit.

RxCeQueryAdapterStatus

RxCeQueryAdapterStatus returns the ADAPTER_STATUS structure for a given transport in a caller-allocated buffer.

RxCeQueryInformation

RxCeQueryInformation queries information about a connection in a caller-allocated buffer.

RxCeQueryTransportInformation

RxCeQueryTransportInformation queries transport information for a given transport.

RxCeSend

RxCeSend sends a transport service data unit (TSDU) along the specified connection on a virtual circuit.

RxCeSendDatagram

RxCeSendDatagram sends a transport service data unit (TSDU) along the specified connection on a virtual circuit.

RxCeTearDownAddress

RxCeTearDownAddress deregisters a transport address from a transport binding.

RxCeTearDownConnection

RxCeTearDownConnection tears down a given connection between a local RDBSS connection address and a remote address.

RxCeTearDownTransport

RxCeTearDownTransport unbinds an RDBSS transport object.

RxCeTearDownVC

RxCeTearDownVC deregisters a virtual circuit from a specified RDBSS connection.

RxChangeBufferingState

RxChangeBufferingState is called to process a buffering state change request.

RxCompleteRequest

RxCompleteRequest completes the IRP request associated with an RX_CONTEXT structure.

RxCompleteRequest_Real

RxCompleteRequest_Real completes the IRP request associated with an RX_CONTEXT structure.

RxCreateMidAtlas

RxCreateMidAtlas allocates a new instance of MID_ATLAS data structure and initializes it.

RxCreateNetFCB

RxCreateNetFCB allocates, initializes, and inserts a new FCB structure into the in-memory data structures for a V_NET_ROOT that this FCB is being opened on. The structure allocated has space for a SRV_OPEN and an FOBX structure.

RxCreateNetFobx

RxCreateNetFobx allocates, initializes, and inserts a new file object extension (FOBX) structure into the in-memory data structures for a FCB that this FOBX is being opened on.

RxCreateNetRoot

RxCreateNetRoot allocates and initializes a NET_ROOT structure and inserts the name into the net name table on the associated device object.

RxCreateRxContext

RxCreateRxContext allocates a new RX_CONTEXT structure and initializes the data structure.

RxCreateSrvCall

RxCreateSrvCall builds a SRV_CALL structure and inserts the name into the net name table maintained by RDBSS.

RxCreateSrvOpen

RxCreateSrvOpen allocates, initializes, and inserts a new SRV_OPEN structure into the in-memory data structures used by RDBSS. If a new structure has to be allocated, it has space for an FOBX structure.

RxCreateVNetRoot

RxCreateVNetRoot allocates and initializes a NET_ROOT structure and inserts the name into the net name table on the associated device object.

RxDbgBreakPoint

RxDbgBreakPoint breaks into the kernel debugger if one is installed.

RxDereferenceAndDeleteRxContext_Real

RxDereferenceAndDeleteRxContext_Real dereferences an RX_CONTEXT data structure and if the ReferenceCount member goes to zero, then it deallocates and removes the specified RX_CONTEXT structure from the RDBSS in-memory data structures.

RxDereference

RxDereference decrements the NodeReferenceCount member of a structure by one for several reference counted data structures used by RDBSS.

RxDestroyMidAtlas

RxDestroyMidAtlas destroys an existing instance of a MID_ATLAS data structure and frees the allocated memory.

RxDispatchToWorkerThread

RxDispatchToWorkerThread invokes a routine in the context of a worker thread. The memory for the WORK_QUEUE_ITEM is allocated by this routine.

RxDriverEntry

RxDriverEntry is called by a monolithic network mini-redirector driver from its DriverEntry routine to initialize the RDBSS static library.

For non-monolithic drivers, this initialization routine is equivalent to the DriverEntry routine of the RDBSS.SYS device driver.

RxFinalizeConnection

RxFinalizeConnection deletes a connection to a share. Any files open on the connection are closed depending on the level of force specified. The network mini-redirector might choose to keep the transport connection open for performance reasons, unless some option is specified to force a close of connection.

RxFinalizeNetFCB

RxFinalizeNetFCB finalizes the given FCB structure. The caller must have an exclusive lock on the NET_ROOT associated with FCB.

RxFinalizeNetFOBX

RxFinalizeNetFOBX finalizes the given FOBX structure. The caller must have an exclusive lock on the FCB associated with FOBX structure.

RxFinalizeNetRoot

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

RxFinalizeSrvCall

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

RxFinalizeSrvOpen

RxFinalizeSrvOpen finalizes the given SRV_OPEN structure. The caller must have an exclusive lock on the FCB associated with the SRV_OPEN and either a shared or exclusive lock on the table lock of the NET_ROOT associated with the FCB.

RxFinalizeVNetRoot

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

RxFinishFcbInitialization

RxFinishFcbInitialization is used to finish initializing an FCB after the successful completion of a create operation by the network mini-redirector.

RxForceFinalizeAllVNetRoots

RxForceFinalizeAllVNetRoots force finalizes all the V_NET_ROOT structures associated with a given NET_ROOT structure. The caller must have an exclusive lock on the netname table associated with the device object.

RxFsdDispatch

RxFsdDispatch implements the file system driver (FSD) dispatch for RDBSS to process an I/O request packet (IRP). A pointer to this routine is copied over the device driver dispatch table for the network mini-redirector driver by the RxDriverEntry routine when RDBSS is initialized.

RxFsdPostRequest

RxFsdPostRequest queues the I/O request packet (IRP) specified by an RX_CONTEXT structure to the worker queue for processing by the file system process (FSP).

RxGetFileSizeWithLock

RxGetFileSizeWithLock gets the file size in the FCB structure using a lock to ensure that the 64-bit value is read consistently.

RxGetRDBSSProcess

RxGetRDBSSProcess returns a pointer to the process of the main thread used by the RDBSS kernel process.

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingState is called to register a change buffering state request (an oplock break indication, for example) for later processing. If necessary, worker thread routines for further processing are activated.

RxIndicateChangeOfBufferingStateForSrvOpen

RxIndicateChangeOfBufferingStateForSrvOpen is called to register a change buffering state request (an oplock break indication, for example) for later processing. If the necessary preconditions are satisfied, the oplock is processed further.

RxInferFileType

RxInferFileType tries to infer the file type (directory or non-directory) from a member in the RX_CONTEXT structure.

RxInitializeContext

RxInitializeContext initializes an existing RX_CONTEXT data structure.

RxIsThisACscAgentOpen

RxIsThisACscAgentOpen determines if a file open was made by a user-mode client-side caching agent.

RxLockEnumerator

RxLockEnumerator is called from a network mini-redirector to enumerate the file locks on an FCB.

RxLogEventDirect

RxLogEventDirect is called to log an error to the I/O error log.

It is recommended that the RXLogEvent macro or the RxLogFailure macro be used instead of calling this routine directly.

RxLogEventWithAnnotation

RxLogEventWithAnnotation allocates an I/O error log structure, fills it in with information, and writes the entry to the I/O error log.

RxLogEventWithBufferDirect

RxLogEventWithBufferDirect allocates an I/O error log structure, fills it in with information, and writes the entry to the I/O error log.

RxLowIoCompletion

RxLowIoCompletion must be called by the network mini-redirector low I/O routines when they complete, if the low I/O routines have initially returned STATUS_PENDING.

RxLowIoGetBufferAddress

RxLowIoGetBufferAddress returns the buffer corresponding to the MDL from LowIoContext structure of an RX_CONTEXT structure.

RxMakeLateDeviceAvailable

RxMakeLateDeviceAvailable modifies the device object to make a "late device" available. A late device is one that is not created in the driver's load routine.

RxMapAndDissociateMidFromContext

RxMapAndDissociateMidFromContext maps a Multiplex ID (MID) to its associated context in a MID_ATLAS structure and then disassociates the MID from the context.

RxMapMidToContext

RxMapMidToContext maps a Multiplex ID (MID) to its associated context in a MID_ATLAS structure.

RxMapSystemBuffer

RxMapSystemBuffer returns the system buffer address from the IRP.

RxNameCacheActivateEntry

RxNameCacheActivateEntry takes a name cache entry and updates the expiration time and the network mini-redirector context. It then puts the name cache entry on the active list.

RxNameCacheCheckEntry

RxNameCacheCheckEntry checks a name cache entry for validity. A valid entry means that the lifetime has not expired and the MRxContext parameter passes the equality check.

RxNameCacheCreateEntry

RxNameCacheCreateEntry allocates and initializes a NAME_CACHE structure with the given name string.

RxNameCacheExpireEntry

RxNameCacheExpireEntry puts a NAME_CACHE entry on the free list for recycling.

RxNameCacheExpireEntryWithShortName

RxNameCacheExpireEntryWithShortName expires all of the name cache entries whose name prefix matches the given short file name.

RxNameCacheFetchEntry

RxNameCacheFetchEntry looks for a match with a specified name string for a NAME_CACHE entry.

RxNameCacheFinalize

RxNameCacheFinalize releases the storage for all of the NAME_CACHE entries associated with a NAME_CACHE_CONTROL structure.

RxNameCacheFreeEntry

RxNameCacheFreeEntry releases the storage for a NAME_CACHE entry and decrements the count of the NAME_CACHE cache entries associated with a NAME_CACHE_CONTROL structure.

RxNameCacheInitialize

RxNameCacheInitialize initializes a name cache (NAME_CACHE_CONTROL structure).

RxNewMapUserBuffer

RxNewMapUserBuffer returns the user buffer address used for low I/O.

RxpAcquirePrefixTableLockExclusive

RxpAcquirePrefixTableLockExclusive acquires the prefix table lock exclusively.

RxpAcquirePrefixTableLockShared

RxpAcquirePrefixTableLockShared acquires the prefix table lock shared.

RxpDereferenceAndFinalizeNetFcb

RxpDereferenceAndFinalizeNetFcb decrements the reference count and finalizes an FCB structure.

RxpDereferenceNetFcb

RxpDereferenceNetFcb decrements the reference count on an FCB structure.

RxPostOneShotTimerRequest

RxPostOneShotTimerRequest initializes a one-shot timer entry. The passed-in pointer to a worker thread routine is called once when the timer expires.

RxPostRecurrentTimerRequest

RxPostRecurrentTimerRequest initializes a recurrent timer request. The passed in pointer to a worker thread routine is called at regular intervals when the recurrent timer fires based on the input parameters to this routine.

RxPostToWorkerThread

RxPostToWorkerThread invokes a routine passed as a parameter in the context of a worker thread. Memory for the WORK_QUEUE_ITEM must be allocated by the caller.

RxpReferenceNetFcb

RxpReferenceNetFcb increments the reference count on an FCB.

RxPrefixTableLookupName

RxPrefixTableLookupName looks up a name in a prefix table used to catalog SRV_CALL, NET_ROOT, and V_NET_ROOT names and converts the underlying pointer to a structure that contains the name.

RxpReleasePrefixTableLock

RxpReleasePrefixTableLock releases a previously acquired shared or exclusive prefix table lock.

RxPrepareContextForReuse

RxPrepareContextForReuse prepares an RX_CONTEXT data structure for reuse by resetting all of the operation-specific allocations and acquisitions that have been made (the ReferenceCount member to the RX_CONTEXT structure is set to zero). Parameters that have been obtained from the IRP are not modified.

RxPrepareToReparseSymbolicLink

RxPrepareToReparseSymbolicLink sets up the file object name to facilitate a reparse. This routine is used by the network mini-redirectors to traverse symbolic links.

RxpTrackDereference

RxpTrackDereference is used in checked builds to track requests to dereference SRV_CALL, NET_ROOT, V_NET_ROOT, FOBX, FCB, and SRV_OPEN structures in checked builds. A log of these dereference requests can be accessed by the logging system and WMI.

RxpTrackReference

RxpTrackReference tracks requests to reference SRV_CALL, NET_ROOT, V_NET_ROOT, FOBX, FCB, and SRV_OPEN structures in checked builds. A log of these reference requests can be accessed by the logging system and WMI.

RxpUnregisterMinirdr

RxpUnregisterMinirdr is called by a network mini-redirector driver to de-register the driver with RDBSS and remove the registration information from the internal RDBSS registration table.

RxPurgeAllFobxs

RxPurgeAllFobxs purges all of the FOBX structures associated with a network mini-redirector.

RxPurgeRelatedFobxs

RxPurgeRelatedFobxs purges all of the FOBX structures associated with a NET_ROOT structure.

RxReassociateMid

RxReassociateMid reassociates a Multiplex ID (MID) with an alternate context.

RxReference

RxReference increments the NodeReferenceCount member of a structure by one for several of the reference counted data structures used by RDBSS.

RxRegisterMinirdr

RxRegisterMinirdr is called by a network mini-redirector driver to register the driver with RDBSS, which adds the registration information to an internal registration table. RDBSS also builds a device object for the network mini-redirector.

RxReleaseFcbResourceForThreadInMRx

RxReleaseFcbResourceForThreadInMRx releases the FCB resource acquired by a network mini-redirector driver with a particular thread ID.

RxReleaseFcbResourceInMRx

RxReleaseFcbResourceInMRx releases the FCB resource acquired by a network mini-redirector driver.

RxResumeBlockedOperations_Serially

RxResumeBlockedOperations_Serially wakes up the next waiting thread, if any, on the serialized blocking I/O queue.

RxScavengeAllFobxs

RxScavengeAllFobxs scavenges all of the FOBX structures associated with a network mini-redirector device object.

RxScavengeFobxsForNetRoot

RxScavengeFobxsForNetRoot scavenges all of the FOBX structures associated with a given NET_ROOT structure.

RxSetDomainForMailslotBroadcast

RxSetDomainForMailslotBroadcast is called by a network mini-redirector driver to set the domain used for mailslot broadcasts if mailslots are supported by the driver.

RxSetMinirdrCancelRoutine

RxSetMinirdrCancelRoutine is called by a network mini-redirector driver to set up a network mini-redirector cancel routine for an RX_CONTEXT structure.

RxSetSrvCallDomainName

RxSetSrvCallDomainName is called by a network mini-redirector driver to set the domain name associated with any given server (SRV_CALL structure).

RxSpinDownMRxDispatcher

RxSpinDownMRxDispatcher tears down the dispatcher context for a network mini-redirector.

RxStartMinirdr

RxStartMinirdr is called to start up a network mini-redirector that has previously called to register with RDBSS. As part of RxStartMinirdr, RDBSS will also register the network mini-redirector driver as a universal naming convention (UNC) provider with the Multiple UNC Provider (MUP) if the driver indicates support for UNC names.

RxStopMinirdr

RxStopMinirdr is called to stop a network mini-redirector that has previously been started. As part of RxStopMinirdr, RDBSS will also de-register the network mini-redirector driver as a universal naming convention (UNC) provider with the Multiple UNC Provider (MUP) if the driver indicates support for UNC names.

RxUnregisterMinirdr

RxUnregisterMinirdr is an inline routine called by a network mini-redirector driver to de-register the driver with RDBSS and remove the registration information from the internal RDBSS registration table.

_RxAllocatePoolWithTag

_RxAllocatePoolWithTag allocates memory from a pool with a four-byte tag at the beginning of the block that can be used to help catch instances of memory trashing.

_RxCheckMemoryBlock

_RxCheckMemoryBlock checks a memory block for a special RX_POOL_HEADER header signature. Note that a network mini-redirector driver would need to add this special signature block to memory allocated in order to use the routine. This routine should not be used since this special header block has not been implemented.

_RxFreePool

_RxFreePool releases memory that was previously allocated using _RxAllocatePoolWithTag.

_RxLog

_RxLog takes a format string and variable number of parameters and formats an output string for recording as an I/O error log entry if logging is enabled.

__RxFillAndInstallFastIoDispatch

RxFillAndInstallFastIoDispatch fills out a fast I/O dispatch vector to be identical with the normal dispatch I/O vector and installs it into the driver object associated with the device object passed.

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperations synchronizes blocking I/O requests to the same work queue.

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock synchronizes blocking I/O requests to the same work queue.

 

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft