Windows에서 플로피 디스크와 플래시 디스크를 구별하는 API가 있다면 궁금합니다. A : \에 플래시 디스크를 연결할 수 있습니까? 많은 감사!C++에서 드라이버가 플로피 또는 이동식 플래시 디스크인지 판단하는 방법은 무엇입니까?
답변
드라이브에 할당 된 문자를 시스템 제어 어딘가에서 변경할 수 있으므로 플래시 디스크는 A :가 될 수 있습니다.
예를 들어 OS API를 사용하여 쿼리합니다. 플로피 디스크와 플래쉬 디스크를 구별하기에 충분해야하는 디스크의 크기.
플래시 디스크를 A :에 연결할 수 있지만 플로피 드라이브가없는 경우에만 가능합니다.
프로그램에서이 작업을 수행하는 방법에 대한 내용은 Defining an MS-DOS Device Name을 참조하십시오.
드라이브 문자에 QueryDosDevice을 사용하여 드라이브 문자가 플로피 장치에 매핑되는지 여부를 확인할 수 있습니다. 플로피 드라이브는 "\ Device \ Floppy0"또는 "\ Device \ Floppy1"을 반환합니다.
먼저 드라이브 유형 (GetDriveTypeA)을 가져와야합니다. 결과가 DRIVE_REMOVABLE과 같으면 문자 드라이브는 이동식 플래시 드라이브의 플로피 (또는 다른 유형의 이동식 디스크)를 가리 킵니다. 결과가 DRIVE_REMOVABLE이 아니면 이동식 플래시 드라이브 일 가능성은 없습니다. 그러나 윈도우의 관점에서 볼 때 외장형 USB 하드 드라이브와 이동식 플래시 디스크에는 약간의 차이점이 있습니다 (유일한 차이점은 이동식 플래시 디스크에는 파티션 테이블이 없으므로 하나만 포함된다는 것입니다). 파티션 - 비록 내가 잘 모르겠지만).
어쨌든 DRIVE_REMOVABLE 유형의 경우 장치의 고급 속성을 쿼리해야합니다. 이를 위해, 먼저는 다음과 같이 somethink와 물리적 장치를 열 필요가 :
STORAGE_PROPERTY_QUERY Query;
Query.PropertyId = StorageDeviceProperty;
Query.QueryType = PropertyStandardQuery;
bResult = DeviceIoControl(
hDevice, // device handle
IOCTL_STORAGE_QUERY_PROPERTY, // info of device property
&Query, sizeof(STORAGE_PROPERTY_QUERY), // input data buffer
pDevDesc, pDevDesc->Size, // output data buffer
&dwOutBytes, // out's length
(LPOVERLAPPED)NULL
);
경우 : 오픈 성공
hDevice = CreateFileA("\\\\?\\X:", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_DELETE, NULL, OPEN_EXISTING, 0, NULL)
경우이 장치에 DeviceIoControl을 명령을 실행해야 pDevDesc-> BusType == BusTypeUsb이면 X : 이동식 플래시 드라이브를 가리 킵니다. 코드는 작동하지만 pDevDesc 매개 변수를 설정하려면 DeviceIoControl에 대한 설명서를 읽어야합니다. 문제가있는 경우 전체 코드를 제공 할 수 있습니다.
아마도 USB 플로피 드라이브'pDevDesc-> BusType == BusTypeUsb'도 있습니다. – MSalters
예, 질문은 usb 플로피 드라이브를 언급하지 않았습니다 : D – botismarius
- 1. C에서 이동식 디스크를 표시하는 Opendialog #
- 2. 체크 플로피 드라이브
- 3. 플로피 용 Win32_LogicalDisk가 실패했습니다
- 4. USB와 플로피 장치를 구별하는 방법은 무엇입니까?
- 5. 창을 판단하는 방법은?
- 6. 지향 비순환 그래프의 강도를 판단하는 방법은 무엇입니까?
- 7. URL이 이미 encodeURI로 인코딩되었는지 판단하는 방법은 무엇입니까?
- 8. 거래가 성공했는지 실패했는지 판단하는 방법은 무엇입니까?
- 9. 이동식 드라이브 (예 : USB 플래시 드라이브) 감지 C/C++
- 10. Windows에서 USB 플로피 드라이브와 USB 플래시 드라이브를 프로그램 방식으로 구별
- 11. 사용자 이동식 MKPlacemark를 유지하는 방법은 무엇입니까?
- 12. GWT의 이동식 패널은 무엇입니까?
- 13. 파일이 이동식 드라이브 또는 로컬 드라이브에 있는지 확인하는 방법
- 14. Linux에서 플로피 디스크 섹터 크기를 찾는 방법은 무엇입니까?
- 15. cygwin에서 플로피 이미지 마운트
- 16. Windows에서 이동식 드라이브를 수신하는 데 사용할 언어/방법은 무엇입니까?
- 17. 빠른 플래시 또는 Silverlight는 무엇입니까?
- 18. 순수 C로 플래시 파일을 재생하는 방법은 무엇입니까?
- 19. 문자열을 판단하는 알고리즘이 있습니까?
- 20. C에서 플래시 애니메이션을 어떻게 재생합니까?
- 21. 방정식이 프로그래밍 방식으로 만족하는지 여부를 판단하는 방법은 무엇입니까?
- 22. VB에서 IE에서 탭 브라우징을 사용할 수 있는지 판단하는 방법은 무엇입니까?
- 23. c에서 비밀번호를 마스크하는 방법은 무엇입니까? C에서
- 24. C#에서 USB 드라이브의 이동식 비트를 뒤집기
- 25. 이동식 드라이브가 삽입되었는지 인식
- 26. 파일을 해독하기 위해 Rijndael을 사용하여 키 또는 벡터가 올바르지 않다고 판단하는 방법은 무엇입니까?
- 27. web.config가 변경되어 다시로드해야하는지 판단하는 기준은 무엇입니까?
- 28. C#에서 이동식 디스크의 목록을 가져 오는 방법은 무엇입니까?
- 29. .NET Framework의 모든 로컬 드라이브에서 외장 하드 드라이브를 인식하는 방법은 무엇입니까?
- 30. C에서 주어진 문자열에서 \ n 또는 \ t를 제거하는 방법은 무엇입니까?
여기를 참조하십시오 : http://stackoverflow.com/questions/1797128/programmatically-differentiating-between-usb-floppy-drive-and-usb-flash-drive-in – stephan