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