Пример #1
0
    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;
    }
Пример #2
0
            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);
            }