forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Наличие диска в приводе (http://forum.boolean.name/showthread.php?t=14000)

wolfhound512 05.01.2011 03:48

Наличие диска в приводе
 
Привет, подскажите, как определить наличие диска в приводе?

Варианты типа попытаться открыть корневую папку, или получить ее атрибуты (GetDiskFreeSpace, GetFileAttributes) не подходят, так как занимают море времени, аж до 10 секунд :mad:

Venom2 05.01.2011 04:32

Ответ: Наличие диска в приводе
 
Цитата:

Сообщение от wolfhound512 (Сообщение 174474)
Привет, подскажите, как определить наличие диска в приводе?

Варианты типа попытаться открыть корневую папку, или получить ее атрибуты (GetDiskFreeSpace, GetFileAttributes) не подходят, так как занимают море времени, аж до 10 секунд :mad:

MCI пробывал?
ЗЫ
Еще можно попробывать запросить инфу об устройстве DeviceIoControl
Правда тут понадобится буква диска, чтобы сперва получить хендл драйвера через CreateFile

wolfhound512 05.01.2011 14:02

Ответ: Наличие диска в приводе
 
Если точнее нужно проверить не только CD, но любой девайс, который прописан в системе, но носитель в нем может отсутствовать.
Поэтому первый вариант не подходит, а второй тормозит точно так же как и предыдущие.
GetVolumeInformation() - тоже тормозит.

SBJoker 05.01.2011 14:30

Ответ: Наличие диска в приводе
 
Оно всё тормазит т.к. зависит от характеристик устройства, а там же раскрутка диска + идентификация занимают 5-30сек.

wolfhound512 05.01.2011 19:18

Ответ: Наличие диска в приводе
 
Я надеялся, что есть возможность проверить наличие диска, не обращаясь к нему, но нет, так нет.


Часовой пояс GMT +4, время: 14:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot