Exemple #1
0
        // Called by the runtime to execute the abstract instance function.
        internal static object?CallCreateObject(ComWrappersScenario scenario, ComWrappers?comWrappersImpl, IntPtr externalComObject, CreateObjectFlags flags)
        {
            ComWrappers?impl = null;

            switch (scenario)
            {
            case ComWrappersScenario.Instance:
                impl = comWrappersImpl;
                break;

            case ComWrappersScenario.TrackerSupportGlobalInstance:
                impl = s_globalInstanceForTrackerSupport;
                break;

            case ComWrappersScenario.MarshallingGlobalInstance:
                impl = s_globalInstanceForMarshalling;
                break;
            }

            if (impl == null)
            {
                return(null);
            }

            return(impl.CreateObject(externalComObject, flags));
        }
Exemple #2
0
        // Called by the runtime to execute the abstract instance function
        internal static unsafe void *CallComputeVtables(ComWrappersScenario scenario, ComWrappers?comWrappersImpl, object obj, CreateComInterfaceFlags flags, out int count)
        {
            ComWrappers?impl = null;

            switch (scenario)
            {
            case ComWrappersScenario.Instance:
                impl = comWrappersImpl;
                break;

            case ComWrappersScenario.TrackerSupportGlobalInstance:
                impl = s_globalInstanceForTrackerSupport;
                break;

            case ComWrappersScenario.MarshallingGlobalInstance:
                impl = s_globalInstanceForMarshalling;
                break;
            }

            if (impl is null)
            {
                count = -1;
                return(null);
            }

            return(impl.ComputeVtables(obj, flags, out count));
        }