// 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)); }
// 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)); }