public iRegistryWrapper(iRegistry inst) { instance = inst; var unknown = (IUnknown)inst; vTable.AddRef = unknown.AddRef; vTable.Release = unknown.Release; vTable.QueryInterface = unknown.QueryInterface; vTable.Load = inst.Load; vTable.Unload = inst.Unload; vTable.Install = inst.Install; vTable.Remove = inst.Remove; vTable.GetClassInstance = inst.GetClassInstance; vTable.Exists = inst.Exists; vTable.Create = inst.Create; vTable.ClassInstall = inst.ClassInstall; vTable.ClassRemove = inst.ClassRemove; vTable.GetClasses = inst.GetClasses; vTable.InstanceInstall = inst.InstanceInstall; vTable.InstanceRemove = inst.InstanceRemove; vTable.GetInstance = inst.GetInstance; genericObject.VTablePtr = Marshal.AllocHGlobal(Marshal.SizeOf(vTable)); unmanagedInstance = Marshal.AllocHGlobal(Marshal.SizeOf(genericObject)); Marshal.StructureToPtr(vTable, genericObject.VTablePtr, false); Marshal.StructureToPtr(genericObject, unmanagedInstance, false); }
public UInt32 CreateInstance(iRegistry registry, GOMiUnknown outer, GOMiUnknown outInstance) { return(vTable.CreateInstance(unmanagedInstance, registry, outer, outInstance)); }