The service *seems* to connect to the correct interface, as it returns some information about the receivers that is correct and unlikely to have happened "on accident".
Does anyone know where to get some more information or a reference? The only thing I found is this (and related pages), but that's hardly comprehensive. It also seems like the hard-coded enums and data structures in the file were once extracted from the official development sources. Would that be the WDK?
Pretty frustrating, as everything seems to sort-of work for me, besides the fact that no IR data ever arrives once the MCE interface has been setup. I also tried out RichardH's version, but the results are mostly the same:
00000001 0.00000000 [6376] VistaGetDeviceCapabilities() ENTER
00000002 0.00007078 [6376] IoControl ENTER
00000003 0.00010086 [6376] IoControl: hReadPipe is valid
00000004 0.00013236 [6376] IoControl: Event created successfully
00000005 0.00016244 [6376] InSize = 0, OutSize = 40
00000006 0.00023499 [6376] IoControl: bytesReturned=40
00000007 0.00026154 [6376] IoControl EXIT
00000008 0.00029126 [6376] Device Capabilities:
00000009 0.00031675 [6376] NumTxPorts: 2
00000010 0.00034258 [6376] NumRxPorts: 2
00000011 0.00036912 [6376] LearnPortMask: 0x1
00000012 0.00039496 [6376] ReceivePort: 1
00000013 0.00042044 [6376] LearnPort: 0
00000014 0.00044627 [6376] DetailsFlags: 0x4
00000015 0.00047353 [6376] Connected to \\?\root#system#0002#{7951772d-cd50-49b7-b103-2baac494fc57}\port1
00000016 0.00050078 [6376] Using port 1
00000017 0.00129848 [6376] Creating named pipe
00000018 0.00135687 [6376] Opened MCE IR device interface
00000019 0.00140748 [6376] Before StartReceive
00000020 0.00143650 [6376] ***************** OutputConnectionsThreadProc() before wait
00000021 0.00147791 [6376] VistaStartReceive() ENTER
00000022 0.00151684 [6376] Waiting for connection...
00000023 0.00155435 [6376] IoControl ENTER
00000024 0.00158373 [6376] IoControl: hReadPipe is valid
00000025 0.00161735 [6376] IoControl: Event created successfully
00000026 0.00164672 [6376] InSize = 16, OutSize = 0
00000027 0.00172529 [6376] IoControl: bytesReturned=0
00000028 0.00175183 [6376] IoControl EXIT
00000029 0.00177767 [6376] After StartReceive
00000030 0.00180704 [6376] IR pump thread using normal receive port
00000031 0.00189587 [6376] Starting IR Pump Thread
00000032 0.00193834 [6376] IR Pump Thread, before IoControl
00000033 0.00196347 [6376] IoControl ENTER
00000034 0.00198895 [6376] IoControl: hReadPipe is valid
00000035 0.00201868 [6376] IoControl: Event created successfully
00000036 0.00204664 [6376] InSize = 0, OutSize = 132
00000037 0.50090510 [6376] ***************** OutputConnectionsThreadProc() after wait, Stop = 0
00000038 0.50098759 [6376] ***************** OutputConnectionsThreadProc() starting LOOP?
00000039 0.50103855 [6376] Waiting for data or close
Before, I wrote:I did some more testing. It seems most likely to me that the wrong CIR interface is opened, as pointed to by this thread: viewtopic.php?f=9&t=3527&p=24693#p24693
Probably the current service tries to open a USB receiver, though my board has a hardware CIR header. No idea why opening the interface does not fail in my case.
I don't know much about the GUID stuff that's used to identify the correct device class - I will try to do some testing with values I get from the device manager.
In the meantime, can somebody where this service is working confirm that 7951772d-cd50-49b7-b103-2baac494fc57 is indeed the class GUID of their IR receiver?
How to check: https://technet.microsoft.com/de-de/lib ... 10%29.aspx
The device should be found under HID Devices. If I'm correct, I can hopefully fix this for some more people that have onboard CIR headers, too!
