Specifications

Remote Control and Receiver-Transceiver Specifications and Requirements
for Windows Media Center in Windows Operating Systems
83
To implement the descriptor, two firmware changes are necessary:
The firmware must return the Microsoft OS String Descriptor when the host requests it. This is
how the firmware identifies itself as supporting the Extended Compat ID Descriptor.
The firmware must return the appropriate Extended Compat ID Descriptor when the host asks for
it. This is how the firmware notifies the host that it is an IR Transceiver Version 2 or IR Receiver
Version 3 emulation device.
Note The same Extended Compat ID Descriptor is returned for both IR Transceiver and IR
Receiver devices. The difference between a transmitter/receiver device (transceiver) and a
receive-only device (receiver) is defined by the device when it responds to the
CMD_GETIRNUMPORTS request.
Both of these queries happen at device enumeration time.
Microsoft OS String Descriptor
When the host sends a request for string 0xEE to the firmware, the firmware must respond with a
string containing the fields described in the following table.
Field
Length
(bytes)
Value
Description
bLength
1
0x12
Length of the descriptor
bDescriptorType
1
0x03
String descriptor
qwSignature
14
'MSFT100'
Signature
bMS_VendorCo
de
1
Vendor
Code
Vendor code to fetch other OS
Feature Descriptors; equal to
GET_CONFIG_DESCRIPTOR
bPad
1
0x00
Pad field
The bLength, bDescriptorType, qwSignature, and bPad values must be exactly as described
here.
The bMS_VendorCode value is defined by the firmware writer and is used by the host to request
the Extended Compat ID descriptor. This appears as bRequest in the example code in the
Extended Compat ID Descriptor topic below.
Note To debug this, you may need to delete the osvc registry key on your computer. For more
information, see http://go.microsoft.com/fwlink/?LinkId=144042.
If you are using a bMS_VendorCode of 1, your string will be the following exact value (in hex):
0x12 0x03 0x4D 0x00 0x53 0x00 0x46 0x00 0x54 0x00 0x31 0x00 0x30 0x00 0x30 0x00 0x01 0x00
Extended Compat ID Descriptor
The operating system will first issue a vendor specific request to the device with a wLength value
set to 16. The purpose of this setting is to get the header section of the Extended Compat ID
Descriptor. The following is an example trace to retrieve the header section:
bmRequestType = 1100000