ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

wtypes.idl
Go to the documentation of this file.
00001 /*
00002  * Basic types used by COM interfaces
00003  *
00004  * Copyright 2002 Ove Kaaven
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 import "basetsd.h";
00022 import "guiddef.h";
00023 
00024 cpp_quote("#ifndef __wtypes_h__")
00025 cpp_quote("#define __wtypes_h__")
00026 cpp_quote("#endif")
00027 
00028 cpp_quote("#ifdef _MSC_VER")
00029 cpp_quote("#pragma warning(push)")
00030 cpp_quote("#pragma warning(disable:4201)")
00031 cpp_quote("#pragma warning(disable:4820)")
00032 cpp_quote("#endif")
00033 
00034 [
00035   uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
00036   version(0.1),
00037   pointer_default(unique)
00038 ]
00039 
00040 interface IWinTypes
00041 {
00042 
00043 /******************** BASIC WIN32 TYPES ********************/
00044 cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */
00045 
00046 typedef unsigned char BYTE;
00047 typedef unsigned short WORD;
00048 typedef unsigned long DWORD;
00049 typedef long BOOL;
00050 typedef unsigned char UCHAR;
00051 typedef int INT;
00052 typedef unsigned int UINT;
00053 typedef short SHORT;
00054 typedef unsigned short USHORT;
00055 typedef long LONG;
00056 typedef unsigned long ULONG;
00057 typedef float FLOAT;
00058 
00059 typedef void *PVOID, *LPVOID;
00060 
00061 typedef DWORD *LPDWORD;
00062 
00063 typedef char CHAR;
00064 typedef [string] CHAR *LPSTR;
00065 typedef [string] const CHAR *LPCSTR;
00066 
00067 typedef wchar_t WCHAR;
00068 typedef [string] WCHAR *LPWSTR;
00069 typedef [string] const WCHAR *LPCWSTR;
00070 
00071 typedef boolean BOOLEAN;
00072 
00073 typedef DWORD COLORREF;
00074 
00075 typedef void *HANDLE;
00076 #define DECLARE_HANDLE(name) typedef void *name
00077 #define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name
00078 
00079 DECLARE_HANDLE(HMODULE);
00080 DECLARE_HANDLE(HINSTANCE);
00081 DECLARE_HANDLE(HRGN);
00082 DECLARE_HANDLE(HTASK);
00083 DECLARE_HANDLE(HKEY);
00084 DECLARE_HANDLE(HDESK);
00085 DECLARE_HANDLE(HMF);
00086 DECLARE_HANDLE(HEMF);
00087 DECLARE_HANDLE(HPEN);
00088 DECLARE_HANDLE(HRSRC);
00089 DECLARE_HANDLE(HSTR);
00090 DECLARE_HANDLE(HWINSTA);
00091 DECLARE_HANDLE(HKL);
00092 DECLARE_HANDLE(HGDIOBJ);
00093 
00094 typedef HANDLE HDWP;
00095 
00096 typedef LONG_PTR LRESULT;
00097 
00098 typedef LONG HRESULT;
00099 typedef DWORD LCID;
00100 typedef USHORT LANGID;
00101 
00102 typedef unsigned __int64 DWORDLONG;
00103 typedef __int64 LONGLONG;
00104 typedef unsigned __int64 ULONGLONG;
00105 
00106 typedef struct _LARGE_INTEGER {
00107   LONGLONG QuadPart;
00108 } LARGE_INTEGER;
00109 
00110 typedef struct _ULARGE_INTEGER {
00111   ULONGLONG QuadPart;
00112 } ULARGE_INTEGER;
00113 
00114 typedef struct _SID_IDENTIFIER_AUTHORITY {
00115   UCHAR Value[6];
00116 } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
00117 
00118 typedef struct _SID {
00119   UCHAR Revision;
00120   UCHAR SubAuthorityCount;
00121   SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
00122   [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
00123 } SID, *PSID;
00124 
00125 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
00126 
00127 typedef struct _ACL {
00128   UCHAR AclRevision;
00129   UCHAR Sbz1;
00130   USHORT AclSize;
00131   USHORT AceCount;
00132   USHORT Sbz2;
00133 } ACL;
00134 typedef ACL *PACL;
00135 
00136 typedef struct _SECURITY_DESCRIPTOR {
00137   UCHAR Revision;
00138   UCHAR Sbz1;
00139   SECURITY_DESCRIPTOR_CONTROL Control;
00140   PSID Owner;
00141   PSID Group;
00142   PACL Sacl;
00143   PACL Dacl;
00144 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
00145 
00146 typedef struct _SECURITY_ATTRIBUTES
00147 {
00148     DWORD nLength;
00149     [size_is(nLength)] LPVOID lpSecurityDescriptor;
00150     BOOL bInheritHandle;
00151 } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
00152 
00153 typedef struct tagSIZE
00154 {
00155     LONG cx;
00156     LONG cy;
00157 } SIZE, *PSIZE, *LPSIZE;
00158 typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
00159 
00160 typedef struct tagPOINT
00161 {
00162     LONG  x;
00163     LONG  y;
00164 } POINT, *PPOINT, *LPPOINT;
00165 
00166 typedef struct _POINTL
00167 {
00168     LONG x;
00169     LONG y;
00170 } POINTL, *PPOINTL;
00171 
00172 typedef struct tagRECT
00173 {
00174     LONG left;
00175     LONG top;
00176     LONG right;
00177     LONG bottom;
00178 } RECT, *PRECT, *LPRECT;
00179 typedef const RECT *LPCRECT;
00180 
00181 typedef struct _RECTL
00182 {
00183     LONG left;
00184     LONG top;
00185     LONG right;
00186     LONG bottom;
00187 } RECTL, *PRECTL, *LPRECTL;
00188 typedef const RECTL *LPCRECTL;
00189 
00190 typedef UINT_PTR WPARAM;
00191 typedef LONG_PTR LPARAM;
00192 
00193 cpp_quote("#endif /* winnt.h */")
00194 
00195 cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */
00196 typedef double DOUBLE;
00197 cpp_quote("#else")
00198 cpp_quote("typedef double DECLSPEC_ALIGN(8) DOUBLE;")
00199 cpp_quote("#endif")
00200 
00201 cpp_quote("#ifndef _PALETTEENTRY_DEFINED")
00202 cpp_quote("#define _PALETTEENTRY_DEFINED")
00203 typedef struct tagPALETTEENTRY {
00204   BYTE peRed;
00205   BYTE peGreen;
00206   BYTE peBlue;
00207   BYTE peFlags;
00208 } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
00209 cpp_quote("#endif")
00210 
00211 cpp_quote("#ifndef _LOGPALETTE_DEFINED")
00212 cpp_quote("#define _LOGPALETTE_DEFINED")
00213 typedef struct tagLOGPALETTE
00214 {
00215   WORD palVersion;
00216   WORD palNumEntries;
00217   [size_is(palNumEntries)] PALETTEENTRY palPalEntry[*];
00218 } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
00219 cpp_quote("#endif")
00220 
00221 cpp_quote("#ifndef _SYSTEMTIME_")
00222 cpp_quote("#define _SYSTEMTIME_")
00223 typedef struct _SYSTEMTIME{
00224         WORD wYear;
00225         WORD wMonth;
00226         WORD wDayOfWeek;
00227         WORD wDay;
00228         WORD wHour;
00229         WORD wMinute;
00230         WORD wSecond;
00231         WORD wMilliseconds;
00232 } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
00233 cpp_quote("#endif")
00234 
00235 cpp_quote("#ifndef _FILETIME_")
00236 cpp_quote("#define _FILETIME_")
00237 typedef struct _FILETIME {
00238   DWORD dwLowDateTime;
00239   DWORD dwHighDateTime;
00240 } FILETIME, *PFILETIME, *LPFILETIME;
00241 cpp_quote("#endif")
00242 
00243 cpp_quote("#ifndef _TEXTMETRIC_DEFINED")
00244 cpp_quote("#define _TEXTMETRIC_DEFINED")
00245 typedef struct tagTEXTMETRICA
00246 {
00247     LONG      tmHeight;
00248     LONG      tmAscent;
00249     LONG      tmDescent;
00250     LONG      tmInternalLeading;
00251     LONG      tmExternalLeading;
00252     LONG      tmAveCharWidth;
00253     LONG      tmMaxCharWidth;
00254     LONG      tmWeight;
00255     LONG      tmOverhang;
00256     LONG      tmDigitizedAspectX;
00257     LONG      tmDigitizedAspectY;
00258     BYTE      tmFirstChar;
00259     BYTE      tmLastChar;
00260     BYTE      tmDefaultChar;
00261     BYTE      tmBreakChar;
00262     BYTE      tmItalic;
00263     BYTE      tmUnderlined;
00264     BYTE      tmStruckOut;
00265     BYTE      tmPitchAndFamily;
00266     BYTE      tmCharSet;
00267 } TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
00268 
00269 typedef struct tagTEXTMETRICW
00270 {
00271     LONG      tmHeight;
00272     LONG      tmAscent;
00273     LONG      tmDescent;
00274     LONG      tmInternalLeading;
00275     LONG      tmExternalLeading;
00276     LONG      tmAveCharWidth;
00277     LONG      tmMaxCharWidth;
00278     LONG      tmWeight;
00279     LONG      tmOverhang;
00280     LONG      tmDigitizedAspectX;
00281     LONG      tmDigitizedAspectY;
00282     WCHAR     tmFirstChar;
00283     WCHAR     tmLastChar;
00284     WCHAR     tmDefaultChar;
00285     WCHAR     tmBreakChar;
00286     BYTE      tmItalic;
00287     BYTE      tmUnderlined;
00288     BYTE      tmStruckOut;
00289     BYTE      tmPitchAndFamily;
00290     BYTE      tmCharSet;
00291 } TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
00292 cpp_quote("#endif")
00293 
00294 /******************** BASIC COM/OLE TYPES ********************/
00295 
00296 typedef WCHAR OLECHAR;
00297 typedef [string] OLECHAR *LPOLESTR;
00298 typedef [string] const OLECHAR *LPCOLESTR;
00299 cpp_quote("#ifndef __WINESRC__")
00300 cpp_quote("#define OLESTR(str) L##str")
00301 cpp_quote("#endif")
00302 
00303 typedef LONG SCODE;
00304 
00305 typedef struct _COAUTHIDENTITY {
00306   [size_is(UserLength+1)] USHORT *User;
00307   ULONG UserLength;
00308   [size_is(DomainLength+1)] USHORT *Domain;
00309   ULONG DomainLength;
00310   [size_is(PasswordLength+1)] USHORT *Password;
00311   ULONG PasswordLength;
00312   ULONG Flags;
00313 } COAUTHIDENTITY;
00314 
00315 typedef struct _COAUTHINFO {
00316   DWORD dwAuthnSvc;
00317   DWORD dwAuthzSvc;
00318   LPWSTR pwszServerPrincName;
00319   DWORD dwAuthnLevel;
00320   DWORD dwImpersonationLevel;
00321   COAUTHIDENTITY *pAuthIdentityData;
00322   DWORD dwCapabilities;
00323 } COAUTHINFO;
00324 
00325 typedef enum tagMEMCTX {
00326   MEMCTX_TASK      = 1,
00327   MEMCTX_SHARED    = 2,
00328   MEMCTX_MACSYSTEM = 3,
00329   MEMCTX_UNKNOWN   = -1,
00330   MEMCTX_SAME      = -2
00331 } MEMCTX;
00332 
00333 cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
00334 cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
00335 cpp_quote("#define ROT_COMPARE_MAX 2048")
00336 cpp_quote("#endif")
00337 
00338 cpp_quote("#ifndef _ROTFLAGS_DEFINED")
00339 cpp_quote("#define _ROTFLAGS_DEFINED")
00340 cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
00341 cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
00342 cpp_quote("#endif")
00343 
00344 typedef enum tagCLSCTX {
00345   CLSCTX_INPROC_SERVER        = 0x1,
00346   CLSCTX_INPROC_HANDLER       = 0x2,
00347   CLSCTX_LOCAL_SERVER         = 0x4,
00348   CLSCTX_INPROC_SERVER16      = 0x8,
00349   CLSCTX_REMOTE_SERVER        = 0x10,
00350   CLSCTX_INPROC_HANDLER16     = 0x20,
00351   CLSCTX_INPROC_SERVERX86     = 0x40,
00352   CLSCTX_INPROC_HANDLERX86    = 0x80,
00353   CLSCTX_ESERVER_HANDLER      = 0x100,
00354   CLSCTX_NO_CODE_DOWNLOAD     = 0x400,
00355   CLSCTX_NO_CUSTOM_MARSHAL    = 0x1000,
00356   CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
00357   CLSCTX_NO_FAILURE_LOG       = 0x4000,
00358   CLSCTX_DISABLE_AAA          = 0x8000,
00359   CLSCTX_ENABLE_AAA           = 0x10000,
00360   CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
00361 } CLSCTX;
00362 
00363 cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)")
00364 cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
00365 cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
00366 
00367 typedef enum tagMSHLFLAGS {
00368   MSHLFLAGS_NORMAL      = 0,
00369   MSHLFLAGS_TABLESTRONG = 1,
00370   MSHLFLAGS_TABLEWEAK   = 2,
00371   MSHLFLAGS_NOPING      = 4
00372 } MSHLFLAGS;
00373 
00374 typedef enum tagMSHCTX {
00375   MSHCTX_LOCAL            = 0,
00376   MSHCTX_NOSHAREDMEM      = 1,
00377   MSHCTX_DIFFERENTMACHINE = 2,
00378   MSHCTX_INPROC           = 3,
00379   MSHCTX_CROSSCTX         = 4
00380 } MSHCTX;
00381 
00382 /******************** BLOB TYPES ********************/
00383 
00384 typedef struct _BYTE_BLOB {
00385   unsigned long clSize;
00386   [size_is(clSize)] byte abData[];
00387 } BYTE_BLOB;
00388 typedef [unique] BYTE_BLOB *UP_BYTE_BLOB;
00389 
00390 typedef struct _FLAGGED_BYTE_BLOB {
00391   unsigned long fFlags;
00392   unsigned long clSize;
00393   [size_is(clSize)] byte abData[];
00394 } FLAGGED_BYTE_BLOB;
00395 typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
00396 
00397 typedef struct _FLAGGED_WORD_BLOB {
00398   unsigned long fFlags;
00399   unsigned long clSize;
00400   [size_is(clSize)] unsigned short asData[];
00401 } FLAGGED_WORD_BLOB;
00402 typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
00403 
00404 typedef struct _BYTE_SIZEDARR {
00405   unsigned long clSize;
00406   [size_is(clSize)] byte *pData;
00407 } BYTE_SIZEDARR;
00408 
00409 typedef struct _SHORT_SIZEDARR {
00410   unsigned long clSize;
00411   [size_is(clSize)] unsigned short *pData;
00412 } WORD_SIZEDARR;
00413 
00414 typedef struct _LONG_SIZEDARR {
00415   unsigned long clSize;
00416   [size_is(clSize)] unsigned long *pData;
00417 } DWORD_SIZEDARR;
00418 
00419 typedef struct _HYPER_SIZEDARR {
00420   unsigned long clSize;
00421   [size_is(clSize)] hyper *pData;
00422 } HYPER_SIZEDARR;
00423 
00424 /******************** GDI TYPES ********************/
00425 
00426 const unsigned long WDT_INPROC_CALL   = 0x48746457;
00427 const unsigned long WDT_REMOTE_CALL   = 0x52746457;
00428 const unsigned long WDT_INPROC64_CALL = 0x50746457;
00429 
00430 typedef union _userCLIPFORMAT switch(long fContext) u {
00431   case WDT_INPROC_CALL: DWORD dwValue;
00432   case WDT_REMOTE_CALL: LPWSTR pwszName;
00433 } userCLIPFORMAT;
00434 
00435 typedef [unique] userCLIPFORMAT *wireCLIPFORMAT;
00436 typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
00437 
00438 typedef struct tagRemHGLOBAL {
00439   long fNullHGlobal;
00440   unsigned long cbData;
00441   [size_is(cbData)] byte data[];
00442 } RemHGLOBAL;
00443 
00444 typedef union _userHGLOBAL switch(long fContext) u {
00445   case WDT_INPROC_CALL: long               hInproc;
00446   case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote;
00447   case WDT_INPROC64_CALL: __int64          hInproc64;
00448 } userHGLOBAL;
00449 
00450 typedef [unique] userHGLOBAL *wireHGLOBAL;
00451 
00452 typedef struct tagRemHMETAFILEPICT {
00453   long mm;
00454   long xExt;
00455   long yExt;
00456   unsigned long cbData;
00457   [size_is(cbData)] byte data[];
00458 } RemHMETAFILEPICT;
00459 
00460 typedef union _userHMETAFILE switch(long fContext) u {
00461   case WDT_INPROC_CALL: long       hInproc;
00462   case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
00463   case WDT_INPROC64_CALL: __int64  hInproc64;
00464 } userHMETAFILE;
00465 
00466 typedef [unique] userHMETAFILE *wireHMETAFILE;
00467 
00468 typedef struct _remoteMETAFILEPICT {
00469   long mm;
00470   long xExt;
00471   long yExt;
00472   userHMETAFILE *hMF;
00473 } remoteMETAFILEPICT;
00474 
00475 typedef union _userHMETAFILEPICT switch(long fContext) u {
00476   case WDT_INPROC_CALL: long                hInproc;
00477   case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote;
00478   case WDT_INPROC64_CALL: __int64           hInproc64;
00479 } userHMETAFILEPICT;
00480 
00481 typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT;
00482 
00483 typedef struct tagRemHENHMETAFILE {
00484   unsigned long cbData;
00485   [size_is(cbData)] byte data[];
00486 } RemHENHMETAFILE;
00487 
00488 typedef union _userHENHMETAFILE switch(long fContext) u {
00489   case WDT_INPROC_CALL: long       hInproc;
00490   case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
00491   case WDT_INPROC64_CALL: __int64  hInproc64;
00492 } userHENHMETAFILE;
00493 
00494 typedef [unique] userHENHMETAFILE *wireHENHMETAFILE;
00495 
00496 typedef struct tagRemHBITMAP
00497 {
00498   unsigned long cbData;
00499   [size_is(cbData)] byte data[];
00500 } RemHBITMAP;
00501 
00502 typedef struct _userBITMAP {
00503   LONG bmType;
00504   LONG bmWidth;
00505   LONG bmHeight;
00506   LONG bmWidthBytes;
00507   WORD bmPlanes;
00508   WORD bmBitsPixel;
00509   ULONG cbSize;
00510   [size_is(cbSize)] byte pBuffer[];
00511 } userBITMAP;
00512 
00513 typedef union _userHBITMAP switch(long fContext) u {
00514   case WDT_INPROC_CALL: long        hInproc;
00515   case WDT_REMOTE_CALL: userBITMAP *hRemote;
00516   case WDT_INPROC64_CALL: __int64   hInproc64;
00517 } userHBITMAP;
00518 
00519 typedef [unique] userHBITMAP *wireHBITMAP;
00520 
00521 typedef struct tagRemHPALETTE {
00522   unsigned long cbData;
00523   [size_is(cbData)] byte data[];
00524 } RemHPALETTE;
00525 
00526 typedef struct tagrpcLOGPALETTE {
00527   WORD palVersion;
00528   WORD palNumEntries;
00529   [size_is(palNumEntries)] PALETTEENTRY palPalEntry[];
00530 } rpcLOGPALETTE;
00531 
00532 typedef union _userHPALETTE switch(long fContext) u {
00533   case WDT_INPROC_CALL: long           hInproc;
00534   case WDT_REMOTE_CALL: rpcLOGPALETTE *hRemote;
00535   case WDT_INPROC64_CALL: __int64      hInproc64;
00536 } userHPALETTE;
00537 
00538 typedef [unique] userHPALETTE *wireHPALETTE;
00539 
00540 cpp_quote("#if 0")
00541 DECLARE_WIREM_HANDLE(HGLOBAL);
00542 typedef HGLOBAL HLOCAL;
00543 DECLARE_WIREM_HANDLE(HBITMAP);
00544 DECLARE_WIREM_HANDLE(HPALETTE);
00545 DECLARE_WIREM_HANDLE(HENHMETAFILE);
00546 DECLARE_WIREM_HANDLE(HMETAFILE);
00547 cpp_quote("#endif")
00548 DECLARE_WIREM_HANDLE(HMETAFILEPICT);
00549 
00550 typedef union _RemotableHandle switch (long fContext) u
00551 {
00552     case WDT_INPROC_CALL: long hInproc;
00553     case WDT_REMOTE_CALL: long hRemote;
00554 } RemotableHandle;
00555 
00556 typedef [unique] RemotableHandle *wireHACCEL;
00557 typedef [unique] RemotableHandle *wireHBRUSH;
00558 typedef [unique] RemotableHandle *wireHDC;
00559 typedef [unique] RemotableHandle *wireHFONT;
00560 typedef [unique] RemotableHandle *wireHICON;
00561 typedef [unique] RemotableHandle *wireHMENU;
00562 typedef [unique] RemotableHandle *wireHWND;
00563 
00564 cpp_quote("#if 0") /* for IDL only (C/C++ defs are in windef.h) */
00565 DECLARE_WIREM_HANDLE(HACCEL);
00566 DECLARE_WIREM_HANDLE(HBRUSH);
00567 DECLARE_WIREM_HANDLE(HDC);
00568 DECLARE_WIREM_HANDLE(HFONT);
00569 DECLARE_WIREM_HANDLE(HICON);
00570 DECLARE_WIREM_HANDLE(HMENU);
00571 DECLARE_WIREM_HANDLE(HWND);
00572 
00573 typedef HICON HCURSOR;
00574 
00575 typedef struct tagMSG
00576 {
00577     HWND   hwnd;
00578     UINT   message;
00579     WPARAM wParam;
00580     LPARAM lParam;
00581     DWORD  time;
00582     POINT  pt;
00583 } MSG, *PMSG, *NPMSG, *LPMSG;
00584 
00585 cpp_quote("#endif")
00586 
00587 /******************** GUID TYPES ********************/
00588 
00589 cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */
00590 typedef GUID *REFGUID;
00591 typedef IID *REFIID;
00592 typedef CLSID *REFCLSID;
00593 typedef FMTID *REFFMTID;
00594 cpp_quote("#endif")
00595 
00596 /******************** MISC TYPES ********************/
00597 
00598 typedef enum tagDVASPECT {
00599   DVASPECT_CONTENT   = 1,
00600   DVASPECT_THUMBNAIL = 2,
00601   DVASPECT_ICON      = 4,
00602   DVASPECT_DOCPRINT  = 8
00603 } DVASPECT;
00604 
00605 typedef enum tagSTGC {
00606   STGC_DEFAULT       = 0,
00607   STGC_OVERWRITE     = 1,
00608   STGC_ONLYIFCURRENT = 2,
00609   STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
00610   STGC_CONSOLIDATE   = 8
00611 } STGC;
00612 
00613 typedef enum tagSTGMOVE {
00614   STGMOVE_MOVE        = 0,
00615   STGMOVE_COPY        = 1,
00616   STGMOVE_SHALLOWCOPY = 2
00617 } STGMOVE;
00618 
00619 typedef enum tagSTATFLAG {
00620   STATFLAG_DEFAULT = 0,
00621   STATFLAG_NONAME  = 1,
00622   STATFLAG_NOOPEN  = 2
00623 } STATFLAG;
00624 
00625 /******************** OLE Automation ********************/
00626 
00627 cpp_quote("#ifdef _MSC_VER") /* for IDL and MSVC only */
00628 typedef double DATE;
00629 cpp_quote("#else")
00630 cpp_quote("typedef double DECLSPEC_ALIGN(8) DATE;")
00631 cpp_quote("#endif")
00632 
00633 cpp_quote("#if 0") /* for IDL only */
00634 typedef struct tagCY {
00635   LONGLONG int64;
00636 } CY;
00637 cpp_quote("#else") /* C/C++ defs */
00638 cpp_quote("#ifndef _tagCY_DEFINED")
00639 cpp_quote("#define _tagCY_DEFINED")
00640 cpp_quote("typedef union tagCY {")
00641 cpp_quote("    struct {")
00642 cpp_quote("#ifdef WORDS_BIGENDIAN")
00643 cpp_quote("        LONG  Hi;")
00644 cpp_quote("        ULONG Lo;")
00645 cpp_quote("#else")
00646 cpp_quote("        ULONG Lo;")
00647 cpp_quote("        LONG  Hi;")
00648 cpp_quote("#endif")
00649 cpp_quote("    } DUMMYSTRUCTNAME;")
00650 cpp_quote("    LONGLONG int64;")
00651 cpp_quote("} CY;")
00652 cpp_quote("#endif")
00653 cpp_quote("#endif")
00654 
00655 typedef CY *LPCY;
00656 
00657 cpp_quote("#if 0") /* for IDL only */
00658 typedef struct tagDEC {
00659   USHORT wReserved;
00660   BYTE scale;
00661   BYTE sign;
00662   ULONG Hi32;
00663   ULONGLONG Lo64;
00664 } DECIMAL;
00665 cpp_quote("#else") /* C/C++ defs */
00666 cpp_quote("typedef struct tagDEC {")
00667 cpp_quote("  USHORT wReserved;")
00668 cpp_quote("  union {")
00669 cpp_quote("    struct {")
00670 cpp_quote("      BYTE scale;")
00671 cpp_quote("      BYTE sign;")
00672 cpp_quote("    } DUMMYSTRUCTNAME;")
00673 cpp_quote("    USHORT signscale;")
00674 cpp_quote("  } DUMMYUNIONNAME;")
00675 cpp_quote("  ULONG Hi32;")
00676 cpp_quote("  union {")
00677 cpp_quote("    struct {")
00678 cpp_quote("#ifdef WORDS_BIGENDIAN")
00679 cpp_quote("      ULONG Mid32;")
00680 cpp_quote("      ULONG Lo32;")
00681 cpp_quote("#else")
00682 cpp_quote("      ULONG Lo32;")
00683 cpp_quote("      ULONG Mid32;")
00684 cpp_quote("#endif")
00685 cpp_quote("    } DUMMYSTRUCTNAME1;")
00686 cpp_quote("    ULONGLONG Lo64;")
00687 cpp_quote("  } DUMMYUNIONNAME1;")
00688 cpp_quote("} DECIMAL;")
00689 cpp_quote("#endif")
00690 cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
00691 cpp_quote("#define DECIMAL_SETZERO(d) do{ memset(((char*)&(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)")
00692 
00693 typedef DECIMAL *LPDECIMAL;
00694 
00695 typedef [unique] FLAGGED_WORD_BLOB *wireBSTR;
00696 typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR;
00697 typedef BSTR *LPBSTR;
00698 
00699 typedef short VARIANT_BOOL;
00700 typedef VARIANT_BOOL _VARIANT_BOOL;
00701 cpp_quote("#define VARIANT_TRUE  ((VARIANT_BOOL)0xFFFF)")
00702 cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)")
00703 
00704 typedef struct tagBSTRBLOB {
00705   ULONG cbSize;
00706   [size_is(cbSize)] BYTE *pData;
00707 } BSTRBLOB, *LPBSTRBLOB;
00708 
00709 cpp_quote("#ifndef _tagBLOB_DEFINED")
00710 cpp_quote("#define _tagBLOB_DEFINED")
00711 cpp_quote("#define _BLOB_DEFINED")
00712 cpp_quote("#define _LPBLOB_DEFINED")
00713 typedef struct tagBLOB {
00714   ULONG cbSize;
00715   [size_is(cbSize)] BYTE *pBlobData;
00716 } BLOB, *LPBLOB;
00717 cpp_quote("#endif")
00718 
00719 typedef struct tagCLIPDATA {
00720   ULONG cbSize;
00721   long ulClipFmt;
00722   [size_is(cbSize-sizeof(long))] BYTE *pClipData;
00723 } CLIPDATA;
00724 cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))")
00725 
00726 typedef ULONG PROPID;
00727 
00728 /******************** VARTYPE ********************/
00729 
00730 typedef unsigned short VARTYPE;
00731 enum VARENUM {
00732   VT_EMPTY           = 0,
00733   VT_NULL            = 1,
00734   VT_I2              = 2,
00735   VT_I4              = 3,
00736   VT_R4              = 4,
00737   VT_R8              = 5,
00738   VT_CY              = 6,
00739   VT_DATE            = 7,
00740   VT_BSTR            = 8,
00741   VT_DISPATCH        = 9,
00742   VT_ERROR           = 10,
00743   VT_BOOL            = 11,
00744   VT_VARIANT         = 12,
00745   VT_UNKNOWN         = 13,
00746   VT_DECIMAL         = 14,
00747   VT_I1              = 16,
00748   VT_UI1             = 17,
00749   VT_UI2             = 18,
00750   VT_UI4             = 19,
00751   VT_I8              = 20,
00752   VT_UI8             = 21,
00753   VT_INT             = 22,
00754   VT_UINT            = 23,
00755   VT_VOID            = 24,
00756   VT_HRESULT         = 25,
00757   VT_PTR             = 26,
00758   VT_SAFEARRAY       = 27,
00759   VT_CARRAY          = 28,
00760   VT_USERDEFINED     = 29,
00761   VT_LPSTR           = 30,
00762   VT_LPWSTR          = 31,
00763   VT_RECORD          = 36,
00764   VT_INT_PTR         = 37,
00765   VT_UINT_PTR        = 38,
00766   VT_FILETIME        = 64,
00767   VT_BLOB            = 65,
00768   VT_STREAM          = 66,
00769   VT_STORAGE         = 67,
00770   VT_STREAMED_OBJECT = 68,
00771   VT_STORED_OBJECT   = 69,
00772   VT_BLOB_OBJECT     = 70,
00773   VT_CF              = 71,
00774   VT_CLSID           = 72,
00775   VT_VERSIONED_STREAM= 73,
00776   VT_BSTR_BLOB       = 0x0fff,
00777   VT_VECTOR          = 0x1000,
00778   VT_ARRAY           = 0x2000,
00779   VT_BYREF           = 0x4000,
00780   VT_RESERVED        = 0x8000,
00781   VT_ILLEGAL         = 0xffff,
00782   VT_ILLEGALMASKED   = 0x0fff,
00783   VT_TYPEMASK        = 0x0fff
00784 };
00785 
00786 typedef struct tagCSPLATFORM
00787 {
00788     DWORD dwPlatformId;
00789     DWORD dwVersionHi;
00790     DWORD dwVersionLo;
00791     DWORD dwProcessorArch;
00792 } CSPLATFORM;
00793 
00794 typedef struct tagQUERYCONTEXT
00795 {
00796     DWORD dwContext;
00797     CSPLATFORM Platform;
00798     LCID Locale;
00799     DWORD dwVersionHi;
00800     DWORD dwVersionLo;
00801 } QUERYCONTEXT;
00802 
00803 typedef [v1_enum] enum tagTYSPEC 
00804 {
00805     TYSPEC_CLSID,
00806     TYSPEC_FILEEXT,
00807     TYSPEC_MIMETYPE,
00808     TYSPEC_PROGID,
00809     TYSPEC_FILENAME,
00810     TYSPEC_PACKAGENAME,
00811     TYSPEC_OBJECTID
00812 } TYSPEC;
00813 
00814 typedef union switch(DWORD tyspec)
00815 {
00816     case TYSPEC_CLSID:
00817         CLSID clsid;
00818     case TYSPEC_FILEEXT:
00819         LPOLESTR pFileExt;
00820     case TYSPEC_MIMETYPE:
00821         LPOLESTR pMimeType;
00822     case TYSPEC_PROGID:
00823         LPOLESTR pProgId;
00824     case TYSPEC_FILENAME:
00825         LPOLESTR pFileName;
00826     case TYSPEC_PACKAGENAME:
00827         struct
00828         {
00829             LPOLESTR pPackageName;
00830             GUID PolicyId;
00831         } ByName;
00832     case TYSPEC_OBJECTID:
00833         struct
00834         {
00835             GUID ObjectId;
00836             GUID PolicyId;
00837         } ByObjectId;
00838 } uCLSSPEC;
00839 
00840 cpp_quote("#ifndef PROPERTYKEY_DEFINED")
00841 cpp_quote("#define PROPERTYKEY_DEFINED")
00842 typedef struct _tagpropertykey
00843 {
00844     GUID fmtid;
00845     DWORD pid;
00846 } PROPERTYKEY;
00847 cpp_quote("#endif /*PROPERTYKEY_DEFINED*/")
00848 
00849 } /* interface IWinTypes */
00850 
00851 cpp_quote("#ifdef _MSC_VER")
00852 cpp_quote("#pragma warning(pop)")
00853 cpp_quote("#endif")

Generated on Sat May 26 2012 04:31:51 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.