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].