Connection Engine Management
In RDBSS, the connection engine is designed to map and emulate the TDI specifications as closely as possible. This provides an efficient mechanism that fully exploits the underlying TDI implementation for use by network mini-redirectors.
While the RDBSS connection engine does abstract TDI, network redirectors are also free to communicate directly with TDI instead of using these RDBSS connection engine routines. The existing RDBSS connection engine routines that provide wrappers for TDI were developed to support Microsoft Networks, so they are very Windows-centric and may not be appropriate for other network directors. Also, the connection engine routines in RDBSS are to be removed from Windows operating systems released after Windows Server 2003. In the future, each network redirector will be responsible for developing the connection engine routines needed (to TDI or some other transport). For example, a WebDAV redirector could talk to some user-mode reflector process to send out HTTP packets (standard TCP/IP) rather than TDI.
The RDBSS connection engine routines deal with the following entities:
Transports
Transport addresses
Transport connections
Virtual circuits on a connection
The transports are bindings to the various transport service providers on any system. The transport addresses are the local connection end points. The connections are transport connections between endpoints. Each connection encapsulates a number of virtual circuits (typically one).
The following important data structures are created and manipulated by the various connection engine routines associated with RDBSS:
RXCE_TRANSPORT--encapsulates all of the parameters for a transport
RXCE_ADDRESS--encapsulates all of the parameters for a transport address
RXCE_CONNECTION--encapsulates all of the parameters for a transport connection
RXCE_VC--encapsulates all of the parameters for a virtual circuit on a transport connection
Network mini-redirector drivers can use these data structures and invoke the routines provided for each type to build and tear down the connection engine portions. These routines do not allocate or free the memory associated with these structures. This provides a flexible mechanism for mini-redirector drivers to manage instances of these connection engine data structures.
The four connection engine types described above are tagged at the beginning of each data structure with a special RXCE_SIGNATURE signature that is used extensively by RDBSS for validation.
RDBSS provides the following connection engine routines that can be used by network mini-redirector drivers.
Routine | Description |
---|---|
This routine allocates an IRP for use by the connection engine and associates an MDL with the IRP. This routine is only available on Windows XP. |
|
This routine associates a transport address with a transport binding. |
|
This routine establishes a connection between a local RDBSS connection address and a given remote address. This routine should be called in the context of a system worker thread. |
|
This routine 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 through all of the transports associated with the local addresses. One connection is chosen as the winner depending on the connect options. This routine must be called in the context of a system worker thread. |
|
This routine binds an RDBSS transport to a specified transport name. |
|
This routine adds a virtual circuit to a specified connection. |
|
This routine cancels a previously issued connection request. Note that this routine is not currently implemented. |
|
This routine frees an IRP used by the connection engine. This routine is only available on Windows XP. |
|
This routine initiates a disconnect on the virtual circuit. This routine must be called in the context of a system worker thread. |
|
This routine returns the ADAPTER_STATUS structure for a given transport. |
|
This routine queries information that pertains to a connection. |
|
This routine returns the transport information about the connection count and quality of service for a given transport. |
|
This routine sends a TSDU along the specified connection on a virtual circuit. |
|
This routine sends a TSDU to a specified transport address. |
|
This routine removes a transport address from a transport binding. |
|
This routine tears down a given connection. |
|
This routine unbinds from the transport specified. |
|
This routine tears down a virtual connection. |
Note TDI will not be supported in Microsoft Windows versions after Windows Vista. Use Windows Filtering Platform or Winsock Kernel instead.