В Windows 7 у меня есть дескриптор пользовательского USB HID устройства.Я пытаюсь определить, не может ли ручка больше не иметь доступа к устройству, потому что устройство было отключено и повторно подключено.Когда это происходит, попытки ввода-вывода с использованием WriteFile завершаются неудачей.Однако я ищу способ проверить дескриптор перед выполнением любого ввода-вывода, чтобы определить, является ли дескриптор устройства HID все еще действительным.И когда я говорю «действительный», я имею в виду, что дескриптор подключен к устройству таким образом, что я смогу выполнить ввод-вывод на устройство.Я понимаю, что технически сама ручка может быть действительной, даже если она потеряла связь с физическим устройством.Текущий метод в моем коде состоит в том, чтобы проверить с помощью попытки открыть новый дескриптор для устройства, и если это успешно, то дескриптор действителен, и если он терпит неудачу, дескриптор недопустим.Это обнаруживает отключение, как и ожидалось, если устройство отключено во время теста.Проблема заключается в том, что если устройство было снова подключено, то тестовое открытие завершается успешно, но фактическая ручка, используемая для ввода / вывода (открытая до отключения / повторного подключения), больше не подключается к устройству.Я ищу добросовестный вызов, который я могу сделать с фактическим дескриптором ввода-вывода, который сообщит мне, если устройство подключено, но без выполнения какого-либо фактического ввода-вывода.
Я пробовал несколько вызовов, такдалеко, но ни один не возвращает указание на подключение устройства, как мне требуется.
DWORD handleInformation;
LARGE_INTEGER size = { 0, 0 };
BOOL isConnected;
isConnected = GetFileSizeEx(m_HidWriteHandle, &size);
isConnected = GetHandleInformation(m_HidWriteHandle, &handleInformation);
GetFileSizeEx всегда завершается ошибкой, и GetLastError () сообщает (1) Неверная функция
GetHandleInformation всегда успешно выполняется, даже если устройство былоотключен / повторно подключен и дескриптор не может получить доступ к устройству.