Я пытаюсь выполнить эту функцию:
public static int QueryInterface(
IntPtr pUnk,
ref Guid iid,
out IntPtr ppv
)
, где
pUnk
Type: System.IntPtr
The interface to be queried.
По сути, Marshal.QueryInterface запрашивает указатель на указанный интерфейс из COM-объекта. Существует ряд интерфейсов, которые я хотел бы запросить (все из IPersist), так как мне получить указатель на эти интерфейсы?
Примечание: IPersistStorage является одним из них.
edit (это работает):
// Use the CLSID to instantiate the COM object using interop.
Type type = Type.GetTypeFromCLSID(myGuid);
Object comObj = Activator.CreateInstance(type);
// Return a pointer to the objects IUnknown interface.
IntPtr pIUnk = Marshal.GetIUnknownForObject(comObj);
IntPtr pInterface;
Int32 result = Marshal.QueryInterface(pIUnk, ref myGuid, out pInterface);