unsafe public static List <DeviceInfo> GetDeviceList() { int deviceCount = -1; OniDeviceInfo *deviceList = (OniDeviceInfo *)IntPtr.Zero; OniStatus status = oniGetDeviceList(&deviceList, ref deviceCount); HandleError(status); List <DeviceInfo> list = new List <DeviceInfo>(); for (int i = 0; i < deviceCount; i++) { DeviceInfo tmpInfo = new DeviceInfo(); OniDeviceInfo deviceInfo = deviceList[i]; tmpInfo.uri = Marshal.PtrToStringAnsi((IntPtr)deviceInfo.uri); tmpInfo.name = Marshal.PtrToStringAnsi((IntPtr)deviceInfo.name); tmpInfo.vendor = Marshal.PtrToStringAnsi((IntPtr)deviceInfo.vendor); tmpInfo.usbProductId = deviceInfo.usbProductId; tmpInfo.usbVendorId = deviceInfo.usbVendorId; list.Add(tmpInfo); } oniReleaseDeviceList((IntPtr)deviceList); return(list); }
public static DeviceInfo ToManaged(this OniDeviceInfo oniDeviceInfo) => new DeviceInfo { Uri = oniDeviceInfo.uri.ToManagedString(), Vendor = oniDeviceInfo.vendor.ToManagedString(), Name = oniDeviceInfo.name.ToManagedString(), UsbVendorId = oniDeviceInfo.usbVendorId, UsbProductId = oniDeviceInfo.usbProductId };