1.4.1 Device Services Lightweight Remoting Protocol
The Device Services Lightweight Remoting Protocol (DSLR) specified in [MS-DSLR] is a 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 and events exposed by the service, as well as the in/out parameters for each. By convention, the request/response calling convention follows COM rules, that is:
The function returns an HRESULT.
All [in] parameters are serialized in the request tag.
The returned HRESULT is serialized in the response tag, followed, if successful, by the [out] parameters.
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 does not evaluate any of the [out] parameters if the call returned a failure.