Помощь - Поиск - Пользователи - Календарь
Полная версия: команда для безопасного извлечения USB устройств
Форум на все случаи жизни > Отдых > Флеймиловка > Компьютерный флейм
MKN
Кто знает команду для безопасного извлечения USB устройств в среде Win XP ?

Надоело лишние клики делать - одним бы надо. Для Linuxa видел, для Винды никак не найду...
AndyBitOff
Хм. А Вы это делаете? Странно, я ниразу не использовал года за три.
Если, конечно, во время записи/чтения вынуть то, возможно, проблемы и будут, а так ИМХО - пофиг.
MKN
AndyBitOff

Напрасно смеёшься. У меня уже коллекция загубленных таким образом флэшек... :)

Так как всё-таки насчёт извлечения одним кликом ?
SubWoofer
MKN
Для администраторов локального компьютера система автоматически настроена на безопасное удаление флеш-диска.
Проверяем здесь: ”Мой компьютер”, USB-диск, Свойства, Оборудование, далее конкретное USB-устройство, кнопка Свойства, закладка Политика. По умолчанию включено "Оптимизировать для быстрого удаления". Так что администраторам доставать из компьютера USB-диск можно и без "Безопасного извлечения устройства", сразу после окончания работы с диском. Если конечно они сами не изменят дефолтную настройку ;) .
Однако простым пользователям локального компьютера, лучше использовать "Безопасное извлечение устройства", т. к. у них по умолчанию, и без права изменения, включено "Оптимизировать для выполнения", т. е. кэширование разрешено, и где это изменяется что-то не нашёл :( ...

А вообще, интересно было бы найти эту фичу. Лень - мать прогресса! :)
MKN
SubWoofer

Любопытно насчёт админов. Не знал. Спасибо. Но... Если скажем в процессе копирования флэшку выдернуть ?..
SubWoofer
MKN
Это будет флеш-моб.
Получишь вторую коллекцию загубленных флешей. Потом можно будет открыть музей мёртвых флешей.
MKN
SubWoofer

Ну, это я варварскую ситуацию привёл. Вот когда флэшка вставленна и ты с ней не работаешь, а затем вздумал извлечь, а система за каким то лядом к ней обратилась - такая же беда может быть, даже у админа. А всё потому, что лень кликать несколько раз. А вот один - пожалуй... :)
RealOnix
SubWoofer
Галка в настройках устройства отключает только кэширование записи.
При использовании функции Безопасного извлечения устройства также отключается питание на этом устройстве - светодиод на флэшке гаснет. То же самое с картридером - отключаются все светодиоды на нем.
То есть по идее Безопасное извлечение имхо действительно безопаснее чем просто отключение кэширования записи.

P.S. На моем переносном USB винте питание таким образом не отключается - он все равно работает.
SubWoofer
RealOnix
Там галка не просто кэширования записи, а "Кэширование записи и безопасное удаление", в функции которого входит отключение флеша без использования Безопасного удаления.
В остальном всё верно.
RealOnix
Потратив пару часов на изучение вопроса об отключении USB накопителей через командную строку выяснил следующее:
1. Библиотека выполняющая данные функции называется hotplug.dll - находится в папке System32.
2. Функция отвечающая за отключение устройства называется HotPlugEjectDevice. Ее параметры неизвестны, т.к. функции этой библиотеки недокументированы. На MSDN информации нет.
3. В интернете много людей озадачены подобным вопросом и практически нигде не удалось найти решения.
4. Где то упоминалось что можно отключить устройство при помощи скрипта device.vbs, но у меня так и не получилось это сделать, хотя долго я с ним и не разбирался. Но если есть желание - могу его выложить ;)

Вот такая инфа :)
MKN
RealOnix

Осчастлив народ - сделай такой скрипт (device.vbs).
Я тогда кнопку извлечения USB так и назову - RealOnix :)
RealOnix
MKN
Зачем его делать, если он уже есть :) Он из комплекта какого то тулкита для 2000 винды.
Как вложить файл в соощение я не нашел, поэтому залил сюда - _ttp://slil.ru/24268858
Вывод справки:
Код
cscript device.vbs /?

Главная проблема - это определить какое устройство нужно отключать. Если получится - пиши :)
MKN
RealOnix

Это же "универсальный" скрипт для любых девайсов и разнообразных операций с ними... Конкретно под USB его ещё "довести" надо как то... Такая горожа не стоит возни. (кнопка, если и будет у меня - назовётся по другому ! :) )
RealOnix
MKN
Для USB устройств хранения информации используется имя USBSTOR\GenDisk. Его и нужно отключать.
Есть еще утилита - devcon.exe - она позволяет работать с устройствами так же как и Диспетчер устройств, но только из командной строки. Найти ее можно на сайте M$.
Есть еще родная виндозная утилитка - rsm.exe предназначенная для работы со сменными устройствами. Но думаю, что она тут не поможет.
Либо попробуй расковырять библиотеку hotplug.dll - она в этом деле как раз самое то. Проблема только в том, что ее функции нигде не документированы (как я уже и писал выше). Так что из этой затеи тоже мало что получится.
В общем, я считаю, что у тебя еще очень долго не появится заветная кнопка :)

P.S. Мне хватило вчерашнего вечера, чтобы забить на эту затею. Может быть у тебя терпения будет больше ;)
SubWoofer
RealOnix
Цитата
Мне хватило вчерашнего вечера, чтобы забить на эту затею...

Аналогично :D
Lesovik
Как-то должно работать это
Цитата
rundll32.exe hotplug.dll,HotPlugSafeRemovalNotification \\.\pipe\PNP_HotPlug_Pipe_0.{453A981F-62F9-4099-9C21-5D2DEBE4E353}
Где 16-ричный код - код устройства.

Где взять этот 16-ричный код я пока не догнал - моя флешка определяется как "USB\Vid_4146&Pid_ba01\00AD0000000366"

Еще можно так, хотя равносильно клику по иконке в трее:
rundll32.exe shell32.dll,Control_RunDLL hotplug.dll
Вызывает диалоговое окно отключения usb устройств, остается только нажать кнопку "Stop".

Три маленькие утилитки для этого самого:
_http://ifolder.ru/2083518
DevEject
RemoveDrive
EjectMedia

И еще одна
_http://www.nirsoft.net/utils/usb_devices_view.html

Можно попробовать это
_http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/fsutil.mspx?mfr=true
или это
_http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mountvol.mspx?mfr=true
RealOnix
Lesovik
Vid и Pid - это коды вендора и продукта устройства. В данном случае они не нужны.
Утилита fsutil (по первой ссылке на M$) работает только с NTFS томами и, боюсь, с флешками мало поможет.
Утилита mountvol (по второй ссылке на M$) позволяет монтировать какой либо том (volume) как NTFS папку - то есть для данной проблемы совершенно непригодна.
А вот утилитка USBDeview все же делает то о чем так мечтал MKN :) - достаточно только выполнить такую команду:
Код
usbdeview /stop_by_drive [disk]
где [disk] - имя диска с флэшкой, например - F:

Остальные утилиты я уже не проверял ;)

MKN
Возрадуйся же наконец :) Теперь ты можешь назвать завтетную кнопку именем Lesovik :)
Lesovik
DevEject тоже работает.
достаточно скомандовать
deveject.exe -EjectDrive:[диск]:
где [disk] - имя диска с флэшкой, например - F :)
Остальное я тоже не проверял )
Цитата
Возрадуйся же наконец Теперь ты можешь назвать завтетную кнопку именем Lesovik

И чтоб каждый раз по мне щелкали?! Увольте! :D
MKN
Спасибо, ребята, хотя "мечтал"я не совсем о том... Не сторонними утилитами, а средствами команды Винды флэшки останавливать на скаку.
Впрочем это же результат - какая вроде бы разница, как гланды удалять... :)
SergKir
в моем компьютере на иконке флешки жмем правую кнопку мышки и в меню выбираем - ИЗВЛЕЧЬ
MKN
SergKir

Цитата
в моем компьютере на иконке флешки жмем правую кнопку мышки и в меню выбираем - ИЗВЛЕЧЬ


Именно с этим безобразием и боролись. Как - см. выше.
Webber
Цитата(MKN @ 11.08.2007 - 10:13) *

SergKir

Цитата
в моем компьютере на иконке флешки жмем правую кнопку мышки и в меню выбираем - ИЗВЛЕЧЬ


Именно с этим безобразием и боролись. Как - см. выше.


У меня немного другая задача - безопасно(!) и максимально быстро извлечь флэшку, даже если она находится в работе.
Стандартными и нестандартными утилитами (указанными выше) это не получается!

Причём вариантов подобного извлечения два:
1) устройство просто открыто (например, в проводнике, far-е или любой другой программе), но считывание и запиcь на него не производится.
2) на устройство в данный момент производится запись (или происходит чтение).

Ни первый, ни тем более второй вариант НЕ позволяют программно извлечь флэшку.
Хотя, казалось бы, почему бы не сделать подобное безопасное извлечение хотя бы для первого варианта...

А это очень нужно! Цель: сохранность инфы при максимально быстром извлечении устройства (для чего это нужно, наверное, догадываетесь).
vittro
Функции hotplug.dll можно посмотреть в экспортах только от них толку:
CPlApplet
CreateLocalServerW
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
HotPlugDeviceTree
HotPlugDriverBlockedW
HotPlugEjectDevice
HotPlugEjectVetoedW
HotPlugHibernateVetoedW
HotPlugRemovalVetoedW
HotPlugSafeRemovalNotificationW
HotPlugStandbyVetoedW
HotPlugWarmEjectVetoedW
..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.

Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.

Warning: require_once(/var/www/bestfil1/public_html/setlinks_0d98c/slsimple.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/bestfil1/public_html/forums/lofiversion/index.php on line 355