home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.5 / Group9 / Structures.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-12-24  |  108.3 KB  |  4,830 lines

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