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