public uint GetDeviceCount(DeviceType deviceType) { Result result = DevicesNativeApi.GetDeviceIds( Handle, (Interop.Devices.DeviceType)deviceType, 0, null, out uint numberOfAvailableDevices ); return(numberOfAvailableDevices); }
/// <summary> /// Gets all devices of the platform that match the specified device type. /// </summary> /// <param name="deviceType">The type of devices that is to be retrieved.</param> /// <exception cref="OpenClException"> /// If the devices could not be retrieved, then a <see cref="OpenClException" /> is /// thrown. /// </exception> /// <returns>Returns a list of all devices that matched the specified device type.</returns> public IEnumerable <Device> GetDevices(DeviceType deviceType) { // Gets the number of available devices of the specified type uint numberOfAvailableDevices; Result result = DevicesNativeApi.GetDeviceIds( Handle, (Interop.Devices.DeviceType)deviceType, 0, null, out numberOfAvailableDevices ); if (result != Result.Success) { throw new OpenClException("The number of available devices could not be queried.", result); } // Gets the pointers to the devices of the specified type IntPtr[] devicePointers = new IntPtr[numberOfAvailableDevices]; result = DevicesNativeApi.GetDeviceIds( Handle, (Interop.Devices.DeviceType)deviceType, numberOfAvailableDevices, devicePointers, out numberOfAvailableDevices ); if (result != Result.Success) { throw new OpenClException("The devices could not be retrieved.", result); } // Converts the pointer to device objects foreach (IntPtr devicePointer in devicePointers) { yield return(new Device(devicePointer)); } }