import "oaidl.idl";
                    import "ocidl.idl";
                    [uuid(f4f74946-4546-44bd-a073-9ea6f9fe78cb)] library TestLib {
[object,
                        oleautomation,
                        dual,
                        uuid(ed978f5f-cc45-4fcc-a7a6-751ffa8dfedd)]
                        interface IMyInterface : IDispatch {
[id(100), propget] HRESULT Name([out, retval] BSTR *pname);
               [id(100), propput] HRESULT Name([in] BSTR name);
[id(101)] HRESULT MixedInOut([in] int a, [out] int *b, [in] int c, [out] int *d);
[id(102)] HRESULT MultiInOutArgs([in, out] int *pa, [in, out] int *pb);
HRESULT MultiInOutArgs2([in, out] int *pa, [out] int *pb);
HRESULT MultiInOutArgs3([out] int *pa, [out] int *pb);
HRESULT MultiInOutArgs4([out] int *pa, [in, out] int *pb);
HRESULT GetStackTrace([in] ULONG FrameOffset,
                                     [in, out] INT *Frames,
                                     [in] ULONG FramesSize,
                                     [out, optional] ULONG *FramesFilled);
HRESULT dummy([in] SAFEARRAY(VARIANT *) foo);
HRESULT DoSomething();
HRESULT DoSomethingElse();
}

[object,
                             oleautomation,
                             dual,
                             uuid(f7c48a90-64ea-4bb8-abf1-b3a3aa996848)]
                             interface IMyEventInterface : IDispatch {
[id(103)] HRESULT OnSomething();
[id(104)] HRESULT OnSomethingElse([out, retval] int *px);
}


[uuid(fa9de8f4-20de-45fc-b079-648572428817)]
coclass MyServer {
    [default] interface IMyInterface;
    [default, source] interface IMyEventInterface;
};
}