private static void FindMyDevice() { var devicePathName = ""; if (!(DeviceDetected)) { // This GUID must match the GUID in the device's INF file. // Convert the device interface GUID String to a GUID object: if (_deviceManager.FindDeviceFromGuid(WinUsbDemoGuid, ref devicePathName)) { var success = _usbDevice.GetDeviceHandle(devicePathName); if (success) { DeviceDetected = true; // Save DevicePathName so OnDeviceChange() knows which name is my device. _devicePathName = devicePathName; } else { // There was a problem in retrieving the information. DeviceDetected = false; _usbDevice.CloseDeviceHandle(); } } if (DeviceDetected) { _usbDevice.InitializeDevice(); } } }
/// <summary> /// Taken from Jan Axelson's USB Bulk Transfer implementation. /// Finds the device if it exists, retrieves the handle to it. Subscribes the main /// form to receive notifications from /// the device. This function should only be called from the main code until the deivice is initially /// </summary> /// <returns></returns> public bool FindMyDevice() { Boolean deviceFound = false; String devPathName = ""; Boolean success = false; isDeviceDetected = false; try { if (!(isDeviceDetected)) { // Convert the device interface GUID String to a GUID object: System.Guid winusb_device_guid = new System.Guid(deviceGUID); // Fill an array with the device path names of all attached devices with matching GUIDs. deviceFound = deviceManager.FindDeviceFromGuid (winusb_device_guid, ref devPathName); if (deviceFound == true) { success = device.GetDeviceHandle(devPathName); if (success) { isDeviceDetected = true; // Save DevicePathName so OnDeviceChange() knows which name is my device. devicePathName = devPathName; } else { // There was a problem in retrieving the information. isDeviceDetected = false; device.CloseDeviceHandle(); } } if (isDeviceDetected) { // The device was detected. // Register to receive notifications if the device is removed or attached. if (deviceNotificationHandle == IntPtr.Zero) { success = deviceManager.RegisterForDeviceNotifications (devicePathName, formReference.Handle, winusb_device_guid, ref deviceNotificationHandle); } if (success) { device.InitializeDevice(); } } } return(isDeviceDetected); } catch (Exception ex) { throw ex; } }
private static Boolean FindBootloader_WIN() { Boolean deviceFound; String devicePathName = ""; Boolean success; try { if (!(HID.BootloaderDetected)) { // Convert the device interface GUID String to a GUID object: System.Guid winUsbDemoGuid = new System.Guid(variables.BOOTLOADER_GUID_STRING); // Fill an array with the device path names of all attached devices with matching GUIDs. deviceFound = BootloaderManagement.FindDeviceFromGuid (winUsbDemoGuid, ref devicePathName); if (variables.debugme) { Console.WriteLine("DemoN - {0}", devicePathName); } if (deviceFound == true) { success = Bootloader.GetDeviceHandle(devicePathName); if (success) { if (variables.debugme) { Console.WriteLine("Bootloader attached -85"); } HID.BootloaderDetected = true; // Save DevicePathName so OnDeviceChange() knows which name is my device. BootloaderPathName = devicePathName; } else { // There was a problem in retrieving the information. HID.BootloaderDetected = false; Bootloader.CloseDeviceHandle(); } } if (HID.BootloaderDetected) { // The device was detected. // Register to receive notifications if the device is removed or attached. if (variables.debugme) { Console.WriteLine("Bootloader attached.-106"); } success = BootloaderManagement.RegisterForDeviceNotifications (BootloaderPathName, MainForm.frmMy.Handle, winUsbDemoGuid, ref BootloaderNotificationHandle); if (success) { if (Bootloader.InitializeDevice()) { if (variables.debugme) { Console.WriteLine("Bootloader attached.-117"); } } else { if (variables.debugme) { Console.WriteLine("failed 121"); } } } else { if (variables.debugme) { Console.WriteLine("failed 126"); } } } else { if (variables.debugme) { Console.WriteLine("Bootloader not found."); } } } else { if (variables.debugme) { Console.WriteLine("Bootloader attached.-128"); } } return(HID.BootloaderDetected); } catch (Exception ex) { if (variables.debugme) { Console.WriteLine(ex.ToString()); } return(false); } }