, . C++, . , IDL - IDL- . MIDL , (Network Data Representation NDR), - . NDR , , . NDR C . , MIDL CoMarshalInterface / CoUnmarshalInterface . :
HRESULT Method([out] IRacer **ppRacer);
ppRacer IID IRacer (IID_IRacer) CoMarshalInterface / CoUnmarshalInterface. :
HRESULT Method([in] REFIID riid, [out, iid_is(riid)] void **ppv);
, IID, .
MIDL , library. -IDL
// sports.idl // . [local, object] interface IBoxer : IUnknown { ... } [object] interface IRacer : IUnknown { ... } [object] interface ISwimmer : IUnknown { ... } [helpstring("Sports Lib")] library SportsLibrary { interface IRacer; // include def. of IRacer in TLB // IRacer TLB [object] interface IWrestler : IUnknown { ... } }IRacer ISwimmer . MIDL IBoxer, [local] . MIDL IWrestler, .
MIDL IDL , . sports.h / ++- , sports_i. - IID LIBID, a sports.tlb (tokenized) IDL IRacer IWrestler, , . sports_p.c , NDR. - (vtable) MIDL. , (DllGetClassObject ) . dlldata.c.
, (makefile), - (sports_i. , sports_p.c, dlldata.c) DLL. , . , dlldata.c DllGetClassObject DllCanUnloadNow. , RPC Windows NT 3.50 . Windows NT 3.51 ( Windows 95), - REGISTER_PROXY_DLL dlldata.c, . / .
Windows NT 4.0 (interpretive) . (working set). . Microsoft Transaction Server (MTS) 1. , MIDL /Oicf :
midl.exe /0icf sports.idl
, , MIDL _p.c, . , /Oicf, Windows NT 4.0, - _WIN32_WINNT , 0 400. - .
. , VARIANT2, . [oleautomation] :
[ uuid(F99D19A3-D8BA-11d0-8C4F-0080C73925BA), version(1.0)] library SportsLib { importlib("stdole32.tlb"); [ uuid(F99D1907-D8BA-11D0-8C4F-0080C73925BA), object, oleautomation ] interface IWrestler : IUnknown { import "oaidl.idl"; HRESULT HalfNelson([in] double nmsec); } }
[oleautomation] RegisterTypeLib, :
[HKCR\Interface\{F99D1907-D8BA-11d0-8C4F-0080C73925BA}] @="IWrestler" [HKCR\Interface\{F99D1907-D8BA-11d0-8C4F-0080C73925BA}\ProxyStubClsid32] @="{O0020424-0000-0000-C000-000000000046}" [HKCR\Interface\{F99D1907-D8BA-11d0-8C4F-0080C73925BA}\ProxyStubClsid] @="{O0020424-0000-0000-C000-000000000046}" [HKCR\Interface\{F99D1907-D8BA-11d0-8C4F-0080C73925BA}\TypeLib] @="{F99D19A -08BA-11d0-8C4F-0080C73925BA}" Version="1.0"
CLSID {O0020424-0000-0000-C000-000000000046} , , , 16- Windows.
, 16- 32- . , Microsoft Transaction Server. : - , , DLL . . , , 3. Windows NT 4.0 CoMarshalInterface / CoUnmarshalInterface . /0icf- .
1 MTS , . MTS .
2 Variants - , (scripting environments) 2.
3 , . .