typedef struct _KINTERRUPT
{
    short Type;
    short Size;
    LIST_ENTRY InterruptListEntry;
    unsigned char (*ServiceRoutine)(KINTERRUPT *, void *);
    unsigned char (*MessageServiceRoutine)(KINTERRUPT *, void *, unsigned long);
    unsigned long MessageIndex;
    void *ServiceContext;
    unsigned __int64 SpinLock;
    unsigned long TickCount;
    unsigned __int64 *ActualLock;
    void (*DispatchAddress)(void);
    unsigned long Vector;
    unsigned char Irql;
    unsigned char SynchronizeIrql;
    unsigned char FloatingSave;
    unsigned char Connected;
    unsigned long Number;
    unsigned char ShareVector;
    char Pad[3];
    KINTERRUPT_MODE Mode;
    KINTERRUPT_POLARITY Polarity;
    unsigned long ServiceCount;
    unsigned long DispatchCount;
    unsigned __int64 Rsvd1;
    KTRAP_FRAME *TrapFrame;
    void *Reserved;
    unsigned long DispatchCode[4];
} KINTERRUPT, *PKINTERRUPT;