Узнайте, какой процесс имеет монопольную блокировку на дескрипторе USB-устройства

Я написал небольшой цикл, чтобы сделать это, поскольку у меня не было строк в DataFrame, но в списке. Таким образом, вы также можете добавить инструкцию little для оператора float:

output= ''
input = 'whatever.007'  

for letter in input :
        try :
            int(letter)
            output += letter

        except ValueError :
                pass

        if letter == '.' :
            output += letter

output = float (output)

или вы можете использовать int (output), если хотите.

7
задан Eric Z Beard 22 August 2008 в 19:14
поделиться

4 ответа

Вы попробовали инструмент, названный дескриптором от sysinternals?

Так или иначе никакой окна делают это (отобразите название приложения, которое заблокировало устройство): когда Вы пытаетесь извлечь USB-устройство, в Windows просто говорится, что устройство используется в настоящее время и не может быть, удаляют прямо сейчас.

4
ответ дан 7 December 2019 в 10:11
поделиться

Это - то, что я использую для чтения из картридера Magtek:

//Open file on the device
deviceHandle = 
    CreateFile (deviceDetail->DevicePath, 
    GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 
    NULL, OPEN_EXISTING, 0, NULL);

Попробуйте те опции и посмотрите, можно ли, по крайней мере, читать из устройства.

Я понимаю Вашу боль здесь... Я нашел, что документация HID USB была в основном неправильной в нескольких местах.

[Редактирование] Там не находится очень там на этой проблеме. Вот ссылка codeproject, которая слегка затрагивает предмет в потоке внизу. Походит, возможно, если это - окна клавиатуры или мыши, захватывает его исключительно.

1
ответ дан 7 December 2019 в 10:11
поделиться

Прохладный - я попробую те опции, поскольку они - вероятно, лучшие значения по умолчанию, учитывая мои намерения. К сожалению, я знаю, что мое устройство там, и мне в конечном счете будет нужен доступ для чтения-записи позже (после того как я осматриваю дескрипторы и имею verifed, который это, заражают мое устройство).

Что означает, что моя реальная цель состоит в том, чтобы знать то, что использует ее, таким образом, я могу сообщить клиенту/пользователю: "Эй человек, 'iexplore.exe' в настоящее время использует Ваше устройство SuperWidget. Необходимо будет закрыть это для использования приложения SuperWidget". (если не на прикладном уровне, то, по крайней мере, на уровне телефонной поддержки.)

Я забыл упоминать, что ошибка окон, о которой сообщает GetLastError ():

0x20. Процесс не может получить доступ к файлу, потому что он используется другим процессом.

(Таким образом, Ваше совместное использование альтернатив, вероятно, получит открытый файл, не принимая FILE_SHARE_NONE от имени другого процесса).

[править]

Да, это болезненно хорошо. Я видел мышей, и клавиатуры заблокированы любым использованием Windows для чтения от них. Я также видел, что много людей испытывает затруднения в VM как Paralells на OS X, где драйвер класса HID имеет устройство, открытое исключительно препятствование тому, чтобы VM использовал стандартные запросы USB.

Я видел некоторый код, который воссоздает то, что делает ProcessMonitor. Возможно, SysInternals просто выбирает игнорировать дескрипторы устройства, но тот же метод (или небольшое изменение) может использоваться здесь для определения PID.

Mike

0
ответ дан 7 December 2019 в 10:11
поделиться

Есть хитрость, которую вы можете сделать, когда открываете дескриптор устройства, не запрашивая ни чтения, ни записи разрешение и взаимодействовать с ним, используя только отчеты о функциях. Ян Аксельсон упоминает этот трюк в своих книгах о USB HID-устройствах. Я считаю, что это позволяет обойти проблему с эксклюзивной блокировкой, с которой вы можете столкнуться (например) при попытке открыть дескриптор устройства, которое Windows считает системной клавиатурой или мышью. Даже если вы не можете прочитать или написать дескриптор, вы все равно можете отправить отчет о функции на устройство, используя HidD_SetFeature , и прочитать отчет с устройства, используя HidD_GetFeature . Я не знаю, каким образом можно читать входные отчеты или отправлять выходные отчеты при таких обстоятельствах, и, возможно, это невозможно сделать, но вам может не понадобиться ни один из них, особенно если это «ваше» устройство в смысле что вы контролируете прошивку. Строго говоря, это ничего не дает, чтобы ответить на ваш вопрос в том виде, в котором оно было задано, но оно показалось мне потенциально уместным, поэтому я решил, что брошу его туда.

1
ответ дан 7 December 2019 в 10:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: