문제

WinXP SP3 컴퓨터에 연결된 여러 USB 드라이브가 있으며 프로그래밍 방식으로 구별해야합니다. 어떤 드라이브 문자가 어떤 장치에 해당하는지 찾아야합니다. (이 경우 하나의 장치 ~ 하나의 볼륨). 나는 그들의 볼륨 ID를 얻을 수 있고 mountvol, 다음과 같이 보입니다 :

C:\WINDOWS\> mountvol
\\?\Volume{bdb681b2-1ddf-11dd-bf71-806d6172696f}\
    C:\

\\?\Volume{6a8784f8-7406-11dd-a8c3-001e8c829b67}\
    A:\

또한 사용합니다 데코 또는 장치 관리자는 장치 ID를 볼 수 있습니다.

C:\WINDOWS\> devcon resources *STOR*
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
    Name: Generic volume
STORAGE\VOLUME\1&30A96598&0&SIGNATURED84ED84EOFFSET7E00LENGTH2543150400
    Name: Generic volume
USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER2.0&REV_1.00\0803240752536&0
    Name: Kingston DataTraveler2.0 USB Device

그러나 "안전하게 하드웨어 제거"대화 상자와 같이 장치 ID와 Volume ID/Letter를 연결하는 방법을 찾지 못했습니다. 따라서 가능하다고 가정합니다.

Generic volume - A:
(원천: piskvor.org)

보시다시피, 이들은 Devcon에서 볼 수있는 것과 동일한 장치와 Mountvol과 같은 볼륨입니다. 그러나 지금까지 나는 그들 사이의 링크를 찾지 못했습니다.

나는 일부를 찾았다 관련된 질문, 그러나 그들은 "당신이 찾은 것이 무엇이든 무엇이든 USB 장치"접근 방식을 사용하는 것 같습니다.이 경우에는 여러 가지 유사한 장치 (동일한 공급 업체, 종종 동일한 제품 유형)가 연결되어 있기 때문에 제 경우에는별로 유용하지 않습니다.


편집하다:

@msalters'대답은 유망 해 보인다 : XP, HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 가지다 REG_BINARY 가치 \DosDevices\x: (어디 x az]); 주석은 올바른 장치의 (UTF-16) 이름입니다 (예 :
\DosDevices\A: = "\??\STORAGE#RemovableMedia#7&190c24e5&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\", 이는에 해당합니다
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM 위에 장치 목록에 표시).

그것이 갈 길인지 볼 것입니다.

도움이 되었습니까?

해결책

사소한 질문입니다. 내가 알 수있는 한 공식 API는 없습니다. 따라서 문서화되지 않은 API : 레지스트리가 필요합니다. HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 드라이브 문자와 볼륨 ID 모두에 대한 항목이 포함되어 있습니다. 실제 데이터를 보면 드라이브를 식별 할 수 있습니다. 이진 데이터를 유니 코드 문자열로보십시오. 그것은 당신을 가리킬 것입니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ENUM\. 그러나 XP와 Vista는 서브 키가 참조되는 내용과 방법이 다릅니다. (Vista가 더 쉽기 때문에 먼저 시도하십시오).

다른 팁

이를 수행하는 공식 API가 있습니다. 이 샘플 참조 :http://www.codeproject.com/kb/system/removedrivebyletter.aspx

원칙은 Windows의 각 스토리지 볼륨에 전역 번호가 할당된다는 것입니다. 먼저, 당신은 당신의 드라이브를 그 숫자를 요구합니다 ( " x :"를 열고 IOCTL_STORAGE_GET_DEVICE_NUMBER 요구). 둘째, 모든 디스크 장치를 살펴보고 각 디스크 장치에 숫자를 요청하십시오 (다른 경로를 통해 열어서 문자열 공동성 만 사용할 수는 없습니다).

드라이브를 쿼리 한 것과 같은 숫자를 보유한 디스크 장치를 찾으면 승자가 있다는 것을 알 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top