Difference between revisions of "Techwiki:Win32k/QUEUE"

From ReactOS Wiki
Jump to: navigation, search
 
Line 56: Line 56:
 
  } MLIST, *PMLIST;
 
  } MLIST, *PMLIST;
 
  //
 
  //
  typedef struct _Q
+
  typedef struct tagQ
 
  {
 
  {
 
   MLIST      mlInput;
 
   MLIST      mlInput;
 
   PTHREADINFO ptiSysLock;
 
   PTHREADINFO ptiSysLock;
   INT        idSysLock;
+
   ULONG_PTR  idSysLock;
   INT        idSysPeek;
+
   ULONG_PTR  idSysPeek;
 
   PTHREADINFO ptiMouse;
 
   PTHREADINFO ptiMouse;
 
   PTHREADINFO ptiKeyboard;
 
   PTHREADINFO ptiKeyboard;
Line 108: Line 108:
  
 
===References===
 
===References===
* Windows Symbol files, userkdx.dll, !dso
+
* Windows Symbol files, userkdx.dll, !dso, W7U
 
* dwQEvent values for QMSG from http://read.pudn.com/downloads52/sourcecode/windows/bitmap/178217/window%20manager/wintern.h__.htm
 
* dwQEvent values for QMSG from http://read.pudn.com/downloads52/sourcecode/windows/bitmap/178217/window%20manager/wintern.h__.htm

Latest revision as of 06:46, 22 December 2014

Windows XP version of Queue structures

typedef struct _CARET
{
  PWND    spwnd;
  UINT    fVisible : 1;
  UINT    fOn      : 1;
  INT     iHideLevel;
  INT     x;
  INT     y;
  INT     cy;
  INT     cx;
  HBITMAP hBitmap;
  HANDLE  hTimer;
  DWORD   tid;
#if (_WIN32_WINNT >= 0x0501)
  RECT    rcCaret; // XP, device coordinates.
#endif
} CARET; *PCARET;
//
typedef struct _QMSG
{
  struct _QMSG *pqmsgNext;
  struct _QMSG *pqmsgPrev;  
  MSG           msg;   
  LONG_PTR      ExtraInfo;
  DWORD         dwQEvent;
  PTHREADINFO   pti;
} QMSG, *PQMSG;
//
// dwQEvent Values
//
#define QEVENT_SHOWWINDOW         0x0001
#define QEVENT_CANCELMODE         0x0002
#define QEVENT_SETWINDOWPOS       0x0003
#define QEVENT_UPDATEKEYSTATE     0x0004
#define QEVENT_DEACTIVATE         0x0005
#define QEVENT_ACTIVATE           0x0006
#define QEVENT_POSTMESSAGE        0x0007
#define QEVENT_EXECSHELL          0x0008
#define QEVENT_CANCELMENU         0x0009
#define QEVENT_DESTROYWINDOW      0x000A
#define QEVENT_ASYNCSENDMSG       0x000B
#define QEVENT_HUNGTHREAD         0x000C
#define QEVENT_CANCELMOUSEMOVETRK 0x000D
#define QEVENT_NOTIFYWINEVENT     0x000E
#define QEVENT_RITACCESSIBILITY   0x000F
#define QEVENT_RITSOUND           0x0010
#define QEVENT_APPCOMMAND         0x0011
//
typedef struct _MLIST
{
  PQMSG   pqmsgRead;
  PQMSG   pqmsgWriteLast;
  DWORD   cMsgs;
} MLIST, *PMLIST;
//
typedef struct tagQ
{
  MLIST       mlInput;
  PTHREADINFO ptiSysLock;
  ULONG_PTR   idSysLock;
  ULONG_PTR   idSysPeek;
  PTHREADINFO ptiMouse;
  PTHREADINFO ptiKeyboard;
  PWND        spwndCapture;
  PWND        spwndFocus;
  PWND        spwndActive;
  PWND        spwndActivePrev;
  DWORD       codeCapture;
  DWORD       msgDblClk;
  DWORD       xbtnDblClk;
  DWORD       timeDblClk;
  HWND        hwndDblClk;
  POINT       ptDblClk;
  BYTE        afKeyRecentDown[32];
  BYTE        afKeyState[64];
  CARET       caret;
  PCURSOR     spcurCurrent;
  INT         iCursorLevel;
  DWORD       QF_flags;
  WORD        cThreads;
  WORD        cLockCount
  DWORD       msgJournal;
  LONG_PTR    ExtraInfo;
} Q, *PQ;
//
// Q flags
// 
#define QF_UPDATEKEYSTATE         0x00000001
#define QF_FMENUSTATUSBREAK       0x00000004
#define QF_FMENUSTATUS            0x00000008
#define QF_FF10STATUS             0x00000010
#define QF_MOUSEMOVED             0x00000020
#define QF_ACTIVATIONCHANGE       0x00000040
#define QF_TABSWITCHING           0x00000080
#define QF_KEYSTATERESET          0x00000100
#define QF_INDESTROY              0x00000200
#define QF_LOCKNOREMOVE           0x00000400
#define QF_FOCUSNULLSINCEACTIVE   0x00000800
#define QF_DIALOGACTIVE           0x00004000
#define QF_EVENTDEACTIVATEREMOVED 0x00008000
#define QF_TRACKMOUSELEAVE        0x00020000
#define QF_TRACKMOUSEHOVER        0x00040000
#define QF_TRACKMOUSEFIRING       0x00080000
#define QF_CAPTURELOCKED          0x00100000
#define QF_ACTIVEWNDTRACKING      0x00200000

References