view dwt/internal/ole/win32/extras.d @ 237:e2affbeb686d

Making tango.sys.win32.Types and dwt.internal.win32.WINTYPES to match common declaration. Make ansi charactars of type ubyte.
author Frank Benoit <benoit@tionex.de>
date Thu, 19 Jun 2008 03:25:36 +0200
parents 2e6eb5bd2c16
children
line wrap: on
line source

module dwt.internal.ole.win32.extras;

//
// extra bits form here and there to bring the com alias inline with MS
// to ease the porting.
//

//public import std.c.windows.com;
//public import std.c.windows.windows;
import dwt.internal.win32.WINTYPES;
// private import dwt.internal.ole.win32.comtypes;
alias WCHAR OLECHAR;
alias OLECHAR *LPOLESTR;
alias OLECHAR *LPCOLESTR;

enum
{
    rmm = 23,   // OLE 2 version number info
    rup = 639,
}

enum : int
{
    S_OK = 0,
    S_FALSE = 0x00000001,
    NOERROR = 0,
    E_NOTIMPL     = cast(int)0x80004001,
    E_NOINTERFACE = cast(int)0x80004002,
    E_POINTER     = cast(int)0x80004003,
    E_ABORT       = cast(int)0x80004004,
    E_FAIL        = cast(int)0x80004005,
    E_HANDLE      = cast(int)0x80070006,
    CLASS_E_NOAGGREGATION = cast(int)0x80040110,
    E_OUTOFMEMORY = cast(int)0x8007000E,
    E_INVALIDARG  = cast(int)0x80070057,
    E_UNEXPECTED  = cast(int)0x8000FFFF,
}

// in tango types.di
// struct GUID {          // size is 16
//     align(1):
//     DWORD Data1;
//     WORD  Data2;
//     WORD  Data3;
//     BYTE  Data4[8];
// }

enum
{
    CLSCTX_INPROC_SERVER    = 0x1,
    CLSCTX_INPROC_HANDLER   = 0x2,
    CLSCTX_LOCAL_SERVER = 0x4,
    CLSCTX_INPROC_SERVER16  = 0x8,
    CLSCTX_REMOTE_SERVER    = 0x10,
    CLSCTX_INPROC_HANDLER16 = 0x20,
    CLSCTX_INPROC_SERVERX86 = 0x40,
    CLSCTX_INPROC_HANDLERX86 = 0x80,

    CLSCTX_INPROC = (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER),
    CLSCTX_ALL = (CLSCTX_INPROC_SERVER| CLSCTX_INPROC_HANDLER| CLSCTX_LOCAL_SERVER),
    CLSCTX_SERVER = (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER),
}

alias GUID IID;
alias GUID CLSID;

extern (C)
{
    extern IID IID_IUnknown;
    extern IID IID_IClassFactory;
    extern IID IID_IMarshal;
    extern IID IID_IMallocSpy;
    extern IID IID_IStdMarshalInfo;
    extern IID IID_IExternalConnection;
    extern IID IID_IMultiQI;
    extern IID IID_IEnumUnknown;
    extern IID IID_IBindCtx;
    extern IID IID_IEnumMoniker;
    extern IID IID_IRunnableObject;
    extern IID IID_IRunningObjectTable;
    extern IID IID_IPersist;
    extern IID IID_IPersistStream;
    extern IID IID_IMoniker;
    extern IID IID_IROTData;
    extern IID IID_IEnumString;
    extern IID IID_ISequentialStream;
    extern IID IID_IStream;
    extern IID IID_IEnumSTATSTG;
    extern IID IID_IStorage;
    extern IID IID_IPersistFile;
    extern IID IID_IPersistStorage;
    extern IID IID_ILockBytes;
    extern IID IID_IEnumFORMATETC;
    extern IID IID_IEnumSTATDATA;
    extern IID IID_IRootStorage;
    extern IID IID_IAdviseSink;
    extern IID IID_IAdviseSink2;
    extern IID IID_IDataObject;
    extern IID IID_IDataAdviseHolder;
    extern IID IID_IMessageFilter;
    extern IID IID_IRpcChannelBuffer;
    extern IID IID_IRpcProxyBuffer;
    extern IID IID_IRpcStubBuffer;
    extern IID IID_IPSFactoryBuffer;
    extern IID IID_IPropertyStorage;
    extern IID IID_IPropertySetStorage;
    extern IID IID_IEnumSTATPROPSTG;
    extern IID IID_IEnumSTATPROPSETSTG;
    extern IID IID_IFillLockBytes;
    extern IID IID_IProgressNotify;
    extern IID IID_ILayoutStorage;
    extern IID GUID_NULL;
    extern IID IID_IRpcChannel;
    extern IID IID_IRpcStub;
    extern IID IID_IStubManager;
    extern IID IID_IRpcProxy;
    extern IID IID_IProxyManager;
    extern IID IID_IPSFactory;
    extern IID IID_IInternalMoniker;
    extern IID IID_IDfReserved1;
    extern IID IID_IDfReserved2;
    extern IID IID_IDfReserved3;
    extern IID IID_IStub;
    extern IID IID_IProxy;
    extern IID IID_IEnumGeneric;
    extern IID IID_IEnumHolder;
    extern IID IID_IEnumCallback;
    extern IID IID_IOleManager;
    extern IID IID_IOlePresObj;
    extern IID IID_IDebug;
    extern IID IID_IDebugStream;
    extern IID IID_StdOle;
    extern IID IID_ICreateTypeInfo;
    extern IID IID_ICreateTypeInfo2;
    extern IID IID_ICreateTypeLib;
    extern IID IID_ICreateTypeLib2;
    extern IID IID_IDispatch;
    extern IID IID_IEnumVARIANT;
    extern IID IID_ITypeComp;
    extern IID IID_ITypeInfo;
    extern IID IID_ITypeInfo2;
    extern IID IID_ITypeLib;
    extern IID IID_ITypeLib2;
    extern IID IID_ITypeChangeEvents;
    extern IID IID_IErrorInfo;
    extern IID IID_ICreateErrorInfo;
    extern IID IID_ISupportErrorInfo;
    extern IID IID_IOleAdviseHolder;
    extern IID IID_IOleCache;
    extern IID IID_IOleCache2;
    extern IID IID_IOleCacheControl;
    extern IID IID_IParseDisplayName;
    extern IID IID_IOleContainer;
    extern IID IID_IOleClientSite;
    extern IID IID_IOleObject;
    extern IID IID_IOleWindow;
    extern IID IID_IOleLink;
    extern IID IID_IOleItemContainer;
    extern IID IID_IOleInPlaceUIWindow;
    extern IID IID_IOleInPlaceActiveObject;
    extern IID IID_IOleInPlaceFrame;
    extern IID IID_IOleInPlaceObject;
    extern IID IID_IOleInPlaceSite;
    extern IID IID_IContinue;
    extern IID IID_IViewObject;
    extern IID IID_IViewObject2;
    extern IID IID_IDropSource;
    extern IID IID_IDropTarget;
    extern IID IID_IEnumOLEVERB;
}

extern (Windows) export {
    DWORD   CoBuildVersion();

    int StringFromGUID2(GUID *rguid, LPOLESTR lpsz, int cbMax);

    /* init/uninit */

    HRESULT CoInitialize(LPVOID pvReserved);
    void    CoUninitialize();
    DWORD   CoGetCurrentProcess();


    HRESULT CoCreateInstance(CLSID *rclsid, IUnknown UnkOuter,
                        DWORD dwClsContext, IID* riid, void* ppv);

    //HINSTANCE CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree);
    void    CoFreeLibrary(HINSTANCE hInst);
    void    CoFreeAllLibraries();
    void    CoFreeUnusedLibraries();

    interface IUnknown {
        HRESULT QueryInterface(IID* riid, void** pvObject);
        ULONG AddRef();
        ULONG Release();
    }

    interface IClassFactory : IUnknown {
        HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject);
        HRESULT LockServer(BOOL fLock);
    }

}


alias IUnknown LPUNKNOWN;
alias IClassFactory LPCLASSFACTORY;

//alias LPRECT LPCRECT; /* D has no consts */
struct COAUTHINFO{}
//alias DWORD LCID;
alias PDWORD PLCID;
//typedef GUID CLSID;
//alias CLSID * LPCLSID;
alias GUID *REFGUID;

//alias IID *REFIID;

alias CLSID *REFCLSID;

//typedef FMTID  *REFFMTID;
union __MIDL_IWinTypes_0001
{
DWORD dwValue;
wchar *pwszName;
}
struct  userCLIPFORMAT
{
    long fContext;
	__MIDL_IWinTypes_0001 u;
}

alias userCLIPFORMAT *wireCLIPFORMAT;

alias WORD CLIPFORMAT;

alias void * HMETAFILEPICT;
// typeless hack
alias void * wireHGLOBAL;
alias void * wireHBITMAP;
alias void * wireHPALETTE;
alias void * wireHENHMETAFILE;
alias void * wireHMETAFILE;
alias void * wireHMETAFILEPICT;

struct BYTE_BLOB {
   ULONG clSize;
	byte[1] abData;
}

alias BYTE_BLOB *UP_BYTE_BLOB;

struct  WORD_BLOB
{
	ULONG clSize;
	ushort[1] asData;
}

alias WORD_BLOB *UP_WORD_BLOB;

struct  DWORD_BLOB
{
    ULONG clSize;
	ULONG[1] alData;
}
alias DWORD_BLOB *UP_DWORD_BLOB;
alias ushort VARTYPE;
alias short VARIANT_BOOL;

// all the st
enum READYSTATE
    {	READYSTATE_UNINITIALIZED	= 0,
	READYSTATE_LOADING	= 1,
	READYSTATE_LOADED	= 2,
	READYSTATE_INTERACTIVE	= 3,
	READYSTATE_COMPLETE	= 4
}

alias HANDLE HTASK;