Цитата:
А у меня извлекаются... »
"Извлекаются" ? На вашем скрине видна только флешка. Вы попробовали извлекать РАЗНЫЕ возможные варианты внешних дисков?
|
А теперь внимательно читайте, что сами написали:
Цитата:
Она вызывает окно "Safely Remove Hardware", но его функционал не подходит - накопители через это окно не извлекаются.
|
Флешка - это накопитель. У меня она извлекается. Вывод: накопители извлекаются. Потому в первую очередь я заподозрил проблему с вашей Windows, для этого 'похвастался'.
Цитата LonerD:
Цитата diagnoz_:
Почему не извлекаются?
Интересно бы знать. »
|
Потому что для ОС это non-removable устройство. А в трее появляется, потому что подключено по USB (hot-plug bus).
Можете проверить тип диска с помощью команды
fsutil fsinfo drivetype X:
И Windows это прямо говорит, а вы не верите
У себя воспроизвёл аналогичную ситуацию, подключив SATA HDD через SATA-to-USB адаптер.
Как Windows определяет тип диска (блок 'Q. What must I do to trigger AutoRun on my USB storage device?') Для изменения типа нужно перепрограммировать flash-контроллер или перехватывать ответ драйвера usbstor.sys с помощью фильтра драйвера и ставить нужный RMB-бит (например, используя F2Dx1.sys или cfadisk.sys). Но я отвлёкся)
Цитата LonerD:
Побочный вопрос - чем различаются меню в трее и меню, вызываемое вышеназванной командой? »
|
'Меню в трее' способно работать со всеми подключаемыми накопителями, 'меню hotplug.dll' - нет. Может by design так сделали?..
Цитата:
И главный вопрос темы - какой командой вызвать этот системный диалог?
|
После выбора в меню через API вызывается функция HotPlugEjectDevice в библиотеке
hotplug.dll. В параметрах передаётся, какое устройство извлечь. Наверное, удастся это сделать таким макаром:
rundll32 hotplug.dll,HotPlugEjectDevice <>
Параметры мне подобрать не удалось, в Интернете информацию не нашёл.
Описание функции из Windows 2000 DDK
тут.