В этой статье мы покажем, как сделать так, чтобы USB флешка или SD карта определялась в системе Windows как обычный локальный жесткий диск . Вы, наверное, спросите, а зачем это нужно? Дело в том, что Windows по умолчанию определяет USB флешки и карты памяти как сменные накопители, которые стандартами средствами Windows нельзя разбить на несколько разделов. И даже если разбить флешку на два и более раздела с помощью сторонних утилит (в той же Linux), то в ОС семейства Windows будет доступен только первый из них (кстати говоря, в Windows 10 1703 появилась встроенная возможность разбить USB накопитель на нескольких разделов ) . Т.е. Windows поддерживает нормальную работы с мультиразделами только для HDD дисков, которые в системе определяются как локальные (т.е. несъемные).
RMB бит и USB носители
ОС семейства Windows распознают USB флешки как съемные/извлекаемые (removable) устройства из-за наличия на каждом устройстве специального битового дескриптора RMB (removable media bit ) . Если при опросе подключенного устройства через функцию StorageDeviceProperty, система определяет, что RMB=1, она делает вывод, что подключенное устройство является сменным накопителем. Таким образом, чтобы с точки зрения системы преобразовать USB-флеку в жесткий диск, достаточно модифицировать этот дескриптор. Это можно сделать напрямую (что довольно рискованно из-за отличий в аппаратных реализациях конкретных устройств, да и не всегда возможно), либо косвенно, подменив ответ USB устройства с помощью специального драйвера, позволяющего отфильтровать информацию в ответе устройства.
Подключим в любой свободный порт компьютера USB флешку, затем откроем диспетчер управления дисков ( diskmgmt.msc ) и удостоверимся, что ее тип определяется в системе как Removable (Съемное устройство) .
Также тип устройства можно посмотреть на вкладке Volumes в свойствах диска (как мы видим и тут Type: Removable ).
Или с помощью команды diskpart:
list volume
В этой статье мы рассмотрим два способа смены RMB бита на USB флешке – с помощью использования фильтр-драйвера Hitachi (изменения вносятся только на уровне драйверв конкретного компьютера) и смена бита в прошивке контроллера с помощью утилиты BootIt от Lexar (более универсальный способ, но есть ряд ограничений и применим не ко всем моделям флешек и SD карт). Хотя оба этих способа довольно старые и изначально я тестировал их в Windows 7, они продолжают быть актуальными и одинаково хорошо работают и в современной Windows 10.
Утилита Lexar BootIt
Недавно мне на глаза попалась довольно интересная утилита – Lexar BootIt . Это бесплатная портабельная программа, которая может сменить RMB съемного накопителя, сделав съемное USB-устройство фиксированным (или наоборот). Несмотря на то, что утилита Lexar BootIt разработана для устройств Lexar (Micron, Crucial), она может работать и с флешками других производителей. Утилита BootIt поддерживает все версии Windows, начиная с Windows XP и заканчивая Windows 10.
Скачать BootIt можно на сайте Lexar ( lexar_usb_tool ) или с нашего сайта ( BootIt_usb_rmb.zip ).
- Запустите BootIt.exe с правами администратора
- В списке устройств выберите свою флешку
- Нажмите на кнопку Flip Removable Bit
- Сохраните изменения, нажав ОК.
Переподключите устройство и с помощью диспетчера устройств убедитесь, что его тип сменился с Removable на Basic.
В том случае, если утилита BootIt не помогла сменить RMB бит на съемном накопителе, попробуйте воспользоваться следующим способом, основанном на фильтр драйвере Hitachi Microdrive
Фильтр-драйвер для флешек Hitachi Microdrive
Чтобы USB флэш накопитель или SD карта распознавался в системе как жесткий диск, нам понадобится специальный фильтр-драйвер, позволяющий модифицировать данные передаваемые через системный стек действующего драйвера устройства. Мы воспользуемся фильтр-драйвером для USB флешек от Hitachi ( драйвер Hitachi Microdrive ), который на уровне драйвера ОС позволяет изменить тип устройства флэшки со съемного на фиксированный (USB-ZIP -> USB-HDD). Благодаря использованию данного драйвера, можно скрыть от системы, что подключенное устройство явятся съемным. В результате чего, система будет считать, что она работает с обычным жестким диском, который можно разбить на разделы, которые одновременно будут доступны в системе.
Архивы с драйвером Hitachi Microdrive :
- версия Hitachi Microdrive для 32 битных систем — Hitachi Microdrive (3,0 Кб)
- версия Hitachi Microdrive для 64 битных систем — Hitachi Microdrive x64 (3,8 Кб)
Необходимо скачать версию драйвера для вашей системы в соответствии с ее разрядностью. Оба архива имеют одинаковую структуру и состоят из двух файлов:
- cfadisk.inf – установочный файл, с настройками драйвера
- cfadisk.sys — файл драйвера Hitachi
Следующий этап – идентификация кода устройства нашей флешки. Для этого в свойствах диска на вкладке Details в параметре Device Instance Path выберите и скопируйте ( Ctrl+C ) код экземпляра устройства.
В нашем примере это будет:
USBSTORDisk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000 123456789ABCDEF&0
Предположим, мы планируем установить драйвер на 64 битной системе . С помощью любого тестового редактора открываем на редактирование файл cfadisk.inf . Нас интересуют разделы cfadisk_device и cfadisk_device.NTamd64.
[cfadisk_device]_x000D_%Microdrive_devdesc% = cfadisk_install,IDEDiskTS64GCF400______________________________20101008_x000D_[cfadisk_device.NTamd64]_x000D_%Microdrive_devdesc% = cfadisk_install,IDEDiskTS64GCF400______________________________20101008
Меняем значение DiskTS64GCF400______________________________20101008
на код нашего устройства.
Получаем:
[cfadisk_device]_x000D_%Microdrive_devdesc% = cfadisk_install,IDEUSBSTORDisk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000_x000D_[cfadisk_device.NTamd64]_x000D_%Microdrive_devdesc% = cfadisk_install,IDEUSBSTORDisk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000
Сохраняем файл.
Если драйвер устанавливается на 32 битной системе , нужно скачать советующий архив, распаковать его и открыть на редактирование файл cfadisk.inf. Найдем раздел [cfadisk_device]:
[cfadisk_device]_x000D_%Microdrive_devdesc% = cfadisk_install,USBSTORDisk&Ven_LEXAR&Prod_JD_LIGHTNING_II&Rev_1100_x000D_ %Microdrive_devdesc% = cfadisk_install,USBSTORDisk&Ven_JetFlash&Prod_TS1GJF110&Rev_0.00_x000D_%Microdrive_devdesc% = cfadisk_install,USBSTORDISK&VEN_&PROD_USB_DISK_2.0&REV_P
Затем изменим данные в последней строке, указав код экземпляра нашей флешки, т.е. в нашем примере получим:
%Microdrive_devdesc% = cfadisk_install,USBSTORDisk&Ven_LEXAR&Prod_JD_LIGHTNING_II&Rev_1100_x000D_%Microdrive_devdesc% = cfadisk_install,USBSTORDisk&Ven_JetFlash&Prod_TS1GJF110&Rev_0.00_x000D_%Microdrive_devdesc% = cfadisk_install,USBSTORDisk&Ven_Linux&Prod_File-CD_Gadget&Rev_0000
Microdrive_devdesc = "Transcend 64GB DIY SSD"
Установка драйвера Hitachi Microdrive вместо родного драйвера USB накопителя
Осталось заменить драйвер, используемый USB флеш накопителем.
Откроем вкладку Drivers и нажмем кнопку Update Drivers .
Укажем папку к каталогу, в который распакован скачанный архив с драйвером Hitachi:
Игнорируем предупреждение об отсутствующей цифровой подписи драйвера.
Hitachi Microdrive
Inf стороннего производителя не содержит информации о подписи
Для отключения проверки цифровой подписи драйвера, выполните команды:
bcdedit.exe /set nointegritychecks ON
bcdedit.exe /set TESTSIGNING ON
Перезагрузите компьютер и попытайтесь опять установить драйвер.
Осталось перезагрузить компьютер и, открыв диспетчер дисков, удостоверится, что ваша флешка стала определяться как обычный жесткий диск ( Type: Basic ), а в качестве драйвера используется драйвер Hitachi.
Открыв проводник, можно также убедиться, что иконка флешки поменялась она стала отображаться как жесткий диск обычный диск.
Теперь с этой флешкой можно работать как с обычным HDD: создавать разделы, указывать активный раздел, создавать динамические диски, устанавливать ПО, которое не работает с флешек и т.д.
Как удалить драйвер Hitachi Microdrive
Чтобы удалить драйвер Hitachi Microdrive, откройте свойства диска и на вкладке драйвер нажмите кнопку Update Driver – система сама установит родной драйвер.
- cfadisk.sys в каталоге %windir%System32drivers
- Каталог «cfadisk.inf_amd64_…» из %windir%System32DriverStoreFileRepositoty
Перезагрузите компьютер