Specifications
Remote Control and Receiver-Transceiver Specifications and Requirements
for Windows Media Center in Windows Operating Systems
139
necessary to support the version 2 DDI. However, it is not strongly tied to this DDI, meaning that
old emulators will still work with the newer version 2 DDI port driver.
CIRClass and CIR Port Interface Details
There are three mechanisms by which CIR Port drivers and the CIRClass driver interact. All
three mechanisms are required and must be implemented by every CIR Port driver.
The three mechanisms are:
Device-Specific Class Installer (used during installation): Whenever a CIR Port driver is
installed, it must invoke the Microsoft-supplied device-specific class installer for the CIRClass
driver. This installer installs and starts the CIRClass driver if it has not already been installed and
started (as a result of another CIR Port driver being installed).
Device Interface Registration and Enabling (used during initialization and teardown):
Whenever a CIR Port device is enumerated, the driver for that device must register and enable a
device interface for the CIR Port device, using device interface GUID
GUID_DEVINTERFACE_IRPORT. The CIRClass driver "listens" for devices to be enabled with
this interface and takes specific actions (described later) as a result. Typically, the CIR Port driver
registers the device interface within its Add Device routine and will enable the interface within its
IRP_MN_START_DEVICE processing code. Note that, if a CIR Port device is removed from the
system, the CIR Port driver must disable its device interface. (However, the device interface need
not be deleted.)
IOCTLs (used during initialization and normal operations): The CIRClass and CIR Port drivers
exchange data using a defined set of IOCTLs (that is, IRP_MJ_DEVICE_CONTROL requests),
that are described later in this document. Note that IOCTLs are the only type of I/O request that is
exchanged between CIRClass and CIR Port drivers. Standard read and write (IRP_MJ_READ
and IRP_MJ_WRITE) requests are not used.
CIR Port Driver Installation
The CIRClass driver and its associated INF file are present on all supported Windows systems.
However, the driver is neither installed nor started until a CIR Port device is installed. The
CIRClass driver is installed and started as a result of the CIR Port driver's INF file invoking the
CIRClass device-specific class installer. This device-specific coinstaller is named CIRCoInst.dll.
The installation procedure for all CIR Port drivers must invoke CIRCoInst.dll as a device-specific
coinstaller during their installation process. The INF command to invoke the coinstaller will be
similar to the following:
;
;--- usbcir_Device Coinstaller installation ------
;
[DestinationDirs]
IR_CoInstaller_CopyFiles = 11
[usbcir_Device.NT.CoInstallers]
AddReg=IR_CoInstaller_AddReg
CopyFiles=IR_CoInstaller_CopyFiles
;
; IR CoInstaller
;
[IR_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010008, "CIRCoInst.dll,IRCoInstaller"
[IR_CoInstaller_CopyFiles]
CIRCoInst.dll










