1.4.1 Device Services Lightweight Remoting Protocol (DSLR)
Device Services Lightweight Remoting Protocol (DSLR) is a Component Object Model (COM)-like protocol that enables remoting of services (for example, function calls, events, and so on) over a reliable point-to-point connection. It enables an application to call functions on and/or send events to a remote device over the established channel. The service itself is implemented on the local/stub side of the connection, and the remote side creates a proxy for that service. DSLR is direction-agnostic, that is, each side of the connection can act as both a proxy for a remote service and a stub that manages calls into a local service. Both the stub and proxy are implemented by the DSLR consumer; each side has knowledge of the functions/events exposed by the service, as well as the in/out parameters for each. By convention, the request/response calling convention follows COM rules:
The function returns an HRESULT.
All [in] parameters are serialized in the request tag.
The returned HRESULT is serialized in the response tag, followed by the [out] parameters, if successful,
The caller expects the returned HRESULT to be either one of the values returned by the function, or one of the DSLR failure values.
The caller cannot evaluate any of the [out] parameters if the call returned a failure.
For more information about this protocol, see [MS-DSLR].