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.