Как я могу обнаружить, если существует дискета в диске?

Да. Если он просто ожидает объект, вы можете передать new Object() и получить в результате значение int.

5
задан 25 September 2008 в 19:26
поделиться

7 ответов

Можно всегда пытаться считать сектор из дискеты и видеть, успешно выполняется ли она или нет.

У меня нет подсказки, как сделать это в.NET, но здесь являюсь эквивалентным C/C++.

SetLastError(0);
HANDLE h = CreateFile("\\\\.\\A:", ...);
if (!ReadFile(h, buf, 512, &bytes_read, 0))
{
  DWORD err = GetLastError();
}

CreateFile, ReadFile

3
ответ дан 15 December 2019 в 01:15
поделиться

Просто разговор: Вы не можете. Дисководы для гибких дисков не поддерживают это.

1
ответ дан 15 December 2019 в 01:15
поделиться

что относительно DriveNotFoundException?

У меня нет дисковода для гибких дисков в компьютере, я в настоящее время иду, таким образом, я не могу протестировать его. Это исключение выдается, когда диск недоступен, который является условием, которому я верю, был бы встречен, когда дисковод для гибких дисков пуст.

0
ответ дан 15 December 2019 в 01:15
поделиться

Возможно, можно посмотреть на API управления дисками... Это должно смочь сказать Вам способность диска (или отформатированный или не)...

И если нет никакой способности, нет никакой вставленной дискеты...

0
ответ дан 15 December 2019 в 01:15
поделиться

Захватите оба DiscNotReady (Ни для какого диска в диске) и запишите Исключения (Для недопустимой файловой системы / не отформатированный).

0
ответ дан 15 December 2019 в 01:15
поделиться

Материал Jonas работал:

bool MyDll::Class1::HasFloppy( wchar_t driveLetter ) {
wchar_t path[] = L"\\\\.\\A:";
path[ 4 ] = driveLetter;

SetLastError( 0 );
HANDLE drive = CreateFile( path, //__in      LPCTSTR lpFileName,
           GENERIC_READ,     //__in      DWORD dwDesiredAccess,
           0,                //__in      DWORD dwShareMode,
           0,                //__in_opt  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
           OPEN_EXISTING,    //__in      DWORD dwCreationDisposition,
           0,                //__in      DWORD dwFlagsAndAttributes,
           0                 //__in_opt  HANDLE hTemplateFile
);

DWORD bytes_read;
char buf[ 512 ];
DWORD err( 0 );
if( !ReadFile( drive, buf, 512, &bytes_read, 0 ) )
    err = GetLastError();

CloseHandle( drive );
return err != ERROR_NOT_READY;

}

0
ответ дан 15 December 2019 в 01:15
поделиться

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

Итак, если вы обнаружите, что дисковод для гибких дисков не готов, вы можете попытаться отформатировать диск, и если это удастся, ваш дисковод должен подготовиться с вновь отформатированным в нем дискета. Если форматирование неподготовленного дисковода гибких дисков завершается неудачно, значит, в нем нет дискеты или дискета неисправна. Затем вы можете показать сообщение, чтобы вставить дискету в дисковод.

0
ответ дан 15 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: