comparison org.eclipse.swt.win32.win32.x86/src/org/eclipse/swt/internal/ole/win32/OAIDL.d @ 0:6dd524f61e62

add dwt win and basic java stuff
author Frank Benoit <benoit@tionex.de>
date Mon, 02 Mar 2009 14:44:16 +0100
parents
children 2e09b0e6857a
comparison
equal deleted inserted replaced
-1:000000000000 0:6dd524f61e62
1 module org.eclipse.swt.internal.ole.win32.OAIDL;
2
3 //+---------------------------------------------------------------------------
4 //
5 // Microsoft Windows
6 // Copyright 1992 - 1998 Microsoft Corporation.
7 //
8 // File: oaidl.idl
9 //
10 //----------------------------------------------------------------------------
11
12 //private import std.c.windows.windows;
13 //private import std.c.windows.com;
14 private import org.eclipse.swt.internal.ole.win32.OBJIDL;
15 private import org.eclipse.swt.internal.ole.win32.extras;
16 private import org.eclipse.swt.internal.win32.WINTYPES;
17 private import org.eclipse.swt.ole.win32.Variant;
18
19 extern(Windows) {
20
21 struct DECIMAL
22 {
23 USHORT wReserved;
24 BYTE scale;
25 BYTE sign;
26 ULONG Hi32;
27 ulong Lo64;
28 } ;
29
30 alias wchar * BSTR;
31 struct FLAGGED_WORD_BLOB
32 {
33 ULONG fFlags;
34 ULONG clSize;
35 ushort[1] asData;
36 }
37
38 alias FLAGGED_WORD_BLOB *wireBSTR;
39
40 struct BYTE_SIZEDARR
41 {
42 ULONG clSize;
43 byte *pData;
44 } ;
45
46 struct WORD_SIZEDARR
47 {
48 ULONG clSize;
49 ushort *pData;
50 } ;
51
52 struct DWORD_SIZEDARR
53 {
54 ULONG clSize;
55 ULONG * pData;
56 } ;
57
58 struct HYPER_SIZEDARR
59 {
60 ULONG clSize;
61 long *pData;
62 }
63
64
65 enum
66 { VT_EMPTY = 0,
67 VT_NULL = 1,
68 VT_I2 = 2,
69 VT_I4 = 3,
70 VT_R4 = 4,
71 VT_R8 = 5,
72 VT_CY = 6,
73 VT_DATE = 7,
74 VT_BSTR = 8,
75 VT_DISPATCH = 9,
76 VT_ERROR = 10,
77 VT_BOOL = 11,
78 VT_VARIANT = 12,
79 VT_UNKNOWN = 13,
80 VT_DECIMAL = 14,
81 VT_I1 = 16,
82 VT_UI1 = 17,
83 VT_UI2 = 18,
84 VT_UI4 = 19,
85 VT_I8 = 20,
86 VT_UI8 = 21,
87 VT_INT = 22,
88 VT_UINT = 23,
89 VT_VOID = 24,
90 VT_HRESULT = 25,
91 VT_PTR = 26,
92 VT_SAFEARRAY = 27,
93 VT_CARRAY = 28,
94 VT_USERDEFINED = 29,
95 VT_LPSTR = 30,
96 VT_LPWSTR = 31,
97 VT_RECORD = 36,
98 VT_FILETIME = 64,
99 VT_BLOB = 65,
100 VT_STREAM = 66,
101 VT_STORAGE = 67,
102 VT_STREAMED_OBJECT = 68,
103 VT_STORED_OBJECT = 69,
104 VT_BLOB_OBJECT = 70,
105 VT_CF = 71,
106 VT_CLSID = 72,
107 VT_BSTR_BLOB = 0xfff,
108 VT_VECTOR = 0x1000,
109 VT_ARRAY = 0x2000,
110 VT_BYREF = 0x4000,
111 VT_RESERVED = 0x8000,
112 VT_ILLEGAL = 0xffff,
113 VT_ILLEGALMASKED = 0xfff,
114 VT_TYPEMASK = 0xfff
115 };
116
117
118 /*
119 cpp_quote("//+-------------------------------------------------------------------------")
120 cpp_quote("//")
121 cpp_quote("// Microsoft Windows")
122 cpp_quote("// Copyright 1992 - 1998 Microsoft Corporation.")
123 cpp_quote("//")
124 cpp_quote("//--------------------------------------------------------------------------")
125
126 cpp_quote("#if ( _MSC_VER >= 800 )")
127 */
128 //cpp_quote("#pragma warning(disable:4201) /* Nameless struct/union */")
129 /*
130 cpp_quote("#endif")
131
132 #ifndef DO_NO_IMPORTS
133 import "objidl.idl";
134 #endif
135
136 interface ICreateTypeInfo;
137 interface ICreateTypeInfo2;
138 interface ICreateTypeLib;
139 interface ICreateTypeLib2;
140 interface IDispatch;
141 interface IEnumVARIANT;
142 interface ITypeComp;
143 interface ITypeInfo;
144 interface ITypeInfo2;
145 interface ITypeLib;
146 interface ITypeLib2;
147 interface ITypeChangeEvents;
148 interface IErrorInfo;
149 interface ICreateErrorInfo;
150 interface ISupportErrorInfo;
151 interface ITypeFactory;
152 interface ITypeMarshal;
153 interface IRecordInfo;
154
155
156 [
157 version(1.0), pointer_default(unique)
158 ]
159
160 interface IOleAutomationTypes
161 {
162
163 typedef CY CURRENCY;
164
165 // #########################################################################
166 // SAFEARRAY
167 // #########################################################################
168 */
169 struct SAFEARRAYBOUND {
170 ULONG cElements;
171 LONG lLbound;
172 }
173 alias SAFEARRAYBOUND * LPSAFEARRAYBOUND;
174
175 struct _wireVARIANT {
176 }
177 struct _wireBRECORD {
178 }
179 // Forward references.
180 alias _wireVARIANT * wireVARIANT;
181 alias _wireBRECORD * wireBRECORD;
182
183 struct SAFEARR_BSTR {
184 ULONG Size;
185 wireBSTR * aBstr;
186 }
187 struct SAFEARR_UNKNOWN {
188 ULONG Size;
189 IUnknown * apUnknown;
190 }
191
192 struct SAFEARR_DISPATCH {
193 ULONG Size;
194 IDispatch * apDispatch;
195 }
196
197 struct SAFEARR_VARIANT {
198 ULONG Size;
199 wireVARIANT * aVariant;
200 }
201
202 struct SAFEARR_BRECORD {
203 ULONG Size;
204 wireBRECORD * aRecord;
205 }
206
207 struct SAFEARR_HAVEIID {
208 ULONG Size;
209 IUnknown * apUnknown;
210 IID iid;
211 }
212
213 enum SF_TYPE {
214 SF_ERROR = VT_ERROR,
215 SF_I1 = VT_I1,
216 SF_I2 = VT_I2,
217 SF_I4 = VT_I4,
218 SF_I8 = VT_I8,
219 SF_BSTR = VT_BSTR,
220 SF_UNKNOWN = VT_UNKNOWN,
221 SF_DISPATCH = VT_DISPATCH,
222 SF_VARIANT = VT_VARIANT,
223 SF_RECORD = VT_RECORD,
224 SF_HAVEIID = VT_UNKNOWN|VT_RESERVED,
225 }
226
227 union uSAFEARRAY_UNION {
228 SAFEARR_BSTR BstrStr;
229 SAFEARR_UNKNOWN UnknownStr;
230 SAFEARR_DISPATCH DispatchStr;
231 SAFEARR_VARIANT VariantStr;
232 SAFEARR_BRECORD RecordStr;
233 SAFEARR_HAVEIID HaveIidStr;
234 BYTE_SIZEDARR ByteStr;
235 WORD_SIZEDARR WordStr;
236 DWORD_SIZEDARR LongStr;
237 HYPER_SIZEDARR HyperStr;
238 }
239
240 struct SAFEARRAY_UNION {
241 ULONG sfType;
242 uSAFEARRAY_UNION u;
243 }
244
245 alias SAFEARRAY_UNION SAFEARRAYUNION;
246
247 struct wireSAFEARRAY {
248 USHORT cDims;
249 USHORT fFeatures;
250 ULONG cbElements;
251 ULONG cLocks;
252 SAFEARRAYUNION uArrayStructs;
253 SAFEARRAYBOUND[1] rgsabound;
254 }
255 alias wireSAFEARRAY SAFEARRAY ;
256
257 alias wireSAFEARRAY * wirePSAFEARRAY;
258
259
260 struct tagSAFEARRAY {
261 USHORT cDims;
262 USHORT fFeatures;
263 ULONG cbElements;
264 ULONG cLocks;
265 PVOID pvData;
266 SAFEARRAYBOUND[1] rgsabound;
267 }
268
269 alias SAFEARRAY * LPSAFEARRAY;
270
271 const USHORT FADF_AUTO = 0x0001; /* array is allocated on the stack */
272 const USHORT FADF_STATIC = 0x0002; /* array is staticly allocated */
273 const USHORT FADF_EMBEDDED = 0x0004; /* array is embedded in a structure */
274 const USHORT FADF_FIXEDSIZE = 0x0010; /* may not be resized or reallocated */
275 const USHORT FADF_RECORD = 0x0020; /* an array of records */
276 const USHORT FADF_HAVEIID = 0x0040; /* with FADF_DISPATCH, FADF_UNKNOWN */
277 /* array has an IID for interfaces */
278 const USHORT FADF_HAVEVARTYPE= 0x0080; /* array has a VT type */
279 const USHORT FADF_BSTR = 0x0100; /* an array of BSTRs */
280 const USHORT FADF_UNKNOWN = 0x0200; /* an array of IUnknown* */
281 const USHORT FADF_DISPATCH = 0x0400; /* an array of IDispatch* */
282 const USHORT FADF_VARIANT = 0x0800; /* an array of VARIANTs */
283 const USHORT FADF_RESERVED = 0xF008; /* reserved bits */
284
285
286 // #########################################################################
287 // VARIANT
288 // #########################################################################
289 /*
290 cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
291 cpp_quote("#define __VARIANT_NAME_1 n1")
292 cpp_quote("#define __VARIANT_NAME_2 n2")
293 cpp_quote("#define __VARIANT_NAME_3 n3")
294 cpp_quote("#define __VARIANT_NAME_4 brecVal")
295 cpp_quote("#else")
296 cpp_quote("#define __tagVARIANT")
297 cpp_quote("#define __VARIANT_NAME_1")
298 cpp_quote("#define __VARIANT_NAME_2")
299 cpp_quote("#define __VARIANT_NAME_3")
300 cpp_quote("#define __tagBRECORD")
301 cpp_quote("#define __VARIANT_NAME_4")
302 cpp_quote("#endif")
303 */
304
305 /*struct brecVal_t {
306 PVOID pvRecord;
307 IRecordInfo * pRecInfo;
308 }*/
309 struct brecVal_t {
310 PVOID pvRecord;
311 IUnknown * pRecInfo;
312 }
313
314 alias double DOUBLE;
315 alias double DATE;
316 alias VARIANT_BOOL _VARIANT_BOOL;
317 alias long CY;
318
319
320 union n3_t {
321 LONG lVal; /* VT_I4 */
322 BYTE bVal; /* VT_UI1 */
323 SHORT iVal; /* VT_I2 */
324 FLOAT fltVal; /* VT_R4 */
325 DOUBLE dblVal; /* VT_R8 */
326 VARIANT_BOOL boolVal; /* VT_BOOL */
327 _VARIANT_BOOL BOOLval; /* (obsolete) */
328 SCODE scode; /* VT_ERROR */
329 CY cyVal; /* VT_CY */
330 DATE date; /* VT_DATE */
331 BSTR bstrVal; /* VT_BSTR */
332 IUnknown punkVal; /* VT_UNKNOWN */
333 IDispatch pdispVal; /* VT_DISPATCH */
334 SAFEARRAY * parray; /* VT_ARRAY */
335 BYTE * pbVal; /* VT_BYREF|VT_UI1 */
336 SHORT * piVal; /* VT_BYREF|VT_I2 */
337 LONG * plVal; /* VT_BYREF|VT_I4 */
338 FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
339 DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
340 VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
341 _VARIANT_BOOL *pbool; /* (obsolete) */
342 SCODE * pscode; /* VT_BYREF|VT_ERROR */
343 CY * pcyVal; /* VT_BYREF|VT_CY */
344 DATE * pdate; /* VT_BYREF|VT_DATE */
345 BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
346 IUnknown * ppunkVal; /* VT_BYREF|VT_UNKNOWN */
347 IDispatch * ppdispVal; /* VT_BYREF|VT_DISPATCH */
348 SAFEARRAY ** pparray; /* VT_BYREF|VT_ARRAY */
349 VARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
350 PVOID byref; /* Generic ByRef */
351 CHAR cVal; /* VT_I1 */
352 USHORT uiVal; /* VT_UI2 */
353 ULONG ulVal; /* VT_UI4 */
354 INT intVal; /* VT_INT */
355 UINT uintVal; /* VT_UINT */
356 DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
357 CHAR * pcVal; /* VT_BYREF|VT_I1 */
358 USHORT * puiVal; /* VT_BYREF|VT_UI2 */
359 ULONG * pulVal; /* VT_BYREF|VT_UI4 */
360 INT * pintVal; /* VT_BYREF|VT_INT */
361 UINT * puintVal; /* VT_BYREF|VT_UINT */
362 brecVal_t brecVal; /* VT_RECORD */
363 }
364
365 struct n2_t {
366 VARTYPE vt;
367 WORD wReserved1;
368 WORD wReserved2;
369 WORD wReserved3;
370 n3_t n3;
371 };
372 union n1_t {
373 n2_t n2;
374 DECIMAL decVal;
375 };
376
377 // in tango.sys.win32.Types
378 /+
379 struct VARIANT {
380 n1_t n1;
381
382 VARTYPE vt() { return n1.n2.vt; };
383 void vt(VARTYPE val) { n1.n2.vt = val; }
384 LONG lVal() { return n1.n2.n3.lVal; }
385 void lVal(LONG val) { return n1.n2.n3.lVal = val; }
386 FLOAT fltVal() { return n1.n2.n3.fltVal; }
387 void fltVal(FLOAT val) { return n1.n2.n3.fltVal = val; }
388 IDispatch pdispVal() { return n1.n2.n3.pdispVal; }
389 void pdispVal(IDispatch val) { n1.n2.n3.pdispVal = val; }
390 IUnknown punkVal() { return n1.n2.n3.punkVal; }
391 void punkVal(IUnknown val) { n1.n2.n3.punkVal = val; }
392 VARIANT_BOOL boolVal() { return n1.n2.n3.boolVal; }
393 void boolVal(VARIANT_BOOL val) { n1.n2.n3.boolVal = val; }
394 SHORT iVal() { return n1.n2.n3.iVal; }
395 void iVal(SHORT val) { n1.n2.n3.iVal = val; }
396 BSTR bstrVal() { return n1.n2.n3.bstrVal; }
397 void bstrVal(BSTR val) { n1.n2.n3.bstrVal = val; }
398
399 };
400 +/
401
402
403 /*
404 struct VARIANT {
405 LONG[4] mmmm;
406 }
407 */
408 alias VARIANT * LPVARIANT;
409 alias VARIANT VARIANTARG;
410 alias VARIANT * LPVARIANTARG;
411
412 /+
413 struct _wireBRECORD {
414 ULONG fFlags;
415 ULONG clSize;
416 IRecordInfo pRecInfo;
417 byte * pRecord;
418 };
419 ++++++++++++++++++++/
420
421
422 /+
423 struct _wireVARIANT {
424 DWORD clSize;
425 DWORD rpcReserved;
426 USHORT vt;
427 USHORT wReserved1;
428 USHORT wReserved2;
429 USHORT wReserved3;
430 [switch_type(ULONG), switch_is(vt)] union {
431 [case(VT_I4)] LONG lVal; /* VT_I4 */
432 [case(VT_UI1)] BYTE bVal; /* VT_UI1 */
433 [case(VT_I2)] SHORT iVal; /* VT_I2 */
434 [case(VT_R4)] FLOAT fltVal; /* VT_R4 */
435 [case(VT_R8)] DOUBLE dblVal; /* VT_R8 */
436 [case(VT_BOOL)] VARIANT_BOOL boolVal; /* VT_BOOL */
437 [case(VT_ERROR)] SCODE scode; /* VT_ERROR */
438 [case(VT_CY)] CY cyVal; /* VT_CY */
439 [case(VT_DATE)] DATE date; /* VT_DATE */
440 [case(VT_BSTR)] wireBSTR bstrVal; /* VT_BSTR */
441 [case(VT_UNKNOWN)] IUnknown * punkVal; /* VT_UNKNOWN */
442 [case(VT_DISPATCH)] IDispatch * pdispVal; /* VT_DISPATCH */
443 [case(VT_ARRAY)] wireSAFEARRAY parray; /* VT_ARRAY */
444
445 [case(VT_RECORD, VT_RECORD|VT_BYREF)]
446 wireBRECORD brecVal; /* VT_RECORD */
447
448 [case(VT_UI1|VT_BYREF)]
449 BYTE * pbVal; /* VT_BYREF|VT_UI1 */
450 [case(VT_I2|VT_BYREF)]
451 SHORT * piVal; /* VT_BYREF|VT_I2 */
452 [case(VT_I4|VT_BYREF)]
453 LONG * plVal; /* VT_BYREF|VT_I4 */
454 [case(VT_R4|VT_BYREF)]
455 FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
456 [case(VT_R8|VT_BYREF)]
457 DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
458 [case(VT_BOOL|VT_BYREF)]
459 VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
460 [case(VT_ERROR|VT_BYREF)]
461 SCODE * pscode; /* VT_BYREF|VT_ERROR */
462 [case(VT_CY|VT_BYREF)]
463 CY * pcyVal; /* VT_BYREF|VT_CY */
464 [case(VT_DATE|VT_BYREF)]
465 DATE * pdate; /* VT_BYREF|VT_DATE */
466 [case(VT_BSTR|VT_BYREF)]
467 wireBSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
468 [case(VT_UNKNOWN|VT_BYREF)]
469 IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
470 [case(VT_DISPATCH|VT_BYREF)]
471 IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
472 [case(VT_ARRAY|VT_BYREF)]
473 wireSAFEARRAY *pparray; /* VT_BYREF|VT_ARRAY */
474 [case(VT_VARIANT|VT_BYREF)]
475 wireVARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
476
477 [case(VT_I1)] CHAR cVal; /* VT_I1 */
478 [case(VT_UI2)] USHORT uiVal; /* VT_UI2 */
479 [case(VT_UI4)] ULONG ulVal; /* VT_UI4 */
480 [case(VT_INT)] INT intVal; /* VT_INT */
481 [case(VT_UINT)] UINT uintVal; /* VT_UINT */
482 [case(VT_DECIMAL)] DECIMAL decVal; /* VT_DECIMAL */
483
484 [case(VT_BYREF|VT_DECIMAL)]
485 DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
486 [case(VT_BYREF|VT_I1)]
487 CHAR * pcVal; /* VT_BYREF|VT_I1 */
488 [case(VT_BYREF|VT_UI2)]
489 USHORT * puiVal; /* VT_BYREF|VT_UI2 */
490 [case(VT_BYREF|VT_UI4)]
491 ULONG * pulVal; /* VT_BYREF|VT_UI4 */
492 [case(VT_BYREF|VT_INT)]
493 INT * pintVal; /* VT_BYREF|VT_INT */
494 [case(VT_BYREF|VT_UINT)]
495 UINT * puintVal; /* VT_BYREF|VT_UINT */
496 [case(VT_EMPTY)] ; /* nothing */
497 [case(VT_NULL)] ; /* nothing */
498 };
499 };
500 +/
501
502 //########################################################################
503 // End of VARIANT & SAFEARRAY
504 //########################################################################
505
506
507 //TypeInfo stuff.
508
509 alias LONG DISPID;
510 alias DISPID MEMBERID;
511 alias DWORD HREFTYPE;
512
513 enum TYPEKIND {
514 TKIND_ENUM = 0,
515 TKIND_RECORD,
516 TKIND_MODULE,
517 TKIND_INTERFACE,
518 TKIND_DISPATCH,
519 TKIND_COCLASS,
520 TKIND_ALIAS,
521 TKIND_UNION,
522 TKIND_MAX /* end of enum marker */
523 }
524 union TD_00{
525 TYPEDESC * lptdesc;
526 ARRAYDESC * lpadesc;
527 HREFTYPE hreftype;
528 };
529
530 struct TYPEDESC {
531 TD_00 u;
532 VARTYPE vt;
533 }
534
535 struct ARRAYDESC {
536 TYPEDESC tdescElem; /* element type */
537 USHORT cDims; /* dimension count */
538 SAFEARRAYBOUND[1] rgbounds; /* var len array of bounds */
539 }
540
541 // parameter description
542 struct PARAMDESCEX {
543 ULONG cBytes; /* size of this structure */
544 VARIANTARG varDefaultValue; /* default value of this parameter */
545 }
546 alias PARAMDESCEX * LPPARAMDESCEX;
547
548 struct PARAMDESC {
549 LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */
550 USHORT wParamFlags; /* IN, OUT, etc */
551 }
552 alias PARAMDESC * LPPARAMDESC;
553
554 const USHORT PARAMFLAG_NONE = 0x00;
555 const USHORT PARAMFLAG_FIN = 0x01;
556 const USHORT PARAMFLAG_FOUT = 0x02;
557 const USHORT PARAMFLAG_FLCID = 0x04;
558 const USHORT PARAMFLAG_FRETVAL = 0x08;
559 const USHORT PARAMFLAG_FOPT = 0x10;
560 const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
561 const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
562
563 struct IDLDESC {
564 ULONG dwReserved;
565 USHORT wIDLFlags; /* IN, OUT, etc */
566 }
567 alias IDLDESC * LPIDLDESC;
568
569 const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
570 const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
571 const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
572 const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
573 const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
574
575
576 struct ELEMDESC { /* a format that MIDL likes */
577 TYPEDESC tdesc; /* the type of the element */
578 PARAMDESC paramdesc; /* IDLDESC is a subset of PARAMDESC */
579 }
580
581 struct TYPEATTR {
582 GUID guid; /* the GUID of the TypeInfo */
583 LCID lcid; /* locale of member names and doc strings */
584 DWORD dwReserved;
585 MEMBERID memidConstructor; /* ID of constructor, MEMBERID_NIL if none */
586 MEMBERID memidDestructor; /* ID of destructor, MEMBERID_NIL if none */
587 LPOLESTR lpstrSchema;
588 ULONG cbSizeInstance; /* the size of an instance of this type */
589 TYPEKIND typekind; /* the kind of type this typeinfo describes */
590 WORD cFuncs; /* number of functions */
591 WORD cVars; /* number of variables / data members */
592 WORD cImplTypes; /* number of implemented interfaces */
593 WORD cbSizeVft; /* the size of this types virtual func table */
594 WORD cbAlignment; /* specifies the alignment requirements for
595 an instance of this type,
596 0 = align on 64k boundary
597 1 = byte align
598 2 = word align
599 4 = dword align... */
600 WORD wTypeFlags;
601 WORD wMajorVerNum; /* major version number */
602 WORD wMinorVerNum; /* minor version number */
603 TYPEDESC tdescAlias; /* if typekind == TKIND_ALIAS this field
604 specifies the type for which this type
605 is an alias */
606 IDLDESC idldescType; /* IDL attributes of the described type */
607 }
608 alias TYPEATTR * LPTYPEATTR;
609
610
611 struct DISPPARAMS {
612 VARIANTARG * rgvarg;
613 DISPID * rgdispidNamedArgs;
614 UINT cArgs;
615 UINT cNamedArgs;
616 }
617
618 struct EXCEPINFO {
619 WORD wCode; /* An error code describing the error. */
620 WORD wReserved;
621 BSTR bstrSource; /* A source of the exception */
622 BSTR bstrDescription; /* A description of the error */
623 BSTR bstrHelpFile; /* Fully qualified drive, path, and file name */
624 DWORD dwHelpContext; /* help context of topic within the help file */
625 ULONG pvReserved;
626 ULONG pfnDeferredFillIn;
627 SCODE scode;
628 }
629 /+
630
631 cpp_quote("#else /* 0 */")
632 cpp_quote("typedef struct tagEXCEPINFO {")
633 cpp_quote(" WORD wCode;")
634 cpp_quote(" WORD wReserved;")
635 cpp_quote(" BSTR bstrSource;")
636 cpp_quote(" BSTR bstrDescription;")
637 cpp_quote(" BSTR bstrHelpFile;")
638 cpp_quote(" DWORD dwHelpContext;")
639 cpp_quote(" PVOID pvReserved;")
640 cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
641 cpp_quote(" SCODE scode;")
642 cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
643 cpp_quote("#endif /* 0 */")
644 +/
645
646 enum CALLCONV {
647 CC_FASTCALL = 0,
648 CC_CDECL = 1,
649 CC_MSCPASCAL,
650 CC_PASCAL = CC_MSCPASCAL,
651 CC_MACPASCAL,
652 CC_STDCALL,
653 CC_FPFASTCALL,
654 CC_SYSCALL,
655 CC_MPWCDECL,
656 CC_MPWPASCAL,
657 CC_MAX /* end of enum marker */
658 }
659 enum FUNCKIND {
660 FUNC_VIRTUAL,
661 FUNC_PUREVIRTUAL,
662 FUNC_NONVIRTUAL,
663 FUNC_STATIC,
664 FUNC_DISPATCH
665 }
666
667 enum INVOKEKIND {
668 INVOKE_FUNC = 1,
669 INVOKE_PROPERTYGET = 2,
670 INVOKE_PROPERTYPUT = 4,
671 INVOKE_PROPERTYPUTREF = 8
672 }
673
674 struct FUNCDESC {
675 MEMBERID memid;
676 SCODE * lprgscode;
677 ELEMDESC * lprgelemdescParam; /* array of param types */
678 FUNCKIND funckind;
679 INVOKEKIND invkind;
680 CALLCONV callconv;
681 SHORT cParams;
682 SHORT cParamsOpt;
683 SHORT oVft;
684 SHORT cScodes;
685 ELEMDESC elemdescFunc;
686 WORD wFuncFlags;
687 }
688 alias FUNCDESC * LPFUNCDESC;
689
690 enum VARKIND {
691 VAR_PERINSTANCE,
692 VAR_STATIC,
693 VAR_CONST,
694 VAR_DISPATCH
695 }
696 /* IMPLTYPE Flags */
697 const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
698 const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
699 const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
700 const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
701
702 union VD_u {
703 /* offset of variable within the instance */
704 ULONG oInst;
705 VARIANT * lpvarValue; /* the value of the constant */
706 }
707 struct VARDESC {
708 MEMBERID memid;
709 LPOLESTR lpstrSchema;
710 VD_u u;
711 ELEMDESC elemdescVar;
712 WORD wVarFlags;
713 VARKIND varkind;
714 }
715 alias VARDESC * LPVARDESC;
716
717 enum TYPEFLAGS {
718 TYPEFLAG_FAPPOBJECT = 0x01,
719 TYPEFLAG_FCANCREATE = 0x02,
720 TYPEFLAG_FLICENSED = 0x04,
721 TYPEFLAG_FPREDECLID = 0x08,
722 TYPEFLAG_FHIDDEN = 0x10,
723 TYPEFLAG_FCONTROL = 0x20,
724 TYPEFLAG_FDUAL = 0x40,
725 TYPEFLAG_FNONEXTENSIBLE = 0x80,
726 TYPEFLAG_FOLEAUTOMATION = 0x100,
727 TYPEFLAG_FRESTRICTED = 0x200,
728 TYPEFLAG_FAGGREGATABLE = 0x400,
729 TYPEFLAG_FREPLACEABLE = 0x800,
730 TYPEFLAG_FDISPATCHABLE = 0x1000,
731 TYPEFLAG_FREVERSEBIND = 0x2000
732 }
733
734 enum FUNCFLAGS {
735 FUNCFLAG_FRESTRICTED = 0x1,
736 FUNCFLAG_FSOURCE = 0x2,
737 FUNCFLAG_FBINDABLE = 0x4,
738 FUNCFLAG_FREQUESTEDIT = 0x8,
739 FUNCFLAG_FDISPLAYBIND = 0x10,
740 FUNCFLAG_FDEFAULTBIND = 0x20,
741 FUNCFLAG_FHIDDEN = 0x40,
742 FUNCFLAG_FUSESGETLASTERROR = 0x80,
743 FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
744 FUNCFLAG_FUIDEFAULT = 0x200,
745 FUNCFLAG_FNONBROWSABLE = 0x400,
746 FUNCFLAG_FREPLACEABLE = 0x800,
747 FUNCFLAG_FIMMEDIATEBIND = 0x1000
748 }
749
750 enum VARFLAGS {
751 VARFLAG_FREADONLY = 0x1,
752 VARFLAG_FSOURCE = 0x2,
753 VARFLAG_FBINDABLE = 0x4,
754 VARFLAG_FREQUESTEDIT = 0x8,
755 VARFLAG_FDISPLAYBIND = 0x10,
756 VARFLAG_FDEFAULTBIND = 0x20,
757 VARFLAG_FHIDDEN = 0x40,
758 VARFLAG_FRESTRICTED = 0x80,
759 VARFLAG_FDEFAULTCOLLELEM = 0x100,
760 VARFLAG_FUIDEFAULT = 0x200,
761 VARFLAG_FNONBROWSABLE = 0x400,
762 VARFLAG_FREPLACEABLE = 0x800,
763 VARFLAG_FIMMEDIATEBIND = 0x1000
764 }
765
766 struct CLEANLOCALSTORAGE {
767 IUnknown pInterface; /* interface that is responsible for storage */
768 PVOID pStorage; /* the storage being managed by interface */
769 DWORD flags; /* which interface, what storage */
770 }
771
772 struct CUSTDATAITEM {
773 GUID guid; /* guid identifying this custom data item */
774 VARIANTARG varValue; /* value of this custom data item */
775 }
776 alias CUSTDATAITEM * LPCUSTDATAITEM;
777
778 struct CUSTDATA {
779 DWORD cCustData; /* number of custom data items in rgCustData */
780 LPCUSTDATAITEM prgCustData;
781 /* array of custom data items */
782 }
783 alias CUSTDATA * LPCUSTDATA;
784
785
786 interface ICreateTypeInfo: IUnknown
787 {
788 HRESULT SetGuid( REFGUID guid );
789 HRESULT SetTypeFlags( UINT uTypeFlags );
790 HRESULT SetDocString( LPOLESTR pStrDoc );
791 HRESULT SetHelpContext( DWORD dwHelpContext);
792 HRESULT SetVersion( WORD wMajorVerNum, WORD wMinorVerNum );
793 HRESULT AddRefTypeInfo( ITypeInfo pTInfo, HREFTYPE * phRefType );
794 HRESULT AddFuncDesc( UINT index, FUNCDESC * pFuncDesc );
795 HRESULT AddImplType( UINT index, HREFTYPE hRefType );
796 HRESULT SetImplTypeFlags( UINT index, INT implTypeFlags );
797 HRESULT SetAlignment( WORD cbAlignment );
798 HRESULT SetSchema( LPOLESTR pStrSchema );
799 HRESULT AddVarDesc( UINT index, VARDESC * pVarDesc );
800 HRESULT SetFuncAndParamNames( UINT index, LPOLESTR * rgszNames, UINT cNames );
801 HRESULT SetVarName( UINT index, LPOLESTR szName );
802 HRESULT SetTypeDescAlias( TYPEDESC * pTDescAlias );
803 HRESULT DefineFuncAsDllEntry( UINT index,LPOLESTR szDllName,LPOLESTR szProcName );
804 HRESULT SetFuncDocString( UINT index, LPOLESTR szDocString );
805 HRESULT SetVarDocString(UINT index,LPOLESTR szDocString );
806 HRESULT SetFuncHelpContext(UINT index,DWORD dwHelpContext );
807 HRESULT SetVarHelpContext(UINT index,DWORD dwHelpContext );
808 HRESULT SetMops(UINT index,BSTR bstrMops );
809 HRESULT SetTypeIdldesc(IDLDESC * pIdlDesc );
810 HRESULT LayOut();
811 }
812 alias ICreateTypeInfo LPCREATETYPEINFO;
813
814 interface ICreateTypeInfo2: ICreateTypeInfo
815 {
816 HRESULT DeleteFuncDesc(UINT index);
817 HRESULT DeleteFuncDescByMemId(MEMBERID memid,INVOKEKIND invKind);
818 HRESULT DeleteVarDesc(UINT index);
819 HRESULT DeleteVarDescByMemId(MEMBERID memid);
820 HRESULT DeleteImplType(UINT index);
821 HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal);
822 HRESULT SetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
823 HRESULT SetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal);
824 HRESULT SetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
825 HRESULT SetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
826 HRESULT SetHelpStringContext(ULONG dwHelpStringContext);
827 HRESULT SetFuncHelpStringContext(UINT index,ULONG dwHelpStringContext);
828 HRESULT SetVarHelpStringContext(UINT index,ULONG dwHelpStringContext);
829 HRESULT Invalidate();
830 HRESULT SetName(LPOLESTR szName);
831 }
832 alias ICreateTypeInfo2 LPCREATETYPEINFO2;
833
834 interface ICreateTypeLib : IUnknown
835 {
836 HRESULT CreateTypeInfo(LPOLESTR szName,TYPEKIND tkind,ICreateTypeInfo * ppCTInfo);
837 HRESULT SetName(LPOLESTR szName);
838 HRESULT SetVersion(WORD wMajorVerNum,WORD wMinorVerNum);
839 HRESULT SetGuid(REFGUID guid);
840 HRESULT SetDocString( LPOLESTR szDoc);
841 HRESULT SetHelpFileName(LPOLESTR szHelpFileName);
842 HRESULT SetHelpContext(DWORD dwHelpContext);
843 HRESULT SetLcid(LCID lcid);
844 HRESULT SetLibFlags(UINT uLibFlags);
845 HRESULT SaveAllChanges();
846 }
847 alias ICreateTypeLib LPCREATETYPELIB;
848
849 interface ICreateTypeLib2 : ICreateTypeLib
850 {
851 HRESULT DeleteTypeInfo(LPOLESTR szName);
852 HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal);
853 HRESULT SetHelpStringContext(ULONG dwHelpStringContext);
854 HRESULT SetHelpStringDll(LPOLESTR szFileName);
855 }
856
857 interface IDispatch : IUnknown
858 {
859 HRESULT GetTypeInfoCount(UINT * pctinfo);
860 HRESULT GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo * ppTInfo);
861 HRESULT GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId);
862 HRESULT Invoke(DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS* pDispParams,VARIANT* pVarResult,EXCEPINFO* pExcepInfo,UINT* puArgErr);
863 }
864 alias IDispatch LPDISPATCH;
865 const DISPID DISPID_UNKNOWN = cast(DISPID)-1;
866 const DISPID DISPID_VALUE = cast(DISPID)0;
867 const DISPID DISPID_PROPERTYPUT = cast(DISPID)-3;
868 const DISPID DISPID_NEWENUM = cast(DISPID)-4;
869 const DISPID DISPID_EVALUATE = cast(DISPID)-5;
870 const DISPID DISPID_CONSTRUCTOR = cast(DISPID)-6;
871 const DISPID DISPID_DESTRUCTOR = cast(DISPID)-7;
872 const DISPID DISPID_COLLECT = cast(DISPID)-8;
873
874 /+++++++++++++++++++++++++++++++++++++++
875
876 [
877 object,
878 uuid(00020404-0000-0000-C000-000000000046),
879 pointer_default(unique)
880 ]
881
882 interface IEnumVARIANT : IUnknown
883 {
884 typedef [unique] IEnumVARIANT* LPENUMVARIANT;
885
886 [local]
887 HRESULT Next(
888 [in] ULONG celt,
889 [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
890 [out] ULONG * pCeltFetched
891 );
892
893 [call_as(Next)]
894 HRESULT RemoteNext(
895 [in] ULONG celt,
896 [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
897 [out] ULONG * pCeltFetched
898 );
899
900 HRESULT Skip(
901 [in] ULONG celt
902 );
903
904 HRESULT Reset(
905 );
906
907 HRESULT Clone(
908 [out] IEnumVARIANT ** ppEnum
909 );
910 }
911
912
913 +/
914 enum DESCKIND {
915 DESCKIND_NONE = 0,
916 DESCKIND_FUNCDESC,
917 DESCKIND_VARDESC,
918 DESCKIND_TYPECOMP,
919 DESCKIND_IMPLICITAPPOBJ,
920 DESCKIND_MAX
921 }
922
923
924 union BINDPTR {
925 FUNCDESC * lpfuncdesc;
926 VARDESC * lpvardesc;
927 ITypeComp lptcomp;
928 }
929 alias BINDPTR * LPBINDPTR;
930
931 interface ITypeComp : IUnknown
932 {
933
934 HRESULT Bind(LPOLESTR szName,ULONG lHashVal,WORD wFlags,
935 ITypeInfo * ppTInfo,DESCKIND * pDescKind,BINDPTR * pBindPtr
936 );
937
938
939 HRESULT BindType( LPOLESTR szName,ULONG lHashVal,
940 ITypeInfo * ppTInfo,
941 ITypeComp * ppTComp
942 );
943
944 }
945
946 interface ITypeInfo : IUnknown
947 {
948 HRESULT GetTypeAttr(TYPEATTR ** ppTypeAttr);
949 HRESULT GetTypeComp( ITypeComp * ppTComp );
950 HRESULT GetFuncDesc( UINT index, FUNCDESC ** ppFuncDesc );
951 HRESULT GetVarDesc( UINT index,VARDESC ** ppVarDesc);
952 HRESULT GetNames(MEMBERID memid,BSTR * rgBstrNames,UINT cMaxNames,UINT * pcNames);
953 HRESULT GetRefTypeOfImplType(UINT index,HREFTYPE * pRefType);
954 HRESULT GetImplTypeFlags(UINT index,INT * pImplTypeFlags);
955 HRESULT GetIDsOfNames(LPOLESTR * rgszNames,UINT cNames,MEMBERID * pMemId);
956 HRESULT Invoke(PVOID pvInstance,MEMBERID memid,WORD wFlags,DISPPARAMS * pDispParams,VARIANT * pVarResult,EXCEPINFO * pExcepInfo,UINT * puArgErr);
957 HRESULT GetDocumentation(MEMBERID memid,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile);
958 HRESULT GetDllEntry(MEMBERID memid,INVOKEKIND invKind,BSTR * pBstrDllName,BSTR * pBstrName,WORD * pwOrdinal);
959 HRESULT GetRefTypeInfo(HREFTYPE hRefType,ITypeInfo * ppTInfo);
960 HRESULT AddressOfMember(MEMBERID memid,INVOKEKIND invKind,PVOID * ppv);
961 HRESULT CreateInstance(IUnknown pUnkOuter,REFIID riid,PVOID * ppvObj);
962 HRESULT GetMops(MEMBERID memid,BSTR * pBstrMops);
963 HRESULT GetContainingTypeLib( ITypeLib ** ppTLib,UINT * pIndex);
964 void ReleaseTypeAttr(TYPEATTR * pTypeAttr );
965 void ReleaseFuncDesc( FUNCDESC * pFuncDesc );
966 void ReleaseVarDesc(VARDESC * pVarDesc );
967 }
968 alias ITypeInfo LPTYPEINFO;
969
970 interface ITypeInfo2 : ITypeInfo
971 {
972 HRESULT GetTypeKind(TYPEKIND * pTypeKind);
973 HRESULT GetTypeFlags(ULONG * pTypeFlags);
974 HRESULT GetFuncIndexOfMemId(MEMBERID memid,INVOKEKIND invKind,UINT * pFuncIndex);
975 HRESULT GetVarIndexOfMemId(MEMBERID memid,UINT * pVarIndex);
976 HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal);
977 HRESULT GetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
978 HRESULT GetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal);
979 HRESULT GetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
980 HRESULT GetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
981 HRESULT GetDocumentation2(MEMBERID memid,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll);
982 HRESULT GetAllCustData(CUSTDATA * pCustData);
983 HRESULT GetAllFuncCustData(UINT index,CUSTDATA * pCustData);
984 HRESULT GetAllParamCustData(UINT indexFunc,UINT indexParam,CUSTDATA * pCustData);
985 HRESULT GetAllVarCustData(UINT index,CUSTDATA * pCustData);
986 HRESULT GetAllImplTypeCustData(UINT index,CUSTDATA * pCustData);
987 }
988
989 alias ITypeInfo2 LPTYPEINFO2;
990
991 enum SYSKIND {
992 SYS_WIN16 = 0,
993 SYS_WIN32,
994 SYS_MAC
995 }
996
997 enum LIBFLAGS {
998 LIBFLAG_FRESTRICTED = 0x01,
999 LIBFLAG_FCONTROL = 0x02,
1000 LIBFLAG_FHIDDEN = 0x04,
1001 LIBFLAG_FHASDISKIMAGE = 0x08
1002 }
1003
1004 struct TLIBATTR {
1005 GUID guid;
1006 LCID lcid;
1007 SYSKIND syskind;
1008 WORD wMajorVerNum;
1009 WORD wMinorVerNum;
1010 WORD wLibFlags;
1011 }
1012 alias TLIBATTR * LPTLIBATTR;
1013
1014 interface ITypeLib : IUnknown
1015 {
1016 UINT GetTypeInfoCount(
1017 );
1018
1019 HRESULT GetTypeInfo(
1020 UINT index,
1021 ITypeInfo * ppTInfo
1022 );
1023
1024 HRESULT GetTypeInfoType(
1025 UINT index,
1026 TYPEKIND * pTKind
1027 );
1028
1029 HRESULT GetTypeInfoOfGuid(
1030 REFGUID guid,
1031 ITypeInfo * ppTinfo
1032 );
1033
1034 HRESULT GetLibAttr(
1035 TLIBATTR ** ppTLibAttr
1036 );
1037
1038 HRESULT GetTypeComp(ITypeComp * ppTComp );
1039
1040 HRESULT GetDocumentation(INT index,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile
1041 );
1042
1043 HRESULT IsName(LPOLESTR szNameBuf,ULONG lHashVal,BOOL * pfName
1044 );
1045
1046 HRESULT FindName(
1047 LPOLESTR szNameBuf,
1048 ULONG lHashVal,
1049 ITypeInfo * ppTInfo,
1050 MEMBERID * rgMemId,
1051 USHORT * pcFound
1052 );
1053
1054 void ReleaseTLibAttr( TLIBATTR * pTLibAttr );
1055 }
1056
1057 alias ITypeLib LPTYPELIB;
1058
1059 interface ITypeLib2 : ITypeLib
1060 {
1061 HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal);
1062 HRESULT GetLibStatistics(ULONG * pcUniqueNames,ULONG * pcchUniqueNames);
1063 HRESULT GetDocumentation2(INT index,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll);
1064 HRESULT GetAllCustData(CUSTDATA * pCustData);
1065 }
1066 alias ITypeLib2 LPTYPELIB2;
1067
1068 enum CHANGEKIND {
1069 CHANGEKIND_ADDMEMBER,
1070 CHANGEKIND_DELETEMEMBER,
1071 CHANGEKIND_SETNAMES,
1072 CHANGEKIND_SETDOCUMENTATION,
1073 CHANGEKIND_GENERAL,
1074 CHANGEKIND_INVALIDATE,
1075 CHANGEKIND_CHANGEFAILED,
1076 CHANGEKIND_MAX,
1077 ADDMEMBER = CHANGEKIND_ADDMEMBER,
1078 DELETEMEMBER = CHANGEKIND_DELETEMEMBER,
1079 SETNAMES = CHANGEKIND_SETNAMES,
1080 SETDOCUMENTATION = CHANGEKIND_SETDOCUMENTATION,
1081 GENERAL = CHANGEKIND_GENERAL,
1082 INVALIDATE = CHANGEKIND_INVALIDATE,
1083 CHANGEFAILED = CHANGEKIND_CHANGEFAILED,
1084 MAX = CHANGEKIND_MAX
1085 }
1086
1087 interface ITypeChangeEvents: IUnknown
1088 {
1089 // notification messages used by the dynamic typeinfo protocol.
1090 HRESULT RequestTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoBefore,LPOLESTR pStrName,INT * pfCancel);
1091 HRESULT AfterTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoAfter,LPOLESTR pStrName);
1092 }
1093 alias ITypeChangeEvents LPTYPECHANGEEVENTS;
1094
1095 interface IErrorInfo: IUnknown
1096 {
1097 HRESULT GetGUID( GUID * pGUID );
1098 HRESULT GetSource(BSTR * pBstrSource);
1099 HRESULT GetDescription(BSTR * pBstrDescription);
1100 HRESULT GetHelpFile(BSTR * pBstrHelpFile);
1101 HRESULT GetHelpContext(DWORD * pdwHelpContext);
1102 }
1103 alias IErrorInfo LPERRORINFO;
1104
1105 interface ICreateErrorInfo: IUnknown
1106 {
1107 HRESULT SetGUID(REFGUID rguid);
1108 HRESULT SetSource(LPOLESTR szSource);
1109 HRESULT SetDescription(LPOLESTR szDescription);
1110 HRESULT SetHelpFile(LPOLESTR szHelpFile);
1111 HRESULT SetHelpContext(DWORD dwHelpContext);
1112 }
1113 alias ICreateErrorInfo LPCREATEERRORINFO;
1114
1115 interface ISupportErrorInfo: IUnknown
1116 {
1117 HRESULT InterfaceSupportsErrorInfo(REFIID riid);
1118 }
1119 alias ISupportErrorInfo LPSUPPORTERRORINFO;
1120
1121 interface ITypeFactory : IUnknown
1122 {
1123 HRESULT CreateFromTypeInfo(ITypeInfo pTypeInfo,REFIID riid, IUnknown *ppv);
1124 }
1125
1126 interface ITypeMarshal : IUnknown
1127 {
1128 HRESULT Size(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG * pSize);
1129 HRESULT Marshal(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG cbBufferLength,BYTE * pBuffer,ULONG * pcbWritten);
1130 HRESULT Unmarshal(PVOID pvType,DWORD dwFlags,ULONG cbBufferLength,BYTE * pBuffer,ULONG * pcbRead);
1131 HRESULT Free(PVOID pvType);
1132 }
1133
1134
1135 interface IRecordInfo: IUnknown
1136 {
1137 HRESULT RecordInit(PVOID pvNew);
1138 HRESULT RecordClear(PVOID pvExisting);
1139 HRESULT RecordCopy(PVOID pvExisting,PVOID pvNew);
1140 HRESULT GetGuid(GUID * pguid);
1141 HRESULT GetName(BSTR * pbstrName);
1142 HRESULT GetSize(ULONG * pcbSize);
1143 HRESULT GetTypeInfo(ITypeInfo * ppTypeInfo);
1144 HRESULT GetField(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
1145 HRESULT GetFieldNoCopy(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField,PVOID * ppvDataCArray);
1146 HRESULT PutField(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
1147 HRESULT PutFieldNoCopy(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
1148 HRESULT GetFieldNames(ULONG * pcNames,BSTR * rgBstrNames);
1149 BOOL IsMatchingType(IRecordInfo pRecordInfo);
1150 PVOID RecordCreate();
1151 HRESULT RecordCreateCopy(PVOID pvSource,PVOID * ppvDest);
1152 HRESULT RecordDestroy(PVOID pvRecord);
1153 }
1154 alias IRecordInfo LPRECORDINFO;
1155
1156 } // extern(WIndows);
1157
1158