IOCTL_HAL_REQUEST_SYSINTR (Windows CE 5.0)
This IOCTL requests an IRQ-to-SYSINTR mapping. It should be called by bus drivers that populate the registry with SYSINTRs for the device driver that the bus drivers load.
The OEMIoControl function calls this IOCTL.
Parameters
- dwIoControlCode
[in] Set to IOCTL_HAL_REQUEST_SYSINTR. - lpInBuf
[in] IRQ to translate into a SYSINTR. - nInBufSize
[in] Size of lpInBuf. - lpOutBuf
[out] SYSINTR translated from an IRQ. - nOutBufSize
[out] Size of lpOutBuf. - lpBytesReturned
[in] If not NULL, set to size of DWORD. - lpOverlapped
[in] Set to NULL.
Return Values
TRUE indicates success. FALSE indicates failure.
Remarks
A bus driver reads its SYSINTR value from the registry. It also reads the IRQ value, if necessary. If this is a built-in device, set up the mapping in the OEMInit function and place the SYSINTR in the associated registry entry for the device. Bus drivers, such as the PCI bus driver, use IOCTL_HAL_REQUEST_SYSINTR to allocate SYSINTRs and subsequently populate the registry for the device it is loading a driver for.
There are two ways to map multiple system interrupts to a single shared IRQ:
Use IOCTL_HAL_REQUEST_SYSINTR to pass the OAL your IRQ. The OAL returns a Sysintr value that you can use.
If your driver unloads, use IOCTL_HAL_RELEASE_SYSINTR.
Hard-code the Sysintr values into your OAL.
Multiple Sysintr values can correspond to one IRQ. IRQ values and Sysintr values have a one-to-one relationship, which defines the default Sysintr value for the IRQ. For example, see SETUP_INTERRUPT_MAP and OEMRequestSysIntr.
You can add the hard-coded Sysintr values, beginning at SYSINTR_FIRMWARE + 16, to OEMInit, immediately after the last SETUP_INTERRUPT_MAP. You cannot use SETUP_INTERRUPT_MAP directly because it includes instances of DEBUGCHK that ensure the same IRQ is not mapped twice. Although this method is not as flexible as the one above, after you configure the OAL, you can update the registry to inform the serial drivers which Sysintr to use.
For information about mapping multiple IRQs to a SYSINTR, see OALIoCtlHalRequestSysIntr.
Requirements
OS Versions: Windows CE .NET 4.0 and later.
Header: Pkfuncs.h.
See Also
Debugging Macros | IOCTL_HAL_TRANSLATE_IRQ | IOCTL_HAL_RELEASE_SYSINTR | NdisMRegisterInterrupt | OEMInit | OEMIoControl | OEMRequestSysIntr | Installable ISRs
Send Feedback on this topic to the authors