public static List <Record3DDevice> GetAvailableDevices()
        {
            // Obtain and select device handle
            DeviceHandlesInfo deviceHandlesInfo = ListAllDeviceHandles();

            Int32[] deviceHandles = new Int32[deviceHandlesInfo.size];
            IntPtr  pointer       = deviceHandlesInfo.ptr;

            Marshal.Copy(pointer, deviceHandles, 0, (Int32)deviceHandlesInfo.size);
            FinishDeviceInfoHandling(deviceHandlesInfo);

            return(deviceHandles.ToList().Select(x => new Record3DDevice()
            {
                handle = x
            }).ToList());
        }
 private static extern void FinishDeviceInfoHandling(DeviceHandlesInfo devInfo);