Techwiki:Win32k/SERVERINFO

From ReactOS Wiki
Revision as of 03:06, 6 August 2015 by Jimtabor (talk | contribs) (Note state flags)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
#define FNID_START 0

#if (WIN32_WINNT >= 0x501)
 #define FNID_WNDPROCEND 5
 #define FNID_NUM
 #define NUM_PFNCLIENT 22
#if (WIN32_WINNT >= 0x500)
 #define FNID_WNDPROCEND 4
 #define FNID_END 26
 #define NUM_PFNCLIENT 22
 #define FNID_ARRAY_SIZE 32
#else
 #define FNID_WNDPROCEND 4
 #define FNID_END 13
 #define NUM_PFNCLIENT 19
 #define ICLS_NOTUSED 9
 #define FNID_ARRAY_SIZE 32
 #define MAX_MB_STRINGS 9
#endif

#define FNID_NUMPROC (FNID_WNDPROCEND - FNID_START + 1)
#define FNID_NUM (FNID_END - FNID_START + 1)
typedef struct _OEMBITMAPINFO
{
   LONG x;
   LONG y;
   LONG cx;
   LONG cy;
} OEMBITMAPINFO;
typedef struct tagMBSTRING
{
   WCHAR szName[15];          /*0x000*/
   // 2 bytes padding
   UINT uID;                  /*0x020*/
   UINT uStr;                 /*0x024*/
} MBSTRING, *PMBSTRING;
// PUSIFlags:
#define PUSIF_PALETTEDISPLAY         0x01
#define PUSIF_SNAPTO                 0x02
#define PUSIF_COMBOBOXANIMATION      0x04
#define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
#define PUSIF_KEYBOARDCUES           0x20

#if (WIN32_WINNT >= 0x500)
typedef struct _PERUSERSERVERINFO
{                                         // W2K
   INT           aiSysMet[SM_CMETRICS];   // 000
   COLORREF      argbSystem[];            // 1aC
   HBRUSH        ahbrSystem[];            // 1C0
   HBRUSH        hbrGray;                 // 234
   POINTL        ptCursor;                // 238
   DWORD         dwLastRITEventTickCount; // 240
   ULONG         nEvents;                 // 244
   ULONG         gclBorder;               // 248
   DWORD         dtScroll;                // 24C
   DWORD         dtLBSearch;              // 250
   DWORD         dtCaretBlink;            // 254
   ULONG         ucWheelScrollLines;      // 258
   DWORD         wMaxLeftOverlapChars;    // 25C
   DWORD         wMaxRightOverlapChars;   // 260
   ULONG         cxSysFontChar;           // 264
   ULONG         cySysFontChar;           // 268
   ULONG         cxMsgFontChar;           // 26C
   ULONG         cyMsgFontChar;           // 270
   TEXTMETRICW   tmSysFont;               // 274
   HICON         hIconSmWindows;          // 2B0
   HICON         hIcoWindows;             // 2B4
   HFONT         hCaptionFont;            // 2B8
   HFONT         hMsgFont;                // 2BC
   DWORD         dwKeyCache;              // 2C0
   DWORD         dwAsyncKeyCache;         // 2C4
   ULONG         cCaptures;               // 2C8
   OEMBITMAPINFO oembmi[93];              // 2CC
   RECT          rcScreen;                // 89C
   USHORT        BitCount;                // 8AC
   USHORT        dmLogPixels;             // 8AE
   BYTE          Planes;                  // 8B0
   BYTE          BitsPixel;               // 8B1
   DWORD         PUSIFlags;               // 8B4
   ULONG         uCaretWidth;             // 8B8
   USHORT        UILangID;                // 8BC
   struct {
       USHORT    bLastRITWasKeyboard:1;   // 8BE
       USHORT    bKeyboardPref:1;         // 8BE
   };
  // Size:                                   8c4;
} PERUSERSERVERINFO, *PPERUSERSERVERINFO;
#endif
typedef struct _SERVERINFO
{                                                          // NT4 W2K
#if (WIN32_WINNT >= 0x500)
   WORD            wRIPFlags;                              // --- 000
   WORD            wSRVIFlags;                             // --- 002
   WORD            wRIPPID;                                // --- 004
   WORD            wRIPError                               // --- 006
#else
   DWORD           RipFlags;                               // 000 ---
#endif
   ULONG           cHandleEntries;                         // 004 008
   DWORD           mpFnidPfn[FNID_ARRAY_SIZE];             // 008 00C
   DWORD           aStoCidPfn[FNID_NUMPROC];               // 088 08C
   USHORT          mpFnid_serverCBWndProc[FNID_NUM];       // 09c 0A0
   PFNCLIENT       apfnClientA[NUM_PFNCLIENT];             // 0d4 0D8
   PFNCLIENT       apfnClientW[NUM_PFNCLIENT];             // 120 128
#if (WIN32_WINNT >= 0x500)
   PFNCLIENTWORKER apfnClientWorker[9];                    // --- 178
#else
   DWORD           dwDebugErrorLevel;                      // 16c
   INT             aiSysMet[SM_CMETRICS];                  // 170 
   COLORREF        argbSystem[25];                         // 2a0
   POINT           ptCursor;                               // 304
#endif
   ULONG           cbHandleTable;                          // 30c 19C
#if (WIN32_WINNT < 0x500)
   ULONG           nEvents;                                // 310
   OEMBITMAPINFO   oemInfo;                                // 314
   DWORD           gclBorder;                              // 768
   DWORD           dtScroll;                               // 76c
   DWORD           dtLBSearch;                             // 770
   DWORD           dtCaretBlink;                           // 774
   BOOL            fSnapTo;                                // 778
   ULONG           ucWheelScrollLines;                     // 77c
   BOOL            fPaletteDisplay;                        // 780
   ULONG           fWinEventHooks:1;                       // 784
#endif
   ATOM            atomSysClass[ICLS_NOTUSED+1];           // 788 1A0
   DWORD           dwDefaultHeapBase;                      // 7b0 1CC
   DWORD           dwDefaultHeapSize;                      // 7b4 1D0
#if (WIN32_WINNT < 0x500)
   DWORD           wMaxLeftOverlapChars;                   // 7b8
   DWORD           wMaxRightOverlapChars;                  // 7bc
   RECT            rcWork;                                 // 7c0
#endif
   UINT            uiShellMsg;                             // 7d0 1D4
#if (WIN32_WINNT < 0x500)
   LONG            cxSysFontChar;                          // 7d4
   LONG            cySysFontChar;                          // 7d8
   LONG            cxMsgFontChar;                          // 7dc
   LONG            cyMsgFontChar;                          // 7e0
   TEXTMETRICW     tmSysFont;                              // 7e4
#endif
   DWORD           wMaxBtnSize;                            // 81c 1D8
#if (WIN32_WINNT >= 0x500)
   MBSTRING        MBStrings[MAX_MB_STRINGS];              // --- 1DC
#else
   DWORD           mpAllMBbtnStringsToSTR[MAX_MB_STRINGS]; // 820
   DWORD           AllMBbtnStrings[MAX_MB_STRINGS];        // 844
   WCHAR           szOK[10];                               // 868
   WCHAR           szCANCEL[15];                           // 87c
   WCHAR           szYES[10];                              // 89a
   WCHAR           szNO[10];                               // 8ae
   WCHAR           szABORT[15];                            // 8c2
   WCHAR           szRETRY[15];                            // 8e0
   WCHAR           szIGNORE[15];                           // 8fe
   WCHAR           szCLOSE[15];                            // 91c
   WCHAR           szHELP[15];                             // 93a
#endif
   ATOM            atomIconSmProp;                         // 958 394
   ATOM            atomIconProp;                           // 95a 396
#if (WIN32_WINNT < 0x500)
   HICON           hIconSmWindows;                         // 95c
   HICON           hIcoWindows;                            // 960
   HFONT           hCaptionFont;                           // 964
   FONT            hMsgFont;                               // 968
   DWORD           cntMBox;                                // 96c
#endif
   ATOM            atomContextHelpIdProp;                  // 970 398
#if (WIN32_WINNT >= 0x500)
   CHAR            acOemToAnsi[256];                       // --- 39A
   CHAR            acAnsiToOem[256];                       // --- 49A
   PERUSERSERVERINFO;                                      // --- 59A
#else
   DWORD           dwKeyCache;                             // 974
   DWORD           dwAsyncKeyCache;                        // 978
#endif
} SERVERINFO, *PSERVERINFO;

oembmi

oembmi[Number] Build table corresponding to each draw frame control. Verified W7U.
Bitmap name  DrawFrameControl Type 
DrawFrameControl

State Bits

 OBMI

Number 


DFC_CAPTION
DFCS_CAPTIONCLOSE
0

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_PUSHED
1

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_HOT
2

DFC_CAPTION DFCS_CAPTIONCLOSE | DFCS_INACTIVE
3

DFC_CAPTION
DFCS_CAPTIONMIN
4

DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_PUSHED
5

DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_HOT
6

DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_INACTIVE
7

DFC_CAPTION
DFCS_CAPTIONRESTORE
8

DFC_CAPTION
DFCS_CAPTIONRESTORE | DFCS_PUSHED
9

DFC_CAPTION
DFCS_CAPTIONRESTORE | DFCS_HOT
10

DFC_CAPTION
DFCS_CAPTIONHELP
11

DFC_CAPTION
DFCS_CAPTIONHELP | DFCS_PUSHED
12

DFC_CAPTION
DFCS_CAPTIONHELP | DFCS_HOT
13
OBM_OLD/ZOOM
DFC_CAPTION
DFCS_CAPTIONMAX
14
OBM_ZOOMD
DFC_CAPTION
DFCS_CAPTIONMAX | DFCS_PUSHED
15

DFC_CAPTION
DFCS_CAPTIONMAX | DFCS_HOT
16

DFC_CAPTION
DFCS_CAPTIONMAX | DFCS_INACTIVE
17

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INMENU
18

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INMENU

| DFCS_PUSHED

19

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INMENU

| DFCS_HOT

20

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INMENU

| DFCS_INACTIVE

21
OBM_OLD/REDUCE
DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_INMENU
22
OBM_REDUCED
DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_INMENU |

DFCS_PUSHED

23

DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_INMENU |

DFCS_HOT

24

DFC_CAPTION
DFCS_CAPTIONMIN | DFCS_INMENU |

DFCS_INACTIVE

25
OBM_OLD/RESTORE
DFC_CAPTION
DFCS_CAPTIONRESTORE | DFCS_INMENU
26
OBM_RESTORED
DFC_CAPTION
DFCS_CAPTIONRESTORE |

DFCS_INMENU | DFCS_PUSHED

27

DFC_CAPTION
DFCS_CAPTIONRESTORE |

DFCS_INMENU | DFCS_HOT

28

DFC_CACHE
DFCS_CACHEICON
29

DFC_CACHE
DFCS_CACHEICON | DFCS_INACTIVE
30

DFC_CACHE DFCS_CACHEICON 31

DFC_CACHE DFCS_CACHEICON | DFCS_INACTIVE
32

DFC_CACHE DFCS_CACHEICON 33

DFC_CACHE DFCS_CACHEICON | DFCS_INACTIVE
34

DFC_CACHE DFCS_CACHEICON 35

DFC_CACHE DFCS_CACHEICON | DFCS_INACTIVE
36

DFC_CACHE DFCS_CACHEICON 37

DFC_CACHE DFCS_CACHEICON | DFCS_INACTIVE
38

DFC_CACHE DFCS_CACHEBUTTONS
39

DFC_CACHE DFCS_CACHEBUTTONS | DFCS_INACTIVE
40

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INSMALL
41

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INSMALL

| DFCS_PUSHED

42

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INSMALL

| DFCS_HOT

43

DFC_CAPTION
DFCS_CAPTIONCLOSE | DFCS_INSMALL

| DFCS_INACTIVE

44
OBM_BT/SIZE
DFC_SCROLL
DFCS_SCROLLSIZEGRIP
45
OBM_OLD/UPARROW
DFC_SCROLL DFCS_SCROLLUP
46
OBM_UPARROWD
DFC_SCROLL DFCS_SCROLLUP | DFCS_PUSHED |

DFCS_FLAT

47

DFC_SCROLL DFCS_SCROLLUP | DFCS_HOT 48
OBM_UPARROWI
DFC_SCROLL DFCS_SCROLLUP | DFCS_INACTIVE 49
OBM_OLD/DNARROW
DFC_SCROLL DFCS_SCROLLDOWN
50
OBM_DNARROWD/_COMBO
DFC_SCROLL DFCS_SCROLLDOWN | DFCS_PUSHED |

DFCS_FLAT

51

DFC_SCROLL DFCS_SCROLLDOWN | DFCS_HOT 52
OBM_DNARROWI
DFC_SCROLL DFCS_SCROLLDOWN | DFCS_INACTIVE 53
OBM_OLD/RGARROW
DFC_SCROLL DFCS_SCROLLRIGHT
54
OBM_RGARROWD
DFC_SCROLL DFCS_SCROLLRIGHT | DFCS_PUSHED |

DFCS_FLAT

55

DFC_SCROLL DFCS_SCROLLRIGHT | DFCS_HOT 56
OBM_RGARROWI
DFC_SCROLL DFCS_SCROLLRIGHT | DFCS_INACTIVE 57
OBM_OLD/LFARROW
DFC_SCROLL DFCS_SCROLLLEFT
58
OBM_LFARROWD
DFC_SCROLL DFCS_SCROLLLEFT | DFCS_PUSHED |

DFCS_FLAT

59

DFC_SCROLL DFCS_SCROLLLEFT | DFCS_HOT 60
OBM_LFARROWI
DFC_SCROLL DFCS_SCROLLLEFT | DFCS_INACTIVE
61
OBM_MNARROW
DFC_MENU
DFCS_MENUARROW
62
OBM_CHECK
DFC_MENU
DFCS_MENUCHECK
63

DFC_MENU
DFCS_MENUBULLET
64

DFC_MENU
DFCS_MENUARROWUP
65

DFC_MENU
DFCS_MENUARROWUP | DFCS_HOT
66

DFC_MENU
DFCS_MENUARROWUP | DFCS_INACTIVE
67

DFC_MENU
DFCS_MENUARROWDOWN
68

DFC_MENU
DFCS_MENUARROWDOWN | DFCS_HOT
69

DFC_MENU
DFCS_MENUARROWDOWN |

DFCS_INACTIVE

70
OBM_BTNCORNERS
DFC_BUTTON
DFCS_BUTTONRADIOMASK
71
OBM_CHECKBOXES
DFC_BUTTON
DFCS_BUTTONCHECK
72

DFC_BUTTON
DFCS_BUTTONCHECK | DFCS_CHECKED
73

DFC_BUTTON
DFCS_BUTTONCHECK | DFCS_PUSHED
74

DFC_BUTTON
DFCS_BUTTONCHECK | DFCS_CHECKED

| DFCS_PUSHED

75

DFC_BUTTON
DFCS_BUTTONCHECK | DFCS_CHECKED

| DFCS_INACTIVE

76

DFC_BUTTON
DFCS_BUTTONRADIOIMAGE
77

DFC_BUTTON
DFCS_BUTTONRADIOIMAGE |

DFCS_CHECKED

78

DFC_BUTTON
DFCS_BUTTONRADIOIMAGE |

DFCS_PUSHED

79

DFC_BUTTON
DFCS_BUTTONRADIOIMAGE |

DFCS_CHECKED | DFCS_PUSHED

80

DFC_BUTTON
DFCS_BUTTONRADIOIMAGE |

DFCS_CHECKED | DFCS_INACTIVE

81

DFC_BUTTON
DFCS_BUTTON3STATE
82

DFC_BUTTON
DFCS_BUTTON3STATE | DFCS_CHECKED
83

DFC_BUTTON
DFCS_BUTTON3STATE | DFCS_PUSHED
84

DFC_BUTTON
DFCS_BUTTON3STATE | DFCS_CHECKED

| DFCS_PUSHED

85

DFC_BUTTON
DFCS_BUTTON3STATE | DFCS_CHECKED

| DFCS_INACTIVE

86

DFC_POPUPMENU
DFCS_CAPTIONCLOSE | DFCS_INMENU
87

DFC_POPUPMENU
DFCS_CAPTIONRESTORE | DFCS_INMENU
88

DFC_POPUPMENU
DFCS_CAPTIONMAX | DFCS_INMENU
89

DFC_POPUPMENU
DFCS_CAPTIONMIN | DFCS_INMENU
90

DFC_SCROLL
DFCS_SCROLLSIZEGRIPRIGHT
91

DFC_MENU
DFCS_MENUARROWRIGHT
92


References

  • userkdx dso, W7U symbols, ICLS_Xxx from userkdx, FNID_ based on ICLS and function names.
  • DrawFrameControl function Note: Read DFCS_TRANSPARENT.