From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/types2/oleext/iaccess.idl | 123 +++++++++++++++++++++++++++ private/types2/oleext/idiff.idl | 58 +++++++++++++ private/types2/oleext/idir.idl | 169 +++++++++++++++++++++++++++++++++++++ private/types2/oleext/makefile | 6 ++ private/types2/oleext/multpr.idl | 50 +++++++++++ private/types2/oleext/oleext.acf | 5 ++ private/types2/oleext/oleext.idl | 57 +++++++++++++ private/types2/oleext/propctr.idl | 25 ++++++ private/types2/oleext/recinit.idl | 42 +++++++++ private/types2/oleext/recnotfy.idl | 34 ++++++++ private/types2/oleext/recobj.idl | 95 +++++++++++++++++++++ private/types2/oleext/sources | 18 ++++ private/types2/oleext/version.idl | 51 +++++++++++ 13 files changed, 733 insertions(+) create mode 100644 private/types2/oleext/iaccess.idl create mode 100644 private/types2/oleext/idiff.idl create mode 100644 private/types2/oleext/idir.idl create mode 100644 private/types2/oleext/makefile create mode 100644 private/types2/oleext/multpr.idl create mode 100644 private/types2/oleext/oleext.acf create mode 100644 private/types2/oleext/oleext.idl create mode 100644 private/types2/oleext/propctr.idl create mode 100644 private/types2/oleext/recinit.idl create mode 100644 private/types2/oleext/recnotfy.idl create mode 100644 private/types2/oleext/recobj.idl create mode 100644 private/types2/oleext/sources create mode 100644 private/types2/oleext/version.idl (limited to 'private/types2/oleext') diff --git a/private/types2/oleext/iaccess.idl b/private/types2/oleext/iaccess.idl new file mode 100644 index 000000000..40076f664 --- /dev/null +++ b/private/types2/oleext/iaccess.idl @@ -0,0 +1,123 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1994 - 1995. +// +// File: iaccess.idl +// +// Contents: definitions of access and audit control interfaces +// +// History: 2-9-95 DaveMont Created +// +//---------------------------------------------------------------------------- + +import "unknwn.idl"; +import "accctrl.h"; + +/**************************************************************************** + * Storage access control interface + ****************************************************************************/ + +// All nested structures are allocated in the same block of memory. +// Thus these types are freed with a single call to CoTaskMemFree. +typedef PACTRL_ACCESSW PACTRL_ACCESSW_ALLOCATE_ALL_NODES; +typedef PACTRL_AUDITW PACTRL_AUDITW_ALLOCATE_ALL_NODES; + +interface IAccessControl; +[ + object, + uuid(EEDD23E0-8410-11CE-A1C3-08002B2B8D8F), + pointer_default(unique) +] +interface IAccessControl : IUnknown +{ + + HRESULT GrantAccessRights + ( + [in] PACTRL_ACCESSW pAccessList + ); + + HRESULT SetAccessRights + ( + [in] PACTRL_ACCESSW pAccessList + ); + + HRESULT SetOwner + ( + [in] PTRUSTEEW pOwner, + [in] PTRUSTEEW pGroup + ); + + HRESULT RevokeAccessRights + ( + [in] LPWSTR lpProperty, + [in] ULONG cTrustees, + [in, size_is(cTrustees)] TRUSTEEW prgTrustees[] + ); + + HRESULT GetAllAccessRights + ( + [in] LPWSTR lpProperty, + [out] PACTRL_ACCESSW_ALLOCATE_ALL_NODES *ppAccessList, + [out] PTRUSTEEW *ppOwner, + [out] PTRUSTEEW *ppGroup + ); + + + HRESULT IsAccessAllowed + ( + [in] PTRUSTEEW pTrustee, + [in] LPWSTR lpProperty, + [in] ACCESS_RIGHTS AccessRights, + [out] BOOL *pfAccessAllowed + ); + +} + +/**************************************************************************** + * Storage audit control interface + ****************************************************************************/ + +interface IAuditControl; +[ + object, + uuid(1da6292f-bc66-11ce-aae3-00aa004c2737), + pointer_default(unique) +] + +interface IAuditControl : IUnknown +{ + HRESULT GrantAuditRights + ( + [in] PACTRL_AUDITW pAuditList + ); + + HRESULT SetAuditRights + ( + [in] PACTRL_AUDITW pAuditList + ); + + HRESULT RevokeAuditRights + ( + [in] LPWSTR lpProperty, + [in] ULONG cTrustees, + [in, size_is(cTrustees)] TRUSTEEW prgTrustees [] + ); + + HRESULT GetAllAuditRights + ( + [in] LPWSTR lpProperty, + [out] PACTRL_AUDITW *ppAuditList + ); + + // + // Determines if the given trustee with the state audit rights will generate an audit event if the object is accessed. + // + HRESULT IsAccessAudited + ( + [in] PTRUSTEEW pTrustee, + [in] ACCESS_RIGHTS AuditRights, + [out] BOOL *pfAccessAudited + ); +} + diff --git a/private/types2/oleext/idiff.idl b/private/types2/oleext/idiff.idl new file mode 100644 index 000000000..e0462ac4e --- /dev/null +++ b/private/types2/oleext/idiff.idl @@ -0,0 +1,58 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1993. +// +// File: idiff.idl +// +// Contents: IDifferencing interface +// +// History: 11-Nov-94 SethuR Created +// +// Notes: There are three different way of extracting the differences +// between a given storage and another point of reference +// (another storage, a version id. or a time stamp). In the +// first case there is no temporal significance to the differences +// extracted, i.e., it is the difference in the snapshots at +// that instant of time. For the second and third cases there +// is a temporal significance attached to the differences. These +// also require some form of history to be associated with the +// storage. +// +//---------------------------------------------------------------------------- + +#include "idlmulti.h" + +REMOTED_INTERFACE(994f0af0-2977-11ce-bb80-08002b36b2b0) +interface IDifferencing : IUnknown +{ + typedef enum { + DIFF_TYPE_Ordinary, + DIFF_TYPE_Urgent + } DifferenceType; + + HRESULT SubtractMoniker( + [in] IReconcileInitiator *pInitiator, + [in] IMoniker *pOtherStg, + [in] DifferenceType diffType, + [in,out] STGMEDIUM *pStgMedium, + [in] DWORD reserved); + + HRESULT SubtractVerid( + [in] IReconcileInitiator *pInitiator, + [in] VERID *pVerid, + [in] DifferenceType diffType, + [in,out] STGMEDIUM *pStgMedium, + [in] DWORD reserved); + + HRESULT SubtractTimeStamp( + [in] IReconcileInitiator *pInitiator, + [in] FILETIME *pTimeStamp, // UTC + [in] DifferenceType diffType, + [in,out] STGMEDIUM *pStgMedium, + [in] DWORD reserved); + + HRESULT Add( + [in] IReconcileInitiator *pInitiator, + [in] STGMEDIUM *pStgMedium); +} diff --git a/private/types2/oleext/idir.idl b/private/types2/oleext/idir.idl new file mode 100644 index 000000000..8d7a084c6 --- /dev/null +++ b/private/types2/oleext/idir.idl @@ -0,0 +1,169 @@ +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1995 - 1995. +// +// File: IDirectory.idl +// +// Contents: IDirectory interface definition +// +// History: 14-Jun-1995 HenryLee initial version +// +//-------------------------------------------------------------------------- + +import "unknwn.idl"; +import "transact.idl"; +interface IEnumSTATDIR; + +typedef enum tagSTGFMT +{ + STGFMT_DOCUMENT = 0, + STGFMT_DIRECTORY = 1, + STGFMT_CATALOG = 2, + STGFMT_FILE = 3, + STGFMT_ANY = 4, + STGFMT_DOCFILE = 5, + STGFMT_STORAGE = 6, + STGFMT_JUNCTION = 7 +} STGFMT; + +cpp_quote("#define STGFMT_FLATFILE STGFMT_FILE") + +typedef struct tagSTGTEMPLATE +{ + IUnknown * pUnkTemplate; + DWORD ciidTemplate; + IID * riidTemplate; +} STGTEMPLATE; + +typedef struct tagOBJECT_SECURITY_INIT +{ + TRUSTEE_W * pTrusteeOwner; + TRUSTEE_W * pTrusteeGroup; + DWORD cAccessRightsLength; + EXPLICIT_ACCESS_W *pAccessRightsList; + DWORD cAuditEntriesLength; + EXPLICIT_ACCESS_W *pAuditEntriesList; +} OBJECT_SECURITY_INIT; + +typedef struct tagSTGCREATE +{ + DWORD grfAttrs; + STGTEMPLATE *pTemplate; + OBJECT_SECURITY_INIT *pSecurity; +} STGCREATE; + +typedef struct tagSTGOPEN +{ + STGFMT stgfmt; + DWORD grfMode; + DWORD grfFlags; + ITransaction * pTransaction; +} STGOPEN; + +typedef struct tagSTATDIR +{ + WCHAR * pwcsName; + STGFMT stgfmt; + DWORD grfAttrs; + ULARGE_INTEGER cbSize; + FILETIME mtime; + FILETIME atime; + FILETIME ctime; + DWORD grfMode; + CLSID clsid; + DWORD grfStateBits; +} STATDIR; + + +[ + object, + uuid(5c036ea0-b556-11ce-b33a-00aa00680937), + pointer_default(unique) +] +interface IDirectory : IUnknown +{ + [local] + HRESULT __stdcall CreateElement ([in] const WCHAR * pwcsName, + [in] STGCREATE * pStgCreate, + [in] STGOPEN * pStgOpen, + [in] REFIID riid, + [out] void ** ppObjectOpen); + + + [call_as(CreateElement)] + HRESULT __stdcall RemoteCreateElement ([in] const WCHAR * pwcsName, + [in] STGCREATE * pStgCreate, + [in] STGOPEN * pStgOpen, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown ** ppObjectOpen); + + [local] + HRESULT __stdcall OpenElement ([in] const WCHAR *pwcsName, + [in] STGOPEN * pStgOpen, + [in] REFIID riid, + [out] STGFMT * pStgfmt, + [out] void ** ppObjectOpen); + + [call_as(OpenElement)] + HRESULT __stdcall RemoteOpenElement ([in] const WCHAR *pwcsName, + [in] STGOPEN * pStgOpen, + [in] REFIID riid, + [out] STGFMT * pStgfmt, + [out, iid_is(riid)] IUnknown ** ppObjectOpen); + + + HRESULT MoveElement ([in] const WCHAR *pwcsName, + [in, unique] IDirectory * pdirDest, + [in, unique] const WCHAR * pwcsNewName, + [in] DWORD grfFlags); + + HRESULT CommitDirectory ([in] DWORD grfCommitFlags); + HRESULT RevertDirectory (); + + HRESULT DeleteElement ([in] const WCHAR *pwcsName); + + HRESULT SetTimes ([in, unique] const WCHAR *pwcsName, + [in, unique] const FILETIME * pctime, + [in, unique] const FILETIME * patime, + [in, unique] const FILETIME * pmtime); + + HRESULT SetDirectoryClass ([in] REFCLSID clsid); // redudant ? + + HRESULT SetAttributes ([in, unique] const WCHAR * pwcsName, + [in] DWORD grfAttrs); + + HRESULT StatElement ([in, unique] const WCHAR *pwcsName, + [out] STATDIR *pstatdir, + [in] DWORD grfStatFlag); + + HRESULT EnumDirectoryElements ([out] IEnumSTATDIR ** ppenum); + +} + +[ + object, + uuid(74c76b90-b556-11ce-b33a-00aa00680937), + pointer_default(unique) +] +interface IEnumSTATDIR : IUnknown +{ + [local] + HRESULT __stdcall Next( + [in] ULONG celt, + [in] STATDIR * rgelt, + [out] ULONG * pceltFetched ); + + [call_as(Next)] + HRESULT __stdcall RemoteNext( + [in] ULONG celt, + [out, size_is(celt), length_is(*pceltFetched)] STATDIR * rgelt, + [out] ULONG * pceltFetched ); + + + HRESULT Skip([in] ULONG celt); + + HRESULT Reset(); + + HRESULT Clone([out] IEnumSTATDIR ** ppenum); +} diff --git a/private/types2/oleext/makefile b/private/types2/oleext/makefile new file mode 100644 index 000000000..6ee4f43fa --- /dev/null +++ b/private/types2/oleext/makefile @@ -0,0 +1,6 @@ +# +# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source +# file to this component. This file merely indirects to the real make file +# that is shared by all the components of NT OS/2 +# +!INCLUDE $(NTMAKEENV)\makefile.def diff --git a/private/types2/oleext/multpr.idl b/private/types2/oleext/multpr.idl new file mode 100644 index 000000000..add744aca --- /dev/null +++ b/private/types2/oleext/multpr.idl @@ -0,0 +1,50 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1993. +// +// File: multpr.idl +// +// Contents: IMultiplePropertyAccess +// +// History: 07-Mar-94 CarlH Created +// 02-Feb-95 MikeSe Reinstated. Sync'd with vba95 spec. +// +//---------------------------------------------------------------------------- + +[ + object, + uuid(ec81fede-d432-11ce-9244-0020af6e72db), + pointer_default(unique) +] +interface IMultiplePropertyAccess : IUnknown +{ + + HRESULT GetIDsOfProperties( + [in] REFIID riid, + [in, size_is(cNames)] LPOLESTR *rgszNames, + [in] ULONG cNames, + [in] LCID lcid, + [out, size_is(cNames)] HRESULT *rghresult, + [out, size_is(cNames)] DISPID *rgdispid); + + HRESULT GetMultiple( + [in, size_is(cMembers)] DISPID *rgdispidMembers, + [in] ULONG cMembers, + [in] REFIID riid, + [in] LCID lcid, + [in] BOOL fAtomic, + [out, size_is(cMembers)] VARIANT *rgvarValues, + [out, size_is(cMembers)] HRESULT *rghresult); + + HRESULT PutMultiple( + [in, size_is(cMembers)] DISPID *rgdispidMembers, + [in, size_is(cMembers)] USHORT *rgusFlags, + [in] ULONG cMembers, + [in] REFIID riid, + [in] LCID lcid, + [in] BOOL fAtomic, + [in, size_is(cMembers)] VARIANT *rgvarValues, + [out, size_is(cMembers)] HRESULT *rghresult); +} + diff --git a/private/types2/oleext/oleext.acf b/private/types2/oleext/oleext.acf new file mode 100644 index 000000000..029f9de5d --- /dev/null +++ b/private/types2/oleext/oleext.acf @@ -0,0 +1,5 @@ +interface IAccessControl +{ + typedef [allocate(all_nodes)] PACTRL_ACCESSW_ALLOCATE_ALL_NODES; + typedef [allocate(all_nodes)] PACTRL_AUDITW_ALLOCATE_ALL_NODES; +} diff --git a/private/types2/oleext/oleext.idl b/private/types2/oleext/oleext.idl new file mode 100644 index 000000000..6ff134368 --- /dev/null +++ b/private/types2/oleext/oleext.idl @@ -0,0 +1,57 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1993 - 1993. +// +// File: oleext.idl +// +// Contents: master idl file for public interfaces +// +// Note: This subdirectory contains extensions to OLE +// that we expect to become part of OLE imminently. +// +// Warning: Keep random shit OUT of this subdirectory, or die. +// +// History: 7-18-94 ErikGav Created +// 3-21-95 BillMo Added 'new' storage property i/f. +// 11-14-95 MikeHill Added BIND_OPTS2 structure. +// +//---------------------------------------------------------------------------- + +#ifdef IMPORT_IDL_DEPENDENTS +import "oaidl.idl"; +#endif + +// Object level property interfaces +#include "propctr.idl" + +// OLE replication interfaces +#include "recnotfy.idl" +#include "recobj.idl" +#include "version.idl" +#include "recinit.idl" +#include "idiff.idl" + +// access control interfaces +#include "iaccess.idl" + +// OLE directory interface +#include "idir.idl" + +// multiple property access +#include "multpr.idl" + +cpp_quote("#if defined(_DCOM_) || defined(_CAIROSTG_)") +cpp_quote("#include ") +cpp_quote("#endif // if defined(_DCOM_) || defined(_CAIROSTG_)") + +cpp_quote("#if !defined(_TAGFULLPROPSPEC_DEFINED_)") +cpp_quote("#define _TAGFULLPROPSPEC_DEFINED_") +typedef struct tagFULLPROPSPEC +{ + GUID guidPropSet; + PROPSPEC psProperty; +} FULLPROPSPEC; +cpp_quote("#endif // #if !defined(_TAGFULLPROPSPEC_DEFINED_)") + + diff --git a/private/types2/oleext/propctr.idl b/private/types2/oleext/propctr.idl new file mode 100644 index 000000000..3324d7c86 --- /dev/null +++ b/private/types2/oleext/propctr.idl @@ -0,0 +1,25 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1995. +// +// File: propctr.idl +// +// Contents: IPropsetContainer +// +// History: 09-Aug-94 IraS Created +// +//---------------------------------------------------------------------------- + +#include "idlmulti.h" + +REMOTED_INTERFACE(b4ffae60-a7ca-11cd-b58b-00006b829156) +interface IPropertySetContainer : IUnknown +{ + HRESULT GetPropset([in] REFGUID rguidName, + [in] REFIID riid, + [out, iid_is(riid)] IUnknown ** ppvObj); + + HRESULT AddPropset([in] IPersist * pPropset); + HRESULT DeletePropset([in] REFGUID rguidName); +} diff --git a/private/types2/oleext/recinit.idl b/private/types2/oleext/recinit.idl new file mode 100644 index 000000000..76af857d2 --- /dev/null +++ b/private/types2/oleext/recinit.idl @@ -0,0 +1,42 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1993. +// +// File: recinit.idl +// +// Contents: IDL definition for IReconcileInitiator interface +// +// Classes: +// +// Functions: +// +// History: 12-12-94 SethuR Created from DavidDi's specs. +// +// Notes: +// +// This interface needs to be moved to a more global location. +// +//---------------------------------------------------------------------------- + +#include "idlmulti.h" + +REMOTED_INTERFACE(99180161-DA16-101A-935C-444553540000) +interface IReconcileInitiator : IUnknown +{ + HRESULT SetAbortCallback( + [in,unique] IUnknown *pUnkForAbort); + + HRESULT SetProgressFeedback( + [in] ULONG ulProgress, + [in] ULONG ulProgressMax); + + HRESULT FindVersion( + [in] VERID *pverid, + [out] IMoniker **ppmk); + + HRESULT FindVersionFromGraph( + [in] VERGRAPH *pvergraph, + [out] VERID *pverid, + [out] IMoniker **ppmk); +} diff --git a/private/types2/oleext/recnotfy.idl b/private/types2/oleext/recnotfy.idl new file mode 100644 index 000000000..a5a6a1354 --- /dev/null +++ b/private/types2/oleext/recnotfy.idl @@ -0,0 +1,34 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1993. +// +// File: recnotfy.idl +// +// Contents: IDL definition for INotifyReplica interface +// +// Classes: +// +// Functions: +// +// History: 12-12-94 SethuR Created from DavidDi's specs. +// +// Notes: There are some issues regarding this interface that +// needs to be ironed out. +// +// 1) How do we prevent having to know about the global topology +// in the case of INotifyReplica interface ? +// +// This interface needs to be moved to a more global location. +// +//---------------------------------------------------------------------------- + +#include "idlmulti.h" + +REMOTED_INTERFACE(99180163-DA16-101A-935C-444553540000) +interface INotifyReplica : IUnknown +{ + HRESULT YouAreAReplica ( + [in] ULONG cOtherReplicas, + [size_is(cOtherReplicas,), in,unique] IMoniker **rgpOtherReplicas); +} diff --git a/private/types2/oleext/recobj.idl b/private/types2/oleext/recobj.idl new file mode 100644 index 000000000..cea0d425e --- /dev/null +++ b/private/types2/oleext/recobj.idl @@ -0,0 +1,95 @@ +//+--------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1993. +// +// File: recobj.idl +// +// Contents: IDL definition for IReconcilableObject interface +// +// Classes: +// +// Functions: +// +// History: 12-12-94 SethuR Created from DavidDi's specs. +// +// Notes: There are a couple of issues regarding this interface that +// needs to be ironed out. +// +// 1) How do we deal with Remote Invocation/execution if we have +// HWND's as part of the arguments ? +// +// 2) How do we prevent having to know about the global topology +// in the case of IReplicaNotify interface ? +// +//---------------------------------------------------------------------------- + +#include "idlmulti.h" + +interface IReconcileInitiator; + +REMOTED_INTERFACE(99180162-DA16-101A-935C-444553540000) +interface IReconcilableObject : IUnknown +{ + typedef enum _reconcilef + { + // interaction with the user is allowed + + RECONCILEF_MAYBOTHERUSER = 0x0001, + + // + // hwndProgressFeedback may be used to provide reconciliation progress + // feedback to the user. + // + + RECONCILEF_FEEDBACKWINDOWVALID = 0x0002, // BUGBUG + + // residue support not required + + RECONCILEF_NORESIDUESOK = 0x0004, + + // caller not interested in callee's residues + + RECONCILEF_OMITSELFRESIDUE = 0x0008, + + // + // Reconcile() call resuming after a previous Reconcile() call returned + // REC_E_NOTCOMPLETE + // + + RECONCILEF_RESUMERECONCILIATION = 0x0010, + + // Object may perform all updates. + + RECONCILEF_YOUMAYDOTHEUPDATES = 0x0020, + + // Only this object has been changed. + + RECONCILEF_ONLYYOUWERECHANGED = 0x0040, + + // flag combinations + + ALL_RECONCILE_FLAGS = (RECONCILEF_MAYBOTHERUSER | + RECONCILEF_FEEDBACKWINDOWVALID | + RECONCILEF_NORESIDUESOK | + RECONCILEF_OMITSELFRESIDUE | + RECONCILEF_RESUMERECONCILIATION | + RECONCILEF_YOUMAYDOTHEUPDATES | + RECONCILEF_ONLYYOUWERECHANGED) + } RECONCILEF; + + HRESULT Reconcile( + [in] IReconcileInitiator *pInitiator, + [in] DWORD dwFlags, + [in] HWND hwndOwner, + [in] HWND hwndProgressFeedback, + [in] ULONG cInput, + [in,unique,size_is(cInput,)] LPMONIKER *rgpmkOtherInput, + [out] LONG *plOutIndex, + [in,unique] IStorage *pstgNewResidues, + [in,unique] ULONG *pvReserved); + + HRESULT GetProgressFeedbackMaxEstimate( + [out] ULONG *pulProgressMax); +} + diff --git a/private/types2/oleext/sources b/private/types2/oleext/sources new file mode 100644 index 000000000..d1abb3f20 --- /dev/null +++ b/private/types2/oleext/sources @@ -0,0 +1,18 @@ +#+--------------------------------------------------------------------------- +# +# Microsoft Windows +# Copyright (C) Microsoft Corporation, 1993 - 1993. +# +# File: sources +# +# History: 7-20-94 ErikGav First attempt at rationalizing all this +# +#---------------------------------------------------------------------------- + +!include ..\types2.inc + +SOURCES = oleext.idl + +# Can't have multiple guys partying on ..\proxy\proxy\dlldata.c at once +SYNCHRONIZE_BLOCK=1 + diff --git a/private/types2/oleext/version.idl b/private/types2/oleext/version.idl new file mode 100644 index 000000000..04c20dd88 --- /dev/null +++ b/private/types2/oleext/version.idl @@ -0,0 +1,51 @@ +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1993. +// +// File: version.idl +// +// Contents: OLE versioning definintions. +// +// History: 09-Jan-95 DaveStr Created +// +//-------------------------------------------------------------------------- + +#include "idlmulti.h" + +[ + uuid(6291f800-2bfb-11ce-bb80-08002b36b2b0), + pointer_default(unique) +] + +interface Versioning +{ + +#pragma pack(4) // for midl & C interop + + typedef GUID VERID; + + typedef struct tagVERIDARRAY { + DWORD cVerid; + [size_is(cVerid)] GUID verid[]; + } VERIDARRAY; + + typedef struct tagVERBLOCK { + ULONG iveridFirst; + ULONG iveridMax; + ULONG cblockPrev; + [size_is(cblockPrev)] ULONG *rgiblockPrev; + } VERBLOCK; + + typedef struct tagVERCONNECTIONINFO { + DWORD cBlock; + [size_is(cBlock)] VERBLOCK *rgblock; + } VERCONNECTIONINFO; + + typedef struct tagVERGRAPH{ + VERCONNECTIONINFO blocks; + VERIDARRAY nodes; + } VERGRAPH; + +#pragma pack() +} -- cgit v1.2.3