internal void FireDeviceRemovedEvent(DeviceRemovedEventArgs e) { DeviceRemovedEventHandler del = OnDeviceRemoved; if (del != null) { del(this, e); } }
public void ScanNow() { lock (lock_device_list) { try { for (byte i = 0; i < MAX_SLOT; i++) { XInputNative.XInputCapabilities data = new XInputNative.XInputCapabilities(); if (DeviceCache[i] == null) { if (XInputNative.XInputGetCapabilities(i + 1, 0, ref data) == 0) { if (DeviceCache[i] == null) { DeviceCache[i] = new XInputDevice(i); } DeviceAddedEventHandler threadSafeEventHandler = DeviceAdded; threadSafeEventHandler?.Invoke(this, DeviceCache[i]); } } else { bool connected = XInputNative.XInputGetCapabilities(i + 1, 0, ref data) == 0; if (!connected) { DeviceRemovedEventHandler threadSafeEventHandler = DeviceRemoved; threadSafeEventHandler?.Invoke(this, DeviceCache[i].UniqueKey); DeviceCache[i] = null; } } } } catch { } } }