Specifications

Remote Control and Receiver-Transceiver Specifications and Requirements
for Windows Media Center in Windows Operating Systems
135
Figure 27: The CIR driver stack
The preceding diagram shows the components that are used to support remote control
operations in Windows. Components provided by Microsoft are shown as blue-shaded blocks;
Windows Media Center partner-developed components are shown as white blocks. Both user-
mode and kernel-mode components are illustrated.
Windows support for CIR remote controls is anchored by the CIRClass driver. As shown in the
preceding diagram, the upper edge of this driver provides the interface to the rest of the Windows
system. As CIRClass receives data from underlying CIR Port drivers (such as USBCIR in the
diagram), it routes that data (according to its own algorithms) to user-mode Windows Media
Center components, to the human interface device (HID) stack, or to both of these destinations.
During "IR blasting" operations, CIRClass sends data to one or more specific CIR Port drivers.
The lower edge of CIRClass provides an interface to one or more CIR Port drivers, including the
Microsoft-supplied USBCIR driver. CIR Port drivers are responsible for controlling their CIR
remote control hardware, along with translating data for that hardware between the standard
format used by CIRClass (described in detail later in this document) and their hardware's
proprietary format.
The USBCIR driver supports standard Microsoft-defined CIR devices that connect to the
computer through USB. Continuing with our examination of the preceding diagram, USBCIR
interfaces with CIRClass at its upper edge, and with the standard Microsoft USB driver stack at
its lower edge.
Also shown in the preceding diagram is how an arbitrary, non-Microsoft-developed CIR remote
control fits into the Windows system of CIR support. Non-Microsoft CIR Port drivers interface with
the standard CIRClass driver at their upper edge, and with their hardware at their lower edge.
Note that the CIR Port driver may interact with its hardware either directly or indirectly, through an
additional set of drivers which may or may not be supplied by Microsoft. For example, a non-
Microsoft CIR Port driver would directly interface with a PCI-based non-Microsoft CIR remote
control (with the support of the standard Microsoft-supplied PCI bus driver). Alternatively, a non-
Microsoft USB-based CIR remote control would interact with its device indirectly through the
standard Microsoft-supplied USB driver stack.
Introduction to the CIRClass Framework
As described previously, the CIRClass driver is the interface between drivers that support one or
more Windows CIR devices and the rest of the Windows operating system. The CIRClass driver
provides a framework that centralizes common processing and simplifies the creation of CIR Port
drivers. To help describe that framework, this section will describe how CIRClass supports and
interfaces with the USBCIR driver supplied by Microsoft. The relationship between the device
objects created by these two drivers is shown in the following diagram.