Module:    COM
Synopsis:  FFI declarations for some miscellaneous pieces of the
	   COM interface that do not need special treatment. 
Copyright:    Original Code is Copyright (c) 1995-2004 Functional Objects, Inc.
              All rights reserved.
License:      See License.txt in this distribution for details.
Warranty:     Distributed WITHOUT WARRANTY OF ANY KIND

// This file is automatically generated from "objbase.h"; do not edit.

define inline-only constant $CLSCTX-INPROC              =
	logior($CLSCTX-INPROC-SERVER, $CLSCTX-INPROC-HANDLER);
define inline-only constant $CLSCTX-ALL                 =
	logior($CLSCTX-INPROC-SERVER, $CLSCTX-INPROC-HANDLER, $CLSCTX-LOCAL-SERVER);
define inline-only constant $CLSCTX-SERVER              =
	logior($CLSCTX-INPROC-SERVER, $CLSCTX-LOCAL-SERVER);
// enum REGCLS:
define inline-only constant $REGCLS-SINGLEUSE = 0;
define inline-only constant $REGCLS-MULTIPLEUSE = 1;
define inline-only constant $REGCLS-MULTI-SEPARATE = 2;
define inline-only constant $REGCLS-SUSPENDED = 4;
define inline-only constant $REGCLS-SURROGATE = 8;

define inline-only constant $STGM-DIRECT                = #x00000000;
define inline-only constant $STGM-TRANSACTED            = #x00010000;
define inline-only constant $STGM-SIMPLE                = #x08000000;
define inline-only constant $STGM-READ                  = #x00000000;
define inline-only constant $STGM-WRITE                 = #x00000001;
define inline-only constant $STGM-READWRITE             = #x00000002;
define inline-only constant $STGM-SHARE-DENY-NONE       = #x00000040;
define inline-only constant $STGM-SHARE-DENY-READ       = #x00000030;
define inline-only constant $STGM-SHARE-DENY-WRITE      = #x00000020;
define inline-only constant $STGM-SHARE-EXCLUSIVE       = #x00000010;
define inline-only constant $STGM-PRIORITY              = #x00040000;
define inline-only constant $STGM-DELETEONRELEASE       = #x04000000;
define inline-only constant $STGM-NOSCRATCH             = #x00100000;
define inline-only constant $STGM-CREATE                = #x00001000;
define inline-only constant $STGM-CONVERT               = #x00020000;
define inline-only constant $STGM-FAILIFTHERE           = #x00000000;
define inline-only constant $STGM-NOSNAPSHOT            = #x00200000;

// This file is automatically generated from "wtypes.h"; do not edit.


define C-struct <GUID>
  sealed inline-only slot Data1-value    :: <DWORD>;
  sealed inline-only slot Data2-value    :: <WORD>;
  sealed inline-only slot Data3-value    :: <WORD>;
  sealed inline-only array slot Data4-array :: <C-BYTE>, length: 8,
	address-getter: Data4-value;
  pack: 8;
  pointer-type-name: <LPGUID>;
  c-name: "struct _GUID";
end C-struct <GUID>;
define inline constant <IID> = <GUID>;
define inline constant <LPIID> = <LPGUID>;
define inline constant <CLSID> = <GUID>;
define inline constant <LPCLSID> = <LPGUID>;
define inline constant <FMTID> = <GUID>;
define inline constant <LPFMTID> = <LPGUID>;
define constant <REFGUID> =  /* const */ <LPGUID>;
define constant <REFIID> =  /* const */ <LPIID>;
define constant <REFCLSID> =  /* const */ <LPCLSID>;
define constant <REFFMTID> =  /* const */ <LPFMTID>;
// enum MEMCTX:
define inline-only constant $MEMCTX-TASK = 1;
define inline-only constant $MEMCTX-SHARED = 2;
define inline-only constant $MEMCTX-MACSYSTEM = 3;
define inline-only constant $MEMCTX-UNKNOWN = -1;
define inline-only constant $MEMCTX-SAME = -2;

// enum CLSCTX:
define inline-only constant $CLSCTX-INPROC-SERVER = #x1;
define inline-only constant $CLSCTX-INPROC-HANDLER = #x2;
define inline-only constant $CLSCTX-LOCAL-SERVER = #x4;
define inline-only constant $CLSCTX-INPROC-SERVER16 = #x8;
define inline-only constant $CLSCTX-REMOTE-SERVER = #x10;
define inline-only constant $CLSCTX-INPROC-HANDLER16 = #x20;
define inline-only constant $CLSCTX-INPROC-SERVERX86 = #x40;
define inline-only constant $CLSCTX-INPROC-HANDLERX86 = #x80;
define inline-only constant $CLSCTX-ESERVER-HANDLER = #x100;

// enum MSHLFLAGS:
define inline-only constant $MSHLFLAGS-NORMAL = 0;
define inline-only constant $MSHLFLAGS-TABLESTRONG = 1;
define inline-only constant $MSHLFLAGS-TABLEWEAK = 2;
define inline-only constant $MSHLFLAGS-NOPING = 4;

// enum MSHCTX:
define inline-only constant $MSHCTX-LOCAL = 0;
define inline-only constant $MSHCTX-NOSHAREDMEM = 1;
define inline-only constant $MSHCTX-DIFFERENTMACHINE = 2;
define inline-only constant $MSHCTX-INPROC = 3;

// enum DVASPECT:
define inline-only constant $DVASPECT-CONTENT = 1;
define inline-only constant $DVASPECT-THUMBNAIL = 2;
define inline-only constant $DVASPECT-ICON = 4;
define inline-only constant $DVASPECT-DOCPRINT = 8;

// enum STGC:
define inline-only constant $STGC-DEFAULT = 0;
define inline-only constant $STGC-OVERWRITE = 1;
define inline-only constant $STGC-ONLYIFCURRENT = 2;
define inline-only constant $STGC-DANGEROUSLYCOMMITMERELYTODISKCACHE = 4;
define inline-only constant $STGC-CONSOLIDATE = 8;

// enum STGMOVE:
define inline-only constant $STGMOVE-MOVE = 0;
define inline-only constant $STGMOVE-COPY = 1;
define inline-only constant $STGMOVE-SHALLOWCOPY = 2;

// enum STATFLAG:
define inline-only constant $STATFLAG-DEFAULT = 0;
define inline-only constant $STATFLAG-NONAME = 1;
define inline-only constant $STATFLAG-NOOPEN = 2;

define inline constant <CLIPFORMAT> = <WORD>;
define inline constant <HMETAFILEPICT> = <C-void*>;
define inline constant <PROPID> = <ULONG>;

define C-struct <CSPLATFORM>
  sealed inline-only slot dwPlatformId-value :: <DWORD>;
  sealed inline-only slot dwVersionHi-value :: <DWORD>;
  sealed inline-only slot dwVersionLo-value :: <DWORD>;
  sealed inline-only slot dwProcessorArch-value :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPCSPLATFORM>;
  c-name: "struct tagCSPLATFORM";
end C-struct <CSPLATFORM>;

define C-struct <QUERYCONTEXT>
  sealed inline-only slot dwContext-value :: <DWORD>;
  sealed inline-only slot Platform-value :: <CSPLATFORM>;
  sealed inline-only slot Locale-value   :: <LCID>;
  sealed inline-only slot dwVersionHi-value :: <DWORD>;
  sealed inline-only slot dwVersionLo-value :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPQUERYCONTEXT>;
  c-name: "struct tagQUERYCONTEXT";
end C-struct <QUERYCONTEXT>;
define C-union <tagged_union%1>
  sealed inline-only slot clsid-value    :: <CLSID>;
  sealed inline-only slot iid-value      :: <IID>;
  sealed inline-only slot typelibID-value :: <GUID>;
  sealed inline-only slot pFileExt-value :: <LPOLESTR>;
  sealed inline-only slot pMimeType-value :: <LPOLESTR>;
  sealed inline-only slot pProgId-value  :: <LPOLESTR>;
  sealed inline-only slot pFileName-value :: <LPOLESTR>;
  sealed inline-only slot pJavaClassName-value :: <LPOLESTR>;
  sealed inline-only slot pPackageName-value :: <LPOLESTR>;
  pack: 8;
  c-name: "union __MIDL___MIDL_itf_wtypes_0001_0003";
end;

define C-struct <uCLSSPEC>
  sealed inline-only slot tyspec-value   :: <DWORD>;
  sealed inline-only slot tagged-union-value :: <tagged_union%1>;
  pack: 8;
  pointer-type-name: <LPuCLSSPEC>;
  c-name: "struct __MIDL___MIDL_itf_wtypes_0001_0001";
end C-struct <uCLSSPEC>;

define C-struct <PUBLISHEDAPPINFO>
  sealed inline-only slot pwszFileExtension-value :: <LPOLESTR>;
  sealed inline-only slot pwszDisplayName-value :: <LPOLESTR>;
  sealed inline-only slot pwszPackagePath-value :: <LPOLESTR>;
  pack: 8;
  pointer-type-name: <LPPUBLISHEDAPPINFO>;
  c-name: "struct _PUBLISHEDAPPINFO";
end C-struct <PUBLISHEDAPPINFO>;
// enum CLASSPATHTYPE:
define inline-only constant $ExeNamePath = 0;
define inline-only constant $DllNamePath = $ExeNamePath + 1;
define inline-only constant $TlbNamePath = $DllNamePath + 1;
define inline-only constant $CabFilePath = $TlbNamePath + 1;
define inline-only constant $InfFilePath = $CabFilePath + 1;
define inline-only constant $DrwFilePath = $InfFilePath + 1;
define inline-only constant $SetupNamePath = $DrwFilePath + 1;


define C-struct <APPDETAIL>
  sealed inline-only slot AppID-value    :: <GUID>;
  sealed inline-only slot cClasses-value :: <DWORD>;
  sealed inline-only slot prgClsIdList-value :: <LPCLSID>;
  sealed inline-only slot cTypeLibIds-value :: <DWORD>;
  sealed inline-only slot prgTypeLibIdList-value :: <LPCLSID>;
  sealed inline-only slot cServers-value :: <DWORD>;
  sealed inline-only slot prgServerNames-value :: <LPLPOLESTR>;
  pack: 8;
  pointer-type-name: <LPAPPDETAIL>;
  c-name: "struct tagAPPDETAIL";
end C-struct <APPDETAIL>;

define C-struct <PACKAGEDETAIL>
  sealed inline-only slot PathType-value :: <C-int>;
  sealed inline-only slot pszPath-value  :: <LPOLESTR>;
  sealed inline-only slot pszIconPath-value :: <LPOLESTR>;
  sealed inline-only slot pszSetupCommand-value :: <LPOLESTR>;
  sealed inline-only slot dwActFlags-value :: <DWORD>;
  sealed inline-only slot pszVendor-value :: <LPOLESTR>;
  sealed inline-only slot pszPackageName-value :: <LPOLESTR>;
  sealed inline-only slot pszProductName-value :: <LPOLESTR>;
  sealed inline-only slot dwContext-value :: <DWORD>;
  sealed inline-only slot Platform-value :: <CSPLATFORM>;
  sealed inline-only slot Locale-value   :: <LCID>;
  sealed inline-only slot dwVersionHi-value :: <DWORD>;
  sealed inline-only slot dwVersionLo-value :: <DWORD>;
  sealed inline-only slot Usn-value      :: <ULONGLONG>;
  sealed inline-only slot cApps-value    :: <DWORD>;
  sealed inline-only slot pAppDetail-value :: <LPAPPDETAIL>;
  pack: 8;
  pointer-type-name: <LPPACKAGEDETAIL>;
  c-name: "struct tagPACKAGEDETAIL";
end C-struct <PACKAGEDETAIL>;

define C-struct <PACKAGEINFO>
  sealed inline-only slot pszClassIconPath-value :: <LPOLESTR>;
  sealed inline-only slot pTreatAsClsid-value :: <LPCLSID>;
  sealed inline-only slot cPackages-value :: <DWORD>;
  sealed inline-only slot pPackageDetail-value :: <LPPACKAGEDETAIL>;
  pack: 8;
  pointer-type-name: <LPPACKAGEINFO>;
  c-name: "struct tagPACKAGEINFO";
end C-struct <PACKAGEINFO>;

define sealed domain make (singleton(<LPGUID>));
define sealed domain initialize (<LPGUID>);
define sealed domain make (singleton(<LPCSPLATFORM>));
define sealed domain initialize (<LPCSPLATFORM>);
define sealed domain make (singleton(<LPQUERYCONTEXT>));
define sealed domain initialize (<LPQUERYCONTEXT>);
define sealed domain make (singleton(<LPuCLSSPEC>));
define sealed domain initialize (<LPuCLSSPEC>);
define sealed domain make (singleton(<LPPUBLISHEDAPPINFO>));
define sealed domain initialize (<LPPUBLISHEDAPPINFO>);
define sealed domain make (singleton(<LPAPPDETAIL>));
define sealed domain initialize (<LPAPPDETAIL>);
define sealed domain make (singleton(<LPPACKAGEDETAIL>));
define sealed domain initialize (<LPPACKAGEDETAIL>);
define sealed domain make (singleton(<LPPACKAGEINFO>));
define sealed domain initialize (<LPPACKAGEINFO>);

// --- end of data from "wtypes.h" ---


// This file is automatically generated from "unknwn.h"; do not edit.

define constant <LPUNKNOWN> = <Interface>;
define constant <LPCLASSFACTORY> = <Interface>;


// --- end of data from "unknwn.h" ---


// This file is automatically generated from "objidl.h"; do not edit.

define constant <LPMARSHAL> = <Interface>;
define constant <LPMALLOC> = <Interface>;
define constant <LPMALLOCSPY> = <Interface>;
define constant <LPSTDMARSHALINFO> = <Interface>;
define constant <LPEXTERNALCONNECTION> = <Interface>;
// enum EXTCONN:
define inline-only constant $EXTCONN-STRONG = #x1;
define inline-only constant $EXTCONN-WEAK = #x2;
define inline-only constant $EXTCONN-CALLABLE = #x4;

define constant <LPMULTIQI> = <Interface>;

define C-struct <MULTI-QI>
  sealed inline-only slot pIID-value     ::  /* const */ <LPIID>;
  sealed inline-only slot pItf-value     :: <Interface> /* IUnknown */;
  sealed inline-only slot hr-value       :: <C-HRESULT>;
  pack: 8;
  pointer-type-name: <LPMULTI-QI>;
  c-name: "struct tagMULTI_QI";
end C-struct <MULTI-QI>;
define constant <LPENUMUNKNOWN> = <Interface>;
define constant <LPBC> = <Interface>;
define constant <LPBINDCTX> = <Interface>;

define C-struct <BIND-OPTS>
  sealed inline-only slot cbStruct-value :: <DWORD>;
  sealed inline-only slot grfFlags-value :: <DWORD>;
  sealed inline-only slot grfMode-value  :: <DWORD>;
  sealed inline-only slot dwTickCountDeadline-value :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPBIND-OPTS>;
  c-name: "struct tagBIND_OPTS";
end C-struct <BIND-OPTS>;
// enum BIND_FLAGS:
define inline-only constant $BIND-MAYBOTHERUSER = 1;
define inline-only constant $BIND-JUSTTESTEXISTENCE = 2;

define constant <LPENUMMONIKER> = <Interface>;
define constant <LPRUNNABLEOBJECT> = <Interface>;
define constant <LPRUNNINGOBJECTTABLE> = <Interface>;
define constant <LPPERSIST> = <Interface>;
define constant <LPPERSISTSTREAM> = <Interface>;
define constant <LPMONIKER> = <Interface>;
// enum MKSYS:
define inline-only constant $MKSYS-NONE = 0;
define inline-only constant $MKSYS-GENERICCOMPOSITE = 1;
define inline-only constant $MKSYS-FILEMONIKER = 2;
define inline-only constant $MKSYS-ANTIMONIKER = 3;
define inline-only constant $MKSYS-ITEMMONIKER = 4;
define inline-only constant $MKSYS-POINTERMONIKER = 5;
define inline-only constant $MKSYS-CLASSMONIKER = 7;

// enum MKRREDUCE:
define inline-only constant $MKRREDUCE-ONE = ash(3,16);
define inline-only constant $MKRREDUCE-TOUSER = ash(2,16);
define inline-only constant $MKRREDUCE-THROUGHUSER = ash(1,16);
define inline-only constant $MKRREDUCE-ALL = 0;

define constant <LPENUMSTRING> = <Interface>;

define C-struct <STATSTG>
  sealed inline-only slot pwcsName-value :: <LPOLESTR>;
  sealed inline-only slot type-value     :: <DWORD>;
  sealed inline-only slot cbSize-value   :: <ULARGE-INTEGER>;
  sealed inline-only slot mtime-value    :: <FILETIME>;
  sealed inline-only slot ctime-value    :: <FILETIME>;
  sealed inline-only slot atime-value    :: <FILETIME>;
  sealed inline-only slot grfMode-value  :: <DWORD>;
  sealed inline-only slot grfLocksSupported-value :: <DWORD>;
  sealed inline-only slot clsid-value    :: <CLSID>;
  sealed inline-only slot grfStateBits-value :: <DWORD>;
  sealed inline-only slot reserved-value :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPSTATSTG>;
  c-name: "struct tagSTATSTG";
end C-struct <STATSTG>;
// enum STGTY:
define inline-only constant $STGTY-STORAGE = 1;
define inline-only constant $STGTY-STREAM = 2;
define inline-only constant $STGTY-LOCKBYTES = 3;
define inline-only constant $STGTY-PROPERTY = 4;

// enum STREAM_SEEK:
define inline-only constant $STREAM-SEEK-SET = 0;
define inline-only constant $STREAM-SEEK-CUR = 1;
define inline-only constant $STREAM-SEEK-END = 2;

// enum LOCKTYPE:
define inline-only constant $LOCK-WRITE = 1;
define inline-only constant $LOCK-EXCLUSIVE = 2;
define inline-only constant $LOCK-ONLYONCE = 4;

define constant <LPENUMSTATSTG> = <Interface>;
define constant <LPSTORAGE> = <Interface>;
define constant <LPPERSISTFILE> = <Interface>;
define constant <LPPERSISTSTORAGE> = <Interface>;
define constant <LPLOCKBYTES> = <Interface>;
define constant <LPENUMFORMATETC> = <Interface>;

define C-struct <DVTARGETDEVICE>
  sealed inline-only slot tdSize-value   :: <DWORD>;
  sealed inline-only slot tdDriverNameOffset-value :: <WORD>;
  sealed inline-only slot tdDeviceNameOffset-value :: <WORD>;
  sealed inline-only slot tdPortNameOffset-value :: <WORD>;
  sealed inline-only slot tdExtDevmodeOffset-value :: <WORD>;
  sealed inline-only array slot tdData-array :: <C-BYTE>, length: 1,
	address-getter: tdData-value;
  pack: 8;
  pointer-type-name: <LPDVTARGETDEVICE>;
  c-name: "struct tagDVTARGETDEVICE";
end C-struct <DVTARGETDEVICE>;

define C-struct <FORMATETC>
  sealed inline-only slot cfFormat-value :: <CLIPFORMAT>;
  sealed inline-only slot ptd-value      :: <LPDVTARGETDEVICE>;
  sealed inline-only slot dwAspect-value :: <DWORD>;
  sealed inline-only slot lindex-value   :: <LONG>;
  sealed inline-only slot tymed-value    :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPFORMATETC>;
  c-name: "struct tagFORMATETC";
end C-struct <FORMATETC>;
define constant <LPENUMSTATDATA> = <Interface>;
// enum ADVF:
define inline-only constant $ADVF-NODATA = 1;
define inline-only constant $ADVF-PRIMEFIRST = 2;
define inline-only constant $ADVF-ONLYONCE = 4;
define inline-only constant $ADVF-DATAONSTOP = 64;
define inline-only constant $ADVFCACHE-NOHANDLER = 8;
define inline-only constant $ADVFCACHE-FORCEBUILTIN = 16;
define inline-only constant $ADVFCACHE-ONSAVE = 32;


define C-struct <STATDATA>
  sealed inline-only slot formatetc-value :: <FORMATETC>;
  sealed inline-only slot advf-value     :: <DWORD>;
  sealed inline-only slot pAdvSink-value :: <Interface> /* IAdviseSink */;
  sealed inline-only slot dwConnection-value :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPSTATDATA>;
  c-name: "struct tagSTATDATA";
end C-struct <STATDATA>;
define constant <LPROOTSTORAGE> = <Interface>;
define constant <LPADVISESINK> = <Interface>;
// enum TYMED:
define inline-only constant $TYMED-HGLOBAL = 1;
define inline-only constant $TYMED-FILE = 2;
define inline-only constant $TYMED-ISTREAM = 4;
define inline-only constant $TYMED-ISTORAGE = 8;
define inline-only constant $TYMED-GDI = 16;
define inline-only constant $TYMED-MFPICT = 32;
define inline-only constant $TYMED-ENHMF = 64;
define inline-only constant $TYMED-NULL = 0;

define C-union <u%2>
  sealed inline-only slot hBitmap-value  :: <HBITMAP>;
  sealed inline-only slot hMetaFilePict-value :: <HMETAFILEPICT>;
  sealed inline-only slot hEnhMetaFile-value :: <HENHMETAFILE>;
  sealed inline-only slot hGlobal-value  :: <HGLOBAL>;
  sealed inline-only slot lpszFileName-value :: <LPOLESTR>;
  sealed inline-only slot pstm-value     :: <LPSTREAM>;
  sealed inline-only slot pstg-value     :: <Interface> /* IStorage */;
  pack: 8;
end;

define C-struct <uSTGMEDIUM>
  sealed inline-only slot tymed-value    :: <DWORD>;
  sealed inline-only slot u-value        :: <u%2>;
  sealed inline-only slot pUnkForRelease-value :: <Interface> /* IUnknown */;
  pack: 8;
  pointer-type-name: <LPuSTGMEDIUM>;
  c-name: "struct tagSTGMEDIUM";
end C-struct <uSTGMEDIUM>;
define inline constant <STGMEDIUM> = <uSTGMEDIUM>;
define C-pointer-type <LPSTGMEDIUM> => <STGMEDIUM>;
define constant <LPADVISESINK2> = <Interface>;
define constant <LPDATAOBJECT> = <Interface>;
// enum DATADIR:
define inline-only constant $DATADIR-GET = 1;
define inline-only constant $DATADIR-SET = 2;

define constant <LPDATAADVISEHOLDER> = <Interface>;
define constant <LPMESSAGEFILTER> = <Interface>;
// enum CALLTYPE:
define inline-only constant $CALLTYPE-TOPLEVEL = 1;
define inline-only constant $CALLTYPE-NESTED = 2;
define inline-only constant $CALLTYPE-ASYNC = 3;
define inline-only constant $CALLTYPE-TOPLEVEL-CALLPENDING = 4;
define inline-only constant $CALLTYPE-ASYNC-CALLPENDING = 5;

// enum SERVERCALL:
define inline-only constant $SERVERCALL-ISHANDLED = 0;
define inline-only constant $SERVERCALL-REJECTED = 1;
define inline-only constant $SERVERCALL-RETRYLATER = 2;

// enum PENDINGTYPE:
define inline-only constant $PENDINGTYPE-TOPLEVEL = 1;
define inline-only constant $PENDINGTYPE-NESTED = 2;

// enum PENDINGMSG:
define inline-only constant $PENDINGMSG-CANCELCALL = 0;
define inline-only constant $PENDINGMSG-WAITNOPROCESS = 1;
define inline-only constant $PENDINGMSG-WAITDEFPROCESS = 2;


define C-struct <INTERFACEINFO>
  sealed inline-only slot pUnk-value     :: <Interface> /* IUnknown */;
  sealed inline-only slot iid-value      :: <IID>;
  sealed inline-only slot wMethod-value  :: <WORD>;
  pack: 8;
  pointer-type-name: <LPINTERFACEINFO>;
  c-name: "struct tagINTERFACEINFO";
end C-struct <INTERFACEINFO>;
define inline constant <RPCOLEDATAREP> = <C-both-unsigned-long>;

define C-struct <RPCOLEMESSAGE>
  sealed inline-only slot reserved1-value :: <C-void*>;
  sealed inline-only slot dataRepresentation-value :: <RPCOLEDATAREP>;
  sealed inline-only slot Buffer-value   :: <C-void*>;
  sealed inline-only slot cbBuffer-value :: <ULONG>;
  sealed inline-only slot iMethod-value  :: <ULONG>;
  array slot reserved2-array :: <C-void*>, length: 5,
	address-getter: reserved2-value;
  sealed inline-only slot rpcFlags-value :: <ULONG>;
  pack: 8;
  pointer-type-name: <LPRPCOLEMESSAGE>;
  c-name: "struct tagRPCOLEMESSAGE";
end C-struct <RPCOLEMESSAGE>;
define constant <LPPROPERTYSTORAGE> = <Interface>;
define C-union <u%3>
  sealed inline-only slot propid-value   :: <PROPID>;
  sealed inline-only slot lpwstr-value   :: <LPOLESTR>;
  pack: 8;
end;

define C-struct <PROPSPEC>
  sealed inline-only slot ulKind-value   :: <ULONG>;
  sealed inline-only slot u-value        :: <u%3>;
  pack: 8;
  pointer-type-name: <LPPROPSPEC>;
  c-name: "struct tagPROPSPEC";
end C-struct <PROPSPEC>;

define C-struct <STATPROPSTG>
  sealed inline-only slot lpwstrName-value :: <LPOLESTR>;
  sealed inline-only slot propid-value   :: <PROPID>;
  sealed inline-only slot vt-value       :: <VARTYPE>;
  pack: 8;
  pointer-type-name: <LPSTATPROPSTG>;
  c-name: "struct tagSTATPROPSTG";
end C-struct <STATPROPSTG>;

define C-struct <STATPROPSETSTG>
  sealed inline-only slot fmtid-value    :: <FMTID>;
  sealed inline-only slot clsid-value    :: <CLSID>;
  sealed inline-only slot grfFlags-value :: <DWORD>;
  sealed inline-only slot mtime-value    :: <FILETIME>;
  sealed inline-only slot ctime-value    :: <FILETIME>;
  sealed inline-only slot atime-value    :: <FILETIME>;
  sealed inline-only slot dwOSVersion-value :: <DWORD>;
  pack: 8;
  pointer-type-name: <LPSTATPROPSETSTG>;
  c-name: "struct tagSTATPROPSETSTG";
end C-struct <STATPROPSETSTG>;
define constant <LPPROPERTYSETSTORAGE> = <Interface>;
define constant <LPENUMSTATPROPSTG> = <Interface>;
define constant <LPENUMSTATPROPSETSTG> = <Interface>;

define C-struct <StorageLayout>
  sealed inline-only slot LayoutType-value :: <DWORD>;
  sealed inline-only slot pwcsElementName-value :: <C-unicode-string>;
  sealed inline-only slot cOffset-value  :: <LARGE-INTEGER>;
  sealed inline-only slot cBytes-value   :: <LARGE-INTEGER>;
  pack: 8;
  pointer-type-name: <LPStorageLayout>;
  c-name: "struct tagStorageLayout";
end C-struct <StorageLayout>;
define constant <LPSURROGATE> = <Interface>;
define constant <LPGLOBALINTERFACETABLE> = <Interface>;
define constant <LPCANCELMETHODCALLS> = <Interface>;

define C-struct <PUBLISHEDINFOLIST>
  sealed inline-only slot cPublApps-value :: <DWORD>;
  sealed inline-only slot pPublAppInfo-value :: <LPPUBLISHEDAPPINFO>;
  pack: 8;
  pointer-type-name: <LPPUBLISHEDINFOLIST>;
  c-name: "struct tagPUBLISHEDINFOLIST";
end C-struct <PUBLISHEDINFOLIST>;

define C-struct <PACKAGEINFOLIST>
  sealed inline-only slot cPackInfo-value :: <DWORD>;
  sealed inline-only slot pPackageInfo-value :: <LPPACKAGEINFO>;
  pack: 8;
  pointer-type-name: <LPPACKAGEINFOLIST>;
  c-name: "struct tagPACKAGEINFOLIST";
end C-struct <PACKAGEINFOLIST>;

define C-struct <CLASSDETAIL>
  sealed inline-only slot Clsid-value    :: <CLSID>;
  sealed inline-only slot pszDesc-value  :: <LPOLESTR>;
  sealed inline-only slot pszIconPath-value :: <LPOLESTR>;
  sealed inline-only slot TreatAsClsid-value :: <CLSID>;
  sealed inline-only slot AutoConvertClsid-value :: <CLSID>;
  sealed inline-only slot cFileExt-value :: <DWORD>;
  sealed inline-only slot prgFileExt-value :: <LPLPOLESTR>;
  sealed inline-only slot pMimeType-value :: <LPOLESTR>;
  sealed inline-only slot pDefaultProgId-value :: <LPOLESTR>;
  sealed inline-only slot cOtherProgId-value :: <DWORD>;
  sealed inline-only slot prgOtherProgId-value :: <LPLPOLESTR>;
  pack: 8;
  pointer-type-name: <LPCLASSDETAIL>;
  c-name: "struct tagCLASSDETAIL";
end C-struct <CLASSDETAIL>;

define sealed domain make (singleton(<LPMULTI-QI>));
define sealed domain initialize (<LPMULTI-QI>);
define sealed domain make (singleton(<LPBIND-OPTS>));
define sealed domain initialize (<LPBIND-OPTS>);
define sealed domain make (singleton(<LPSTATSTG>));
define sealed domain initialize (<LPSTATSTG>);
define sealed domain make (singleton(<LPDVTARGETDEVICE>));
define sealed domain initialize (<LPDVTARGETDEVICE>);
define sealed domain make (singleton(<LPFORMATETC>));
define sealed domain initialize (<LPFORMATETC>);
define sealed domain make (singleton(<LPSTATDATA>));
define sealed domain initialize (<LPSTATDATA>);
define sealed domain make (singleton(<LPuSTGMEDIUM>));
define sealed domain initialize (<LPuSTGMEDIUM>);
define sealed domain make (singleton(<LPINTERFACEINFO>));
define sealed domain initialize (<LPINTERFACEINFO>);
define sealed domain make (singleton(<LPRPCOLEMESSAGE>));
define sealed domain initialize (<LPRPCOLEMESSAGE>);
define sealed domain make (singleton(<LPPROPSPEC>));
define sealed domain initialize (<LPPROPSPEC>);
define sealed domain make (singleton(<LPSTATPROPSTG>));
define sealed domain initialize (<LPSTATPROPSTG>);
define sealed domain make (singleton(<LPSTATPROPSETSTG>));
define sealed domain initialize (<LPSTATPROPSETSTG>);
define sealed domain make (singleton(<LPStorageLayout>));
define sealed domain initialize (<LPStorageLayout>);
define sealed domain make (singleton(<LPPUBLISHEDINFOLIST>));
define sealed domain initialize (<LPPUBLISHEDINFOLIST>);
define sealed domain make (singleton(<LPPACKAGEINFOLIST>));
define sealed domain initialize (<LPPACKAGEINFOLIST>);
define sealed domain make (singleton(<LPCLASSDETAIL>));
define sealed domain initialize (<LPCLASSDETAIL>);

// --- end of data from "objidl.h" ---


define C-function CoInitialize
  parameter pvReserved :: <LPVOID>;
  result status :: <C-HRESULT>;
  c-name: "CoInitialize", c-modifiers: "__stdcall";
end;

define C-function CoUninitialize
  c-name: "CoUninitialize", c-modifiers: "__stdcall";
end;

define C-function CoGetMalloc
  parameter dwMemContext :: <DWORD>;
  output parameter ppMalloc :: <C-interface*>; // <LPMALLOC>
  result status :: <C-HRESULT>;
  c-name: "CoGetMalloc", c-modifiers: "__stdcall";
end;

define C-function CoGetCurrentProcess
  result value :: <DWORD>;
  c-name: "CoGetCurrentProcess", c-modifiers: "__stdcall";
end;

define C-function CoGetClassObject
  parameter rclsid     :: <REFCLSID>;
  parameter dwClsContext :: <DWORD>;
  parameter pvReserved :: <LPVOID>;
  parameter riid       :: <REFIID>;
  output parameter ppv :: <LPLPVOID>;
  result status :: <C-HRESULT>;
  c-name: "CoGetClassObject", c-modifiers: "__stdcall";
end;

define C-function CoRegisterClassObject
  parameter rclsid     :: <REFCLSID>;
  parameter pUnk       :: <LPUNKNOWN>;
  parameter dwClsContext :: <DWORD>;
  parameter flags      :: <DWORD>;
  output parameter lpdwRegister :: <LPDWORD>;
  result status :: <C-HRESULT>;
  c-name: "CoRegisterClassObject", c-modifiers: "__stdcall";
end;

define C-function CoRevokeClassObject
  parameter dwRegister :: <DWORD>;
  result status :: <C-HRESULT>;
  c-name: "CoRevokeClassObject", c-modifiers: "__stdcall";
end;

define C-function CoGetPSClsid
  parameter riid       :: <REFIID>;
  parameter pClsid     :: <LPCLSID>;
  result status :: <C-HRESULT>;
  c-name: "CoGetPSClsid", c-modifiers: "__stdcall";
end;

define C-function CoGetMarshalSizeMax
  output parameter pulSize :: <LPULONG>;
  parameter riid       :: <REFIID>;
  parameter pUnk       :: <LPUNKNOWN>;
  parameter dwDestContext :: <DWORD>;
  parameter pvDestContext :: <LPVOID>;
  parameter mshlflags  :: <DWORD>;
  result status :: <C-HRESULT>;
  c-name: "CoGetMarshalSizeMax", c-modifiers: "__stdcall";
end;

define C-function CoMarshalInterface
  parameter pStm       :: <LPSTREAM>;
  parameter riid       :: <REFIID>;
  parameter pUnk       :: <LPUNKNOWN>;
  parameter dwDestContext :: <DWORD>;
  parameter pvDestContext :: <LPVOID>;
  parameter mshlflags  :: <DWORD>;
  result status :: <C-HRESULT>;
  c-name: "CoMarshalInterface", c-modifiers: "__stdcall";
end;

define C-function CoUnmarshalInterface
  parameter pStm       :: <LPSTREAM>;
  parameter riid       :: <REFIID>;
  output parameter ppv :: <LPLPVOID>;
  result status :: <C-HRESULT>;
  c-name: "CoUnmarshalInterface", c-modifiers: "__stdcall";
end;

define C-function CoMarshalHresult
  parameter pstm       :: <LPSTREAM>;
  parameter hresult    :: <C-HRESULT>;
  result status :: <C-HRESULT>;
  c-name: "CoMarshalHresult", c-modifiers: "__stdcall";
end;

define C-function CoUnmarshalHresult
  parameter pstm       :: <LPSTREAM>;
  output parameter phresult :: <C-HRESULT*>;
  result status :: <C-HRESULT>;
  c-name: "CoUnmarshalHresult", c-modifiers: "__stdcall";
end;

define C-function CoReleaseMarshalData
  parameter pStm       :: <LPSTREAM>;
  result status :: <C-HRESULT>;
  c-name: "CoReleaseMarshalData", c-modifiers: "__stdcall";
end;

define C-function CoDisconnectObject
  parameter pUnk       :: <LPUNKNOWN>;
  parameter dwReserved :: <DWORD>;
  result status :: <C-HRESULT>;
  c-name: "CoDisconnectObject", c-modifiers: "__stdcall";
end;

define C-function CoLockObjectExternal
  parameter pUnk       :: <LPUNKNOWN>;
  parameter fLock      :: <BOOL>;
  parameter fLastUnlockReleases :: <BOOL>;
  result status :: <C-HRESULT>;
  c-name: "CoLockObjectExternal", c-modifiers: "__stdcall";
end;

define C-function CoGetStandardMarshal
  parameter riid       :: <REFIID>;
  parameter pUnk       :: <LPUNKNOWN>;
  parameter dwDestContext :: <DWORD>;
  parameter pvDestContext :: <LPVOID>;
  parameter mshlflags  :: <DWORD>;
  output parameter ppMarshal :: <C-interface*>; // <LPMARSHAL>
  result status :: <C-HRESULT>;
  c-name: "CoGetStandardMarshal", c-modifiers: "__stdcall";
end;

define C-function CoIsHandlerConnected
  parameter pUnk       :: <LPUNKNOWN>;
  result value :: <BOOL>;
  c-name: "CoIsHandlerConnected", c-modifiers: "__stdcall";
end;

define C-function CoMarshalInterThreadInterfaceInStream
  parameter riid       :: <REFIID>;
  parameter pUnk       :: <LPUNKNOWN>;
  output parameter ppStm :: <Interface*>;
  result status :: <C-HRESULT>;
  c-name: "CoMarshalInterThreadInterfaceInStream",
	c-modifiers: "__stdcall";
end;

define C-function CoGetInterfaceAndReleaseStream
  parameter pStm       :: <LPSTREAM>;
  parameter iid        :: <REFIID>;
  output parameter ppv :: <LPLPVOID>;
  result status :: <C-HRESULT>;
  c-name: "CoGetInterfaceAndReleaseStream", c-modifiers: "__stdcall";
end;

define C-function CoCreateFreeThreadedMarshaler
  parameter punkOuter  :: <LPUNKNOWN>;
  output parameter ppunkMarshal :: <Interface*>;
  result status :: <C-HRESULT>;
  c-name: "CoCreateFreeThreadedMarshaler", c-modifiers: "__stdcall";
end;

define C-function CoLoadLibrary
  parameter lpszLibName :: <LPOLESTR>;
  parameter bAutoFree  :: <BOOL>;
  result value :: <HINSTANCE>;
  c-name: "CoLoadLibrary", c-modifiers: "__stdcall";
end;

define C-function CoFreeLibrary
  parameter hInst      :: <HINSTANCE>;
  c-name: "CoFreeLibrary", c-modifiers: "__stdcall";
end;

define C-function CoFreeAllLibraries
  c-name: "CoFreeAllLibraries", c-modifiers: "__stdcall";
end;

define C-function CoFreeUnusedLibraries
  c-name: "CoFreeUnusedLibraries", c-modifiers: "__stdcall";
end;

define C-function CoCreateInstance
  parameter rclsid     :: <REFCLSID>;
  parameter pUnkOuter  :: <LPUNKNOWN>;
  parameter dwClsContext :: <DWORD>;
  parameter riid       :: <REFIID>;
  output parameter ppv :: <LPLPVOID>;
  result status :: <C-HRESULT>;
  c-name: "CoCreateInstance", c-modifiers: "__stdcall";
end;

define C-function StringFromCLSID
  parameter rclsid     :: <REFCLSID>;
  output parameter lplpsz :: <LPLPOLESTR>;
  result status :: <C-HRESULT>;
  c-name: "StringFromCLSID", c-modifiers: "__stdcall";
end;

define C-function CLSIDFromString
  parameter lpsz       :: <LPOLESTR>;
  parameter pclsid     :: <LPCLSID>;
  result status :: <C-HRESULT>;
  c-name: "CLSIDFromString", c-modifiers: "__stdcall";
end;

define C-function StringFromIID
  parameter rclsid     :: <REFIID>;
  output parameter lplpsz :: <LPLPOLESTR>;
  result status :: <C-HRESULT>;
  c-name: "StringFromIID", c-modifiers: "__stdcall";
end;

define C-function IIDFromString
  parameter lpsz       :: <LPOLESTR>;
  parameter lpiid      :: <LPIID>;
  result status :: <C-HRESULT>;
  c-name: "IIDFromString", c-modifiers: "__stdcall";
end;

define C-function CoIsOle1Class
  parameter rclsid     :: <REFCLSID>;
  result value :: <BOOL>;
  c-name: "CoIsOle1Class", c-modifiers: "__stdcall";
end;

define C-function ProgIDFromCLSID
  parameter clsid      :: <REFCLSID>;
  output parameter lplpszProgID :: <LPLPOLESTR>;
  result status :: <C-HRESULT>;
  c-name: "ProgIDFromCLSID", c-modifiers: "__stdcall";
end;

define C-function CLSIDFromProgID
  parameter lpszProgID :: <LPCOLESTR>;
  parameter lpclsid    :: <LPCLSID>;
  result status :: <C-HRESULT>;
  c-name: "CLSIDFromProgID", c-modifiers: "__stdcall";
end;

define C-function StringFromGUID2
  parameter rguid      :: <REFGUID>;
  parameter lpsz       :: <LPOLESTR>;
  parameter cbMax      :: <C-int>;
  result value :: <C-int>;
  c-name: "StringFromGUID2", c-modifiers: "__stdcall";
end;

define C-function CoCreateGuid
  parameter pguid      :: <LPGUID>;
  result status :: <C-HRESULT>;
  c-name: "CoCreateGuid", c-modifiers: "__stdcall";
end;

define C-function CoFileTimeToDosDateTime
  parameter lpFileTime :: <LPFILETIME>;
  output parameter lpDosDate :: <LPWORD>;
  output parameter lpDosTime :: <LPWORD>;
  result value :: <BOOL>;
  c-name: "CoFileTimeToDosDateTime", c-modifiers: "__stdcall";
end;

define C-function CoDosDateTimeToFileTime
  parameter nDosDate   :: <WORD>;
  parameter nDosTime   :: <WORD>;
  parameter lpFileTime :: <LPFILETIME>;
  result value :: <BOOL>;
  c-name: "CoDosDateTimeToFileTime", c-modifiers: "__stdcall";
end;

define C-function CoFileTimeNow
  parameter lpFileTime :: <LPFILETIME>;
  result status :: <C-HRESULT>;
  c-name: "CoFileTimeNow", c-modifiers: "__stdcall";
end;

define C-function CoRegisterMessageFilter
  parameter lpMessageFilter :: <LPMESSAGEFILTER>;
  output parameter lplpMessageFilter :: <C-interface*>; // <LPMESSAGEFILTER>
  result status :: <C-HRESULT>;
  c-name: "CoRegisterMessageFilter", c-modifiers: "__stdcall";
end;

define C-function CoGetTreatAsClass
  parameter clsidOld   :: <REFCLSID>;
  parameter pClsidNew  :: <LPCLSID>;
  result status :: <C-HRESULT>;
  c-name: "CoGetTreatAsClass", c-modifiers: "__stdcall";
end;

define C-function CoTreatAsClass
  parameter clsidOld   :: <REFCLSID>;
  parameter clsidNew   :: <REFCLSID>;
  result status :: <C-HRESULT>;
  c-name: "CoTreatAsClass", c-modifiers: "__stdcall";
end;

define C-function CoTaskMemAlloc
  parameter cb         :: <ULONG>;
  result value :: <LPVOID>;
  c-name: "CoTaskMemAlloc", c-modifiers: "__stdcall";
end;

define C-function CoTaskMemRealloc
  parameter pv         :: <LPVOID>;
  parameter cb         :: <ULONG>;
  result value :: <LPVOID>;
  c-name: "CoTaskMemRealloc", c-modifiers: "__stdcall";
end;

define C-function CoTaskMemFree
  parameter pv         :: <LPVOID>;
  c-name: "CoTaskMemFree", c-modifiers: "__stdcall";
end;

define C-function CreateDataAdviseHolder
  output parameter ppDAHolder :: <C-interface*>; // <LPDATAADVISEHOLDER>
  result status :: <C-HRESULT>;
  c-name: "CreateDataAdviseHolder", c-modifiers: "__stdcall";
end;

define C-function CreateDataCache
  parameter pUnkOuter  :: <LPUNKNOWN>;
  parameter rclsid     :: <REFCLSID>;
  parameter iid        :: <REFIID>;
  output parameter ppv :: <LPLPVOID>;
  result status :: <C-HRESULT>;
  c-name: "CreateDataCache", c-modifiers: "__stdcall";
end;

define C-function StgCreateDocfile
  parameter pwcsName   ::  /* const */ <C-unicode-string>;
  parameter grfMode    :: <DWORD>;
  parameter reserved   :: <DWORD>;
  output parameter ppstgOpen :: <Interface*> /* IStorage */;
  result status :: <C-HRESULT>;
  c-name: "StgCreateDocfile", c-modifiers: "__stdcall";
end;

define C-function StgCreateDocfileOnILockBytes
  parameter plkbyt     :: <Interface> /* ILockBytes */;
  parameter grfMode    :: <DWORD>;
  parameter reserved   :: <DWORD>;
  output parameter ppstgOpen :: <Interface*> /* IStorage */;
  result status :: <C-HRESULT>;
  c-name: "StgCreateDocfileOnILockBytes", c-modifiers: "__stdcall";
end;

define C-function StgOpenStorage
  parameter pwcsName   ::  /* const */ <C-unicode-string>;
  parameter pstgPriority :: <Interface> /* IStorage */;
  parameter grfMode    :: <DWORD>;
  parameter snbExclude :: <SNB>;
  parameter reserved   :: <DWORD>;
  output parameter ppstgOpen :: <Interface*> /* IStorage */;
  result status :: <C-HRESULT>;
  c-name: "StgOpenStorage", c-modifiers: "__stdcall";
end;

define C-function StgOpenStorageOnILockBytes
  parameter plkbyt     :: <Interface> /* ILockBytes */;
  parameter pstgPriority :: <Interface> /* IStorage */;
  parameter grfMode    :: <DWORD>;
  parameter snbExclude :: <SNB>;
  parameter reserved   :: <DWORD>;
  output parameter ppstgOpen :: <Interface*> /* IStorage */;
  result status :: <C-HRESULT>;
  c-name: "StgOpenStorageOnILockBytes", c-modifiers: "__stdcall";
end;

define C-function StgIsStorageFile
  parameter pwcsName   ::  /* const */ <C-unicode-string>;
  result status :: <C-HRESULT>;
  c-name: "StgIsStorageFile", c-modifiers: "__stdcall";
end;

define C-function StgIsStorageILockBytes
  parameter plkbyt     :: <Interface> /* ILockBytes */;
  result status :: <C-HRESULT>;
  c-name: "StgIsStorageILockBytes", c-modifiers: "__stdcall";
end;

define C-function StgSetTimes
  parameter lpszName   :: <C-unicode-string>;
  parameter pctime     :: /* const */ <LPFILETIME>;
  parameter patime     :: /* const */ <LPFILETIME>;
  parameter pmtime     :: /* const */ <LPFILETIME>;
  result status :: <C-HRESULT>;
  c-name: "StgSetTimes", c-modifiers: "__stdcall";
end;

define C-function BindMoniker
  parameter pmk        :: <LPMONIKER>;
  parameter grfOpt     :: <DWORD>;
  parameter iidResult  :: <REFIID>;
  output parameter ppvResult :: <LPLPVOID>;
  result status :: <C-HRESULT>;
  c-name: "BindMoniker", c-modifiers: "__stdcall";
end;

define C-function MkParseDisplayName
  parameter pbc        :: <LPBC>;
  parameter szUserName :: <LPCOLESTR>;
  output parameter pchEaten :: <LPULONG>;
  output parameter ppmk :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "MkParseDisplayName", c-modifiers: "__stdcall";
end;

define C-function MonikerRelativePathTo
  parameter pmkSrc     :: <LPMONIKER>;
  parameter pmkDest    :: <LPMONIKER>;
  output parameter ppmkRelPath :: <C-interface*>; // <LPMONIKER>
  parameter dwReserved :: <BOOL>;
  result status :: <C-HRESULT>;
  c-name: "MonikerRelativePathTo", c-modifiers: "__stdcall";
end;

define C-function MonikerCommonPrefixWith
  parameter pmkThis    :: <LPMONIKER>;
  parameter pmkOther   :: <LPMONIKER>;
  output parameter ppmkCommon :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "MonikerCommonPrefixWith", c-modifiers: "__stdcall";
end;

define C-function CreateBindCtx
  parameter reserved   :: <DWORD>;
  output parameter ppbc :: <C-interface*>; // <LPBC>
  result status :: <C-HRESULT>;
  c-name: "CreateBindCtx", c-modifiers: "__stdcall";
end;

define C-function CreateGenericComposite
  parameter pmkFirst   :: <LPMONIKER>;
  parameter pmkRest    :: <LPMONIKER>;
  output parameter ppmkComposite :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "CreateGenericComposite", c-modifiers: "__stdcall";
end;

define C-function GetClassFile
  parameter szFilename :: <LPCOLESTR>;
  parameter pclsid     :: <LPCLSID>;
  result status :: <C-HRESULT>;
  c-name: "GetClassFile", c-modifiers: "__stdcall";
end;

define C-function CreateFileMoniker
  parameter lpszPathName :: <LPCOLESTR>;
  output parameter ppmk :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "CreateFileMoniker", c-modifiers: "__stdcall";
end;

define C-function CreateItemMoniker
  parameter lpszDelim  :: <LPCOLESTR>;
  parameter lpszItem   :: <LPCOLESTR>;
  output parameter ppmk :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "CreateItemMoniker", c-modifiers: "__stdcall";
end;

define C-function CreateAntiMoniker
  output parameter ppmk :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "CreateAntiMoniker", c-modifiers: "__stdcall";
end;

define C-function CreatePointerMoniker
  parameter punk       :: <LPUNKNOWN>;
  output parameter ppmk :: <C-interface*>; // <LPMONIKER>
  result status :: <C-HRESULT>;
  c-name: "CreatePointerMoniker", c-modifiers: "__stdcall";
end;

define C-function GetRunningObjectTable
  parameter reserved   :: <DWORD>;
  output parameter pprot :: <C-interface*>; // <LPRUNNINGOBJECTTABLE>
  result status :: <C-HRESULT>;
  c-name: "GetRunningObjectTable", c-modifiers: "__stdcall";
end;


 
/*
Note: the following functions are not included because they are not
      supported in Windows 95:

 CoAddRefServerProcess
 CoCopyProxy
 CoCreateInstanceEx
 CoGetCallContext
 CoGetInstanceFromFile
 CoGetInstanceFromIStorage
 CoGetObject
 CoImpersonateClient
 CoInitializeEx
 CoInitializeSecurity
 CoQueryAuthenticationServices
 CoQueryClientBlanket
 CoQueryProxyBlanket
 CoRegisterChannelHook
 CoRegisterPSClsid
 CoRegisterSurrogate
 CoReleaseServerProcess
 CoResumeClassObjects
 CoRevertToSelf
 CoSetProxyBlanket
 CoSuspendClassObjects
 CoSwitchCallContext
 CreateClassMoniker
 StgGetIFillLockBytesOnFile
 StgGetIFillLockBytesOnILockBytes
 StgOpenAsyncDocfileOnIFillLockBytes
*/ 
