public iClassInstanceWrapper(iClassInstance inst) { instance = inst; var unknown = (IUnknown)inst; vTable.AddRef = unknown.AddRef; vTable.Release = unknown.Release; vTable.QueryInterface = unknown.QueryInterface; vTable.CreateInstance = inst.CreateInstance; }
public iClassInstanceWrapper(iClassInstance inst) { instance = inst; var unknown = (IUnknown)inst; vTable.AddRef = unknown.AddRef; vTable.Release = unknown.Release; vTable.QueryInterface = unknown.QueryInterface; vTable.CreateInstance = inst.CreateInstance; genericObject.VTablePtr = Marshal.AllocHGlobal(Marshal.SizeOf(vTable)); unmanagedInstance = Marshal.AllocHGlobal(Marshal.SizeOf(genericObject)); Marshal.StructureToPtr(vTable, genericObject.VTablePtr, false); Marshal.StructureToPtr(genericObject, unmanagedInstance, false); }