SideShow Architecture (Windows CE 5.0)

Windows CE 5.0 SupportedWindows Embedded NavReady 2009 Supported

10/16/2008

SideShow on Windows Embedded CE consists of three layers: the transport, the SideShow service, and the SideShow API. The transport layer oversees the details of communication with the SideShow driver running on a Windows Vista computer. The service layer uses a single active transport to receive information, such as gadget content and notifications, and caches it so that applications can access it. The service also sends notifications back to the SideShow driver on the Windows Vista computer. The SideShow API allows multiple applications on the Windows Embedded CE powered device to communicate with the service at one time. The API is a DLL (SideShowAPI.dll), which is loaded in-process and uses interprocess communication to interact with the SideShow service. The Windows Embedded CE SideShow service is implemented as a DLL (SideShowService.dll), which is loaded by Services.exe.

More than one SideShow communication transport can be present on a Windows Embedded CE powered device, but only one can be used by the SideShow service at one time. Each transport is implemented in a separate DLL. On startup, a single registry entry tells the service which transport DLL to utilize. The service uses the transport to establish a connection to SideShow running on the Windows Vista computer, sends and receives SideShow data, and terminates the SideShow session when the SideShow viewer application closes.

Below are the three transports included in the public code tree:

  • Microsoft Bluetooth transport
  • USB Component-based transport
  • TCP/IP transport

Cc700965.f431f7de-5ea9-4ff1-80ce-644426b15b6e(en-us,MSDN.10).gif

Microsoft Bluetooth Transport

The Bluetooth transport uses sockets to interact with the Microsoft Bluetooth stack and communicate with the Windows Vista computer. The user will need to establish Bluetooth pairing before the Bluetooth transport can send and receive SideShow data. For more information about Bluetooth interfaces, see Bluetooth.

USB Component-based Transport

The USB transport is divided into two main components: a USB service (SideShowTransport_Usb.dll), which is utilized by the SideShow service layer (SideShowService.dll), and a USB function driver (SideShowUSBFn.dll), which is loaded by Device.exe.

The service DLL acts as a data conduit between the SideShow API and the USB function driver. The service opens a handle to the USB function driver and reads and writes data to it using stream interface functions. The driver notifies the service through a named event.

The USB function driver is loaded at boot time and uses a standard stream driver interface for communication with the SideShow USB service. Under Windows CE 5.0 the USB function driver can be registered with the function driver for the device (the OEM developer or user must choose what function is registered with the USB Function Port).

Note

If you have included ActiveSync Desktop Pass-through (DTPT) in the OS design and you also want to add support for the SideShow USB transport, you must write an application that selects a new default USB driver by modifying the registry, and then reboots the Windows Embedded CE powered device. For more information, see SideShow OS Design Development.

TCP/IP Transport

The TCP/IP Transport is divided into two main components: a main transport DLL (SideShowTransport_IP.dll), which is utilized by the SideShow service layer, and a Universal Plug-n-Play (UPnP) COM object (SideShowUpnpDevice.dll), which implements Universal Plug-n-Play support.

The upnphost module on the uses SideShowUpnpDevice.dll to broadcast its presence on the local network. A registry key (HKEY_LOCAL_MACHINE\SERVICE\SideshowService\SSDPRefreshNotifySec) specifies how often it broadcasts.

The desktop uses Plug and Play Extensions (PNPx) to install the device when located. This release uses the group category of Phone.WindowsMobile by default. This can be changed in the SideShowdevice.xml file which can be found in the \windows\upnp directory.

SSL Implementation

The build process can produce two versions of the TCP/IP transport: SSL and no-SSL. The Sysgen variables determine which is used. If both are selected, SSL is used. For more information about these settings, see SideShow OS Design Development.

The SSL transport creates a self-signed certificate, which is stored on the Windows Embedded CE powered device. The certificate is automatically generated the first time the SSL transport runs, and is used by the Windows Vista SideShow driver to uniquely identify the Windows Embedded CE powered device.

For more information, see SideShow Security.

User Interface

The SideShow API, service, and transports do not include a user interface. If a user interface (UI) is needed, it must be created by the OEM developer.

See Also

Concepts

SideShow OS Design Development
SideShow Security

Other Resources

SideShow