2008-09-25 7 views
5

DriveInfo.IsReady를 사용하려고했지만 포맷되지 않은 플로피가 드라이브에 있으면 false를 반환합니다.드라이브에 플로피가 있는지 어떻게 알 수 있습니까?

+1

플로피 란 무엇입니까? – FlySwat

+0

첫 번째 응답은 "드라이브를보세요." 하지만 그건 쓸모가 없다는 것을 깨달았습니다. 플로피 드라이브가 더 이상 필요하지 않은 이유는 무엇입니까? –

+0

그건 의미가 있지 않니? UNFORMATTED 디스크는 분명히 준비가되어 있지 않습니다 :-) –

답변

3

플로피에서 섹터를 읽고 항상 성공하는지 확인할 수 있습니다.

.NET에서이 작업을 수행하는 데 실마리가 없지만 여기에는 C/C++와 동일한 기능이 있습니다.

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

CreateFileReadFile

1

간단히 말하면 다음과 같습니다. 플로피 드라이브는이를 지원하지 않습니다.

+0

플로피 드라이브 DO 미디어 검색 지원, 메모장에서 비어있는 드라이브 또는 포맷되지 않은 디스크가있는 드라이브에 저장해보십시오. 메모장은 두 가지 다른 응답을 제공합니다. –

+0

실패하기 전에 디스크 액세스 표시등이 켜집니다. 메모장은 디스크의 섹터를 읽으려고 시도하고 실패하면 "디스크를 넣으십시오"라는 메시지를 표시합니다. – OwenP

0

DriveNotFoundException?

현재 컴퓨터에 플로피 드라이브가 없으므로 테스트 할 수 없습니다. 이 예외는 드라이브를 사용할 수 없을 때 발생합니다. 이는 플로피 드라이브가 비어있을 때 충족 될 것으로 생각되는 조건입니다.

+0

지금까지 플로피 케이스가없고 포맷되지 않은 플로피 케이스에 대해 다르게 작동하는 .Net 메소드를 찾을 수 없습니다. –

0

아마 당신은 ... 그것은 당신에게 (서식 여부) 디스크의 용량을 말할 수 있어야 ... 디스크 관리 API에

볼 수 있습니다 그리고 더 용량이 존재하지 않는 경우, 플로피 없다 삽입 됨 ...

0

DiscNotReady (드라이브에 디스크가없는 경우)를 모두 트래핑하고 예외 (파일 시스템이 잘못되었거나 포맷되지 않은 경우)를 작성하십시오.

0

조나스 물건 일 : 당신이 당신의 플로피 드라이브에 포맷되지 않은 플로피 디스크를 삽입하면

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

달콤한 :) 해피 해킹! –

+0

매우 좋지만 .NET과 같이 보이지는 않습니다. –

0

, 목적은 보통 것을 사용하는 것 그 플로피 디스크로 플로피 드라이브. 첫 번째 단계는 논리적으로 플로피 디스크를 포맷하는 것입니다.

따라서 준비가되지 않은 플로피 드라이브를 발견하면 디스크를 포맷 할 수 있으며, 성공하면 플로피 드라이브에 새로 포맷 된 플로피 드라이브가 준비되어 있어야합니다. 플로피 드라이브가 포맷되지 않은 경우 플로피 디스크가 없거나 플로피 디스크에 결함이 있습니다. 그런 다음 드라이브에 플로피 디스크를 넣으라는 메시지를 표시 할 수 있습니다.

관련 문제