branch update for HEAD-2003050101
[reactos.git] / include / structs.h
1 /*
2    Structures.h
3
4    Declarations for all the Windows32 API Structures
5
6    Copyright (C) 1996 Free Software Foundation, Inc.
7
8    Author:  Scott Christley <scottc@net-community.com>
9    Date: 1996
10
11    This file is part of the Windows32 API Library.
12
13    This library is free software; you can redistribute it and/or
14    modify it under the terms of the GNU Library General Public
15    License as published by the Free Software Foundation; either
16    version 2 of the License, or (at your option) any later version.
17
18    This library is distributed in the hope that it will be useful,
19    but WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21    Library General Public License for more details.
22
23    If you are interested in a warranty or support for this source code,
24    contact Scott Christley <scottc@net-community.com> for more information.
25
26    You should have received a copy of the GNU Library General Public
27    License along with this library; see the file COPYING.LIB.
28    If not, write to the Free Software Foundation,
29    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 */
31
32
33 #ifndef _GNU_H_WINDOWS32_STRUCTURES
34 #define _GNU_H_WINDOWS32_STRUCTURES
35
36 #include <ntos/security.h>
37 #include <ntos/time.h>
38 #include <ntdll/rtl.h>
39 #include <ntos/console.h>
40 #include <ntos/keyboard.h>
41 #include <ntos/heap.h>
42 #include <ntos/mm.h>
43 #include <ntos/file.h>
44 #include <ntos/ps.h>
45 #include <ntos/disk.h>
46 #include <ntos/gditypes.h>
47 /*
48 typedef struct _VALENT
49 {
50    LPTSTR ve_valuename;
51    DWORD ve_valuelen;
52    DWORD ve_valueptr;
53    DWORD ve_type;
54 } VALENT, *PVALENT;
55  */
56 typedef struct _VALENT_A {
57    LPSTR ve_valuename;
58    DWORD ve_valuelen;
59    DWORD ve_valueptr;
60    DWORD ve_type;
61 } VALENTA, *PVALENTA;
62
63 typedef struct _VALENT_W {
64    LPWSTR ve_valuename;
65    DWORD  ve_valuelen;
66    DWORD  ve_valueptr;
67    DWORD  ve_type;
68 } VALENTW, *PVALENTW;
69
70 #ifdef UNICODE
71 typedef VALENTW VALENT;
72 typedef PVALENTW PVALENT;
73 #else
74 typedef VALENTA VALENT;
75 typedef PVALENTA PVALENT;
76 #endif
77
78 #ifndef WIN32_LEAN_AND_MEAN
79
80 #ifdef __cplusplus
81 extern "C" {
82 #endif /* __cplusplus */
83
84 typedef struct _ABC {
85   int     abcA;
86   UINT    abcB;
87   int     abcC;
88 } ABC, *LPABC;
89
90 typedef struct _ABCFLOAT {
91   FLOAT   abcfA;
92   FLOAT   abcfB;
93   FLOAT   abcfC;
94 } ABCFLOAT, *LPABCFLOAT;
95
96 typedef struct tagACCEL {
97   BYTE   fVirt;
98   WORD   key;
99   WORD   cmd;
100 } ACCEL, *LPACCEL;
101
102 typedef struct tagACCESSTIMEOUT {
103   UINT  cbSize;
104   DWORD dwFlags;
105   DWORD iTimeOutMSec;
106 } ACCESSTIMEOUT;
107
108 typedef struct _ACTION_HEADER {
109   ULONG   transport_id;
110   USHORT  action_code;
111   USHORT  reserved;
112 } ACTION_HEADER;
113
114 typedef struct _ADAPTER_STATUS {
115   UCHAR   adapter_address[6];
116   UCHAR   rev_major;
117   UCHAR   reserved0;
118   UCHAR   adapter_type;
119   UCHAR   rev_minor;
120   WORD    duration;
121   WORD    frmr_recv;
122   WORD    frmr_xmit;
123   WORD    iframe_recv_err;
124   WORD    xmit_aborts;
125   DWORD   xmit_success;
126   DWORD   recv_success;
127   WORD    iframe_xmit_err;
128   WORD    recv_buff_unavail;
129   WORD    t1_timeouts;
130   WORD    ti_timeouts;
131   DWORD   reserved1;
132   WORD    free_ncbs;
133   WORD    max_cfg_ncbs;
134   WORD    max_ncbs;
135   WORD    xmit_buf_unavail;
136   WORD    max_dgram_size;
137   WORD    pending_sess;
138   WORD    max_cfg_sess;
139   WORD    max_sess;
140   WORD    max_sess_pkt_size;
141   WORD    name_count;
142 } ADAPTER_STATUS;
143
144 typedef struct _ADDJOB_INFO_1 {
145   LPTSTR  Path;
146   DWORD   JobId;
147 } ADDJOB_INFO_1;
148
149 typedef struct tagANIMATIONINFO {
150   UINT cbSize;
151   int  iMinAnimate;
152 } ANIMATIONINFO, *LPANIMATIONINFO;
153
154 typedef struct _RECT {
155   LONG left;
156   LONG top;
157   LONG right;
158   LONG bottom;
159 } RECT, *LPRECT, *LPCRECT, *PRECT;
160
161 typedef struct _RECTL {
162   LONG left;
163   LONG top;
164   LONG right;
165   LONG bottom;
166 } RECTL, *LPRECTL, *LPCRECTL, *PRECTL;
167
168 typedef struct _AppBarData {
169   DWORD  cbSize;
170   HWND   hWnd;
171   UINT   uCallbackMessage;
172   UINT   uEdge;
173   RECT   rc;
174   LPARAM lParam;
175 } APPBARDATA, *PAPPBARDATA;
176
177 typedef struct tagBITMAP
178 {
179   LONG        bmType;
180   LONG        bmWidth;
181   LONG        bmHeight;
182   LONG        bmWidthBytes;
183   WORD        bmPlanes;
184   WORD        bmBitsPixel;
185   LPVOID      bmBits;
186 } BITMAP, *PBITMAP,   *NPBITMAP,   *LPBITMAP;
187
188 typedef struct tagBITMAPCOREHEADER {
189   DWORD   bcSize;
190   WORD    bcWidth;
191   WORD    bcHeight;
192   WORD    bcPlanes;
193   WORD    bcBitCount;
194 } BITMAPCOREHEADER;
195
196 typedef struct tagRGBTRIPLE {
197   BYTE rgbtBlue;
198   BYTE rgbtGreen;
199   BYTE rgbtRed;
200 } RGBTRIPLE, *PRGBTRIPLE;
201
202 typedef struct _BITMAPCOREINFO {
203   BITMAPCOREHEADER  bmciHeader;
204   RGBTRIPLE         bmciColors[1];
205 } BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
206
207 typedef struct tagBITMAPFILEHEADER {
208   WORD    bfType;
209   DWORD   bfSize;
210   WORD    bfReserved1;
211   WORD    bfReserved2;
212   DWORD   bfOffBits;
213 } BITMAPFILEHEADER __attribute__((packed));
214
215 typedef struct tagBITMAPINFOHEADER {
216   DWORD  biSize;
217   LONG   biWidth;
218   LONG   biHeight;
219   WORD   biPlanes;
220   WORD   biBitCount;
221   DWORD  biCompression;
222   DWORD  biSizeImage;
223   LONG   biXPelsPerMeter;
224   LONG   biYPelsPerMeter;
225   DWORD  biClrUsed;
226   DWORD  biClrImportant;
227 } BITMAPINFOHEADER, *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
228
229 typedef struct tagRGBQUAD {
230   BYTE    rgbBlue;
231   BYTE    rgbGreen;
232   BYTE    rgbRed;
233   BYTE    rgbReserved;
234 } RGBQUAD;
235
236 typedef struct tagBITMAPINFO {
237   BITMAPINFOHEADER bmiHeader;
238   RGBQUAD          bmiColors[1];
239 } BITMAPINFO, *LPBITMAPINFO, *PBITMAPINFO;
240
241 typedef long FXPT2DOT30,  * LPFXPT2DOT30;
242
243 typedef struct tagCIEXYZ
244 {
245   FXPT2DOT30 ciexyzX;
246   FXPT2DOT30 ciexyzY;
247   FXPT2DOT30 ciexyzZ;
248 } CIEXYZ;
249 typedef CIEXYZ  * LPCIEXYZ;
250
251 typedef struct tagCIEXYZTRIPLE
252 {
253   CIEXYZ  ciexyzRed;
254   CIEXYZ  ciexyzGreen;
255   CIEXYZ  ciexyzBlue;
256 } CIEXYZTRIPLE;
257 typedef CIEXYZTRIPLE  * LPCIEXYZTRIPLE;
258
259 typedef struct {
260   DWORD        bV4Size;
261   LONG         bV4Width;
262   LONG         bV4Height;
263   WORD         bV4Planes;
264   WORD         bV4BitCount;
265   DWORD        bV4V4Compression;
266   DWORD        bV4SizeImage;
267   LONG         bV4XPelsPerMeter;
268   LONG         bV4YPelsPerMeter;
269   DWORD        bV4ClrUsed;
270   DWORD        bV4ClrImportant;
271   DWORD        bV4RedMask;
272   DWORD        bV4GreenMask;
273   DWORD        bV4BlueMask;
274   DWORD        bV4AlphaMask;
275   DWORD        bV4CSType;
276   CIEXYZTRIPLE bV4Endpoints;
277   DWORD        bV4GammaRed;
278   DWORD        bV4GammaGreen;
279   DWORD        bV4GammaBlue;
280 } BITMAPV4HEADER,   *LPBITMAPV4HEADER, *PBITMAPV4HEADER;
281
282 #ifndef _BLOB_DEFINED
283 #define _BLOB_DEFINED
284 typedef struct _BLOB {
285   ULONG   cbSize;
286   BYTE    *pBlobData;
287 } BLOB;
288 #endif
289
290 typedef struct _SHITEMID {
291   USHORT cb;
292   BYTE   abID[1];
293 } SHITEMID, * LPSHITEMID;
294 typedef const SHITEMID  * LPCSHITEMID;
295
296 typedef struct _ITEMIDLIST {
297   SHITEMID mkid;
298 } ITEMIDLIST, * LPITEMIDLIST;
299 typedef const ITEMIDLIST * LPCITEMIDLIST;
300
301 typedef struct _browseinfo {
302   HWND hwndOwner;
303   LPCITEMIDLIST pidlRoot;
304   LPSTR pszDisplayName;
305   LPCSTR lpszTitle;
306   UINT ulFlags;
307   BFFCALLBACK lpfn;
308   LPARAM lParam;
309   int iImage;
310 } BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
311
312 typedef struct _BY_HANDLE_FILE_INFORMATION {
313   DWORD    dwFileAttributes;
314   FILETIME ftCreationTime;
315   FILETIME ftLastAccessTime;
316   FILETIME ftLastWriteTime;
317   DWORD    dwVolumeSerialNumber;
318   DWORD    nFileSizeHigh;
319   DWORD    nFileSizeLow;
320   DWORD    nNumberOfLinks;
321   DWORD    nFileIndexHigh;
322   DWORD    nFileIndexLow;
323 } BY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
324
325 typedef struct _FIXED {
326   WORD  fract;
327   short value;
328 } FIXED;
329
330 typedef struct tagPOINT {
331   LONG x;
332   LONG y;
333 } POINT, *LPPOINT, *PPOINT;
334
335 typedef struct tagPOINTFX {
336   FIXED x;
337   FIXED y;
338 } POINTFX;
339
340 typedef struct _POINTL {
341   LONG x;
342   LONG y;
343 } POINTL, *PPOINTL;
344
345 typedef struct tagPOINTS {
346   SHORT x;
347   SHORT y;
348 } POINTS;
349
350 typedef struct _tagCANDIDATEFORM {
351   DWORD  dwIndex;
352   DWORD  dwStyle;
353   POINT  ptCurrentPos;
354   RECT   rcArea;
355 } CANDIDATEFORM, *LPCANDIDATEFORM;
356
357 typedef struct _tagCANDIDATELIST {
358   DWORD  dwSize;
359   DWORD  dwStyle;
360   DWORD  dwCount;
361   DWORD  dwSelection;
362   DWORD  dwPageStart;
363   DWORD  dwPageSize;
364   DWORD  dwOffset[1];
365 } CANDIDATELIST, *LPCANDIDATELIST;
366
367 typedef struct tagCREATESTRUCT {
368   LPVOID    lpCreateParams;
369   HINSTANCE hInstance;
370   HMENU     hMenu;
371   HWND      hwndParent;
372   int       cy;
373   int       cx;
374   int       y;
375   int       x;
376   LONG      style;
377   LPCTSTR   lpszName;
378   LPCTSTR   lpszClass;
379   DWORD     dwExStyle;
380 } CREATESTRUCT, *LPCREATESTRUCT;
381
382 typedef struct tagCREATESTRUCTA {
383   LPVOID    lpCreateParams;
384   HINSTANCE hInstance;
385   HMENU     hMenu;
386   HWND      hwndParent;
387   int       cy;
388   int       cx;
389   int       y;
390   int       x;
391   LONG      style;
392   LPCSTR   lpszName;
393   LPCSTR   lpszClass;
394   DWORD     dwExStyle;
395 } CREATESTRUCTA, *LPCREATESTRUCTA;
396
397 typedef struct tagCREATESTRUCTW {
398   LPVOID    lpCreateParams;
399   HINSTANCE hInstance;
400   HMENU     hMenu;
401   HWND      hwndParent;
402   int       cy;
403   int       cx;
404   int       y;
405   int       x;
406   LONG      style;
407   LPCWSTR   lpszName;
408   LPCWSTR   lpszClass;
409   DWORD     dwExStyle;
410 } CREATESTRUCTW, *LPCREATESTRUCTW;
411
412 typedef struct tagCBT_CREATEWND {
413   LPCREATESTRUCT lpcs;
414   HWND           hwndInsertAfter;
415 } CBT_CREATEWND;
416
417 typedef struct tagCBTACTIVATESTRUCT {
418   WINBOOL fMouse;
419   HWND hWndActive;
420 } CBTACTIVATESTRUCT;
421
422 typedef struct _CHAR_INFO {
423   union {
424     WCHAR UnicodeChar;
425     CHAR AsciiChar;
426   } Char;
427   WORD Attributes;
428 } CHAR_INFO, *PCHAR_INFO;
429
430 typedef struct _charformat {
431   UINT     cbSize;
432   DWORD    dwMask;
433   DWORD    dwEffects;
434   LONG     yHeight;
435   LONG     yOffset;
436   COLORREF crTextColor;
437   BYTE     bCharSet;
438   BYTE     bPitchAndFamily;
439   TCHAR    szFaceName[LF_FACESIZE];
440 } CHARFORMAT;
441
442 typedef struct _charrange {
443   LONG cpMin;
444   LONG cpMax;
445 } CHARRANGE;
446
447 typedef struct tagCHARSET {
448   DWORD aflBlock[3];
449   DWORD flLang;
450 } CHARSET;
451
452 typedef struct tagFONTSIGNATURE {
453   DWORD  fsUsb[4];
454   DWORD  fsCsb[2];
455 } FONTSIGNATURE, *LPFONTSIGNATURE;
456
457 typedef struct {
458   UINT ciCharset;
459   UINT ciACP;
460   FONTSIGNATURE fs;
461 } CHARSETINFO, *LPCHARSETINFO;
462
463 typedef struct {
464   DWORD        lStructSize;
465   HWND         hwndOwner;
466   HWND         hInstance;
467   COLORREF     rgbResult;
468   COLORREF*    lpCustColors;
469   DWORD        Flags;
470   LPARAM       lCustData;
471   LPCCHOOKPROC lpfnHook;
472   LPCTSTR      lpTemplateName;
473 } CHOOSECOLOR, *LPCHOOSECOLOR;
474
475 typedef struct tagLOGFONTA {
476   LONG lfHeight;
477   LONG lfWidth;
478   LONG lfEscapement;
479   LONG lfOrientation;
480   LONG lfWeight;
481   BYTE lfItalic;
482   BYTE lfUnderline;
483   BYTE lfStrikeOut;
484   BYTE lfCharSet;
485   BYTE lfOutPrecision;
486   BYTE lfClipPrecision;
487   BYTE lfQuality;
488   BYTE lfPitchAndFamily;
489   CHAR lfFaceName[LF_FACESIZE];
490 } LOGFONTA, *LPLOGFONTA, *PLOGFONTA;
491
492 typedef struct tagLOGFONTW {
493   LONG lfHeight;
494   LONG lfWidth;
495   LONG lfEscapement;
496   LONG lfOrientation;
497   LONG lfWeight;
498   BYTE lfItalic;
499   BYTE lfUnderline;
500   BYTE lfStrikeOut;
501   BYTE lfCharSet;
502   BYTE lfOutPrecision;
503   BYTE lfClipPrecision;
504   BYTE lfQuality;
505   BYTE lfPitchAndFamily;
506   WCHAR lfFaceName[LF_FACESIZE];
507 } LOGFONTW, *LPLOGFONTW, *PLOGFONTW;
508
509 #ifdef UNICODE
510 typedef LOGFONTW LOGFONT;
511 typedef LPLOGFONTW LPLOGFONT;
512 typedef PLOGFONTW PLOGFONT;
513 #else
514 typedef LOGFONTA LOGFONT;
515 typedef LPLOGFONTA LPLOGFONT;
516 typedef PLOGFONTA PLOGFONT;
517 #endif
518
519 typedef struct tagCHOOSEFONTA {
520   DWORD        lStructSize;
521   HWND         hwndOwner;
522   HDC          hDC;
523   LPLOGFONTA   lpLogFont;
524   INT          iPointSize;
525   DWORD        Flags;
526   DWORD        rgbColors;
527   LPARAM       lCustData;
528   LPCFHOOKPROC lpfnHook;
529   LPCSTR       lpTemplateName;
530   HINSTANCE    hInstance;
531   LPSTR        lpszStyle;
532   WORD         nFontType;
533   WORD         ___MISSING_ALIGNMENT__;
534   INT          nSizeMin;
535   INT          nSizeMax;
536 } CHOOSEFONTA, *LPCHOOSEFONTA;
537
538 typedef struct tagCHOOSEFONTW {
539   DWORD        lStructSize;
540   HWND         hwndOwner;
541   HDC          hDC;
542   LPLOGFONTW   lpLogFont;
543   INT          iPointSize;
544   DWORD        Flags;
545   DWORD        rgbColors;
546   LPARAM       lCustData;
547   LPCFHOOKPROC lpfnHook;
548   LPCWSTR      lpTemplateName;
549   HINSTANCE    hInstance;
550   LPWSTR        lpszStyle;
551   WORD         nFontType;
552   WORD         ___MISSING_ALIGNMENT__;
553   INT          nSizeMin;
554   INT          nSizeMax;
555 } CHOOSEFONTW, *LPCHOOSEFONTW;
556
557 #ifdef UNICODE
558 typedef CHOOSEFONTW CHOOSEFONT;
559 typedef LPCHOOSEFONTW LPCHOOSEFONT;
560 #else
561 typedef CHOOSEFONTA CHOOSEFONT;
562 typedef LPCHOOSEFONTA LPCHOOSEFONT;
563 #endif
564
565 typedef struct _IDA {
566   UINT cidl;
567   UINT aoffset[1];
568 } CIDA, * LPIDA;
569
570 typedef struct tagCLIENTCREATESTRUCT {
571   HANDLE hWindowMenu;
572   UINT   idFirstChild;
573 } CLIENTCREATESTRUCT;
574
575 typedef CLIENTCREATESTRUCT *LPCLIENTCREATESTRUCT;
576
577 typedef struct _CMInvokeCommandInfo {
578   DWORD cbSize;
579   DWORD fMask;
580   HWND hwnd;
581   LPCSTR lpVerb;
582   LPCSTR lpParameters;
583   LPCSTR lpDirectory;
584   int nShow;
585   DWORD dwHotKey;
586   HANDLE hIcon;
587 } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
588
589 typedef struct  tagCOLORADJUSTMENT {
590   WORD  caSize;
591   WORD  caFlags;
592   WORD  caIlluminantIndex;
593   WORD  caRedGamma;
594   WORD  caGreenGamma;
595   WORD  caBlueGamma;
596   WORD  caReferenceBlack;
597   WORD  caReferenceWhite;
598   SHORT caContrast;
599   SHORT caBrightness;
600   SHORT caColorfulness;
601   SHORT caRedGreenTint;
602 } COLORADJUSTMENT, *LPCOLORADJUSTMENT;
603
604 typedef struct _COLORMAP {
605   COLORREF from;
606   COLORREF to;
607 } COLORMAP,  * LPCOLORMAP;
608
609 typedef struct _DCB {
610   DWORD DCBlength;
611   DWORD BaudRate;
612   DWORD fBinary: 1;
613   DWORD fParity: 1;
614   DWORD fOutxCtsFlow:1;
615   DWORD fOutxDsrFlow:1;
616   DWORD fDtrControl:2;
617   DWORD fDsrSensitivity:1;
618   DWORD fTXContinueOnXoff:1;
619   DWORD fOutX: 1;
620   DWORD fInX: 1;
621   DWORD fErrorChar: 1;
622   DWORD fNull: 1;
623   DWORD fRtsControl:2;
624   DWORD fAbortOnError:1;
625   DWORD fDummy2:17;
626   WORD wReserved;
627   WORD XonLim;
628   WORD XoffLim;
629   BYTE ByteSize;
630   BYTE Parity;
631   BYTE StopBits;
632   char XonChar;
633   char XoffChar;
634   char ErrorChar;
635   char EofChar;
636   char EvtChar;
637   WORD wReserved1;
638 } DCB, *LPDCB;
639
640 typedef struct _COMM_CONFIG {
641   DWORD dwSize;
642   WORD  wVersion;
643   WORD  wReserved;
644   DCB   dcb;
645   DWORD dwProviderSubType;
646   DWORD dwProviderOffset;
647   DWORD dwProviderSize;
648   WCHAR wcProviderData[1];
649 } COMMCONFIG, *LPCOMMCONFIG;
650
651 typedef struct _COMMPROP {
652   WORD  wPacketLength;
653   WORD  wPacketVersion;
654   DWORD dwServiceMask;
655   DWORD dwReserved1;
656   DWORD dwMaxTxQueue;
657   DWORD dwMaxRxQueue;
658   DWORD dwMaxBaud;
659   DWORD dwProvSubType;
660   DWORD dwProvCapabilities;
661   DWORD dwSettableParams;
662   DWORD dwSettableBaud;
663   WORD  wSettableData;
664   WORD  wSettableStopParity;
665   DWORD dwCurrentTxQueue;
666   DWORD dwCurrentRxQueue;
667   DWORD dwProvSpec1;
668   DWORD dwProvSpec2;
669   WCHAR wcProvChar[1];
670 } COMMPROP, *LPCOMMPROP;
671
672 typedef struct _COMMTIMEOUTS {
673   DWORD ReadIntervalTimeout;
674   DWORD ReadTotalTimeoutMultiplier;
675   DWORD ReadTotalTimeoutConstant;
676   DWORD WriteTotalTimeoutMultiplier;
677   DWORD WriteTotalTimeoutConstant;
678 } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
679
680 typedef struct tagCOMPAREITEMSTRUCT {
681   UINT  CtlType;
682   UINT  CtlID;
683   HWND  hwndItem;
684   UINT  itemID1;
685   DWORD itemData1;
686   UINT  itemID2;
687   DWORD itemData2;
688 } COMPAREITEMSTRUCT;
689
690 typedef struct {
691   COLORREF crText;
692   COLORREF crBackground;
693   DWORD dwEffects;
694 } COMPCOLOR;
695
696 typedef struct _tagCOMPOSITIONFORM {
697   DWORD  dwStyle;
698   POINT  ptCurrentPos;
699   RECT   rcArea;
700 } COMPOSITIONFORM, *LPCOMPOSITIONFORM;
701
702 typedef struct _COMSTAT {
703   DWORD fCtsHold : 1;
704   DWORD fDsrHold : 1;
705   DWORD fRlsdHold : 1;
706   DWORD fXoffHold : 1;
707   DWORD fXoffSent : 1;
708   DWORD fEof : 1;
709   DWORD fTxim : 1;
710   DWORD fReserved : 25;
711   DWORD cbInQue;
712   DWORD cbOutQue;
713 } COMSTAT, *LPCOMSTAT;
714
715 typedef struct tagCONVCONTEXT {
716   UINT  cb;
717   UINT  wFlags;
718   UINT  wCountryID;
719   int   iCodePage;
720   DWORD dwLangID;
721   DWORD dwSecurity;
722   SECURITY_QUALITY_OF_SERVICE qos;
723 } CONVCONTEXT;
724
725 typedef CONVCONTEXT *PCONVCONTEXT;
726
727 typedef struct tagCONVINFO {
728   DWORD       cb;
729   DWORD       hUser;
730   HCONV       hConvPartner;
731   HSZ         hszSvcPartner;
732   HSZ         hszServiceReq;
733   HSZ         hszTopic;
734   HSZ         hszItem;
735   UINT        wFmt;
736   UINT        wType;
737   UINT        wStatus;
738   UINT        wConvst;
739   UINT        wLastError;
740   HCONVLIST   hConvList;
741   CONVCONTEXT ConvCtxt;
742   HWND        hwnd;
743   HWND        hwndPartner;
744 } CONVINFO, *PCONVINFO;
745
746 typedef struct tagCOPYDATASTRUCT {
747   DWORD dwData;
748   DWORD cbData;
749   PVOID lpData;
750 } COPYDATASTRUCT;
751
752 typedef struct _cpinfo {
753   UINT MaxCharSize;
754   BYTE DefaultChar[MAX_DEFAULTCHAR];
755   BYTE LeadByte[MAX_LEADBYTES];
756 } CPINFO, *LPCPINFO;
757
758 typedef struct tagCPLINFO {
759   int  idIcon;
760   int  idName;
761   int  idInfo;
762   LONG lData;
763 } CPLINFO;
764
765 typedef struct _CREATE_PROCESS_DEBUG_INFO {
766   HANDLE hFile;
767   HANDLE hProcess;
768   HANDLE hThread;
769   LPVOID lpBaseOfImage;
770   DWORD dwDebugInfoFileOffset;
771   DWORD nDebugInfoSize;
772   LPVOID lpThreadLocalBase;
773   LPTHREAD_START_ROUTINE lpStartAddress;
774   LPVOID lpImageName;
775   WORD fUnicode;
776 } CREATE_PROCESS_DEBUG_INFO;
777
778 typedef struct _CREATE_THREAD_DEBUG_INFO {
779   HANDLE hThread;
780   LPVOID lpThreadLocalBase;
781   LPTHREAD_START_ROUTINE lpStartAddress;
782 } CREATE_THREAD_DEBUG_INFO;
783
784 /*
785  TODO: sockets
786 typedef struct _SOCKET_ADDRESS {
787   LPSOCKADDR lpSockaddr ;
788   INT iSockaddrLength ;
789 } SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
790 */
791
792 /*
793 typedef struct _CSADDR_INFO {
794   SOCKET_ADDRESS  LocalAddr;
795   SOCKET_ADDRESS  RemoteAddr;
796   INT             iSocketType;
797   INT             iProtocol;
798 } CSADDR_INFO;
799 */
800
801 typedef struct _currencyfmt {
802   UINT      NumDigits;
803   UINT      LeadingZero;
804   UINT      Grouping;
805   LPTSTR    lpDecimalSep;
806   LPTSTR    lpThousandSep;
807   UINT      NegativeOrder;
808   UINT      PositiveOrder;
809   LPTSTR    lpCurrencySymbol;
810 } CURRENCYFMT;
811
812 typedef struct tagCURSORSHAPE {
813   int     xHotSpot;
814   int     yHotSpot;
815   int     cx;
816   int     cy;
817   int     cbWidth;
818   BYTE    Planes;
819   BYTE    BitsPixel;
820 } CURSORSHAPE,   *LPCURSORSHAPE;
821
822 typedef struct tagCWPRETSTRUCT {
823   LRESULT lResult;
824   LPARAM  lParam;
825   WPARAM  wParam;
826   DWORD   message;
827   HWND    hwnd;
828 } CWPRETSTRUCT;
829
830 typedef struct tagCWPSTRUCT {
831   LPARAM  lParam;
832   WPARAM  wParam;
833   UINT    message;
834   HWND    hwnd;
835 } CWPSTRUCT;
836
837 typedef struct _DATATYPES_INFO_1 {
838   LPTSTR pName;
839 } DATATYPES_INFO_1;
840
841 typedef struct {
842   unsigned short bAppReturnCode:8,
843     reserved:6,
844     fBusy:1,
845     fAck:1;
846 } DDEACK;
847
848 typedef struct {
849   unsigned short reserved:14,
850     fDeferUpd:1,
851     fAckReq:1;
852   short cfFormat;
853 } DDEADVISE;
854
855 typedef struct {
856   unsigned short unused:12,
857     fResponse:1,
858     fRelease:1,
859     reserved:1,
860     fAckReq:1;
861   short cfFormat;
862   BYTE  Value[1];
863 } DDEDATA;
864
865 typedef struct {
866   unsigned short unused:13,
867     fRelease:1,
868     fDeferUpd:1,
869     fAckReq:1;
870   short cfFormat;
871 } DDELN;
872
873 typedef struct tagDDEML_MSG_HOOK_DATA {
874   UINT  uiLo;
875   UINT  uiHi;
876   DWORD cbData;
877   DWORD Data[8];
878 } DDEML_MSG_HOOK_DATA;
879
880 typedef struct {
881   unsigned short unused:13,
882     fRelease:1,
883     fReserved:2;
884   short cfFormat;
885   BYTE  Value[1];
886 } DDEPOKE;
887
888 typedef struct {
889   unsigned short unused:12,
890     fAck:1,
891     fRelease:1,
892     fReserved:1,
893     fAckReq:1;
894   short cfFormat;
895   BYTE rgb[1];
896 } DDEUP;
897
898 typedef struct _EXCEPTION_DEBUG_INFO {
899   EXCEPTION_RECORD ExceptionRecord;
900   DWORD dwFirstChance;
901 } EXCEPTION_DEBUG_INFO;
902
903 typedef struct _EXIT_PROCESS_DEBUG_INFO {
904   DWORD dwExitCode;
905 } EXIT_PROCESS_DEBUG_INFO;
906
907 typedef struct _EXIT_THREAD_DEBUG_INFO {
908   DWORD dwExitCode;
909 } EXIT_THREAD_DEBUG_INFO;
910
911 typedef struct _LOAD_DLL_DEBUG_INFO {
912   HANDLE hFile;
913   LPVOID lpBaseOfDll;
914   DWORD  dwDebugInfoFileOffset;
915   DWORD  nDebugInfoSize;
916   LPVOID lpImageName;
917   WORD fUnicode;
918 } LOAD_DLL_DEBUG_INFO;
919
920 typedef struct _UNLOAD_DLL_DEBUG_INFO {
921   LPVOID lpBaseOfDll;
922 } UNLOAD_DLL_DEBUG_INFO;
923
924 typedef struct _OUTPUT_DEBUG_STRING_INFO {
925   LPSTR lpDebugStringData;
926   WORD  fUnicode;
927   WORD  nDebugStringLength;
928 } OUTPUT_DEBUG_STRING_INFO;
929
930 typedef struct _RIP_INFO {
931   DWORD  dwError;
932   DWORD  dwType;
933 } RIP_INFO;
934
935 typedef struct _DEBUG_EVENT {
936   DWORD dwDebugEventCode;
937   DWORD dwProcessId;
938   DWORD dwThreadId;
939   union {
940     EXCEPTION_DEBUG_INFO Exception;
941     CREATE_THREAD_DEBUG_INFO CreateThread;
942     CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
943     EXIT_THREAD_DEBUG_INFO ExitThread;
944     EXIT_PROCESS_DEBUG_INFO ExitProcess;
945     LOAD_DLL_DEBUG_INFO LoadDll;
946     UNLOAD_DLL_DEBUG_INFO UnloadDll;
947     OUTPUT_DEBUG_STRING_INFO DebugString;
948     RIP_INFO RipInfo;
949   } u;
950 } DEBUG_EVENT, *LPDEBUG_EVENT;
951
952 typedef struct tagDEBUGHOOKINFO {
953   DWORD  idThread;
954   DWORD  idThreadInstaller;
955   LPARAM lParam;
956   WPARAM wParam;
957   int    code;
958 } DEBUGHOOKINFO;
959
960 typedef struct tagDELETEITEMSTRUCT {
961   UINT CtlType;
962   UINT CtlID;
963   UINT itemID;
964   HWND hwndItem;
965   UINT itemData;
966 } DELETEITEMSTRUCT;
967
968 typedef struct _DEV_BROADCAST_HDR {
969   ULONG dbch_size;
970   ULONG dbch_devicetype;
971   ULONG dbch_reserved;
972 } DEV_BROADCAST_HDR;
973 typedef DEV_BROADCAST_HDR *PDEV_BROADCAST_HDR;
974
975 typedef struct _DEV_BROADCAST_OEM {
976   ULONG dbco_size;
977   ULONG dbco_devicetype;
978   ULONG dbco_reserved;
979   ULONG dbco_identifier;
980   ULONG dbco_suppfunc;
981 } DEV_BROADCAST_OEM;
982 typedef DEV_BROADCAST_OEM *PDEV_BROADCAST_OEM;
983
984 typedef struct _DEV_BROADCAST_PORT {
985   ULONG dbcp_size;
986   ULONG dbcp_devicetype;
987   ULONG dbcp_reserved;
988   char dbcp_name[1];
989 } DEV_BROADCAST_PORT;
990 typedef DEV_BROADCAST_PORT *PDEV_BROADCAST_PORT;
991
992 struct _DEV_BROADCAST_USERDEFINED {
993   struct _DEV_BROADCAST_HDR dbud_dbh;
994   char  dbud_szName[1];
995   BYTE  dbud_rgbUserDefined[1];
996 };
997
998 typedef struct _DEV_BROADCAST_VOLUME {
999   ULONG dbcv_size;
1000   ULONG dbcv_devicetype;
1001   ULONG dbcv_reserved;
1002   ULONG dbcv_unitmask;
1003   USHORT dbcv_flags;
1004 } DEV_BROADCAST_VOLUME;
1005 typedef DEV_BROADCAST_VOLUME *PDEV_BROADCAST_VOLUME;
1006
1007 typedef struct tagDEVNAMES {
1008   WORD wDriverOffset;
1009   WORD wDeviceOffset;
1010   WORD wOutputOffset;
1011   WORD wDefault;
1012 } DEVNAMES, *LPDEVNAMES;
1013
1014 typedef struct tagDIBSECTION {
1015   BITMAP              dsBm;
1016   BITMAPINFOHEADER    dsBmih;
1017   DWORD               dsBitfields[3];
1018   HANDLE              dshSection;
1019   DWORD               dsOffset;
1020 } DIBSECTION;
1021
1022 typedef struct _DISK_PERFORMANCE {
1023   LARGE_INTEGER BytesRead;
1024   LARGE_INTEGER BytesWritten;
1025   LARGE_INTEGER ReadTime;
1026   LARGE_INTEGER WriteTime;
1027   DWORD ReadCount;
1028   DWORD WriteCount;
1029   DWORD QueueDepth;
1030 } DISK_PERFORMANCE ;
1031
1032 typedef struct {
1033   DWORD style;
1034   DWORD dwExtendedStyle;
1035   short x;
1036   short y;
1037   short cx;
1038   short cy;
1039   WORD  id;
1040 } DLGITEMTEMPLATE PACKED;
1041
1042 typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATE;
1043 typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATE;
1044
1045 typedef struct {
1046   DWORD style;
1047   DWORD dwExtendedStyle;
1048   WORD  cdit;
1049   short x;
1050   short y;
1051   short cx;
1052   short cy;
1053 } DLGTEMPLATE PACKED;
1054
1055 typedef DLGTEMPLATE *LPDLGTEMPLATE;
1056 typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
1057
1058 typedef struct _DOC_INFO_1 {
1059   LPTSTR pDocName;
1060   LPTSTR pOutputFile;
1061   LPTSTR pDatatype;
1062 } DOC_INFO_1;
1063
1064 typedef struct _DOC_INFO_2 {
1065   LPTSTR pDocName;
1066   LPTSTR pOutputFile;
1067   LPTSTR pDatatype;
1068   DWORD  dwMode;
1069   DWORD  JobId;
1070 } DOC_INFO_2;
1071
1072 typedef struct {
1073   int     cbSize;
1074   LPCTSTR lpszDocName;
1075   LPCTSTR lpszOutput;
1076   LPCTSTR lpszDatatype;
1077   DWORD   fwType;
1078 } DOCINFO, *PDOCINFO;
1079
1080 typedef struct {
1081   UINT uNotification;
1082   HWND hWnd;
1083   POINT ptCursor;
1084 } DRAGLISTINFO, *LPDRAGLISTINFO;
1085
1086 typedef struct tagDRAWITEMSTRUCT {
1087   UINT  CtlType;
1088   UINT  CtlID;
1089   UINT  itemID;
1090   UINT  itemAction;
1091   UINT  itemState;
1092   HWND  hwndItem;
1093   HDC   hDC;
1094   RECT  rcItem;
1095   DWORD itemData;
1096 } DRAWITEMSTRUCT, *LPDRAWITEMSTRUCT, *PDRAWITEMSTRUCT;
1097
1098 typedef struct {
1099   UINT cbSize;
1100   int  iTabLength;
1101   int  iLeftMargin;
1102   int  iRightMargin;
1103   UINT uiLengthDrawn;
1104 } DRAWTEXTPARAMS, *LPDRAWTEXTPARAMS;
1105
1106
1107
1108 typedef struct _DRIVER_INFO_1 {
1109   LPTSTR pName;
1110 } DRIVER_INFO_1;
1111
1112 typedef struct _DRIVER_INFO_2 {
1113   DWORD  cVersion;
1114   LPTSTR pName;
1115   LPTSTR pEnvironment;
1116   LPTSTR pDriverPath;
1117   LPTSTR pDataFile;
1118   LPTSTR pConfigFile;
1119 } DRIVER_INFO_2;
1120
1121 typedef struct _DRIVER_INFO_3 {
1122   DWORD  cVersion;
1123   LPTSTR pName;
1124   LPTSTR pEnvironment;
1125   LPTSTR pDriverPath;
1126   LPTSTR pDataFile;
1127   LPTSTR pConfigFile;
1128   LPTSTR pHelpFile;
1129   LPTSTR pDependentFiles;
1130   LPTSTR pMonitorName;
1131   LPTSTR pDefaultDataType;
1132 } DRIVER_INFO_3;
1133
1134 typedef struct _editstream {
1135   DWORD dwCookie;
1136   DWORD dwError;
1137   EDITSTREAMCALLBACK pfnCallback;
1138 } EDITSTREAM;
1139
1140 typedef struct tagEMR
1141 {
1142   DWORD iType;
1143   DWORD nSize;
1144 } EMR, *PEMR;
1145
1146 typedef struct tagEMRANGLEARC
1147 {
1148   EMR     emr;
1149   POINTL  ptlCenter;
1150   DWORD   nRadius;
1151   FLOAT   eStartAngle;
1152   FLOAT   eSweepAngle;
1153 } EMRANGLEARC, *PEMRANGLEARC;
1154
1155 typedef struct tagEMRARC
1156 {
1157   EMR    emr;
1158   RECTL  rclBox;
1159   POINTL ptlStart;
1160   POINTL ptlEnd;
1161 } EMRARC,   *PEMRARC,
1162     EMRARCTO, *PEMRARCTO,
1163     EMRCHORD, *PEMRCHORD,
1164     EMRPIE,   *PEMRPIE;
1165
1166 typedef struct  _XFORM
1167 {
1168   FLOAT   eM11;
1169   FLOAT   eM12;
1170   FLOAT   eM21;
1171   FLOAT   eM22;
1172   FLOAT   eDx;
1173   FLOAT   eDy;
1174 } XFORM, *PXFORM, *LPXFORM;
1175
1176 typedef struct tagEMRBITBLT
1177 {
1178   EMR      emr;
1179   RECTL    rclBounds;
1180   LONG     xDest;
1181   LONG     yDest;
1182   LONG     cxDest;
1183   LONG     cyDest;
1184   DWORD    dwRop;
1185   LONG     xSrc;
1186   LONG     ySrc;
1187   XFORM    xformSrc;
1188   COLORREF crBkColorSrc;
1189   DWORD    iUsageSrc;
1190   DWORD    offBmiSrc;
1191   DWORD    offBitsSrc;
1192   DWORD    cbBitsSrc;
1193 } EMRBITBLT, *PEMRBITBLT;
1194
1195 typedef struct tagLOGBRUSH {
1196   UINT     lbStyle;
1197   COLORREF lbColor;
1198   LONG     lbHatch;
1199 } LOGBRUSH, *PLOGBRUSH;
1200
1201 typedef struct tagEMRCREATEBRUSHINDIRECT
1202 {
1203   EMR      emr;
1204   DWORD    ihBrush;
1205   LOGBRUSH lb;
1206 } EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT;
1207
1208 typedef LONG LCSCSTYPE;
1209 typedef LONG LCSGAMUTMATCH;
1210
1211 typedef struct tagLOGCOLORSPACE {
1212   DWORD         lcsSignature;
1213   DWORD         lcsVersion;
1214   DWORD         lcsSize;
1215
1216   LCSCSTYPE     lcsCSType;
1217   LCSGAMUTMATCH lcsIntent;
1218   CIEXYZTRIPLE  lcsEndpoints;
1219   DWORD         lcsGammaRed;
1220   DWORD         lcsGammaGreen;
1221   DWORD         lcsGammaBlue;
1222   TCHAR         lcsFilename[MAX_PATH];
1223 } LOGCOLORSPACE, *LPLOGCOLORSPACE;
1224
1225 typedef struct tagEMRCREATECOLORSPACE
1226 {
1227   EMR           emr;
1228   DWORD         ihCS;
1229   LOGCOLORSPACE lcs;
1230 } EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE;
1231
1232 typedef struct tagEMRCREATEDIBPATTERNBRUSHPT
1233 {
1234   EMR   emr;
1235   DWORD ihBrush;
1236   DWORD iUsage;
1237   DWORD offBmi;
1238   DWORD cbBmi;
1239   DWORD offBits;
1240   DWORD cbBits;
1241 } EMRCREATEDIBPATTERNBRUSHPT,
1242     PEMRCREATEDIBPATTERNBRUSHPT;
1243
1244 typedef struct tagEMRCREATEMONOBRUSH
1245 {
1246   EMR   emr;
1247   DWORD ihBrush;
1248   DWORD iUsage;
1249   DWORD offBmi;
1250   DWORD cbBmi;
1251   DWORD offBits;
1252   DWORD cbBits;
1253 } EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH;
1254
1255 typedef struct tagPALETTEENTRY {
1256   BYTE peRed;
1257   BYTE peGreen;
1258   BYTE peBlue;
1259   BYTE peFlags;
1260 } PALETTEENTRY, *LPPALETTEENTRY, *PPALETTEENTRY;
1261
1262 typedef struct tagLOGPALETTE {
1263   WORD         palVersion;
1264   WORD         palNumEntries;
1265   PALETTEENTRY palPalEntry[1];
1266 } LOGPALETTE, *LPLOGPALETTE, *PLOGPALETTE;
1267
1268 typedef struct tagEMRCREATEPALETTE
1269 {
1270   EMR        emr;
1271   DWORD      ihPal;
1272   LOGPALETTE lgpl;
1273 } EMRCREATEPALETTE, *PEMRCREATEPALETTE;
1274
1275 typedef struct tagLOGPEN {
1276   UINT     lopnStyle;
1277   POINT    lopnWidth;
1278   COLORREF lopnColor;
1279 } LOGPEN, *PLOGPEN;
1280
1281 typedef struct tagEMRCREATEPEN
1282 {
1283   EMR    emr;
1284   DWORD  ihPen;
1285   LOGPEN lopn;
1286 } EMRCREATEPEN, *PEMRCREATEPEN;
1287
1288 typedef struct tagEMRELLIPSE
1289 {
1290   EMR   emr;
1291   RECTL rclBox;
1292 } EMRELLIPSE,  *PEMRELLIPSE,
1293     EMRRECTANGLE, *PEMRRECTANGLE;
1294
1295 typedef struct tagEMREOF
1296 {
1297   EMR     emr;
1298   DWORD   nPalEntries;
1299   DWORD   offPalEntries;
1300   DWORD   nSizeLast;
1301 } EMREOF, *PEMREOF;
1302
1303 typedef struct tagEMREXCLUDECLIPRECT
1304 {
1305   EMR   emr;
1306   RECTL rclClip;
1307 } EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
1308     EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT;
1309
1310 typedef struct tagPANOSE {
1311   BYTE bFamilyType;
1312   BYTE bSerifStyle;
1313   BYTE bWeight;
1314   BYTE bProportion;
1315   BYTE bContrast;
1316   BYTE bStrokeVariation;
1317   BYTE bArmStyle;
1318   BYTE bLetterform;
1319   BYTE bMidline;
1320   BYTE bXHeight;
1321 } PANOSE;
1322
1323 typedef struct tagEXTLOGFONTA {
1324     LOGFONTA elfLogFont;
1325     BCHAR    elfFullName[LF_FULLFACESIZE];
1326     BCHAR    elfStyle[LF_FACESIZE];
1327     DWORD    elfVersion;
1328     DWORD    elfStyleSize;
1329     DWORD    elfMatch;
1330     DWORD    elfReserved;
1331     BYTE     elfVendorId[ELF_VENDOR_SIZE];
1332     DWORD    elfCulture;
1333     PANOSE   elfPanose;
1334 } EXTLOGFONTA, *LPEXTLOGFONTA;
1335
1336 typedef struct tagEXTLOGFONTW {
1337     LOGFONTW elfLogFont;
1338     WCHAR    elfFullName[LF_FULLFACESIZE];
1339     WCHAR    elfStyle[LF_FACESIZE];
1340     DWORD    elfVersion;
1341     DWORD    elfStyleSize;
1342     DWORD    elfMatch;
1343     DWORD    elfReserved;
1344     BYTE     elfVendorId[ELF_VENDOR_SIZE];
1345     DWORD    elfCulture;
1346     PANOSE   elfPanose;
1347 } EXTLOGFONTW, *LPEXTLOGFONTW;
1348
1349 #ifdef UNICODE
1350 typedef EXTLOGFONTW EXTLOGFONT;
1351 typedef LPEXTLOGFONTW LPEXTLOGFONT;
1352 #else
1353 typedef EXTLOGFONTA EXTLOGFONT;
1354 typedef LPEXTLOGFONTA LPEXTLOGFONT;
1355 #endif
1356
1357 typedef struct tagEMREXTCREATEFONTINDIRECTW
1358 {
1359   EMR         emr;
1360   DWORD       ihFont;
1361   EXTLOGFONTW elfw;
1362 } EMREXTCREATEFONTINDIRECTW,
1363     PEMREXTCREATEFONTINDIRECTW;
1364
1365 typedef struct tagEXTLOGPEN {
1366   UINT     elpPenStyle;
1367   UINT     elpWidth;
1368   UINT     elpBrushStyle;
1369   COLORREF elpColor;
1370   LONG     elpHatch;
1371   DWORD    elpNumEntries;
1372   DWORD    elpStyleEntry[1];
1373 } EXTLOGPEN;
1374
1375 typedef struct tagEMREXTCREATEPEN
1376 {
1377   EMR       emr;
1378   DWORD     ihPen;
1379   DWORD     offBmi;
1380   DWORD     cbBmi;
1381   DWORD     offBits;
1382   DWORD     cbBits;
1383   EXTLOGPEN elp;
1384 } EMREXTCREATEPEN, *PEMREXTCREATEPEN;
1385
1386 typedef struct tagEMREXTFLOODFILL
1387 {
1388   EMR     emr;
1389   POINTL  ptlStart;
1390   COLORREF crColor;
1391   DWORD   iMode;
1392 } EMREXTFLOODFILL, *PEMREXTFLOODFILL;
1393
1394 typedef struct tagEMREXTSELECTCLIPRGN
1395 {
1396   EMR   emr;
1397   DWORD cbRgnData;
1398   DWORD iMode;
1399   BYTE  RgnData[1];
1400 } EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN;
1401
1402 typedef struct tagEMRTEXT
1403 {
1404   POINTL ptlReference;
1405   DWORD  nChars;
1406   DWORD  offString;
1407   DWORD  fOptions;
1408   RECTL  rcl;
1409   DWORD  offDx;
1410 } EMRTEXT, *PEMRTEXT;
1411
1412 typedef struct tagEMREXTTEXTOUTA
1413 {
1414   EMR     emr;
1415   RECTL   rclBounds;
1416   DWORD   iGraphicsMode;
1417   FLOAT   exScale;
1418   FLOAT   eyScale;
1419   EMRTEXT emrtext;
1420 } EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
1421     EMREXTTEXTOUTW, *PEMREXTTEXTOUTW;
1422
1423 typedef struct tagEMRFILLPATH
1424 {
1425   EMR   emr;
1426   RECTL rclBounds;
1427 } EMRFILLPATH,          *PEMRFILLPATH,
1428     EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
1429     EMRSTROKEPATH,        *PEMRSTROKEPATH;
1430
1431 typedef struct tagEMRFILLRGN
1432 {
1433   EMR   emr;
1434   RECTL rclBounds;
1435   DWORD cbRgnData;
1436   DWORD ihBrush;
1437   BYTE  RgnData[1];
1438 } EMRFILLRGN, *PEMRFILLRGN;
1439
1440 typedef struct tagEMRFORMAT {
1441   DWORD   dSignature;
1442   DWORD   nVersion;
1443   DWORD   cbData;
1444   DWORD   offData;
1445 } EMRFORMAT;
1446
1447 typedef struct tagSIZE {
1448   LONG cx;
1449   LONG cy;
1450 } SIZE, *PSIZE, *LPSIZE, SIZEL, *PSIZEL, *LPSIZEL;
1451
1452 typedef struct tagEMRFRAMERGN
1453 {
1454   EMR   emr;
1455   RECTL rclBounds;
1456   DWORD cbRgnData;
1457   DWORD ihBrush;
1458   SIZEL szlStroke;
1459   BYTE  RgnData[1];
1460 } EMRFRAMERGN, *PEMRFRAMERGN;
1461
1462 typedef struct tagEMRGDICOMMENT
1463 {
1464   EMR   emr;
1465   DWORD cbData;
1466   BYTE  Data[1];
1467 } EMRGDICOMMENT, *PEMRGDICOMMENT;
1468
1469 typedef struct tagEMRINVERTRGN
1470 {
1471   EMR   emr;
1472   RECTL rclBounds;
1473   DWORD cbRgnData;
1474   BYTE  RgnData[1];
1475 } EMRINVERTRGN, *PEMRINVERTRGN,
1476     EMRPAINTRGN,  *PEMRPAINTRGN;
1477
1478 typedef struct tagEMRLINETO
1479 {
1480   EMR    emr;
1481   POINTL ptl;
1482 } EMRLINETO,   *PEMRLINETO,
1483     EMRMOVETOEX, *PEMRMOVETOEX;
1484
1485 typedef struct tagEMRMASKBLT
1486 {
1487   EMR     emr;
1488   RECTL   rclBounds;
1489   LONG    xDest;
1490   LONG    yDest;
1491   LONG    cxDest;
1492   LONG    cyDest;
1493   DWORD   dwRop;
1494   LONG    xSrc;
1495   LONG    ySrc;
1496   XFORM   xformSrc;
1497   COLORREF crBkColorSrc;
1498   DWORD   iUsageSrc;
1499   DWORD   offBmiSrc;
1500   DWORD   cbBmiSrc;
1501   DWORD   offBitsSrc;
1502   DWORD   cbBitsSrc;
1503   LONG    xMask;
1504   LONG    yMask;
1505   DWORD   iUsageMask;
1506   DWORD   offBmiMask;
1507   DWORD   cbBmiMask;
1508   DWORD   offBitsMask;
1509   DWORD   cbBitsMask;
1510 } EMRMASKBLT, *PEMRMASKBLT;
1511
1512 typedef struct tagEMRMODIFYWORLDTRANSFORM
1513 {
1514   EMR   emr;
1515   XFORM xform;
1516   DWORD iMode;
1517 } EMRMODIFYWORLDTRANSFORM,
1518     PEMRMODIFYWORLDTRANSFORM;
1519
1520 typedef struct tagEMROFFSETCLIPRGN
1521 {
1522   EMR    emr;
1523   POINTL ptlOffset;
1524 } EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN;
1525
1526 typedef struct tagEMRPLGBLT
1527 {
1528   EMR      emr;
1529   RECTL    rclBounds;
1530   POINTL   aptlDest[3];
1531   LONG    xSrc;
1532   LONG    ySrc;
1533   LONG     cxSrc;
1534   LONG     cySrc;
1535   XFORM   xformSrc;
1536   COLORREF crBkColorSrc;
1537   DWORD    iUsageSrc;
1538   DWORD    offBmiSrc;
1539   DWORD   cbBmiSrc;
1540   DWORD   offBitsSrc;
1541   DWORD   cbBitsSrc;
1542   LONG    xMask;
1543   LONG    yMask;
1544   DWORD   iUsageMask;
1545   DWORD   offBmiMask;
1546   DWORD   cbBmiMask;
1547   DWORD   offBitsMask;
1548   DWORD   cbBitsMask;
1549 } EMRPLGBLT, *PEMRPLGBLT;
1550
1551 typedef struct tagEMRPOLYDRAW
1552 {
1553   EMR    emr;
1554   RECTL  rclBounds;
1555   DWORD  cptl;
1556   POINTL aptl[1];
1557   BYTE   abTypes[1];
1558 } EMRPOLYDRAW, *PEMRPOLYDRAW;
1559
1560 typedef struct tagEMRPOLYDRAW16
1561 {
1562   EMR    emr;
1563   RECTL  rclBounds;
1564   DWORD  cpts;
1565   POINTS apts[1];
1566   BYTE   abTypes[1];
1567 } EMRPOLYDRAW16, *PEMRPOLYDRAW16;
1568
1569 typedef struct tagEMRPOLYLINE
1570 {
1571   EMR    emr;
1572   RECTL  rclBounds;
1573   DWORD  cptl;
1574   POINTL aptl[1];
1575 } EMRPOLYLINE,     *PEMRPOLYLINE,
1576     EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
1577     EMRPOLYGON,      *PEMRPOLYGON,
1578     EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
1579     EMRPOLYLINETO,   *PEMRPOLYLINETO;
1580
1581 typedef struct tagEMRPOLYLINE16
1582 {
1583   EMR    emr;
1584   RECTL  rclBounds;
1585   DWORD  cpts;
1586   POINTL apts[1];
1587 } EMRPOLYLINE16,     *PEMRPOLYLINE16,
1588     EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
1589     EMRPOLYGON16,      *PEMRPOLYGON16,
1590     EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
1591     EMRPOLYLINETO16,   *PEMRPOLYLINETO16;
1592
1593 typedef struct tagEMRPOLYPOLYLINE
1594 {
1595   EMR     emr;
1596   RECTL   rclBounds;
1597   DWORD   nPolys;
1598   DWORD   cptl;
1599   DWORD   aPolyCounts[1];
1600   POINTL  aptl[1];
1601 } EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
1602     EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON;
1603
1604 typedef struct tagEMRPOLYPOLYLINE16
1605 {
1606   EMR     emr;
1607   RECTL   rclBounds;
1608   DWORD   nPolys;
1609   DWORD   cpts;
1610   DWORD   aPolyCounts[1];
1611   POINTS  apts[1];
1612 } EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
1613     EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16;
1614
1615 typedef struct tagEMRPOLYTEXTOUTA
1616 {
1617   EMR     emr;
1618   RECTL   rclBounds;
1619   DWORD   iGraphicsMode;
1620   FLOAT   exScale;
1621   FLOAT   eyScale;
1622   LONG    cStrings;
1623   EMRTEXT aemrtext[1];
1624 } EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
1625     EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW;
1626
1627 typedef struct tagEMRRESIZEPALETTE
1628 {
1629   EMR   emr;
1630   DWORD ihPal;
1631   DWORD cEntries;
1632 } EMRRESIZEPALETTE, *PEMRRESIZEPALETTE;
1633
1634 typedef struct tagEMRRESTOREDC
1635 {
1636   EMR  emr;
1637   LONG iRelative;
1638 } EMRRESTOREDC, *PEMRRESTOREDC;
1639
1640 typedef struct tagEMRROUNDRECT
1641 {
1642   EMR   emr;
1643   RECTL rclBox;
1644   SIZEL szlCorner;
1645 } EMRROUNDRECT, *PEMRROUNDRECT;
1646
1647 typedef struct tagEMRSCALEVIEWPORTEXTEX
1648 {
1649   EMR  emr;
1650   LONG xNum;
1651   LONG xDenom;
1652   LONG yNum;
1653   LONG yDenom;
1654 } EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX,
1655     EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX;
1656
1657 typedef struct tagEMRSELECTCOLORSPACE
1658 {
1659   EMR     emr;
1660   DWORD   ihCS;
1661 } EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
1662     EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE;
1663 typedef struct tagEMRSELECTOBJECT
1664 {
1665   EMR   emr;
1666   DWORD ihObject;
1667 } EMRSELECTOBJECT, *PEMRSELECTOBJECT,
1668     EMRDELETEOBJECT, *PEMRDELETEOBJECT;
1669
1670 typedef struct tagEMRSELECTPALETTE
1671 {
1672   EMR   emr;
1673   DWORD ihPal;
1674 } EMRSELECTPALETTE, *PEMRSELECTPALETTE;
1675
1676 typedef struct tagEMRSETARCDIRECTION
1677 {
1678   EMR   emr;
1679   DWORD iArcDirection;
1680 } EMRSETARCDIRECTION, *PEMRSETARCDIRECTION;
1681
1682 typedef struct tagEMRSETTEXTCOLOR
1683 {
1684   EMR      emr;
1685   COLORREF crColor;
1686 } EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
1687     EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR;
1688
1689 typedef struct tagEMRSETCOLORADJUSTMENT
1690 {
1691   EMR  emr;
1692   COLORADJUSTMENT ColorAdjustment;
1693 } EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT;
1694
1695 typedef struct tagEMRSETDIBITSTODEVICE
1696 {
1697   EMR   emr;
1698   RECTL rclBounds;
1699   LONG  xDest;
1700   LONG  yDest;
1701   LONG  xSrc;
1702   LONG  ySrc;
1703   LONG  cxSrc;
1704   LONG  cySrc;
1705   DWORD offBmiSrc;
1706   DWORD cbBmiSrc;
1707   DWORD offBitsSrc;
1708   DWORD cbBitsSrc;
1709   DWORD iUsageSrc;
1710   DWORD iStartScan;
1711   DWORD cScans;
1712 } EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE;
1713
1714 typedef struct tagEMRSETMAPPERFLAGS
1715 {
1716   EMR   emr;
1717   DWORD dwFlags;
1718 } EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS;
1719
1720 typedef struct tagEMRSETMITERLIMIT
1721 {
1722   EMR   emr;
1723   FLOAT eMiterLimit;
1724 } EMRSETMITERLIMIT, *PEMRSETMITERLIMIT;
1725
1726 typedef struct tagEMRSETPALETTEENTRIES
1727 {
1728   EMR          emr;
1729   DWORD        ihPal;
1730   DWORD        iStart;
1731   DWORD        cEntries;
1732   PALETTEENTRY aPalEntries[1];
1733 } EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES;
1734
1735 typedef struct tagEMRSETPIXELV
1736 {
1737   EMR     emr;
1738   POINTL  ptlPixel;
1739   COLORREF crColor;
1740 } EMRSETPIXELV, *PEMRSETPIXELV;
1741
1742 typedef struct tagEMRSETVIEWPORTEXTEX
1743 {
1744   EMR   emr;
1745   SIZEL szlExtent;
1746 } EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
1747     EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX;
1748
1749 typedef struct tagEMRSETVIEWPORTORGEX
1750 {
1751   EMR    emr;
1752   POINTL ptlOrigin;
1753 } EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
1754     EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX,
1755     EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX;
1756
1757 typedef struct tagEMRSETWORLDTRANSFORM
1758 {
1759   EMR   emr;
1760   XFORM xform;
1761 } EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM;
1762
1763 typedef struct tagEMRSTRETCHBLT
1764 {
1765   EMR      emr;
1766   RECTL    rclBounds;
1767   LONG     xDest;
1768   LONG     yDest;
1769   LONG     cxDest;
1770   LONG     cyDest;
1771   DWORD    dwRop;
1772   LONG     xSrc;
1773   LONG     ySrc;
1774   XFORM    xformSrc;
1775   COLORREF crBkColorSrc;
1776   DWORD    iUsageSrc;
1777   DWORD    offBmiSrc;
1778   DWORD    cbBmiSrc;
1779   DWORD    offBitsSrc;
1780   DWORD    cbBitsSrc;
1781   LONG     cxSrc;
1782   LONG     cySrc;
1783 } EMRSTRETCHBLT, *PEMRSTRETCHBLT;
1784
1785 typedef struct tagEMRSTRETCHDIBITS
1786 {
1787   EMR   emr;
1788   RECTL rclBounds;
1789   LONG  xDest;
1790   LONG  yDest;
1791   LONG  xSrc;
1792   LONG  ySrc;
1793   LONG  cxSrc;
1794   LONG  cySrc;
1795   DWORD offBmiSrc;
1796   DWORD cbBmiSrc;
1797   DWORD offBitsSrc;
1798   DWORD cbBitsSrc;
1799   DWORD iUsageSrc;
1800   DWORD dwRop;
1801   LONG  cxDest;
1802   LONG  cyDest;
1803 } EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS;
1804
1805 typedef struct tagABORTPATH
1806 {
1807   EMR emr;
1808 } EMRABORTPATH,      *PEMRABORTPATH,
1809     EMRBEGINPATH,      *PEMRBEGINPATH,
1810     EMRENDPATH,        *PEMRENDPATH,
1811     EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
1812     EMRFLATTENPATH,    *PEMRFLATTENPATH,
1813     EMRWIDENPATH,      *PEMRWIDENPATH,
1814     EMRSETMETARGN,     *PEMRSETMETARGN,
1815     EMRSAVEDC,         *PEMRSAVEDC,
1816     EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
1817
1818 typedef struct tagEMRSELECTCLIPPATH
1819 {
1820   EMR   emr;
1821   DWORD iMode;
1822 } EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
1823     EMRSETBKMODE,         *PEMRSETBKMODE,
1824     EMRSETMAPMODE,        *PEMRSETMAPMODE,
1825     EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
1826     EMRSETROP2,           *PEMRSETROP2,
1827     EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
1828     EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
1829     EMRENABLEICM,       *PEMRENABLEICM;
1830
1831 typedef struct tagNMHDR {
1832   HWND hwndFrom;
1833   UINT idFrom;
1834   UINT code;
1835 } NMHDR;
1836
1837 typedef struct _encorrecttext {
1838   NMHDR nmhdr;
1839   CHARRANGE chrg;
1840   WORD seltyp;
1841 } ENCORRECTTEXT;
1842
1843 typedef struct _endropfiles {
1844   NMHDR nmhdr;
1845   HANDLE hDrop;
1846   LONG cp;
1847   WINBOOL fProtected;
1848 } ENDROPFILES;
1849
1850 typedef struct {
1851   NMHDR nmhdr;
1852   LONG cObjectCount;
1853   LONG cch;
1854 } ENSAVECLIPBOARD;
1855
1856 typedef struct {
1857   NMHDR nmhdr;
1858   LONG iob;
1859   LONG lOper;
1860   HRESULT hr;
1861 } ENOLEOPFAILED;
1862
1863 typedef struct tagENHMETAHEADER {
1864   DWORD iType;
1865   DWORD nSize;
1866   RECTL rclBounds;
1867   RECTL rclFrame;
1868   DWORD dSignature;
1869   DWORD nVersion;
1870   DWORD nBytes;
1871   DWORD nRecords;
1872   WORD  nHandles;
1873   WORD  sReserved;
1874   DWORD nDescription;
1875   DWORD offDescription;
1876   DWORD nPalEntries;
1877   SIZEL szlDevice;
1878   SIZEL szlMillimeters;
1879 } ENHMETAHEADER, *LPENHMETAHEADER;
1880
1881 typedef struct tagENHMETARECORD {
1882   DWORD iType;
1883   DWORD nSize;
1884   DWORD dParm[1];
1885 } ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD;
1886
1887 typedef struct _enprotected {
1888   NMHDR nmhdr;
1889   UINT msg;
1890   WPARAM wParam;
1891   LPARAM lParam;
1892   CHARRANGE chrg;
1893 } ENPROTECTED;
1894
1895 typedef struct _SERVICE_STATUS {
1896   DWORD dwServiceType;
1897   DWORD dwCurrentState;
1898   DWORD dwControlsAccepted;
1899   DWORD dwWin32ExitCode;
1900   DWORD dwServiceSpecificExitCode;
1901   DWORD dwCheckPoint;
1902   DWORD dwWaitHint;
1903 } SERVICE_STATUS, *LPSERVICE_STATUS;
1904
1905 typedef struct _ENUM_SERVICE_STATUSA {
1906   LPSTR lpServiceName;
1907   LPSTR lpDisplayName;
1908   SERVICE_STATUS ServiceStatus;
1909 } ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
1910
1911 typedef struct _ENUM_SERVICE_STATUSW {
1912   LPWSTR lpServiceName;
1913   LPWSTR lpDisplayName;
1914   SERVICE_STATUS ServiceStatus;
1915 } ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
1916
1917 #ifdef UNICODE
1918 #define ENUM_SERVICE_STATUS ENUM_SERVICE_STATUSW
1919 #define LPENUM_SERVICE_STATUS LPENUM_SERVICE_STATUSW
1920 #else
1921 #define ENUM_SERVICE_STATUS ENUM_SERVICE_STATUSA
1922 #define LPENUM_SERVICE_STATUS LPENUM_SERVICE_STATUSA
1923 #endif
1924
1925 typedef struct tagENUMLOGFONTA {
1926   LOGFONTA elfLogFont;
1927   BCHAR    elfFullName[LF_FULLFACESIZE];
1928   BCHAR    elfStyle[LF_FACESIZE];
1929 } ENUMLOGFONTA, *LPENUMLOGFONTA;
1930
1931 typedef struct tagENUMLOGFONTW {
1932   LOGFONTW elfLogFont;
1933   WCHAR    elfFullName[LF_FULLFACESIZE];
1934   WCHAR    elfStyle[LF_FACESIZE];
1935 } ENUMLOGFONTW, *LPENUMLOGFONTW;
1936
1937 #ifdef UNICODE
1938 typedef ENUMLOGFONTW ENUMLOGFONT;
1939 typedef LPENUMLOGFONTW LPENUMLOGFONT;
1940 #else
1941 typedef ENUMLOGFONTA ENUMLOGFONT;
1942 typedef LPENUMLOGFONTA LPENUMLOGFONT;
1943 #endif
1944
1945 typedef struct tagENUMLOGFONTEXA {
1946   LOGFONTA elfLogFont;
1947   BCHAR    elfFullName[LF_FULLFACESIZE];
1948   BCHAR    elfStyle[LF_FACESIZE];
1949   BCHAR    elfScript[LF_FACESIZE];
1950 } ENUMLOGFONTEXA, *LPENUMLOGFONTEXA;
1951
1952 typedef struct tagENUMLOGFONTEXW {
1953   LOGFONTW elfLogFont;
1954   WCHAR    elfFullName[LF_FULLFACESIZE];
1955   WCHAR    elfStyle[LF_FACESIZE];
1956   WCHAR    elfScript[LF_FACESIZE];
1957 } ENUMLOGFONTEXW, *LPENUMLOGFONTEXW;
1958
1959 #ifdef UNICODE
1960 typedef ENUMLOGFONTEXW ENUMLOGFONTEX;
1961 typedef LPENUMLOGFONTEXW LPENUMLOGFONTEX;
1962 #else
1963 typedef ENUMLOGFONTEXA ENUMLOGFONTEX;
1964 typedef LPENUMLOGFONTEXA LPENUMLOGFONTEX;
1965 #endif
1966
1967 typedef struct _EVENTLOGRECORD {
1968   DWORD  Length;
1969   DWORD  Reserved;
1970   DWORD  RecordNumber;
1971   DWORD  TimeGenerated;
1972   DWORD  TimeWritten;
1973   DWORD  EventID;
1974   WORD   EventType;
1975   WORD   NumStrings;
1976   WORD   EventCategory;
1977   WORD   ReservedFlags;
1978   DWORD  ClosingRecordNumber;
1979   DWORD  StringOffset;
1980   DWORD  UserSidLength;
1981   DWORD  UserSidOffset;
1982   DWORD  DataLength;
1983   DWORD  DataOffset;
1984
1985 /*
1986   Then follow:
1987
1988   TCHAR SourceName[]
1989   TCHAR Computername[]
1990   SID   UserSid
1991   TCHAR Strings[]
1992   BYTE  Data[]
1993   CHAR  Pad[]
1994   DWORD Length;
1995 */
1996
1997 } EVENTLOGRECORD;
1998
1999 typedef struct tagEVENTMSG {
2000   UINT  message;
2001   UINT  paramL;
2002   UINT  paramH;
2003   DWORD time;
2004   HWND  hwnd;
2005 } EVENTMSG;
2006
2007 typedef struct _EXT_BUTTON {
2008   WORD idCommand;
2009   WORD idsHelp;
2010   WORD fsStyle;
2011 } EXT_BUTTON, *LPEXT_BUTTON;
2012
2013 typedef struct tagFILTERKEYS {
2014   UINT  cbSize;
2015   DWORD dwFlags;
2016   DWORD iWaitMSec;
2017   DWORD iDelayMSec;
2018   DWORD iRepeatMSec;
2019   DWORD iBounceMSec;
2020 } FILTERKEYS;
2021
2022 typedef struct _FIND_NAME_BUFFER {
2023   UCHAR length;
2024   UCHAR access_control;
2025   UCHAR frame_control;
2026   UCHAR destination_addr[6];
2027   UCHAR source_addr[6];
2028   UCHAR routing_info[18];
2029 } FIND_NAME_BUFFER;
2030
2031 typedef struct _FIND_NAME_HEADER {
2032   WORD  node_count;
2033   UCHAR reserved;
2034   UCHAR unique_group;
2035 } FIND_NAME_HEADER;
2036
2037 typedef
2038 enum _FINDEX_INFO_LEVELS
2039 {
2040         FindExInfoStandard,
2041         FindExInfoMaxInfoLevel
2042 } FINDEX_INFO_LEVELS;
2043
2044 typedef
2045 enum _FINDEX_SEARCH_OPS
2046 {
2047         FindExSearchNameMatch,
2048         FindExSearchLimitToDirectories,
2049         FindExSearchLimitToDevices,
2050         FindExSearchMaxSearchOp
2051
2052 } FINDEX_SEARCH_OPS;
2053
2054 #define FIND_FIRST_EX_CASE_SENSITIVE   0x00000001
2055
2056 typedef struct {
2057   DWORD        lStructSize;
2058   HWND         hwndOwner;
2059   HINSTANCE    hInstance;
2060   DWORD        Flags;
2061   LPTSTR        lpstrFindWhat;
2062   LPTSTR        lpstrReplaceWith;
2063   WORD         wFindWhatLen;
2064   WORD         wReplaceWithLen;
2065   LPARAM        lCustData;
2066   LPFRHOOKPROC lpfnHook;
2067   LPCTSTR       lpTemplateName;
2068 } FINDREPLACE, *LPFINDREPLACE;
2069
2070 typedef struct _findtext {
2071   CHARRANGE chrg;
2072   LPSTR lpstrText;
2073 } FINDTEXT;
2074
2075 typedef struct _findtextex {
2076   CHARRANGE chrg;
2077   LPSTR lpstrText;
2078   CHARRANGE chrgText;
2079 } FINDTEXTEX;
2080
2081 typedef struct _FMS_GETDRIVEINFO {
2082   DWORD dwTotalSpace;
2083   DWORD dwFreeSpace;
2084   TCHAR  szPath[260];
2085   TCHAR  szVolume[14];
2086   TCHAR  szShare[128];
2087 } FMS_GETDRIVEINFO;
2088
2089 typedef struct _FMS_GETFILESEL {
2090   FILETIME ftTime;
2091   DWORD    dwSize;
2092   BYTE     bAttr;
2093   TCHAR     szName[260];
2094 } FMS_GETFILESEL;
2095
2096 typedef struct _FMS_LOAD {
2097   DWORD dwSize;
2098   TCHAR  szMenuName[MENU_TEXT_LEN];
2099   HMENU hMenu;
2100   UINT  wMenuDelta;
2101 } FMS_LOAD;
2102
2103 typedef struct _FMS_TOOLBARLOAD {
2104   DWORD        dwSize;
2105   LPEXT_BUTTON lpButtons;
2106   WORD         cButtons;
2107   WORD         cBitmaps;
2108   WORD         idBitmap;
2109   HBITMAP      hBitmap;
2110 } FMS_TOOLBARLOAD;
2111
2112
2113 typedef struct _FORM_INFO_1 {
2114   DWORD Flags;
2115   LPTSTR pName;
2116   SIZEL  Size;
2117   RECTL  ImageableArea;
2118 } FORM_INFO_1;
2119
2120 typedef struct _FORMAT_PARAMETERS {
2121   MEDIA_TYPE MediaType;
2122   DWORD StartCylinderNumber;
2123   DWORD EndCylinderNumber;
2124   DWORD StartHeadNumber;
2125   DWORD EndHeadNumber;
2126 } FORMAT_PARAMETERS ;
2127
2128 typedef struct _formatrange {
2129   HDC hdc;
2130   HDC hdcTarget;
2131   RECT rc;
2132   RECT rcPage;
2133   CHARRANGE chrg;
2134 } FORMATRANGE;
2135
2136 typedef struct tagGCP_RESULTS {
2137   DWORD  lStructSize;
2138   LPTSTR  lpOutString;
2139   UINT  *lpOrder;
2140   INT  *lpDx;
2141   INT  *lpCaretPos;
2142   LPTSTR lpClass;
2143   UINT  *lpGlyphs;
2144   UINT  nGlyphs;
2145   UINT  nMaxFit;
2146 } GCP_RESULTS, *LPGCP_RESULTS;
2147
2148
2149 typedef struct _GLYPHMETRICS {
2150   UINT  gmBlackBoxX;
2151   UINT  gmBlackBoxY;
2152   POINT gmptGlyphOrigin;
2153   short gmCellIncX;
2154   short gmCellIncY;
2155 } GLYPHMETRICS, *LPGLYPHMETRICS;
2156
2157 typedef struct tagHANDLETABLE {
2158   HGDIOBJ objectHandle[1];
2159 } HANDLETABLE, *LPHANDLETABLE;
2160
2161 typedef struct _HD_HITTESTINFO {
2162   POINT pt;
2163   UINT flags;
2164   int iItem;
2165 } HD_HITTESTINFO;
2166
2167 typedef struct _HD_ITEM {
2168   UINT    mask;
2169   int     cxy;
2170   LPTSTR   pszText;
2171   HBITMAP hbm;
2172   int     cchTextMax;
2173   int     fmt;
2174   LPARAM  lParam;
2175 } HD_ITEM;
2176
2177 typedef struct _WINDOWPOS {
2178   HWND hwnd;
2179   HWND hwndInsertAfter;
2180   int  x;
2181   int  y;
2182   int  cx;
2183   int  cy;
2184   UINT flags;
2185 } WINDOWPOS, *PWINDOWPOS, *LPWINDOWPOS;
2186
2187 typedef struct _HD_LAYOUT {
2188   RECT  * prc;
2189   WINDOWPOS  * pwpos;
2190 } HD_LAYOUT;
2191
2192 typedef struct _HD_NOTIFY {
2193   NMHDR   hdr;
2194   int     iItem;
2195   int     iButton;
2196   HD_ITEM  * pitem;
2197 } HD_NOTIFY;
2198
2199 typedef  struct  tagHELPINFO {
2200   UINT   cbSize;
2201   int    iContextType;
2202   int    iCtrlId;
2203   HANDLE hItemHandle;
2204   DWORD  dwContextId;
2205   POINT  MousePos;
2206 } HELPINFO,   *LPHELPINFO;
2207
2208 typedef struct {
2209     DWORD   mkSize;
2210     CHAR    mkKeyList;
2211     CHAR    szKeyphrase[1];
2212 } MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
2213
2214 typedef struct {
2215     DWORD   mkSize;
2216     WCHAR   mkKeyList;
2217     WCHAR   szKeyphrase[1];
2218 } MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
2219
2220 typedef struct {
2221   int   wStructSize;
2222   int   x;
2223   int   y;
2224   int   dx;
2225   int   dy;
2226   int   wMax;
2227   TCHAR rgchMember[2];
2228 } HELPWININFO;
2229
2230 typedef struct {
2231         int wStructSize;
2232         int x;
2233         int y;
2234         int dx;
2235         int dy;
2236         int wMax;
2237         CHAR rgchMember[2];
2238 } HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
2239
2240 typedef struct {
2241         int wStructSize;
2242         int x;
2243         int y;
2244         int dx;
2245         int dy;
2246         int wMax;
2247         WCHAR rgchMember[2];
2248 } HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
2249
2250
2251 typedef struct tagHIGHCONTRAST {
2252   UINT cbSize;
2253   DWORD dwFlags;
2254   LPTSTR lpszDefaultScheme;
2255 } HIGHCONTRAST,  * LPHIGHCONTRAST;
2256
2257 typedef struct tagHSZPAIR {
2258   HSZ hszSvc;
2259   HSZ hszTopic;
2260 } HSZPAIR;
2261
2262 typedef struct _ICONINFO {
2263   WINBOOL    fIcon;
2264   DWORD   xHotspot;
2265   DWORD   yHotspot;
2266   HBITMAP hbmMask;
2267   HBITMAP hbmColor;
2268 } ICONINFO, *PICONINFO;
2269
2270 typedef struct tagICONMETRICSA {
2271   UINT     cbSize;
2272   int      iHorzSpacing;
2273   int      iVertSpacing;
2274   int      iTitleWrap;
2275   LOGFONTA lfFont;
2276 } ICONMETRICSA, *LPICONMETRICSA;
2277
2278 typedef struct tagICONMETRICSW {
2279   UINT     cbSize;
2280   int      iHorzSpacing;
2281   int      iVertSpacing;
2282   int      iTitleWrap;
2283   LOGFONTW lfFont;
2284 } ICONMETRICSW, *LPICONMETRICSW;
2285
2286 #ifdef UNICODE
2287 typedef ICONMETRICSW ICONMETRICS;
2288 typedef LPICONMETRICSW LPICONMETRICS;
2289 #else
2290 typedef ICONMETRICSA ICONMETRICS;
2291 typedef LPICONMETRICSA LPICONMETRICS;
2292 #endif
2293
2294 typedef struct _IMAGEINFO {
2295   HBITMAP hbmImage;
2296   HBITMAP hbmMask;
2297   int     Unused1;
2298   int     Unused2;
2299   RECT    rcImage;
2300 } IMAGEINFO;
2301
2302 typedef struct _JOB_INFO_1 {
2303   DWORD  JobId;
2304   LPTSTR pPrinterName;
2305   LPTSTR pMachineName;
2306   LPTSTR pUserName;
2307   LPTSTR pDocument;
2308   LPTSTR pDatatype;
2309   LPTSTR pStatus;
2310   DWORD  Status;
2311   DWORD  Priority;
2312   DWORD  Position;
2313   DWORD  TotalPages;
2314   DWORD  PagesPrinted;
2315   SYSTEMTIME Submitted;
2316 } JOB_INFO_1;
2317
2318 #if 0
2319 typedef struct _JOB_INFO_2 {
2320   DWORD      JobId;
2321   LPTSTR     pPrinterName;
2322   LPTSTR     pMachineName;
2323   LPTSTR     pUserName;
2324   LPTSTR     pDocument;
2325   LPTSTR     pNotifyName;
2326   LPTSTR     pDatatype;
2327   LPTSTR     pPrintProcessor;
2328   LPTSTR     pParameters;
2329   LPTSTR     pDriverName;
2330   LPDEVMODE  pDevMode;
2331   LPTSTR     pStatus;
2332   PSECURITY_DESCRIPTOR pSecurityDescriptor;
2333   DWORD      Status;
2334   DWORD      Priority;
2335   DWORD      Position;
2336   DWORD      StartTime;
2337   DWORD      UntilTime;
2338   DWORD      TotalPages;
2339   DWORD      Size;
2340   SYSTEMTIME Submitted;
2341   DWORD      Time;
2342   DWORD      PagesPrinted ;
2343 } JOB_INFO_2;
2344 #endif
2345
2346 typedef struct tagKERNINGPAIR {
2347   WORD wFirst;
2348   WORD wSecond;
2349   int  iKernAmount;
2350 } KERNINGPAIR, *LPKERNINGPAIR;
2351
2352 typedef struct _LANA_ENUM {
2353   UCHAR length;
2354   UCHAR lana[MAX_LANA];
2355 } LANA_ENUM;
2356
2357 typedef struct _LDT_ENTRY {
2358   WORD LimitLow;
2359   WORD BaseLow;
2360   union {
2361     struct {
2362       BYTE BaseMid;
2363       BYTE Flags1;
2364       BYTE Flags2;
2365       BYTE BaseHi;
2366     } Bytes;
2367     struct {
2368       DWORD BaseMid : 8;
2369       DWORD Type : 5;
2370       DWORD Dpl : 2;
2371       DWORD Pres : 1;
2372       DWORD LimitHi : 4;
2373       DWORD Sys : 1;
2374       DWORD Reserved_0 : 1;
2375       DWORD Default_Big : 1;
2376       DWORD Granularity : 1;
2377       DWORD BaseHi : 8;
2378     } Bits;
2379   } HighWord;
2380 } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
2381
2382 typedef struct tagLOCALESIGNATURE {
2383   DWORD  lsUsb[4];
2384   DWORD  lsCsbDefault[2];
2385   DWORD  lsCsbSupported[2];
2386 } LOCALESIGNATURE;
2387
2388    #if 0
2389 typedef struct _LOCALGROUP_MEMBERS_INFO_0 {
2390   PSID  lgrmi0_sid;
2391 } LOCALGROUP_MEMBERS_INFO_0;
2392  #endif
2393
2394 typedef struct _LOCALGROUP_MEMBERS_INFO_3 {
2395   LPWSTR  lgrmi3_domainandname;
2396 } LOCALGROUP_MEMBERS_INFO_3;
2397
2398 typedef long FXPT16DOT16,  * LPFXPT16DOT16;
2399
2400
2401
2402 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
2403 typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
2404
2405 typedef struct _LV_COLUMN {
2406   UINT mask;
2407   int fmt;
2408   int cx;
2409   LPTSTR pszText;
2410   int cchTextMax;
2411   int iSubItem;
2412 } LV_COLUMN;
2413
2414 typedef struct _LV_ITEM {
2415   UINT   mask;
2416   int    iItem;
2417   int    iSubItem;
2418   UINT   state;
2419   UINT   stateMask;
2420   LPTSTR  pszText;
2421   int    cchTextMax;
2422   int    iImage;
2423   LPARAM lParam;
2424 } LV_ITEM;
2425
2426 typedef struct tagLV_DISPINFO {
2427   NMHDR   hdr;
2428   LV_ITEM item;
2429 } LV_DISPINFO;
2430
2431 typedef struct _LV_FINDINFO {
2432   UINT flags;
2433   LPCTSTR psz;
2434   LPARAM lParam;
2435   POINT pt;
2436   UINT vkDirection;
2437 } LV_FINDINFO;
2438
2439 typedef struct _LV_HITTESTINFO {
2440   POINT pt;
2441   UINT flags;
2442   int iItem;
2443 } LV_HITTESTINFO;
2444
2445 typedef struct tagLV_KEYDOWN {
2446   NMHDR hdr;
2447   WORD wVKey;
2448   UINT flags;
2449 } LV_KEYDOWN;
2450
2451 typedef struct _MAT2 {
2452   FIXED eM11;
2453   FIXED eM12;
2454   FIXED eM21;
2455   FIXED eM22;
2456 } MAT2, *LPMAT2;
2457
2458 typedef struct tagMDICREATESTRUCT {
2459   LPCTSTR szClass;
2460   LPCTSTR szTitle;
2461   HANDLE  hOwner;
2462   int     x;
2463   int     y;
2464   int     cx;
2465   int     cy;
2466   DWORD   style;
2467   LPARAM  lParam;
2468 } MDICREATESTRUCT;
2469
2470 typedef MDICREATESTRUCT *LPMDICREATESTRUCT;
2471
2472 typedef struct tagMEASUREITEMSTRUCT {
2473   UINT  CtlType;
2474   UINT  CtlID;
2475   UINT  itemID;
2476   UINT  itemWidth;
2477   UINT  itemHeight;
2478   DWORD itemData;
2479 } MEASUREITEMSTRUCT, *LPMEASUREITEMSTRUCT;
2480
2481 typedef struct _MEMORYSTATUS {
2482   DWORD dwLength;
2483   DWORD dwMemoryLoad;
2484   DWORD dwTotalPhys;
2485   DWORD dwAvailPhys;
2486   DWORD dwTotalPageFile;
2487   DWORD dwAvailPageFile;
2488   DWORD dwTotalVirtual;
2489   DWORD dwAvailVirtual;
2490 } MEMORYSTATUS, *LPMEMORYSTATUS;
2491
2492 typedef struct {
2493   WORD  wVersion;
2494   WORD  wOffset;
2495   DWORD dwHelpId;
2496 } MENUEX_TEMPLATE_HEADER;
2497
2498 typedef struct {
2499   DWORD  dwType;
2500   DWORD  dwState;
2501   UINT   uId;
2502   BYTE   bResInfo;
2503   WCHAR  szText[1];
2504   DWORD dwHelpId;
2505 } MENUEX_TEMPLATE_ITEM;
2506
2507 typedef struct tagMENUITEMINFO {
2508   UINT    cbSize;
2509   UINT    fMask;
2510   UINT    fType;
2511   UINT    fState;
2512   UINT    wID;
2513   HMENU   hSubMenu;
2514   HBITMAP hbmpChecked;
2515   HBITMAP hbmpUnchecked;
2516   DWORD   dwItemData;
2517   LPTSTR  dwTypeData;
2518   UINT    cch;
2519 } MENUITEMINFO, *LPMENUITEMINFO;
2520 typedef MENUITEMINFO CONST *LPCMENUITEMINFO;
2521
2522 typedef struct {
2523   WORD mtOption;
2524   WORD mtID;
2525   WCHAR mtString[1];
2526 } MENUITEMTEMPLATE;
2527
2528 typedef struct {
2529   WORD versionNumber;
2530   WORD offset;
2531 } MENUITEMTEMPLATEHEADER;
2532 typedef VOID MENUTEMPLATE, *LPMENUTEMPLATE;
2533
2534 typedef struct tagMETAFILEPICT {
2535 #if 0
2536   LONG      mm;
2537   LONG      xExt;
2538   LONG      yExt;
2539   HMETAFILE hMF;
2540 #else
2541   LONG      mm; // robd
2542 #endif
2543 } METAFILEPICT, *PMETAFILEPICT, *LPMETAFILEPICT;
2544
2545 typedef struct tagMETAHEADER {
2546   WORD  mtType;
2547   WORD  mtHeaderSize;
2548   WORD  mtVersion;
2549   DWORD mtSize;
2550   WORD  mtNoObjects;
2551   DWORD mtMaxRecord;
2552   WORD  mtNoParameters;
2553 } METAHEADER PACKED;
2554
2555 typedef struct tagMETARECORD {
2556   DWORD rdSize;
2557   WORD  rdFunction;
2558   WORD  rdParm[1];
2559 } METARECORD, *LPMETARECORD;
2560
2561 typedef struct tagMINIMIZEDMETRICS {
2562   UINT    cbSize;
2563   int     iWidth;
2564   int     iHorzGap;
2565   int     iVertGap;
2566   int     iArrange;
2567 }   MINIMIZEDMETRICS,   *LPMINIMIZEDMETRICS;
2568
2569 typedef struct tagMINMAXINFO {
2570   POINT ptReserved;
2571   POINT ptMaxSize;
2572   POINT ptMaxPosition;
2573   POINT ptMinTrackSize;
2574   POINT ptMaxTrackSize;
2575 } MINMAXINFO;
2576
2577 typedef struct modemdevcaps_tag {
2578   DWORD dwActualSize;
2579   DWORD dwRequiredSize;
2580   DWORD dwDevSpecificOffset;
2581   DWORD dwDevSpecificSize;
2582
2583   DWORD dwModemProviderVersion;
2584   DWORD dwModemManufacturerOffset;
2585   DWORD dwModemManufacturerSize;
2586   DWORD dwModemModelOffset;
2587   DWORD dwModemModelSize;
2588   DWORD dwModemVersionOffset;
2589   DWORD dwModemVersionSize;
2590
2591   DWORD dwDialOptions;
2592   DWORD dwCallSetupFailTimer;
2593   DWORD dwInactivityTimeout;
2594   DWORD dwSpeakerVolume;
2595   DWORD dwSpeakerMode;
2596   DWORD dwModemOptions;
2597   DWORD dwMaxDTERate;
2598   DWORD dwMaxDCERate;
2599
2600   BYTE abVariablePortion [1];
2601 } MODEMDEVCAPS, *PMODEMDEVCAPS, *LPMODEMDEVCAPS;
2602
2603 typedef struct modemsettings_tag {
2604   DWORD dwActualSize;
2605   DWORD dwRequiredSize;
2606   DWORD dwDevSpecificOffset;
2607   DWORD dwDevSpecificSize;
2608
2609   DWORD dwCallSetupFailTimer;
2610   DWORD dwInactivityTimeout;
2611   DWORD dwSpeakerVolume;
2612   DWORD dwSpeakerMode;
2613   DWORD dwPreferredModemOptions;
2614
2615   DWORD dwNegotiatedModemOptions;
2616   DWORD dwNegotiatedDCERate;
2617
2618   BYTE  abVariablePortion[1];
2619 } MODEMSETTINGS, *PMODEMSETTINGS, *LPMODEMSETTINGS;
2620
2621 typedef struct tagMONCBSTRUCT {
2622   UINT   cb;
2623   DWORD  dwTime;
2624   HANDLE hTask;
2625   DWORD  dwRet;
2626   UINT   wType;
2627   UINT   wFmt;
2628   HCONV  hConv;
2629   HSZ    hsz1;
2630   HSZ    hsz2;
2631   HDDEDATA hData;
2632   DWORD    dwData1;
2633   DWORD    dwData2;
2634   CONVCONTEXT cc;
2635   DWORD  cbData;
2636   DWORD  Data[8];
2637 } MONCBSTRUCT;
2638
2639 typedef struct tagMONCONVSTRUCT {
2640   UINT   cb;
2641   WINBOOL   fConnect;
2642   DWORD  dwTime;
2643   HANDLE hTask;
2644   HSZ    hszSvc;
2645   HSZ    hszTopic;
2646   HCONV  hConvClient;
2647   HCONV  hConvServer;
2648 } MONCONVSTRUCT;
2649
2650 typedef struct tagMONERRSTRUCT {
2651   UINT   cb;
2652   UINT   wLastError;
2653   DWORD  dwTime;
2654   HANDLE hTask;
2655 } MONERRSTRUCT;
2656
2657 typedef struct tagMONHSZSTRUCT {
2658   UINT   cb;
2659   WINBOOL   fsAction;
2660   DWORD  dwTime;
2661   HSZ    hsz;
2662   HANDLE hTask;
2663   TCHAR   str[1];
2664 } MONHSZSTRUCT;
2665
2666 typedef struct _MONITOR_INFO_1 {
2667   LPTSTR pName;
2668 } MONITOR_INFO_1;
2669
2670 typedef struct _MONITOR_INFO_2 {
2671   LPTSTR pName;
2672   LPTSTR pEnvironment ;
2673   LPTSTR pDLLName ;
2674 } MONITOR_INFO_2;
2675
2676 typedef struct tagMONLINKSTRUCT {
2677   UINT   cb;
2678   DWORD  dwTime;
2679   HANDLE hTask;
2680   WINBOOL   fEstablished;
2681   WINBOOL   fNoData;
2682   HSZ    hszSvc;
2683   HSZ    hszTopic;
2684   HSZ    hszItem;
2685   UINT   wFmt;
2686   WINBOOL   fServer;
2687   HCONV  hConvServer;
2688   HCONV  hConvClient;
2689 } MONLINKSTRUCT;
2690
2691 typedef struct tagMONMSGSTRUCT {
2692   UINT   cb;
2693   HWND   hwndTo;
2694   DWORD  dwTime;
2695   HANDLE hTask;
2696   UINT   wMsg;
2697   WPARAM wParam;
2698   LPARAM lParam;
2699   DDEML_MSG_HOOK_DATA dmhd;
2700 } MONMSGSTRUCT;
2701
2702 typedef struct tagMOUSEHOOKSTRUCT {
2703   POINT pt;
2704   HWND  hwnd;
2705   UINT  wHitTestCode;
2706   DWORD dwExtraInfo;
2707 } MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT, *LPMOUSEHOOKSTRUCT;
2708
2709 typedef struct _MOUSEKEYS {
2710   DWORD cbSize;
2711   DWORD dwFlags;
2712   DWORD iMaxSpeed;
2713   DWORD iTimeToMaxSpeed;
2714   DWORD iCtrlSpeed;
2715   DWORD dwReserved1;
2716   DWORD dwReserved2;
2717 } MOUSEKEYS;
2718
2719 typedef struct tagMSG {
2720   HWND   hwnd;
2721   UINT   message;
2722   WPARAM wParam;
2723   LPARAM lParam;
2724   DWORD  time;
2725   POINT  pt;
2726 } MSG, *LPMSG;
2727
2728 typedef void CALLBACK (*MSGBOXCALLBACK) (LPHELPINFO lpHelpInfo);
2729
2730 typedef struct {
2731   UINT      cbSize;
2732   HWND      hwndOwner;
2733   HINSTANCE hInstance;
2734   LPCSTR    lpszText;
2735   LPCSTR    lpszCaption;
2736   DWORD     dwStyle;
2737   LPCSTR    lpszIcon;
2738   DWORD     dwContextHelpId;
2739   MSGBOXCALLBACK lpfnMsgBoxCallback;
2740   DWORD     dwLanguageId;
2741 } MSGBOXPARAMS, *PMSGBOXPARAMS,   *LPMSGBOXPARAMS;
2742
2743 typedef struct _msgfilter {
2744   NMHDR nmhdr;
2745   UINT msg;
2746   WPARAM wParam;
2747   LPARAM lParam;
2748 } MSGFILTER;
2749
2750 typedef struct tagMULTIKEYHELP {
2751   DWORD  mkSize;
2752   TCHAR  mkKeylist;
2753   TCHAR  szKeyphrase[1];
2754 } MULTIKEYHELP;
2755
2756 typedef struct _NAME_BUFFER {
2757   UCHAR name[NCBNAMSZ];
2758   UCHAR name_num;
2759   UCHAR name_flags;
2760 } NAME_BUFFER;
2761
2762 typedef struct _NCB {
2763   UCHAR  ncb_command;
2764   UCHAR  ncb_retcode;
2765   UCHAR  ncb_lsn;
2766   UCHAR  ncb_num;
2767   PUCHAR ncb_buffer;
2768   WORD   ncb_length;
2769   UCHAR  ncb_callname[NCBNAMSZ];
2770   UCHAR  ncb_name[NCBNAMSZ];
2771   UCHAR  ncb_rto;
2772   UCHAR  ncb_sto;
2773   void (*ncb_post) (struct _NCB *);
2774   UCHAR  ncb_lana_num;
2775   UCHAR  ncb_cmd_cplt;
2776   UCHAR  ncb_reserve[10];
2777   HANDLE ncb_event;
2778 } NCB;
2779
2780 typedef struct _NCCALCSIZE_PARAMS {
2781   RECT        rgrc[3];
2782   PWINDOWPOS  lppos;
2783 } NCCALCSIZE_PARAMS;
2784
2785 typedef struct _NDDESHAREINFO {
2786   LONG   lRevision;
2787   LPTSTR lpszShareName;
2788   LONG   lShareType;
2789   LPTSTR lpszAppTopicList;
2790   LONG   fSharedFlag;
2791   LONG   fService;
2792   LONG   fStartAppFlag;
2793   LONG   nCmdShow;
2794   LONG   qModifyId[2];
2795   LONG   cNumItems;
2796   LPTSTR lpszItemList;
2797 }NDDESHAREINFO;
2798
2799 typedef struct _NETRESOURCE {
2800   DWORD  dwScope;
2801   DWORD  dwType;
2802   DWORD  dwDisplayType;
2803   DWORD  dwUsage;
2804   LPTSTR lpLocalName;
2805   LPTSTR lpRemoteName;
2806   LPTSTR lpComment;
2807   LPTSTR lpProvider;
2808 } NETRESOURCE, *LPNETRESOURCE;
2809
2810 typedef struct tagNEWCPLINFO {
2811   DWORD dwSize;
2812   DWORD dwFlags;
2813   DWORD dwHelpContext;
2814   LONG  lData;
2815   HICON hIcon;
2816   TCHAR  szName[32];
2817   TCHAR  szInfo[64];
2818   TCHAR  szHelpFile[128];
2819 } NEWCPLINFO;
2820
2821 typedef struct tagNEWTEXTMETRICA {
2822   LONG   tmHeight;
2823   LONG   tmAscent;
2824   LONG   tmDescent;
2825   LONG   tmInternalLeading;
2826   LONG   tmExternalLeading;
2827   LONG   tmAveCharWidth;
2828   LONG   tmMaxCharWidth;
2829   LONG   tmWeight;
2830   LONG   tmOverhang;
2831   LONG   tmDigitizedAspectX;
2832   LONG   tmDigitizedAspectY;
2833   BCHAR  tmFirstChar;
2834   BCHAR  tmLastChar;
2835   BCHAR  tmDefaultChar;
2836   BCHAR  tmBreakChar;
2837   BYTE   tmItalic;
2838   BYTE   tmUnderlined;
2839   BYTE   tmStruckOut;
2840   BYTE   tmPitchAndFamily;
2841   BYTE   tmCharSet;
2842   DWORD  ntmFlags;
2843   UINT   ntmSizeEM;
2844   UINT   ntmCellHeight;
2845   UINT   ntmAvgWidth;
2846 } NEWTEXTMETRICA;
2847
2848 typedef struct tagNEWTEXTMETRICW {
2849   LONG   tmHeight;
2850   LONG   tmAscent;
2851   LONG   tmDescent;
2852   LONG   tmInternalLeading;
2853   LONG   tmExternalLeading;
2854   LONG   tmAveCharWidth;
2855   LONG   tmMaxCharWidth;
2856   LONG   tmWeight;
2857   LONG   tmOverhang;
2858   LONG   tmDigitizedAspectX;
2859   LONG   tmDigitizedAspectY;
2860   WCHAR  tmFirstChar;
2861   WCHAR  tmLastChar;
2862   WCHAR  tmDefaultChar;
2863   WCHAR  tmBreakChar;
2864   BYTE   tmItalic;
2865   BYTE   tmUnderlined;
2866   BYTE   tmStruckOut;
2867   BYTE   tmPitchAndFamily;
2868   BYTE   tmCharSet;
2869   DWORD  ntmFlags;
2870   UINT   ntmSizeEM;
2871   UINT   ntmCellHeight;
2872   UINT   ntmAvgWidth;
2873 } NEWTEXTMETRICW;
2874
2875 #ifdef UNICODE
2876 typedef NEWTEXTMETRICA NEWTEXTMETRIC;
2877 #else
2878 typedef NEWTEXTMETRICW NEWTEXTMETRIC;
2879 #endif
2880
2881 typedef struct tagNEWTEXTMETRICEXA {
2882   NEWTEXTMETRICA ntmentm;
2883   FONTSIGNATURE  ntmeFontSignature;
2884 } NEWTEXTMETRICEXA;
2885
2886 typedef struct tagNEWTEXTMETRICEXW {
2887   NEWTEXTMETRICW ntmentm;
2888   FONTSIGNATURE  ntmeFontSignature;
2889 } NEWTEXTMETRICEXW;
2890
2891 #ifdef UNICODE
2892 typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
2893 #else
2894 typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX;
2895 #endif
2896
2897 typedef struct tagNM_LISTVIEW {
2898   NMHDR hdr;
2899   int   iItem;
2900   int   iSubItem;
2901   UINT  uNewState;
2902   UINT  uOldState;
2903   UINT  uChanged;
2904   POINT ptAction;
2905   LPARAM lParam;
2906 } NM_LISTVIEW;
2907
2908 typedef struct _TREEITEM *HTREEITEM;
2909
2910 typedef struct _TV_ITEM {
2911   UINT       mask;
2912   HTREEITEM  hItem;
2913   UINT       state;
2914   UINT       stateMask;
2915   LPTSTR     pszText;
2916   int        cchTextMax;
2917   int        iImage;
2918   int        iSelectedImage;
2919   int        cChildren;
2920   LPARAM     lParam;
2921 } TV_ITEM,   *LPTV_ITEM;
2922
2923 typedef struct _NM_TREEVIEW {
2924   NMHDR    hdr;
2925   UINT     action;
2926   TV_ITEM  itemOld;
2927   TV_ITEM  itemNew;
2928   POINT    ptDrag;
2929 } NM_TREEVIEW;
2930 typedef NM_TREEVIEW   *LPNM_TREEVIEW;
2931
2932 typedef struct _NM_UPDOWN {
2933   NMHDR    hdr;
2934   int     iPos;
2935   int  iDelta;
2936 } NM_UPDOWNW;
2937
2938 typedef struct tagNONCLIENTMETRICSA {
2939   UINT     cbSize;
2940   int      iBorderWidth;
2941   int      iScrollWidth;
2942   int      iScrollHeight;
2943   int      iCaptionWidth;
2944   int      iCaptionHeight;
2945   LOGFONTA lfCaptionFont;
2946   int      iSmCaptionWidth;
2947   int      iSmCaptionHeight;
2948   LOGFONTA lfSmCaptionFont;
2949   int      iMenuWidth;
2950   int      iMenuHeight;
2951   LOGFONTA lfMenuFont;
2952   LOGFONTA lfStatusFont;
2953   LOGFONTA lfMessageFont;
2954 } NONCLIENTMETRICSA, *LPNONCLIENTMETRICSA;
2955
2956 typedef struct tagNONCLIENTMETRICSW {
2957   UINT     cbSize;
2958   int      iBorderWidth;
2959   int      iScrollWidth;
2960   int      iScrollHeight;
2961   int      iCaptionWidth;
2962   int      iCaptionHeight;
2963   LOGFONTW lfCaptionFont;
2964   int      iSmCaptionWidth;
2965   int      iSmCaptionHeight;
2966   LOGFONTW lfSmCaptionFont;
2967   int      iMenuWidth;
2968   int      iMenuHeight;
2969   LOGFONTW lfMenuFont;
2970   LOGFONTW lfStatusFont;
2971   LOGFONTW lfMessageFont;
2972 } NONCLIENTMETRICSW, *LPNONCLIENTMETRICSW;
2973
2974 #ifdef UNICODE
2975 typedef NONCLIENTMETRICSW NONCLIENTMETRICS;
2976 typedef LPNONCLIENTMETRICSW LPNONCLIENTMETRICS;
2977 #else
2978 typedef NONCLIENTMETRICSA NONCLIENTMETRICS;
2979 typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;
2980 #endif
2981
2982 typedef struct _SERVICE_ADDRESS {
2983   DWORD   dwAddressType;
2984   DWORD   dwAddressFlags;
2985   DWORD   dwAddressLength;
2986   DWORD   dwPrincipalLength;
2987   BYTE   *lpAddress;
2988   BYTE   *lpPrincipal;
2989 } SERVICE_ADDRESS;
2990
2991 typedef struct _SERVICE_ADDRESSES {
2992   DWORD   dwAddressCount;
2993   SERVICE_ADDRESS   Addresses[1];
2994 } SERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
2995
2996 #ifndef _GUID_DEFINED
2997 #define _GUID_DEFINED
2998 typedef struct _GUID
2999 {
3000     unsigned long  Data1;
3001     unsigned short  Data2;
3002     unsigned short  Data3;
3003     unsigned char Data4[8];
3004 } GUID, *LPGUID;
3005 typedef GUID CLSID, *LPCLSID;
3006 #endif
3007
3008 typedef struct _SERVICE_INFO {
3009   LPGUID   lpServiceType;
3010   LPTSTR   lpServiceName;
3011   LPTSTR   lpComment;
3012   LPTSTR   lpLocale;
3013   DWORD    dwDisplayHint;
3014   DWORD    dwVersion;
3015   DWORD    dwTime;
3016   LPTSTR   lpMachineName;
3017   LPSERVICE_ADDRESSES lpServiceAddress;
3018   BLOB ServiceSpecificInfo;
3019 } SERVICE_INFO;
3020
3021 typedef struct _NS_SERVICE_INFO {
3022   DWORD   dwNameSpace;
3023   SERVICE_INFO ServiceInfo;
3024 } NS_SERVICE_INFO;
3025
3026 typedef struct _numberfmt {
3027   UINT      NumDigits;
3028   UINT      LeadingZero;
3029   UINT      Grouping;
3030   LPTSTR    lpDecimalSep;
3031   LPTSTR    lpThousandSep;
3032   UINT      NegativeOrder;
3033 } NUMBERFMT;
3034
3035 typedef struct _OFSTRUCT {
3036   BYTE cBytes;
3037   BYTE fFixedDisk;
3038   WORD nErrCode;
3039   WORD Reserved1;
3040   WORD Reserved2;
3041   CHAR szPathName[OFS_MAXPATHNAME];
3042 } OFSTRUCT, *LPOFSTRUCT;
3043
3044 typedef struct tagOFN {
3045   DWORD         lStructSize;
3046   HWND          hwndOwner;
3047   HINSTANCE     hInstance;
3048   LPCTSTR       lpstrFilter;
3049   LPTSTR        lpstrCustomFilter;
3050   DWORD         nMaxCustFilter;
3051   DWORD         nFilterIndex;
3052   LPTSTR        lpstrFile;
3053   DWORD         nMaxFile;
3054   LPTSTR        lpstrFileTitle;
3055   DWORD         nMaxFileTitle;
3056   LPCTSTR       lpstrInitialDir;
3057   LPCTSTR       lpstrTitle;
3058   DWORD         Flags;
3059   WORD          nFileOffset;
3060   WORD          nFileExtension;
3061   LPCTSTR       lpstrDefExt;
3062   DWORD         lCustData;
3063   LPOFNHOOKPROC lpfnHook;
3064   LPCTSTR       lpTemplateName;
3065 } OPENFILENAME, *LPOPENFILENAME;
3066
3067 typedef struct _OFNOTIFY {
3068   NMHDR          hdr;
3069   LPOPENFILENAME lpOFN;
3070   LPTSTR         pszFile;
3071 } OFNOTIFY, *LPOFNOTIFY;
3072
3073 typedef struct _OSVERSIONINFOA {
3074   DWORD dwOSVersionInfoSize;
3075   DWORD dwMajorVersion;
3076   DWORD dwMinorVersion;
3077   DWORD dwBuildNumber;
3078   DWORD dwPlatformId;
3079   CHAR szCSDVersion[ 128 ];
3080 } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
3081
3082 typedef struct _OSVERSIONINFOW {
3083   DWORD dwOSVersionInfoSize;
3084   DWORD dwMajorVersion;
3085   DWORD dwMinorVersion;
3086   DWORD dwBuildNumber;
3087   DWORD dwPlatformId;
3088   WCHAR szCSDVersion[ 128 ];
3089 } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW;
3090
3091 #ifdef UNICODE
3092 typedef OSVERSIONINFOA OSVERSIONINFO;
3093 #else
3094 typedef OSVERSIONINFOW OSVERSIONINFO;
3095 #endif
3096
3097 typedef struct _OSVERSIONINFOEXA
3098 #if defined(__cplusplus)
3099 : public OSVERSIONINFOA
3100 {
3101 #elif 0
3102 {
3103  OSVERSIONINFOA;
3104 #else
3105 {
3106  DWORD dwOSVersionInfoSize;
3107  DWORD dwMajorVersion;
3108  DWORD dwMinorVersion;
3109  DWORD dwBuildNumber;
3110  DWORD dwPlatformId;
3111  CHAR szCSDVersion[ 128 ];
3112 #endif
3113  WORD wServicePackMajor;
3114  WORD wServicePackMinor;
3115  WORD wSuiteMask;
3116  BYTE wProductType;
3117  BYTE wReserved;
3118 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
3119
3120 typedef struct _OSVERSIONINFOEXW
3121 #if defined(__cplusplus)
3122 : public OSVERSIONINFOW
3123 {
3124 #elif 0
3125 {
3126  OSVERSIONINFOW;
3127 #else
3128 {
3129  DWORD dwOSVersionInfoSize;
3130  DWORD dwMajorVersion;
3131  DWORD dwMinorVersion;
3132  DWORD dwBuildNumber;
3133  DWORD dwPlatformId;
3134  WCHAR szCSDVersion[ 128 ];
3135 #endif
3136  WORD wServicePackMajor;
3137  WORD wServicePackMinor;
3138  WORD wSuiteMask;
3139  BYTE wProductType;
3140  BYTE wReserved;
3141 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
3142
3143 #ifdef UNICODE
3144 typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
3145 #else
3146 typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
3147 #endif
3148
3149 typedef struct tagTEXTMETRICA {
3150   LONG tmHeight;
3151   LONG tmAscent;
3152   LONG tmDescent;
3153   LONG tmInternalLeading;
3154   LONG tmExternalLeading;
3155   LONG tmAveCharWidth;
3156   LONG tmMaxCharWidth;
3157   LONG tmWeight;
3158   LONG tmOverhang;
3159   LONG tmDigitizedAspectX;
3160   LONG tmDigitizedAspectY;
3161   BCHAR tmFirstChar;
3162   BCHAR tmLastChar;
3163   BCHAR tmDefaultChar;
3164   BCHAR tmBreakChar;
3165   BYTE tmItalic;
3166   BYTE tmUnderlined;
3167   BYTE tmStruckOut;
3168   BYTE tmPitchAndFamily;
3169   BYTE tmCharSet;
3170 } TEXTMETRICA, *LPTEXTMETRICA;
3171
3172 typedef struct tagTEXTMETRICW {
3173   LONG tmHeight;
3174   LONG tmAscent;
3175   LONG tmDescent;
3176   LONG tmInternalLeading;
3177   LONG tmExternalLeading;
3178   LONG tmAveCharWidth;
3179   LONG tmMaxCharWidth;
3180   LONG tmWeight;
3181   LONG tmOverhang;
3182   LONG tmDigitizedAspectX;
3183   LONG tmDigitizedAspectY;
3184   WCHAR tmFirstChar;
3185   WCHAR tmLastChar;
3186   WCHAR tmDefaultChar;
3187   BCHAR tmBreakChar;
3188   BYTE tmItalic;
3189   BYTE tmUnderlined;
3190   BYTE tmStruckOut;
3191   BYTE tmPitchAndFamily;
3192   BYTE tmCharSet;
3193 } TEXTMETRICW, *LPTEXTMETRICW;
3194
3195 #ifdef UNICODE
3196 typedef TEXTMETRICA TEXTMETRIC;
3197 typedef LPTEXTMETRICA LPTEXTMETRIC;
3198 #else
3199 typedef TEXTMETRICW TEXTMETRIC;
3200 typedef LPTEXTMETRICA LPTEXTMETRIC;
3201 #endif
3202
3203 typedef struct _OUTLINETEXTMETRICA {
3204   UINT   otmSize;
3205   TEXTMETRICA otmTextMetrics;
3206   BYTE   otmFiller;
3207   PANOSE otmPanoseNumber;
3208   UINT   otmfsSelection;
3209   UINT   otmfsType;
3210   int    otmsCharSlopeRise;
3211   int    otmsCharSlopeRun;
3212   int    otmItalicAngle;
3213   UINT   otmEMSquare;
3214   int    otmAscent;
3215   int    otmDescent;
3216   UINT   otmLineGap;
3217   UINT   otmsCapEmHeight;
3218   UINT   otmsXHeight;
3219   RECT   otmrcFontBox;
3220   int    otmMacAscent;
3221   int    otmMacDescent;
3222   UINT   otmMacLineGap;
3223   UINT   otmusMinimumPPEM;
3224   POINT  otmptSubscriptSize;
3225   POINT  otmptSubscriptOffset;
3226   POINT  otmptSuperscriptSize;
3227   POINT  otmptSuperscriptOffset;
3228   UINT   otmsStrikeoutSize;
3229   int    otmsStrikeoutPosition;
3230   int    otmsUnderscoreSize;
3231   int    otmsUnderscorePosition;
3232   PSTR   otmpFamilyName;
3233   PSTR   otmpFaceName;
3234   PSTR   otmpStyleName;
3235   PSTR   otmpFullName;
3236 } OUTLINETEXTMETRICA, *LPOUTLINETEXTMETRICA;
3237
3238 typedef struct _OUTLINETEXTMETRICW {
3239   UINT   otmSize;
3240   TEXTMETRICW otmTextMetrics;
3241   BYTE   otmFiller;
3242   PANOSE otmPanoseNumber;
3243   UINT   otmfsSelection;
3244   UINT   otmfsType;
3245   int    otmsCharSlopeRise;
3246   int    otmsCharSlopeRun;
3247   int    otmItalicAngle;
3248   UINT   otmEMSquare;
3249   int    otmAscent;
3250   int    otmDescent;
3251   UINT   otmLineGap;
3252   UINT   otmsCapEmHeight;
3253   UINT   otmsXHeight;
3254   RECT   otmrcFontBox;
3255   int    otmMacAscent;
3256   int    otmMacDescent;
3257   UINT   otmMacLineGap;
3258   UINT   otmusMinimumPPEM;
3259   POINT  otmptSubscriptSize;
3260   POINT  otmptSubscriptOffset;
3261   POINT  otmptSuperscriptSize;
3262   POINT  otmptSuperscriptOffset;
3263   UINT   otmsStrikeoutSize;
3264   int    otmsStrikeoutPosition;
3265   int    otmsUnderscoreSize;
3266   int    otmsUnderscorePosition;
3267   PSTR   otmpFamilyName;
3268   PSTR   otmpFaceName;
3269   PSTR   otmpStyleName;
3270   PSTR   otmpFullName;
3271 } OUTLINETEXTMETRICW, *LPOUTLINETEXTMETRICW;
3272
3273 #ifdef UNICODE
3274 typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
3275 typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
3276 #else
3277 typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
3278 typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
3279 #endif
3280
3281 typedef struct _OVERLAPPED {
3282   DWORD  Internal;
3283   DWORD  InternalHigh;
3284   DWORD  Offset;
3285   DWORD  OffsetHigh;
3286   HANDLE hEvent;
3287 } OVERLAPPED, *LPOVERLAPPED;
3288
3289 typedef struct tagPSD {
3290     DWORD           lStructSize;
3291     HWND            hwndOwner;
3292     HGLOBAL         hDevMode;
3293     HGLOBAL         hDevNames;
3294     DWORD           Flags;
3295     POINT           ptPaperSize;
3296     RECT            rtMinMargin;
3297     RECT            rtMargin;
3298     HINSTANCE       hInstance;
3299     LPARAM          lCustData;
3300     LPPAGESETUPHOOK lpfnPageSetupHook;
3301     LPPAGEPAINTHOOK lpfnPagePaintHook;
3302     LPCTSTR         lpPageSetupTemplateName;
3303     HGLOBAL         hPageSetupTemplate;
3304 } PAGESETUPDLG, *LPPAGESETUPDLG;
3305
3306 typedef struct tagPAINTSTRUCT {
3307   HDC  hdc;
3308   WINBOOL fErase;
3309   RECT rcPaint;
3310   WINBOOL fRestore;
3311   WINBOOL fIncUpdate;
3312   BYTE rgbReserved[32];
3313 } PAINTSTRUCT, *LPPAINTSTRUCT;
3314
3315 typedef struct _paraformat {
3316   UINT cbSize;
3317   DWORD dwMask;
3318   WORD  wNumbering;
3319   WORD  wReserved;
3320   LONG  dxStartIndent;
3321   LONG  dxRightIndent;
3322   LONG  dxOffset;
3323   WORD  wAlignment;
3324   SHORT cTabCount;
3325   LONG  rgxTabs[MAX_TAB_STOPS];
3326 } PARAFORMAT;
3327
3328 typedef struct _PERF_COUNTER_BLOCK {
3329   DWORD ByteLength;
3330 } PERF_COUNTER_BLOCK;
3331
3332 typedef struct _PERF_COUNTER_DEFINITION {
3333   DWORD  ByteLength;
3334   DWORD  CounterNameTitleIndex;
3335   LPWSTR CounterNameTitle;
3336   DWORD  CounterHelpTitleIndex;
3337   LPWSTR CounterHelpTitle;
3338   DWORD  DefaultScale;
3339   DWORD  DetailLevel;
3340   DWORD  CounterType;
3341   DWORD  CounterSize;
3342   DWORD  CounterOffset;
3343 } PERF_COUNTER_DEFINITION;
3344
3345 typedef struct _PERF_DATA_BLOCK {
3346   WCHAR         Signature[4];
3347   DWORD         LittleEndian;
3348   DWORD         Version;
3349   DWORD         Revision;
3350   DWORD         TotalByteLength;
3351   DWORD         HeaderLength;
3352   DWORD         NumObjectTypes;
3353   DWORD         DefaultObject;
3354   SYSTEMTIME    SystemTime;
3355   LARGE_INTEGER PerfTime;
3356   LARGE_INTEGER PerfFreq;
3357   LARGE_INTEGER PerfTime100nSec;
3358   DWORD         SystemNameLength;
3359   DWORD         SystemNameOffset;
3360 } PERF_DATA_BLOCK;
3361
3362 typedef struct _PERF_INSTANCE_DEFINITION {
3363   DWORD ByteLength;
3364   DWORD ParentObjectTitleIndex;
3365   DWORD ParentObjectInstance;
3366   DWORD UniqueID;
3367   DWORD NameOffset;
3368   DWORD NameLength;
3369 } PERF_INSTANCE_DEFINITION;
3370
3371 typedef struct _PERF_OBJECT_TYPE {
3372   DWORD  TotalByteLength;
3373   DWORD  DefinitionLength;
3374   DWORD  HeaderLength;
3375   DWORD  ObjectNameTitleIndex;
3376   LPWSTR ObjectNameTitle;
3377   DWORD  ObjectHelpTitleIndex;
3378   LPWSTR ObjectHelpTitle;
3379   DWORD  DetailLevel;
3380   DWORD  NumCounters;
3381   DWORD  DefaultCounter;
3382   DWORD  NumInstances;
3383   DWORD  CodePage;
3384   LARGE_INTEGER PerfTime;
3385   LARGE_INTEGER PerfFreq;
3386 } PERF_OBJECT_TYPE;
3387
3388 typedef struct _POLYTEXT {
3389   int     x;
3390   int     y;
3391   UINT    n;
3392   LPCTSTR lpstr;
3393   UINT    uiFlags;
3394   RECT    rcl;
3395   int     *pdx;
3396 } POLYTEXT, *LPPOLYTEXT;
3397
3398 typedef struct _PORT_INFO_1 {
3399   LPTSTR pName;
3400 } PORT_INFO_1;
3401
3402 typedef struct _PORT_INFO_2 {
3403   LPSTR pPortName;
3404   LPSTR pMonitorName;
3405   LPSTR pDescription;
3406   DWORD fPortType;
3407   DWORD Reserved;
3408 } PORT_INFO_2;
3409
3410 /* http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_10010678.html
3411  *
3412  * IOCTL_DISK_MEDIA_REMOVAL disables the mechanism
3413  * on a SCSI device that ejects media. This function
3414  * may or may not be supported on SCSI devices that
3415  * support removable media.
3416  *
3417  * TRUE means prevent media from being removed.
3418  * FALSE means allow media removal.
3419  */
3420 typedef struct _PREVENT_MEDIA_REMOVAL {
3421   BOOLEAN PreventMediaRemoval;
3422 } PREVENT_MEDIA_REMOVAL ;
3423
3424 typedef struct tagPD {
3425   DWORD     lStructSize;
3426   HWND      hwndOwner;
3427   HANDLE    hDevMode;
3428   HANDLE    hDevNames;
3429   HDC       hDC;
3430   DWORD     Flags;
3431   WORD      nFromPage;
3432   WORD      nToPage;
3433   WORD      nMinPage;
3434   WORD      nMaxPage;
3435   WORD      nCopies;
3436   HINSTANCE hInstance;
3437   DWORD     lCustData;
3438   LPPRINTHOOKPROC lpfnPrintHook;
3439   LPSETUPHOOKPROC lpfnSetupHook;
3440   LPCTSTR    lpPrintTemplateName;
3441   LPCTSTR    lpSetupTemplateName;
3442   HANDLE    hPrintTemplate;
3443   HANDLE    hSetupTemplate;
3444 } PRINTDLG PACKED, *LPPRINTDLG PACKED;
3445
3446 typedef struct _PRINTER_DEFAULTSA
3447 {
3448   LPTSTR      pDatatype;
3449   LPDEVMODEA   pDevMode;
3450   ACCESS_MASK DesiredAccess;
3451 } PRINTER_DEFAULTSA, *PPRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
3452
3453 typedef struct _PRINTER_DEFAULTSW
3454 {
3455   LPTSTR      pDatatype;
3456   LPDEVMODEA   pDevMode;
3457   ACCESS_MASK DesiredAccess;
3458 } PRINTER_DEFAULTSW, *PPRINTER_DEFAULTSW, *LPPRINTER_DEFAULTSW;
3459
3460 typedef struct _PRINTER_INFO_1 {
3461   DWORD  Flags;
3462   LPTSTR pDescription;
3463   LPTSTR pName;
3464   LPTSTR pComment;
3465 } PRINTER_INFO_1, *PPRINTER_INFO_1, *LPPRINTER_INFO_1;
3466
3467    #if 0
3468 typedef struct _PRINTER_INFO_2 {
3469   LPTSTR    pServerName;
3470   LPTSTR    pPrinterName;
3471   LPTSTR    pShareName;
3472   LPTSTR    pPortName;
3473   LPTSTR    pDriverName;
3474   LPTSTR    pComment;
3475   LPTSTR    pLocation;
3476   LPDEVMODE pDevMode;
3477   LPTSTR    pSepFile;
3478   LPTSTR    pPrintProcessor;
3479   LPTSTR    pDatatype;
3480   LPTSTR    pParameters;
3481   PSECURITY_DESCRIPTOR pSecurityDescriptor;
3482   DWORD     Attributes;
3483   DWORD     Priority;
3484   DWORD     DefaultPriority;
3485   DWORD     StartTime;
3486   DWORD     UntilTime;
3487   DWORD     Status;
3488   DWORD     cJobs;
3489   DWORD     AveragePPM;
3490 } PRINTER_INFO_2;
3491
3492
3493 typedef struct _PRINTER_INFO_3 {
3494   PSECURITY_DESCRIPTOR pSecurityDescriptor;
3495 } PRINTER_INFO_3;
3496  #endif
3497
3498 typedef struct _PRINTER_INFO_4 {
3499   LPTSTR  pPrinterName;
3500   LPTSTR  pServerName;
3501   DWORD  Attributes;
3502 } PRINTER_INFO_4;
3503
3504 typedef struct _PRINTER_INFO_5 {
3505   LPTSTR    pPrinterName;
3506   LPTSTR    pPortName;
3507   DWORD     Attributes;
3508   DWORD     DeviceNotSelectedTimeout;
3509   DWORD     TransmissionRetryTimeout;
3510 } PRINTER_INFO_5;
3511
3512 typedef struct _PRINTER_NOTIFY_INFO_DATA {
3513   WORD   Type;
3514   WORD   Field;
3515   DWORD  Reserved;
3516   DWORD  Id;
3517   union {
3518     DWORD  adwData[2];
3519     struct {
3520       DWORD  cbBuf;
3521       LPVOID pBuf;
3522     } Data;
3523   } NotifyData;
3524 } PRINTER_NOTIFY_INFO_DATA;
3525
3526 typedef struct _PRINTER_NOTIFY_INFO {
3527   DWORD  Version;
3528   DWORD  Flags;
3529   DWORD  Count;
3530   PRINTER_NOTIFY_INFO_DATA  aData[1];
3531 } PRINTER_NOTIFY_INFO;
3532
3533 typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
3534   WORD   Type;
3535   WORD   Reserved0;
3536   DWORD  Reserved1;
3537   DWORD  Reserved2;
3538   DWORD  Count;
3539   PWORD  pFields;
3540 } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE;
3541
3542 typedef struct _PRINTER_NOTIFY_OPTIONS {
3543   DWORD  Version;
3544   DWORD  Flags;
3545   DWORD  Count;
3546   PPRINTER_NOTIFY_OPTIONS_TYPE  pTypes;
3547 } PRINTER_NOTIFY_OPTIONS;
3548
3549 typedef struct _PRINTPROCESSOR_INFO_1 {
3550   LPTSTR pName;
3551 } PRINTPROCESSOR_INFO_1;
3552
3553
3554 typedef struct _PROCESS_HEAP_ENTRY {
3555   PVOID lpData;
3556   DWORD cbData;
3557   BYTE cbOverhead;
3558   BYTE iRegionIndex;
3559   WORD wFlags;
3560   DWORD dwCommittedSize;
3561   DWORD dwUnCommittedSize;
3562   LPVOID lpFirstBlock;
3563   LPVOID lpLastBlock;
3564   HANDLE hMem;
3565 } PROCESS_HEAPENTRY, *LPPROCESS_HEAP_ENTRY;
3566
3567 typedef struct _PROCESS_INFORMATION {
3568   HANDLE hProcess;
3569   HANDLE hThread;
3570   DWORD dwProcessId;
3571   DWORD dwThreadId;
3572 } PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
3573
3574 typedef UINT CALLBACK (*LPFNPSPCALLBACK) (HWND, UINT, LPVOID);
3575
3576 typedef struct _PROPSHEETPAGE {
3577   DWORD     dwSize;
3578   DWORD     dwFlags;
3579   HINSTANCE hInstance;
3580   union {
3581     LPCTSTR        pszTemplate;
3582     LPCDLGTEMPLATE pResource;
3583   } u1;
3584   union {
3585     HICON  hIcon;
3586     LPCTSTR pszIcon;
3587   } u2;
3588   LPCTSTR pszTitle;
3589   DLGPROC pfnDlgProc;
3590   LPARAM  lParam;
3591   LPFNPSPCALLBACK pfnCallback;
3592   UINT   * pcRefParent;
3593 } PROPSHEETPAGE,   *LPPROPSHEETPAGE;
3594 typedef const PROPSHEETPAGE   *LPCPROPSHEETPAGE;
3595
3596 typedef struct _PSP *HPROPSHEETPAGE;
3597 typedef struct _PROPSHEETHEADER {
3598   DWORD      dwSize;
3599   DWORD      dwFlags;
3600   HWND       hwndParent;
3601   HINSTANCE  hInstance;
3602   union {
3603     HICON  hIcon;
3604     LPCTSTR pszIcon;
3605   } u1;
3606   LPCTSTR     pszCaption;
3607   UINT       nPages;
3608   union {
3609     UINT  nStartPage;
3610     LPCTSTR pStartPage;
3611   } u2;
3612   union {
3613     LPCPROPSHEETPAGE    ppsp;
3614     HPROPSHEETPAGE   *phpage;
3615   } u3;
3616   PFNPROPSHEETCALLBACK pfnCallback;
3617 } PROPSHEETHEADER,   *LPPROPSHEETHEADER;
3618 typedef const PROPSHEETHEADER   *LPCPROPSHEETHEADER;
3619
3620 /* PropertySheet callbacks */
3621 typedef WINBOOL CALLBACK (*LPFNADDPROPSHEETPAGE) (HPROPSHEETPAGE, LPARAM);
3622 typedef WINBOOL CALLBACK (*LPFNADDPROPSHEETPAGES) (LPVOID,
3623                                                    LPFNADDPROPSHEETPAGE,
3624                                                    LPARAM);
3625
3626 typedef  struct _PROTOCOL_INFO {
3627   DWORD  dwServiceFlags;
3628   INT  iAddressFamily;
3629   INT  iMaxSockAddr;
3630   INT  iMinSockAddr;
3631   INT  iSocketType;
3632   INT  iProtocol;
3633   DWORD  dwMessageSize;
3634   LPTSTR  lpProtocol;
3635 } PROTOCOL_INFO;
3636
3637 typedef struct _PROVIDOR_INFO_1 {
3638   LPTSTR pName;
3639   LPTSTR pEnvironment ;
3640   LPTSTR pDLLName ;
3641 } PROVIDOR_INFO_1;
3642
3643 typedef struct _PSHNOTIFY {
3644   NMHDR hdr;
3645   LPARAM lParam;
3646 } PSHNOTIFY,   *LPPSHNOTIFY;
3647
3648 typedef struct _punctuation {
3649   UINT   iSize;
3650   LPSTR  szPunctuation;
3651 } PUNCTUATION;
3652
3653 typedef struct _QUERY_SERVICE_CONFIGA {
3654   DWORD dwServiceType;
3655   DWORD dwStartType;
3656   DWORD dwErrorControl;
3657   LPSTR lpBinaryPathName;
3658   LPSTR lpLoadOrderGroup;
3659   DWORD dwTagId;
3660   LPSTR lpDependencies;
3661   LPSTR lpServiceStartName;
3662   LPSTR lpDisplayName;
3663 } QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;
3664
3665 typedef struct _QUERY_SERVICE_CONFIGW {
3666   DWORD dwServiceType;
3667   DWORD dwStartType;
3668   DWORD dwErrorControl;
3669   LPWSTR lpBinaryPathName;
3670   LPWSTR lpLoadOrderGroup;
3671   DWORD dwTagId;
3672   LPWSTR lpDependencies;
3673   LPWSTR lpServiceStartName;
3674   LPWSTR lpDisplayName;
3675 } QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
3676
3677 #ifdef UNICODE
3678 #define QUERY_SERVICE_CONFIG QUERY_SERVICE_CONFIGW
3679 #define LPQUERY_SERVICE_CONFIG LPQUERY_SERVICE_CONFIGW
3680 #else
3681 #define QUERY_SERVICE_CONFIG QUERY_SERVICE_CONFIGA
3682 #define LPQUERY_SERVICE_CONFIG LPQUERY_SERVICE_CONFIGA
3683 #endif
3684
3685 typedef struct _QUERY_SERVICE_LOCK_STATUSA {
3686   DWORD fIsLocked;
3687   LPSTR lpLockOwner;
3688   DWORD dwLockDuration;
3689 } QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
3690
3691 typedef struct _QUERY_SERVICE_LOCK_STATUSW {
3692   DWORD fIsLocked;
3693   LPWSTR lpLockOwner;
3694   DWORD dwLockDuration;
3695 } QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
3696
3697 #ifdef UNICODE
3698 #define QUERY_SERVICE_LOCK_STATUS QUERY_SERVICE_LOCK_STATUSW
3699 #define LPQUERY_SERVICE_LOCK_STATUS LPQUERY_SERVICE_LOCK_STATUSW
3700 #else
3701 #define QUERY_SERVICE_LOCK_STATUS QUERY_SERVICE_LOCK_STATUSA
3702 #define LPQUERY_SERVICE_LOCK_STATUS LPQUERY_SERVICE_LOCK_STATUSA
3703 #endif
3704
3705 typedef  struct  _RASAMB {
3706   DWORD    dwSize;
3707   DWORD    dwError;
3708   TCHAR    szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
3709   BYTE     bLana;
3710 } RASAMB;
3711
3712 typedef struct _RASCONN {
3713   DWORD     dwSize;
3714   HRASCONN  hrasconn;
3715   TCHAR     szEntryName[RAS_MaxEntryName + 1];
3716
3717   CHAR      szDeviceType[ RAS_MaxDeviceType + 1 ];
3718   CHAR      szDeviceName[ RAS_MaxDeviceName + 1 ];
3719 } RASCONN ;
3720
3721 typedef struct _RASCONNSTATUS {
3722   DWORD         dwSize;
3723   RASCONNSTATE  rasconnstate;
3724   DWORD         dwError;
3725   TCHAR         szDeviceType[RAS_MaxDeviceType + 1];
3726   TCHAR         szDeviceName[RAS_MaxDeviceName + 1];
3727 } RASCONNSTATUS;
3728
3729 typedef  struct  _RASDIALEXTENSIONS {
3730   DWORD    dwSize;
3731   DWORD    dwfOptions;
3732   HWND    hwndParent;
3733   DWORD    reserved;
3734 } RASDIALEXTENSIONS;
3735
3736 typedef struct _RASDIALPARAMS {
3737   DWORD  dwSize;
3738   TCHAR  szEntryName[RAS_MaxEntryName + 1];
3739   TCHAR  szPhoneNumber[RAS_MaxPhoneNumber + 1];
3740   TCHAR  szCallbackNumber[RAS_MaxCallbackNumber + 1];
3741   TCHAR  szUserName[UNLEN + 1];
3742   TCHAR  szPassword[PWLEN + 1];
3743   TCHAR  szDomain[DNLEN + 1] ;
3744 } RASDIALPARAMS;
3745
3746 typedef struct _RASENTRYNAME {
3747   DWORD  dwSize;
3748   TCHAR  szEntryName[RAS_MaxEntryName + 1];
3749 }RASENTRYNAME;
3750
3751 typedef  struct  _RASPPPIP {
3752   DWORD    dwSize;
3753   DWORD    dwError;
3754   TCHAR    szIpAddress[ RAS_MaxIpAddress + 1 ];
3755 } RASPPPIP;
3756
3757 typedef  struct  _RASPPPIPX {
3758   DWORD    dwSize;
3759   DWORD    dwError;
3760   TCHAR    szIpxAddress[ RAS_MaxIpxAddress + 1 ];
3761 } RASPPPIPX;
3762
3763 typedef  struct  _RASPPPNBF {
3764   DWORD    dwSize;
3765   DWORD    dwError;
3766   DWORD    dwNetBiosError;
3767   TCHAR    szNetBiosError[ NETBIOS_NAME_LEN + 1 ];
3768   TCHAR    szWorkstationName[ NETBIOS_NAME_LEN + 1 ];
3769   BYTE     bLana;
3770 } RASPPPNBF;
3771
3772 typedef struct _RASTERIZER_STATUS {
3773   short nSize;
3774   short wFlags;
3775   short nLanguageID;
3776 } RASTERIZER_STATUS, *LPRASTERIZER_STATUS;
3777
3778 typedef struct _REASSIGN_BLOCKS {
3779   WORD   Reserved;
3780   WORD   Count;
3781   DWORD BlockNumber[1];
3782 } REASSIGN_BLOCKS ;
3783
3784 typedef struct _REMOTE_NAME_INFO {
3785   LPTSTR  lpUniversalName;
3786   LPTSTR  lpConnectionName;
3787   LPTSTR  lpRemainingPath;
3788 } REMOTE_NAME_INFO;
3789
3790 /*
3791  TODO: OLE
3792 typedef struct _reobject {
3793   DWORD  cbStruct;
3794   LONG   cp;
3795   CLSID  clsid;
3796   LPOLEOBJECT      poleobj;
3797   LPSTORAGE        pstg;
3798   LPOLECLIENTSITE  polesite;
3799   SIZEL  sizel;
3800   DWORD  dvaspect;
3801   DWORD  dwFlags;
3802   DWORD  dwUser;
3803 } REOBJECT;
3804 */
3805
3806 typedef struct _repastespecial {
3807   DWORD  dwAspect;
3808   DWORD  dwParam;
3809 } REPASTESPECIAL;
3810
3811 typedef struct _reqresize {
3812   NMHDR nmhdr;
3813   RECT rc;
3814 } REQRESIZE;
3815
3816 typedef struct _RGNDATAHEADER {
3817   DWORD dwSize;
3818   DWORD iType;
3819   DWORD nCount;
3820   DWORD nRgnSize;
3821   RECT  rcBound;
3822 } RGNDATAHEADER;
3823
3824 typedef struct _RGNDATA {
3825   RGNDATAHEADER rdh;
3826   char          Buffer[1];
3827 } RGNDATA, *PRGNDATA, *LPRGNDATA;
3828
3829 typedef struct tagSCROLLINFO {
3830   UINT cbSize;
3831   UINT fMask;
3832   int  nMin;
3833   int  nMax;
3834   UINT nPage;
3835   int  nPos;
3836   int  nTrackPos;
3837 }   SCROLLINFO, *LPSCROLLINFO;
3838 typedef SCROLLINFO const *LPCSCROLLINFO;
3839
3840
3841 typedef struct _selchange {
3842   NMHDR nmhdr;
3843   CHARRANGE chrg;
3844   WORD seltyp;
3845 } SELCHANGE;
3846
3847 typedef struct tagSERIALKEYS {
3848   DWORD cbSize;
3849   DWORD dwFlags;
3850   LPSTR lpszActivePort;
3851   LPSTR lpszPort;
3852   DWORD iBaudRate;
3853   DWORD iPortState;
3854 } SERIALKEYS,  * LPSERIALKEYS;
3855
3856 typedef struct _SERVICE_TABLE_ENTRYA {
3857   LPSTR lpServiceName;
3858   LPSERVICE_MAIN_FUNCTION lpServiceProc;
3859 } SERVICE_TABLE_ENTRYA, *LPSERVICE_TABLE_ENTRYA;
3860
3861 typedef struct _SERVICE_TABLE_ENTRYW {
3862   LPWSTR lpServiceName;
3863   LPSERVICE_MAIN_FUNCTION lpServiceProc;
3864 } SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;
3865
3866 #ifdef UNICODE
3867 #define SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYW
3868 #define LPSERVICE_TABLE_ENTRY LPSERVICE_TABLE_ENTRYW
3869 #else
3870 #define SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYA
3871 #define LPSERVICE_TABLE_ENTRY LPSERVICE_TABLE_ENTRYA
3872 #endif
3873
3874
3875 typedef struct _SERVICE_TYPE_VALUE_ABS {
3876   DWORD   dwNameSpace;
3877   DWORD   dwValueType;
3878   DWORD   dwValueSize;
3879   LPTSTR  lpValueName;
3880   PVOID   lpValue;
3881 } SERVICE_TYPE_VALUE_ABS;
3882
3883 typedef struct _SERVICE_TYPE_INFO_ABS {
3884   LPTSTR                  lpTypeName;
3885   DWORD                   dwValueCount;
3886   SERVICE_TYPE_VALUE_ABS  Values[1];
3887 } SERVICE_TYPE_INFO_ABS;
3888
3889 typedef struct _SESSION_BUFFER {
3890   UCHAR lsn;
3891   UCHAR state;
3892   UCHAR local_name[NCBNAMSZ];
3893   UCHAR remote_name[NCBNAMSZ];
3894   UCHAR rcvs_outstanding;
3895   UCHAR sends_outstanding;
3896 } SESSION_BUFFER;
3897
3898 typedef struct _SESSION_HEADER {
3899   UCHAR sess_name;
3900   UCHAR num_sess;
3901   UCHAR rcv_dg_outstanding;
3902   UCHAR rcv_any_outstanding;
3903 } SESSION_HEADER;
3904
3905 typedef enum tagSHCONTF { 
3906   SHCONTF_FOLDERS = 32,         
3907   SHCONTF_NONFOLDERS = 64,      
3908   SHCONTF_INCLUDEHIDDEN = 128,  
3909 } SHCONTF; 
3910  
3911 typedef struct _SHFILEINFO { 
3912   HICON hIcon;                   
3913   int   iIcon;                   
3914   DWORD dwAttributes;            
3915   char  szDisplayName[MAX_PATH]; 
3916   char  szTypeName[80];          
3917 } SHFILEINFO; 
3918
3919 typedef WORD FILEOP_FLAGS; 
3920 typedef struct _SHFILEOPSTRUCT { 
3921   HWND         hwnd;                  
3922   UINT         wFunc;                 
3923   LPCSTR       pFrom;                 
3924   LPCSTR       pTo;                   
3925   FILEOP_FLAGS fFlags;                
3926   WINBOOL         fAnyOperationsAborted; 
3927   LPVOID       hNameMappings;         
3928   LPCSTR       lpszProgressTitle;     
3929 } SHFILEOPSTRUCT,   *LPSHFILEOPSTRUCT; 
3930  
3931 typedef enum tagSHGDN { 
3932   SHGDN_NORMAL = 0,           
3933   SHGDN_INFOLDER = 1,         
3934   SHGDN_FORPARSING = 0x8000,  
3935 } SHGNO; 
3936  
3937 typedef struct _SHNAMEMAPPING { 
3938   LPSTR pszOldPath; 
3939   LPSTR pszNewPath; 
3940   int   cchOldPath; 
3941   int   cchNewPath; 
3942 } SHNAMEMAPPING,   *LPSHNAMEMAPPING; 
3943  
3944 typedef struct tagSOUNDSENTRY {  
3945   UINT cbSize; 
3946   DWORD dwFlags; 
3947   DWORD iFSTextEffect; 
3948   DWORD iFSTextEffectMSec; 
3949   DWORD iFSTextEffectColorBits; 
3950   DWORD iFSGrafEffect; 
3951   DWORD iFSGrafEffectMSec; 
3952   DWORD iFSGrafEffectColor; 
3953   DWORD iWindowsEffect; 
3954   DWORD iWindowsEffectMSec; 
3955   LPTSTR lpszWindowsEffectDLL; 
3956   DWORD iWindowsEffectOrdinal; 
3957 } SOUNDSENTRY, *LPSOUNDSENTRY; 
3958  
3959 typedef struct _STARTUPINFOA {
3960   DWORD   cb;
3961   LPSTR   lpReserved;
3962   LPSTR   lpDesktop;
3963   LPSTR   lpTitle;
3964   DWORD   dwX;
3965   DWORD   dwY;
3966   DWORD   dwXSize;
3967   DWORD   dwYSize;
3968   DWORD   dwXCountChars;
3969   DWORD   dwYCountChars;
3970   DWORD   dwFillAttribute;
3971   DWORD   dwFlags;
3972   WORD    wShowWindow;
3973   WORD    cbReserved2;
3974   LPBYTE  lpReserved2;
3975   HANDLE  hStdInput;
3976   HANDLE  hStdOutput;
3977   HANDLE  hStdError;
3978 } STARTUPINFOA, *LPSTARTUPINFOA;
3979
3980 typedef struct _STARTUPINFOW {
3981   DWORD   cb;
3982   LPWSTR  lpReserved;
3983   LPWSTR  lpDesktop;
3984   LPWSTR  lpTitle;
3985   DWORD   dwX;
3986   DWORD   dwY;
3987   DWORD   dwXSize;
3988   DWORD   dwYSize;
3989   DWORD   dwXCountChars;
3990   DWORD   dwYCountChars;
3991   DWORD   dwFillAttribute;
3992   DWORD   dwFlags;
3993   WORD    wShowWindow;
3994   WORD    cbReserved2;
3995   LPBYTE  lpReserved2;
3996   HANDLE  hStdInput;
3997   HANDLE  hStdOutput;
3998   HANDLE  hStdError;
3999 } STARTUPINFOW, *LPSTARTUPINFOW;
4000
4001 #ifdef UNICODE
4002 typedef STARTUPINFOW STARTUPINFO;
4003 typedef LPSTARTUPINFOW LPSTARTUPINFO;
4004 #else
4005 typedef STARTUPINFOA STARTUPINFO;
4006 typedef LPSTARTUPINFOA LPSTARTUPINFO;
4007 #endif /* UNICODE */
4008
4009 typedef struct tagSTICKYKEYS {
4010   DWORD cbSize;
4011   DWORD dwFlags;
4012 } STICKYKEYS, *LPSTICKYKEYS;
4013
4014 typedef struct _STRRET {
4015   UINT uType;
4016   union
4017     {
4018       LPWSTR pOleStr;
4019       UINT   uOffset;
4020       char   cStr[MAX_PATH];
4021     } DUMMYUNIONNAME;
4022 } STRRET, *LPSTRRET;
4023
4024 typedef struct _tagSTYLEBUF {
4025   DWORD  dwStyle;
4026   CHAR  szDescription[32];
4027 } STYLEBUF, *LPSTYLEBUF;
4028
4029 typedef struct tagSTYLESTRUCT {
4030   DWORD styleOld;
4031   DWORD styleNew;
4032 } STYLESTRUCT, * LPSTYLESTRUCT;
4033
4034 typedef struct _ACCESS_ALLOWED_ACE {
4035  ACE_HEADER Header;
4036  ACCESS_MASK Mask;
4037  DWORD SidStart;
4038 } ACCESS_ALLOWED_ACE;
4039
4040 typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE;
4041
4042 typedef struct _ACCESS_DENIED_ACE {
4043  ACE_HEADER Header;
4044  ACCESS_MASK Mask;
4045  DWORD SidStart;
4046 } ACCESS_DENIED_ACE;
4047 typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE;
4048
4049 typedef struct _SYSTEM_AUDIT_ACE {
4050  ACE_HEADER Header;
4051  ACCESS_MASK Mask;
4052  DWORD SidStart;
4053 } SYSTEM_AUDIT_ACE;
4054 typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
4055
4056 typedef struct _SYSTEM_ALARM_ACE {
4057  ACE_HEADER Header;
4058  ACCESS_MASK Mask;
4059  DWORD SidStart;
4060 } SYSTEM_ALARM_ACE;
4061 typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE;
4062
4063 typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
4064  ACE_HEADER Header;
4065  ACCESS_MASK Mask;
4066  DWORD Flags;
4067  GUID ObjectType;
4068  GUID InheritedObjectType;
4069  DWORD SidStart;
4070 } ACCESS_ALLOWED_OBJECT_ACE, *PACCESS_ALLOWED_OBJECT_ACE;
4071
4072 typedef struct _ACCESS_DENIED_OBJECT_ACE {
4073  ACE_HEADER Header;
4074  ACCESS_MASK Mask;
4075  DWORD Flags;
4076  GUID ObjectType;
4077  GUID InheritedObjectType;
4078  DWORD SidStart;
4079 } ACCESS_DENIED_OBJECT_ACE, *PACCESS_DENIED_OBJECT_ACE;
4080
4081 typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
4082  ACE_HEADER Header;
4083  ACCESS_MASK Mask;
4084  DWORD Flags;
4085  GUID ObjectType;
4086  GUID InheritedObjectType;
4087  DWORD SidStart;
4088 } SYSTEM_AUDIT_OBJECT_ACE, *PSYSTEM_AUDIT_OBJECT_ACE;
4089
4090 typedef struct _SYSTEM_ALARM_OBJECT_ACE {
4091  ACE_HEADER Header;
4092  ACCESS_MASK Mask;
4093  DWORD Flags;
4094  GUID ObjectType;
4095  GUID InheritedObjectType;
4096  DWORD SidStart;
4097 } SYSTEM_ALARM_OBJECT_ACE, *PSYSTEM_ALARM_OBJECT_ACE;
4098
4099 typedef struct _SYSTEM_INFO
4100 {
4101   union
4102     {
4103       DWORD dwOemId;
4104       struct
4105         {
4106           WORD wProcessorArchitecture;
4107           WORD wReserved;
4108         }
4109       s;
4110     }
4111   u;
4112   DWORD  dwPageSize;
4113   LPVOID lpMinimumApplicationAddress;
4114   LPVOID lpMaximumApplicationAddress;
4115   DWORD  dwActiveProcessorMask;
4116   DWORD  dwNumberOfProcessors;
4117   DWORD  dwProcessorType;
4118   DWORD  dwAllocationGranularity;
4119   WORD  wProcessorLevel;
4120   WORD  wProcessorRevision;
4121 } SYSTEM_INFO, *LPSYSTEM_INFO;
4122
4123 typedef struct _SYSTEM_POWER_STATUS {
4124   BYTE ACLineStatus;
4125   BYTE  BatteryFlag;
4126   BYTE  BatteryLifePercent;
4127   BYTE  Reserved1;
4128   DWORD  BatteryLifeTime;
4129   DWORD  BatteryFullLifeTime;
4130 } SYSTEM_POWER_STATUS;
4131 typedef SYSTEM_POWER_STATUS *LPSYSTEM_POWER_STATUS;
4132
4133 typedef struct _TAPE_ERASE {
4134   ULONG Type;
4135 } TAPE_ERASE;
4136
4137 typedef struct _TAPE_GET_DRIVE_PARAMETERS {
4138   BOOLEAN ECC;
4139   BOOLEAN Compression;
4140   BOOLEAN DataPadding;
4141   BOOLEAN ReportSetmarks;
4142   ULONG   DefaultBlockSize;
4143   ULONG   MaximumBlockSize;
4144   ULONG   MinimumBlockSize;
4145   ULONG   MaximumPartitionCount;
4146   ULONG   FeaturesLow;
4147   ULONG   FeaturesHigh;
4148   ULONG   EOTWarningZoneSize;
4149 } TAPE_GET_DRIVE_PARAMETERS;
4150
4151 typedef struct _TAPE_GET_MEDIA_PARAMETERS {
4152   LARGE_INTEGER   Capacity;
4153   LARGE_INTEGER   Remaining;
4154   DWORD   BlockSize;
4155   DWORD   PartitionCount;
4156   BOOLEAN WriteProtected;
4157 } TAPE_GET_MEDIA_PARAMETERS;
4158
4159 typedef struct _TAPE_GET_POSITION {
4160   ULONG Type;
4161   ULONG Partition;
4162   ULONG OffsetLow;
4163   ULONG OffsetHigh;
4164 } TAPE_GET_POSITION;
4165
4166 typedef struct _TAPE_PREPARE {
4167   ULONG Operation;
4168 } TAPE_PREPARE;
4169
4170 typedef struct _TAPE_SET_DRIVE_PARAMETERS {
4171   BOOLEAN ECC;
4172   BOOLEAN Compression;
4173   BOOLEAN DataPadding;
4174   BOOLEAN ReportSetmarks;
4175   ULONG   EOTWarningZoneSize;
4176 } TAPE_SET_DRIVE_PARAMETERS;
4177
4178 typedef struct _TAPE_SET_MEDIA_PARAMETERS {
4179   ULONG BlockSize;
4180 } TAPE_SET_MEDIA_PARAMETERS;
4181
4182 typedef struct _TAPE_SET_POSITION {
4183   ULONG Method;
4184   ULONG Partition;
4185   ULONG OffsetLow;
4186   ULONG OffsetHigh;
4187 } TAPE_SET_POSITION;
4188
4189 typedef struct _TAPE_WRITE_MARKS {
4190   ULONG Type;
4191   ULONG Count;
4192 } TAPE_WRITE_MARKS;
4193
4194 typedef struct {
4195   HINSTANCE hInst;
4196   UINT nID;
4197 } TBADDBITMAP, *LPTBADDBITMAP;
4198
4199 typedef struct _TBBUTTON {
4200   int iBitmap;
4201   int idCommand;
4202   BYTE fsState;
4203   BYTE fsStyle;
4204   DWORD dwData;
4205   int iString;
4206 } TBBUTTON,  * PTBBUTTON,  * LPTBBUTTON;
4207 typedef const TBBUTTON  * LPCTBBUTTON;
4208
4209 typedef struct {
4210   NMHDR hdr;
4211   int iItem;
4212   TBBUTTON tbButton;
4213   int cchText;
4214   LPTSTR pszText;
4215 } TBNOTIFY,  *LPTBNOTIFY;
4216
4217 typedef struct {
4218   HKEY hkr;
4219   LPCTSTR pszSubKey;
4220   LPCTSTR pszValueName;
4221 } TBSAVEPARAMS;
4222
4223 typedef struct _TC_HITTESTINFO {
4224   POINT pt;
4225   UINT  flags;
4226 } TC_HITTESTINFO;
4227
4228 typedef struct _TC_ITEM {
4229   UINT mask;
4230   UINT lpReserved1;
4231   UINT lpReserved2;
4232   LPTSTR pszText;
4233   int cchTextMax;
4234   int iImage;
4235   LPARAM lParam;
4236 } TC_ITEM;
4237
4238 typedef struct _TC_ITEMHEADER {
4239   UINT mask;
4240   UINT lpReserved1;
4241   UINT lpReserved2;
4242   LPTSTR pszText;
4243   int cchTextMax;
4244   int iImage;
4245 } TC_ITEMHEADER;
4246
4247 typedef struct _TC_KEYDOWN {
4248   NMHDR hdr;
4249   WORD wVKey;
4250   UINT flags;
4251 } TC_KEYDOWN;
4252
4253 typedef struct _textrange {
4254   CHARRANGE chrg;
4255   LPSTR lpstrText;
4256 } TEXTRANGE;
4257
4258 typedef struct tagTOGGLEKEYS {
4259   DWORD cbSize;
4260   DWORD dwFlags;
4261 } TOGGLEKEYS;
4262
4263 typedef struct {
4264   UINT      cbSize;
4265   UINT      uFlags;
4266   HWND      hwnd;
4267   UINT      uId;
4268   RECT      rect;
4269   HINSTANCE hinst;
4270   LPTSTR     lpszText;
4271 } TOOLINFO, *PTOOLINFO, *LPTOOLINFO;
4272
4273 typedef struct {
4274   NMHDR     hdr;
4275   LPTSTR    lpszText;
4276   char      szText[80];
4277   HINSTANCE hinst;
4278   UINT      uFlags;
4279 } TOOLTIPTEXT,   *LPTOOLTIPTEXT;
4280
4281 typedef struct tagTPMPARAMS {
4282   UINT cbSize;
4283   RECT rcExclude;
4284 } TPMPARAMS,   *LPTPMPARAMS;
4285
4286 #if 0 // RobD - typedef removed due to conflict with mingw headers
4287 typedef struct _TRANSMIT_FILE_BUFFERS {
4288   PVOID Head;
4289   DWORD HeadLength;
4290   PVOID Tail;
4291   DWORD TailLength;
4292 } TRANSMIT_FILE_BUFFERS;
4293 #endif
4294
4295 typedef struct _TT_HITTESTINFO {
4296   HWND hwnd;
4297   POINT pt;
4298   TOOLINFO ti;
4299 } TTHITTESTINFO,   * LPHITTESTINFO;
4300
4301 typedef struct tagTTPOLYCURVE {
4302   WORD    wType;
4303   WORD    cpfx;
4304   POINTFX apfx[1];
4305 } TTPOLYCURVE,  * LPTTPOLYCURVE;
4306
4307 typedef struct _TTPOLYGONHEADER {
4308   DWORD   cb;
4309   DWORD   dwType;
4310   POINTFX pfxStart;
4311 } TTPOLYGONHEADER,  * LPTTPOLYGONHEADER;
4312
4313 typedef struct _TV_DISPINFO {
4314   NMHDR   hdr;
4315   TV_ITEM item;
4316 } TV_DISPINFO;
4317
4318 typedef struct _TVHITTESTINFO {
4319   POINT     pt;
4320   UINT      flags;
4321   HTREEITEM hItem;
4322 } TV_HITTESTINFO,   *LPTV_HITTESTINFO;
4323
4324 typedef struct _TV_INSERTSTRUCT {
4325   HTREEITEM hParent;
4326   HTREEITEM hInsertAfter;
4327   TV_ITEM   item;
4328 } TV_INSERTSTRUCT,   *LPTV_INSERTSTRUCT;
4329
4330 typedef struct _TV_KEYDOWN {
4331   NMHDR hdr;
4332   WORD  wVKey;
4333   UINT  flags;
4334 } TV_KEYDOWN;
4335
4336 typedef struct _TV_SORTCB {
4337   HTREEITEM    hParent;
4338   PFNTVCOMPARE lpfnCompare;
4339   LPARAM       lParam;
4340 } TV_SORTCB,   *LPTV_SORTCB;
4341
4342 typedef struct {
4343   UINT nSec;
4344   UINT nInc;
4345 } UDACCEL;
4346
4347 typedef struct _UNIVERSAL_NAME_INFO {
4348   LPTSTR  lpUniversalName;
4349 } UNIVERSAL_NAME_INFO;
4350
4351 typedef struct tagUSEROBJECTFLAGS {
4352   WINBOOL fInherit;
4353   WINBOOL fReserved;
4354   DWORD dwFlags;
4355 } USEROBJECTFLAGS;
4356
4357 typedef struct _VERIFY_INFORMATION {
4358   LARGE_INTEGER  StartingOffset;
4359   DWORD  Length;
4360 } VERIFY_INFORMATION ;
4361
4362 typedef struct _VS_FIXEDFILEINFO {
4363   DWORD dwSignature;
4364   DWORD dwStrucVersion;
4365   DWORD dwFileVersionMS;
4366   DWORD dwFileVersionLS;
4367   DWORD dwProductVersionMS;
4368   DWORD dwProductVersionLS;
4369   DWORD dwFileFlagsMask;
4370   DWORD dwFileFlags;
4371   DWORD dwFileOS;
4372   DWORD dwFileType;
4373   DWORD dwFileSubtype;
4374   DWORD dwFileDateMS;
4375   DWORD dwFileDateLS;
4376 } VS_FIXEDFILEINFO;
4377
4378 typedef struct _WIN32_FIND_DATAA {
4379   DWORD    dwFileAttributes;
4380   FILETIME ftCreationTime;
4381   FILETIME ftLastAccessTime;
4382   FILETIME ftLastWriteTime;
4383   DWORD    nFileSizeHigh;
4384   DWORD    nFileSizeLow;
4385   DWORD    dwReserved0;
4386   DWORD    dwReserved1;
4387   CHAR     cFileName[ MAX_PATH ];
4388   CHAR     cAlternateFileName[ 14 ];
4389 } WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA, *PWIN32_FIND_DATAA;
4390
4391 typedef struct _WIN32_FIND_DATAW {
4392   DWORD dwFileAttributes;
4393   FILETIME ftCreationTime;
4394   FILETIME ftLastAccessTime;
4395   FILETIME ftLastWriteTime;
4396   DWORD    nFileSizeHigh;
4397   DWORD    nFileSizeLow;
4398   DWORD    dwReserved0;
4399   DWORD    dwReserved1;
4400   WCHAR    cFileName[ MAX_PATH ];
4401   WCHAR    cAlternateFileName[ 14 ];
4402 } WIN32_FIND_DATAW, *LPWIN32_FIND_DATAW, *PWIN32_FIND_DATAW;
4403
4404 #ifdef UNICODE
4405 #define WIN32_FIND_DATA WIN32_FIND_DATAW
4406 #define PWIN32_FIND_DATA PWIN32_FIND_DATAW
4407 #define LPWIN32_FIND_DATA LPWIN32_FIND_DATAW
4408 #else
4409 #define WIN32_FIND_DATA WIN32_FIND_DATAA
4410 #define PWIN32_FIND_DATA PWIN32_FIND_DATAA
4411 #define LPWIN32_FIND_DATA LPWIN32_FIND_DATAA
4412 #endif
4413
4414 typedef struct _WIN32_STREAM_ID {
4415   DWORD dwStreamId;
4416   DWORD dwStreamAttributes;
4417   LARGE_INTEGER Size;
4418   DWORD dwStreamNameSize;
4419   WCHAR *cStreamName;
4420 } WIN32_STREAM_ID;
4421
4422 typedef struct _WINDOWPLACEMENT {
4423   UINT  length;
4424   UINT  flags;
4425   UINT  showCmd;
4426   POINT ptMinPosition;
4427   POINT ptMaxPosition;
4428   RECT  rcNormalPosition;
4429 } WINDOWPLACEMENT;
4430
4431 typedef struct _WNDCLASS {
4432   UINT    style;
4433   WNDPROC lpfnWndProc;
4434   int     cbClsExtra;
4435   int     cbWndExtra;
4436   HANDLE  hInstance;
4437   HICON   hIcon;
4438   HCURSOR hCursor;
4439   HBRUSH  hbrBackground;
4440   LPCTSTR lpszMenuName;
4441   LPCTSTR lpszClassName;
4442 } WNDCLASS, *LPWNDCLASS;
4443
4444 typedef struct _WNDCLASSEX {
4445   UINT    cbSize;
4446   UINT    style;
4447   WNDPROC lpfnWndProc;
4448   int     cbClsExtra;
4449   int     cbWndExtra;
4450   HANDLE  hInstance;
4451   HICON   hIcon;
4452   HCURSOR hCursor;
4453   HBRUSH  hbrBackground;
4454   LPCTSTR lpszMenuName;
4455   LPCTSTR lpszClassName;
4456   HICON   hIconSm;
4457 } WNDCLASSEX, *LPWNDCLASSEX;
4458
4459 typedef struct _CONNECTDLGSTRUCT {
4460   DWORD cbStructure;
4461   HWND hwndOwner;
4462   LPNETRESOURCE lpConnRes;
4463   DWORD dwFlags;
4464   DWORD dwDevNum;
4465 } CONNECTDLGSTRUCT, *LPCONNECTDLGSTRUCT;
4466
4467 typedef struct _DISCDLGSTRUCT {
4468   DWORD           cbStructure;
4469   HWND            hwndOwner;
4470   LPTSTR           lpLocalName;
4471   LPTSTR           lpRemoteName;
4472   DWORD           dwFlags;
4473 } DISCDLGSTRUCT, *LPDISCDLGSTRUCT;
4474
4475 typedef struct _NETINFOSTRUCT{
4476     DWORD cbStructure;
4477     DWORD dwProviderVersion;
4478     DWORD dwStatus;
4479     DWORD dwCharacteristics;
4480     DWORD dwHandle;
4481     WORD  wNetType;
4482     DWORD dwPrinters;
4483     DWORD dwDrives;
4484 } NETINFOSTRUCT, *LPNETINFOSTRUCT;
4485
4486 typedef struct _NETCONNECTINFOSTRUCT{
4487   DWORD cbStructure;
4488   DWORD dwFlags;
4489   DWORD dwSpeed;
4490   DWORD dwDelay;
4491   DWORD dwOptDataSize;
4492 } NETCONNECTINFOSTRUCT, *LPNETCONNECTINFOSTRUCT;
4493
4494 typedef int CALLBACK (*ENUMMETAFILEPROC) (HDC, HANDLETABLE,
4495                                           METARECORD, int, LPARAM);
4496 typedef int CALLBACK (*ENHMETAFILEPROC) (HDC, HANDLETABLE,
4497                                          ENHMETARECORD, int, LPARAM);
4498
4499 typedef int CALLBACK (*ENUMFONTSPROCA) (LPLOGFONTA, LPTEXTMETRICA, DWORD, LPARAM);
4500 typedef int CALLBACK (*ENUMFONTSPROCW) (LPLOGFONTW, LPTEXTMETRICW, DWORD, LPARAM);
4501 #ifdef UNICODE
4502 typedef ENUMFONTSPROCW ENUMFONTSPROC;
4503 #else
4504 typedef ENUMFONTSPROCA ENUMFONTSPROC;
4505 #endif
4506 typedef int CALLBACK (*FONTENUMPROCA) (ENUMLOGFONTA *, NEWTEXTMETRICA *,
4507                                        int, LPARAM);
4508 typedef int CALLBACK (*FONTENUMPROCW) (ENUMLOGFONTW *, NEWTEXTMETRICW *,
4509                                        int, LPARAM);
4510 #ifdef UNICODE
4511 typedef FONTENUMPROCW FONTENUMPROC;
4512 #else
4513 typedef FONTENUMPROCA FONTENUMPROC;
4514 #endif
4515 typedef int CALLBACK (*FONTENUMEXPROCA) (ENUMLOGFONTEXA *, NEWTEXTMETRICEXA *,
4516                                          int, LPARAM);
4517 typedef int CALLBACK (*FONTENUMEXPROCW) (ENUMLOGFONTEXW *, NEWTEXTMETRICEXW *,
4518                                          int, LPARAM);
4519 #ifdef UNICODE
4520 typedef FONTENUMEXPROCW FONTENUMEXPROC;
4521 #else
4522 typedef FONTENUMEXPROCA FONTENUMEXPROC;
4523 #endif
4524
4525 typedef VOID CALLBACK (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD,
4526                                                           LPOVERLAPPED);
4527
4528 /*
4529   Structures for the extensions to OpenGL
4530   */
4531 typedef struct _POINTFLOAT
4532 {
4533   FLOAT   x;
4534   FLOAT   y;
4535 } POINTFLOAT, *PPOINTFLOAT;
4536
4537 typedef struct _GLYPHMETRICSFLOAT
4538 {
4539   FLOAT       gmfBlackBoxX;
4540   FLOAT       gmfBlackBoxY;
4541   POINTFLOAT  gmfptGlyphOrigin;
4542   FLOAT       gmfCellIncX;
4543   FLOAT       gmfCellIncY;
4544 } GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
4545
4546 typedef struct tagLAYERPLANEDESCRIPTOR
4547 {
4548   WORD  nSize;
4549   WORD  nVersion;
4550   DWORD dwFlags;
4551   BYTE  iPixelType;
4552   BYTE  cColorBits;
4553   BYTE  cRedBits;
4554   BYTE  cRedShift;
4555   BYTE  cGreenBits;
4556   BYTE  cGreenShift;
4557   BYTE  cBlueBits;
4558   BYTE  cBlueShift;
4559   BYTE  cAlphaBits;
4560   BYTE  cAlphaShift;
4561   BYTE  cAccumBits;
4562   BYTE  cAccumRedBits;
4563   BYTE  cAccumGreenBits;
4564   BYTE  cAccumBlueBits;
4565   BYTE  cAccumAlphaBits;
4566   BYTE  cDepthBits;
4567   BYTE  cStencilBits;
4568   BYTE  cAuxBuffers;
4569   BYTE  iLayerPlane;
4570   BYTE  bReserved;
4571   COLORREF crTransparent;
4572 } LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
4573
4574 typedef struct tagPIXELFORMATDESCRIPTOR
4575 {
4576   WORD  nSize;
4577   WORD  nVersion;
4578   DWORD dwFlags;
4579   BYTE  iPixelType;
4580   BYTE  cColorBits;
4581   BYTE  cRedBits;
4582   BYTE  cRedShift;
4583   BYTE  cGreenBits;
4584   BYTE  cGreenShift;
4585   BYTE  cBlueBits;
4586   BYTE  cBlueShift;
4587   BYTE  cAlphaBits;
4588   BYTE  cAlphaShift;
4589   BYTE  cAccumBits;
4590   BYTE  cAccumRedBits;
4591   BYTE  cAccumGreenBits;
4592   BYTE  cAccumBlueBits;
4593   BYTE  cAccumAlphaBits;
4594   BYTE  cDepthBits;
4595   BYTE  cStencilBits;
4596   BYTE  cAuxBuffers;
4597   BYTE  iLayerType;
4598   BYTE  bReserved;
4599   DWORD dwLayerMask;
4600   DWORD dwVisibleMask;
4601   DWORD dwDamageMask;
4602 } PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
4603
4604 typedef struct
4605 {
4606   LPWSTR    usri2_name;
4607   LPWSTR    usri2_password;
4608   DWORD     usri2_password_age;
4609   DWORD     usri2_priv;
4610   LPWSTR    usri2_home_dir;
4611   LPWSTR    usri2_comment;
4612   DWORD     usri2_flags;
4613   LPWSTR    usri2_script_path;
4614   DWORD     usri2_auth_flags;
4615   LPWSTR    usri2_full_name;
4616   LPWSTR    usri2_usr_comment;
4617   LPWSTR    usri2_parms;
4618   LPWSTR    usri2_workstations;
4619   DWORD     usri2_last_logon;
4620   DWORD     usri2_last_logoff;
4621   DWORD     usri2_acct_expires;
4622   DWORD     usri2_max_storage;
4623   DWORD     usri2_units_per_week;
4624   PBYTE     usri2_logon_hours;
4625   DWORD     usri2_bad_pw_count;
4626   DWORD     usri2_num_logons;
4627   LPWSTR    usri2_logon_server;
4628   DWORD     usri2_country_code;
4629   DWORD     usri2_code_page;
4630 } USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2;
4631
4632 typedef struct
4633 {
4634   LPWSTR    usri0_name;
4635 } USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0;
4636
4637 typedef struct
4638 {
4639   LPWSTR    usri3_name;
4640   LPWSTR    usri3_password;
4641   DWORD     usri3_password_age;
4642   DWORD     usri3_priv;
4643   LPWSTR    usri3_home_dir;
4644   LPWSTR    usri3_comment;
4645   DWORD     usri3_flags;
4646   LPWSTR    usri3_script_path;
4647   DWORD     usri3_auth_flags;
4648   LPWSTR    usri3_full_name;
4649   LPWSTR    usri3_usr_comment;
4650   LPWSTR    usri3_parms;
4651   LPWSTR    usri3_workstations;
4652   DWORD     usri3_last_logon;
4653   DWORD     usri3_last_logoff;
4654   DWORD     usri3_acct_expires;
4655   DWORD     usri3_max_storage;
4656   DWORD     usri3_units_per_week;
4657   PBYTE     usri3_logon_hours;
4658   DWORD     usri3_bad_pw_count;
4659   DWORD     usri3_num_logons;
4660   LPWSTR    usri3_logon_server;
4661   DWORD     usri3_country_code;
4662   DWORD     usri3_code_page;
4663   DWORD     usri3_user_id;
4664   DWORD     usri3_primary_group_id;
4665   LPWSTR    usri3_profile;
4666   LPWSTR    usri3_home_dir_drive;
4667   DWORD     usri3_password_expired;
4668 } USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
4669
4670 typedef struct
4671 {
4672   LPWSTR   grpi2_name;
4673   LPWSTR   grpi2_comment;
4674   DWORD    grpi2_group_id;
4675   DWORD    grpi2_attributes;
4676 } GROUP_INFO_2, *PGROUP_INFO_2;
4677
4678 typedef struct
4679 {
4680   LPWSTR   lgrpi0_name;
4681 } LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0;
4682
4683 /* PE executable header.  */
4684 /* Windows.h now includes pe.h to avoid conflicts! */
4685
4686 typedef struct _DISPLAY_DEVICE {
4687   DWORD cb;
4688   WCHAR DeviceName[32];
4689   WCHAR DeviceString[128];
4690   DWORD StateFlags;
4691   WCHAR DeviceID[128];
4692   WCHAR DeviceKey[128];
4693 } DISPLAY_DEVICE, *PDISPLAY_DEVICE;
4694
4695 typedef HANDLE HMONITOR;
4696 typedef HANDLE HDEVNOTIFY;
4697
4698 typedef BOOL CALLBACK (*MonitorEnumProc)(
4699   HMONITOR hMonitor,
4700   HDC hdcMonitor,
4701   LPRECT lprcMonitor,
4702   LPARAM dwData);
4703
4704 typedef MonitorEnumProc MONITORENUMPROC;
4705
4706 typedef struct {
4707   UINT  cbSize;
4708   HWND  hwnd;
4709   DWORD dwFlags;
4710   UINT  uCount;
4711   DWORD dwTimeout;
4712 } FLASHWINFO, *PFLASHWINFO;
4713
4714 typedef struct tagALTTABINFO {
4715   DWORD cbSize;
4716   int   cItems;
4717   int   cColumns;
4718   int   cRows;
4719   int   iColFocus;
4720   int   iRowFocus;
4721   int   cxItem;
4722   int   cyItem;
4723   POINT ptStart;
4724 } ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
4725
4726 typedef struct tagCOMBOBOXINFO {
4727   DWORD cbSize;
4728   RECT  rcItem;
4729   RECT  rcButton;
4730   DWORD stateButton;
4731   HWND  hwndCombo;
4732   HWND  hwndItem;
4733   HWND  hwndList;
4734 } COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
4735
4736 typedef struct tagCURSORINFO {
4737   DWORD   cbSize;
4738   DWORD   flags;
4739   HCURSOR hCursor;
4740   POINT   ptScreenPos;
4741 } CURSORINFO, *PCURSORINFO, *LPCURSORINFO;
4742
4743 typedef struct tagGUITHREADINFO {
4744   DWORD   cbSize;
4745   DWORD   flags;
4746   HWND    hwndActive;
4747   HWND    hwndFocus;
4748   HWND    hwndCapture;
4749   HWND    hwndMenuOwner;
4750   HWND    hwndMoveSize;
4751   HWND    hwndCaret;
4752   RECT    rcCaret;
4753 } GUITHREADINFO, *PGUITHREADINFO, *LPGUITHREADINFO;
4754
4755 typedef struct tagLASTINPUTINFO {
4756   UINT cbSize;
4757   DWORD dwTime;
4758 } LASTINPUTINFO, *PLASTINPUTINFO;
4759
4760 typedef struct tagMENUBARINFO {
4761   DWORD cbSize;
4762   RECT  rcBar;
4763   HMENU hMenu;
4764   HWND  hwndMenu;
4765   BOOL  fBarFocused:1;
4766   BOOL  fFocused:1;
4767 } MENUBARINFO, *PMENUBARINFO;
4768
4769 typedef struct tagMENUINFO {
4770   DWORD   cbSize;
4771   DWORD   fMask;
4772   DWORD   dwStyle;
4773   UINT    cyMax;
4774   HBRUSH  hbrBack;
4775   DWORD   dwContextHelpID;
4776   ULONG_PTR  dwMenuData;
4777 } MENUINFO, FAR *LPMENUINFO;
4778 typedef MENUINFO CONST FAR *LPCMENUINFO;
4779
4780 typedef struct tagMONITORINFO {
4781   DWORD cbSize;
4782   RECT rcMonitor;
4783   RECT rcWork;
4784   DWORD dwFlags;
4785 } MONITORINFO, *LPMONITORINFO;
4786
4787 typedef struct tagMOUSEMOVEPOINT {
4788   int       x;
4789   int       y;
4790   DWORD     time;
4791   ULONG_PTR dwExtraInfo;
4792 } MOUSEMOVEPOINT, *PMOUSEMOVEPOINT, *LPMOUSEMOVEPOINT;
4793
4794 #define CCHILDREN_SCROLLBAR 5
4795
4796 typedef struct tagSCROLLBARINFO {
4797   DWORD cbSize;
4798   RECT  rcScrollBar;
4799   int   dxyLineButton;
4800   int   xyThumbTop;
4801   int   xyThumbBottom;
4802   int   reserved;
4803   DWORD rgstate[CCHILDREN_SCROLLBAR+1];
4804 } SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
4805
4806 #define CCHILDREN_TITLEBAR 5
4807
4808 typedef struct tagTITLEBARINFO {
4809   DWORD cbSize;
4810   RECT  rcTitleBar;
4811   DWORD rgstate[CCHILDREN_TITLEBAR+1];
4812 } TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
4813
4814 typedef struct {
4815   HWND hwnd;
4816   LPCTSTR szWindowName;
4817   UINT32 fToBeClosed;
4818   UINT32 fToBeTerminated;
4819 } WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
4820
4821 typedef struct tagMOUSEINPUT {
4822   LONG    dx;
4823   LONG    dy;
4824   DWORD   mouseData;
4825   DWORD   dwFlags;
4826   DWORD   time;
4827   ULONG_PTR   dwExtraInfo;
4828 } MOUSEINPUT, *PMOUSEINPUT;
4829
4830 typedef struct tagKEYBDINPUT {
4831   WORD      wVk;
4832   WORD      wScan;
4833   DWORD     dwFlags;
4834   DWORD     time;
4835   ULONG_PTR dwExtraInfo;
4836 } KEYBDINPUT, *PKEYBDINPUT;
4837
4838 typedef struct tagHARDWAREINPUT {
4839   DWORD   uMsg;
4840   WORD    wParamL;
4841   WORD    wParamH;
4842 } HARDWAREINPUT, *PHARDWAREINPUT;
4843
4844 typedef struct tagINPUT {
4845   DWORD type;
4846   union
4847   {
4848     MOUSEINPUT mi;
4849     KEYBDINPUT ki;
4850     HARDWAREINPUT hi;
4851   } u;
4852 } INPUT, *PINPUT, FAR* LPINPUT;
4853
4854 typedef struct tagTRACKMOUSEEVENT {
4855   DWORD cbSize;
4856   DWORD dwFlags;
4857   HWND  hwndTrack;
4858   DWORD dwHoverTime;
4859 } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
4860
4861 typedef struct _BLENDFUNCTION {
4862   BYTE     BlendOp;
4863   BYTE     BlendFlags;
4864   BYTE     SourceConstantAlpha;
4865   BYTE     AlphaFormat;
4866 }BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION;
4867
4868 typedef enum _GET_FILEEX_INFO_LEVELS {
4869     GetFileExInfoStandard
4870 } GET_FILEEX_INFO_LEVELS;
4871
4872 typedef struct _WIN32_FILE_ATTRIBUTES_DATA {
4873     DWORD    dwFileAttributes;
4874     FILETIME ftCreationTime;
4875     FILETIME ftLastAccessTime;
4876     FILETIME ftLastWriteTime;
4877     DWORD    nFileSizeHigh;
4878     DWORD    nFileSizeLow;
4879 } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
4880
4881 #ifdef __cplusplus
4882 }
4883 #endif /* __cplusplus */
4884
4885 #endif /* WIN32_LEAN_AND_MEAN */
4886
4887 #endif /* _GNU_H_WINDOWS32_STRUCTURES */
4888
4889