//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1993. // // File: host.idl // // Contents: Definition of private ORPC interface between apartments. // Used to activate an inproc dll of one threading model from // an apartment of a different threading model. // // History: 04-Mar-96 Rickhi Created // //-------------------------------------------------------------------------- // // WIN64 07/01/98 v-thief // // This is a temporary implementation/port. // We could use a mapping between DWORD dwPDE and pointers. // This mapping API should be exposed by a common API. like rpc for example. // However, for now I am going to try the polymorphic MIDL type: __int3264. // Another point is that PDE or LFN were type as unsigned types, even if // pointers ( signed types for Microsoft compilers ) were stored there. // I respected this and use an "unsigned __int3264". // For now also, I do not change the name of the first parameter but it // should be changed to "hPDE" or something similar. // // Resolution of issue: // This interface never goes out of process so making the first parameter ULONG64 // is fine since the RPC proxy will marshal the pointer-width value. NT Bug #232947 // showed up because of using a DCE proxy that truncated the dwPDE argument. // [ uuid(00000141-0000-0000-C000-000000000046), pointer_default(unique), object ] interface IDLLHost : IUnknown { #ifndef DO_NO_IMPORTS import "iface.idl"; import "unknwn.idl"; import "objidl.idl"; #endif enum {DLLHOST_IS_DPE = 0x01, DLLHOST_IS_PFN = 0x02 }; HRESULT DllGetClassObject( [in] ULONG64 hDPE, [in] REFCLSID rclsid, [in] REFIID riid, [out, iid_is(riid)] IUnknown **ppunk, [in] DWORD dwFlags); }