Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/17: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Wodelectro
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 65
1

В устройстве нет диска. Вставьте диск в устройство

11.04.2012, 23:13. Просмотров 3410. Ответов 7
Метки нет (Все метки)

Добрый вечер, помогите побороться с ошибкой.
Использую код для перехвата флэшки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::WMDeviceChange(TMessage& Message)
{
if (Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000) {
int n; //присвоение переменной N типа integer
char DiskLabel[MAX_PATH];
DWORD dr = GetLogicalDrives(); // функция возвращает битовую маску
for(int x = 1; x < 26; x++){ // проходимся циклом по битам
n = ((dr>>x)&1); // узнаём значение текущего бита
if(n){ // если единица - диск с номером x есть
AnsiString dl = AnsiString((char)(65+x))+"://"; // получаем литеру диска
UINT DriveType = GetDriveType((dl).c_str());  // получаем тип диска
if(DriveType != DRIVE_CDROM){  // исключаем CDROMы
if(DriveType != DRIVE_FIXED){  // исключаем  HDD
Edit1->Text=dl;
Ошибка в частности за 3G Modemов
В модеме есть карт ридер и не стоит флэшка, вот и программа выдает ошибку при подключении модема
а как мне исключить это?
Что бы допустим если размер диска =0 кб->исключать флэшку
Люди помогите пожалуйста...
В устройстве нет диска. Вставьте диск в устройство
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 23:13
Ответы с готовыми решениями:

В устройстве нет диска. Вставьте диск в устройство G:
В дисководе у меня стоял диск, я его вынул. Потом попытался &quot;сфоткать&quot; некоторую часть рабочего...

Isass.exe - диск отсутствует. В устройстве нет диска, вставьте диск в устройство A
Когда Windows запуститься, выскакивает окошко &quot; Isass.exe - диск отсутствует.В устройстве нет...

При установке Windows 7 выдает ошибку:В устройстве нет диска. Вставьте диск в устройство \device\harddisk2\DR2
При установки Windows 7 x32(86) выдает ошибку на этапе где пишет: идет подготовка компьютера к...

В устройстве нет диска. Вставте диск в устройство \Device\Harddisk3\DR3
В устройстве нет диска. Вставте диск в устройство \Device\Harddisk3\DR3 Помогите исправить ошибку...

В устройстве нет диска. Вставте диск в устройство \Device\Harddisk3\DR1
Ктонить может подсказать в чем может быть проблема? такая вот ситуация ставил 7 на 5 компах везде...

7
Ddv122
Почемучка)
1241 / 301 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
14.04.2012, 00:03 2
Да интересно, как пропустить пустые диски
0
Avazart
Эксперт С++
7922 / 5742 / 570
Регистрация: 10.12.2010
Сообщений: 26,306
Записей в блоге: 17
14.04.2012, 18:45 3
Размер диска по идеи можно получить ф-цией GetDiskFreeSpaceEx() (Winbase.h)
1
Ddv122
Почемучка)
1241 / 301 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
15.04.2012, 01:44 4
Суть не в том у меня программа автоматически копирует данные на флэшку...При вставке картридера без флэшки программа автоматически пытает скопировать туда файл, вот и получаем ошибку...нужно как то перед копирование проверить размер...или исключить картридеры без флэшек..

Добавлено через 20 минут
Все всем спасибо проблема решена скрытием ошибок)
0
15.04.2012, 01:44
Avazart
Эксперт С++
7922 / 5742 / 570
Регистрация: 10.12.2010
Сообщений: 26,306
Записей в блоге: 17
15.04.2012, 01:49 5
Ну вот этой ф-цией и проверь.

Добавлено через 4 минуты
А как ты отлавливаеш момент подключения флешки если не секрет?
0
Ddv122
Почемучка)
1241 / 301 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
15.04.2012, 01:53 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::WMDeviceChange(TMessage& Message)
{
if (Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000) {
int n; 
char DiskLabel[MAX_PATH];
DWORD dr = GetLogicalDrives(); 
for(int x = 1; x < 26; x++){ 
n = ((dr>>x)&1); 
if(n){ 
AnsiString dl = AnsiString((char)(65+x))+"://"; 
WORD OldErrorMode;
      OldErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS); 
      bool ready = DirectoryExists(dl); 
      {
          if (ready)
      {
UINT DriveType = GetDriveType((dl).c_str());  
if(DriveType != DRIVE_CDROM){  
if(DriveType != DRIVE_FIXED){  
if(DriveType != DRIVE_UNKNOWN){
if(DriveType != DRIVE_NO_ROOT_DIR){
Edit1->Text=dl;
GetVolumeInformation(dl.c_str(), DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0);
ComboBox1->Items->Add(String(dl + "//") + " [" + DiskLabel + "]");
+

C++
1
2
3
4
5
6
private:    // User declarations
void virtual __fastcall WMDeviceChange(TMessage &Message);
public:     // User declarations
BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(WM_DEVICECHANGE,TMessage,WMDeviceChange);
END_MESSAGE_MAP(TForm);
Ну как то так....
1
Dondok
18 / 34 / 2
Регистрация: 28.01.2012
Сообщений: 181
22.04.2012, 20:20 7
Wodelectro, 3G модем (как я понял) определяется на компе как флешка только при первом подключении. Дальше со встроенной памяти устанавливаются драйвера и дальше модем будет определятся в системе как модем (а не как флешка, потому что там уже работают специальный драйвер, а не USBSTOR.SYS)

Добавлено через 3 минуты
Wodelectro, попробуй удалить все установленные драйвера и файлы, и снова установить. Может дело в том что ты удалил некоторые файлы или что-то у тебя на компе блокирует работу драйвера модема
1
Ddv122
Почемучка)
1241 / 301 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
22.04.2012, 20:25 8
Dondok, от Wodelectro писал я...
Всё решилось
C++
1
2
3
4
5
6
WORD OldErrorMode;
      OldErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS); 
      bool ready = DirectoryExists(dl); 
      {
          if (ready)
      {
Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void __fastcall TForm1::WMDeviceChange( TMessage &Message ) {
    if ( Message.Msg == WM_DEVICECHANGE && Message.WParam == 0x8000 ) {
        char DiskLabel[MAX_PATH];
        WORD OldErrorMode;
        AnsiString dl;
        DWORD dr = GetLogicalDrives( );  // функция возвращает битовую маску
        for ( int x = 0; x < 26; x++ ) { // проходимся циклом по битам
            if ( ( dr >> x ) & 1 ) {     // узнаём значение текущего бита, если единица - диск с номером x есть
                dl = AnsiString( ( char )( 65 + x ) ) + "://"; // получаем литеру диска
                OldErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS ); // убираем показ ошибок
                bool ready = DirectoryExists(dl); // пытаемcя открыть корневую директорию
                if (ready)
                {   // пытаемcя открыть корневую директорию
                    UINT DriveType = GetDriveType( dl.c_str( ) ); // получаем тип диска
                    if ( DriveType != DRIVE_CDROM && // исключаем CDROMы
                            DriveType != DRIVE_FIXED && // исключаем  HDD
                             DriveType != DRIVE_RAMDISK &&
                             DriveType != DRIVE_REMOTE &&
                             DriveType != DRIVE_NO_ROOT_DIR &&
                             DriveType != DRIVE_UNKNOWN)
                            {
                        PlaySoundW( L"alert.wav", 0, SND_ASYNC );   //проигрываем звук
                        GetVolumeInformation( dl.c_str( ), DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0 );
                        ComboBox1->Items->Add(( dl + "//" ));
 
                        // для отчета
                        dt = Now( ); // формат даты
                        memo->Lines->Add( DateToStr( dt ) + " " + TimeToStr( dt ) +
                                          " " + " - " + " Подключен накопитель: " "(" + ( dl ) +
                                          ")" + " " + DiskLabel + "" );
Вот полностью рабочий код
0
22.04.2012, 20:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2012, 20:25

Сервис .exe диск отсутствует. Вставьте диск в устройство Device Hard Disc1 DR 3
Позвонил знакомый, попросил помочь. Говорит, когда включает, открывает ярлыки вылазит такая фига:...

Вставьте диск в устройство
видных поломок нет на флехе

Вставьте диск в устройство "Съемный диск (G:)"
Доброго времени суток. Проблема заключается в следующем. Подключаю фотоаппарат OLYMPUS D-700 к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru