public static CMVRMultiSinkFactoryLoader getInstance() { if (mInstance == null) { mInstance = new CMVRMultiSinkFactoryLoader(); } return(mInstance); }
public bool createOutputNodes(IntPtr aHandle, object aPtrUnkSharedResource, uint aOutputNodeAmount, out List <object> aTopologyOutputNodesList) { bool lresult = false; aTopologyOutputNodesList = new List <object>(); do { try { IntPtr lOutputNodes = IntPtr.Zero; int lhresult = CMVRMultiSinkFactoryLoader.createOutputNodes( aHandle, Marshal.GetIUnknownForObject(aPtrUnkSharedResource), aOutputNodeAmount, out lOutputNodes); IntPtr[] lOutputNodesArray = new IntPtr[aOutputNodeAmount]; Marshal.Copy(lOutputNodes, lOutputNodesArray, 0, (int)aOutputNodeAmount); for (int i = 0; i < aOutputNodeAmount; i++) { aTopologyOutputNodesList.Add(Marshal.GetObjectForIUnknown(lOutputNodesArray[i])); Marshal.Release(lOutputNodesArray[i]); } Marshal.FreeCoTaskMem(lOutputNodes); lresult = true; } catch (Exception) { } } while (false); return(lresult); }