Хэндлы при операциях с устройством, естественно, текут.
Свежескаченный SmallCDWriter тоже утерял хэндл при нажатии на "Инфо"...
(Баг отчетливо воспроизводится если в устройстве нет диска.)
Собственно, код выглядит так:
HANDLE m_driveHandle = CreateFileW("\\\\.\\E", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
CloseHandle(m_driveHandle);Syhi-подсветка кода
CloseHandle(m_driveHandle);Syhi-подсветка кода
От привода, материнской платы или какого-то специфического софта закономерности не выявлено; все программисты, зафиксировавшие проблему были трезвыми и попившими кофе с утра :)
Кроме этого, открытие с теми же параметрами любого HDD-привода к таким последствиям не ведет.
В то же время, если попытаться "поиграть" с правами, то можно получить открытие привода с одним, как и положено, хэндлом, но права нужны для работы через SPTI при помощи вызовов DeviceIoControl.
Upd. Проблема решилась деинсталляцией KAV 6.0 и чисткой ключей с UpperFilters и LowerFilters для cd-драйвера:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318}
Эксперимент на чистой машиной подтвердил правильность выводов. А в Kaspersky Internet Security последней версии данный баг уже не проявляется. Спасибо за помощь автору блога Not a kernel guy Алексею Пахунову.
-------------------
PS. Небольшой пиар - bishop3000 завел наконец-то свой блог на отдельном движке, обещает писать там на профессиональные темы и уже перекинул туда несколько своих популярных постов. В общем, рекомендую, http://bishop-it.ru.
2 комментария:
А пробовали посмотреть хендлы с помощью Process Explorer? Что покажет? Может там дополнительный хэндл на что-то другое открывается?
Ага, пробовали, и тулзами от Руссиновича и еще какой-то сторонний менеджер был.
Это явно не глюк TaskManager'а, в ProcessExplorer все повторяется.
Отправить комментарий