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