GIISR_INFO

This structure is passed to the interrupt service routine (ISR) through KernelLibIoControl after the ISR is loaded with LoadIntChainHandler.

typedef struct _GIISR_INFO {
  DWORD SysIntr;
  BOOL CheckPort;
  BOOL PortIsIO;
  BOOL UseMaskReg;
  DWORD PortAddr;
  DWORD PortSize;
  DWORD Mask;
  DWORD MaskAddr;
} GIISR_INFO, *PGIISR_INFO;

Members

  • SysIntr
    System interrupt number (SYSINTR) for the ISR to return if the associated device is asserting the interrupt request (IRQ). This value is read from the registry.

  • CheckPort
    If TRUE, the ISR will read a port on the device to determine whether the device is the one that is asserting the IRQ. A PortAddr is required to address the port that will be read to determine if the device is asserting the interrupt.

    If FALSE, then the ISR assumes the device is asserting the IRQ and immediately returns SysIntr. This option would be used only if the interrupt line that the device is using is not shared, or if the ISR is guaranteed to be last in the chain, for example, the ISR is installed with the last LoadIntChainHandler call on this IRQ. In general, this option should only be used if there is no means to detect whether the device is asserting the IRQ.

  • PortIsIO
    If TRUE, the port is the I/O port. This determines whether the port is I/O or memory-mapped. This is relevant for x86 architectures because all other microprocessors are memory-mapped.

  • UseMaskReg
    If TRUE, read from MaskAddr to obtain mask. Optionally, another device register may be used as a mask. This feature is activated if the UseMaskReg field is TRUE. The associated MaskAddr field is the statically mapped virtual address of the mask register. This option is used if the device has multiple interrupt sources that are indicated as enabled by the register pointed to by MaskAddr. Any disabled bits mask off the interrupt pending register pointed to by PortAddr.

  • PortAddr
    Port address. This is a statically-mapped virtual address that is obtained through TransBusAddrToStatic. This is required if CheckPort is TRUE.

  • PortSize
    Port data width in 1, 2, or 4 bytes.

  • Mask
    A mask to use on the port to determine if the device is asserting the IRQ. The Mask member is used to mask off the value of the PortAddr so that individual bits can be examined. Mask and the contents of the register residing at PortAddr, if the result is nonzero, the ISR will return SysIntr. Otherwise, SYSINTR_CHAIN is returned, indicating that the device is not currently asserting the IRQ.

  • MaskAddr
    Address of register to use as mask.

Requirements

OS Versions: Windows CE .NET 4.0 and later.
Header: Giisr.h.

See Also

KernelLibIoControl | LoadIntChainHandler | TransBusAddrToStatic

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.