WDF driver for Microsoft eHome IR remote receiver

I have a question on how to write a WDF replacement driver to replace Microsoft IRBUS.sys and HIDIR driver. I am using Microsoft eHome IR remote receiver device plugged into USB port. I need to support a non-Microsoft custom IR remote protocol to work with non-Microsoft remote control device. The current Microsoft IRBUS.sys takes the IR waveform data from IR port driver, and decodes the waveform into key press. But this is not the IR protocol I want. So I need to write a new driver to replace this IRBUS.sys and HIDIR driver in kernel mode to decode the waveform using my custom protocol, in order to support the non-MS remote control. What specification do I need to write this driver, and how to get started?
Your help will be greatly appreciated.

Thanks.
Charles

Why do you need to replace both? can’t you write your own HID miniport and then just report the data you want? you are already enumerated as a pnp device right?
d

Hi d,

The goal is to have the existing MS eHome IR receiver work with a remote control sending non-MS standard IR protocol codes. Yes, Windows enumerates the receiver device automatically under USB controller in device manager.
There are two approaches. From user space application, I can call SetupDiGetDeviceInterfaceDetail() API to get the full device path, and then use CreateFile() and ReadFile() to get the RLC waveform data stream bytes, and write my own decode routine to convert the waveform streams to custom protocol payloads and eventually to key press. I already did that.
However, what I really want to do is in kernel space to create a WDF driver to get the RLC waveform stream bytes, and decode myself into key press. I don’t know how to do it in kernel driver on XP MCE and Vista. I got the impression that I need to replace both IRBUS.sys and HIDIR.sys from WinHec presentation (WEN05007_WinHEC05.ppt), it says that the IR port driver for eHome receiver returns the RLC waveform stream, and IRBUS.sys decodes it. So it seems to me that I need to replace the entire upper layer on top of port driver to do the decoding and key press make. Is this true? Is this possible? How?

Thanks for your help.
Charles