IOCTL_HAL_REQUEST_SYSINTR

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.

The following list shows 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 examples, 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, once you have configured the OAL, you can simply update the registry to inform the serial drivers which Sysintr to use.

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

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.