Да. Если он просто ожидает объект, вы можете передать new Object()
и получить в результате значение int.
Можно всегда пытаться считать сектор из дискеты и видеть, успешно выполняется ли она или нет.
У меня нет подсказки, как сделать это в.NET, но здесь являюсь эквивалентным C/C++.
SetLastError(0);
HANDLE h = CreateFile("\\\\.\\A:", ...);
if (!ReadFile(h, buf, 512, &bytes_read, 0))
{
DWORD err = GetLastError();
}
Просто разговор: Вы не можете. Дисководы для гибких дисков не поддерживают это.
что относительно DriveNotFoundException?
У меня нет дисковода для гибких дисков в компьютере, я в настоящее время иду, таким образом, я не могу протестировать его. Это исключение выдается, когда диск недоступен, который является условием, которому я верю, был бы встречен, когда дисковод для гибких дисков пуст.
Возможно, можно посмотреть на API управления дисками... Это должно смочь сказать Вам способность диска (или отформатированный или не)...
И если нет никакой способности, нет никакой вставленной дискеты...
Захватите оба DiscNotReady (Ни для какого диска в диске) и запишите Исключения (Для недопустимой файловой системы / не отформатированный).
Материал 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;
}
Если вы вставляете неформатированную дискету в дисковод для гибких дисков, обычно целью является использование этого дисковода с этой дискетой. Первым шагом является логическое форматирование этой дискеты.
Итак, если вы обнаружите, что дисковод для гибких дисков не готов, вы можете попытаться отформатировать диск, и если это удастся, ваш дисковод должен подготовиться с вновь отформатированным в нем дискета. Если форматирование неподготовленного дисковода гибких дисков завершается неудачно, значит, в нем нет дискеты или дискета неисправна. Затем вы можете показать сообщение, чтобы вставить дискету в дисковод.