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