ntdll!_KQUEUE
   +0x000 Header           : _DISPATCHER_HEADER
   +0x010 EntryListHead    : _LIST_ENTRY
   +0x018 CurrentCount     : Uint4B
   +0x01c MaximumCount     : Uint4B
   +0x020 ThreadListHead   : _LIST_ENTRY


typedef struct _KQUEUE {
    DISPATCHER_HEADER Header;
    LIST_ENTRY EntryListHead;
    ULONG CurrentCount;
    ULONG MaximumCount;
    LIST_ENTRY ThreadListHead;
} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;


ntdll!_DISPATCHER_HEADER
   +0x000 Type             : UChar
   +0x001 Abandoned        : UChar
   +0x001 Absolute         : UChar
   +0x001 NpxIrql          : UChar
   +0x001 Signalling       : UChar
   +0x002 Size             : UChar
   +0x002 Hand             : UChar
   +0x003 Inserted         : UChar
   +0x003 DebugActive      : UChar
   +0x003 DpcActive        : UChar
   +0x000 Lock             : Int4B
   +0x004 SignalState      : Int4B
   +0x008 WaitListHead     : _LIST_ENTRY


typedef struct _DISPATCHER_HEADER {
    union {
        DWORD Lock;
        struct {
            UCHAR Type;
            union {
                UCHAR Abandoned;
                UCHAR Absolute;
                UCHAR NpxIrql;
                UCHAR Signalling;
            }
            union {
                UCHAR Size;
                UCHAR Hand;
            }
            union {
                UCHAR Inserted;
                UCHAR DebugActive;
                UCHAR DpcActive;
            }
        }
    }
    DWORD SignalState;
    LIST_ENTRY WaitListHead;
} DISPATCHER_HEADER, *PDISPATCHER_HEADER;


ntdll!_LIST_ENTRY
   +0x000 Flink            : Ptr32 _LIST_ENTRY
   +0x004 Blink            : Ptr32 _LIST_ENTRY

typedef struct _LIST_ENTRY {
  struct _LIST_ENTRY  *Flink;
  struct _LIST_ENTRY  *Blink;
} LIST_ENTRY, *PLIST_ENTRY;
