2010-06-09 3 views
2

C++과 함께 win32 api를 사용하고 있습니다.볼륨을 얻는 방법 GUID

"장치 경로"를 사용하여 볼륨 GUID를 얻는 방법을 알고 싶습니다.

내 장치는 다음과 같습니다

\\?\usb#vid_04f2&pid_0111#5&39fe81e&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 

감사합니다.

+0

무엇을 사용 하시겠습니까? –

+0

@codeka : 장치 경로로 매핑 할 드라이브 문자를 가져와야합니다. – user198725878

+0

이 질문은 원하는만큼 여러 번 질문 할 수 있지만 답변은 변경되지 않습니다. 다른 질문에 게시 한 링크는이 작업을 수행하는 방법을 보여줍니다. – Luke

답변

2

이것은 장치 인스턴스 ID가 usb\VID_04f2&PID_0111\5&39fe81e&0&2 인 장치입니다. 아마도 대용량 저장 장치 일 것입니다. 이제 대용량 저장 장치에는 실제로 드라이브 문자가없는 문제가 있습니다. 드라이브 문자가있는 디스크의 볼륨입니다. 두 개의 파티션이있는 경우 단일 USB 대용량 저장 장치에 두 개의 드라이브 문자가있을 수 있습니다. 따라서 볼륨을 직접 가져 오는 기능은 없습니다.

usb\VID_04f2&PID_0111\5&39fe81e&0&2에 뿌리를 둔 장치 트리를 열거해야 장치 유형이 "볼륨"인 하위 항목을 찾을 수 있습니다. DEV_BROADCAST_DEVICEINTERFACE는 (는) GetVolumeNameForVolumeMountPoint()에 전달할 수있는 dbcc_name 필드를 갖습니다.

+0

디바이스가 마운트되지 않은 경우 (예 : Windows의 드라이브 문자가 부족한 경우)'GetVolumeNameForVolumeMountPoint'를 사용할 수 있습니까? –

+0

@ Judge Maygarden : 여기에 실수가 있다고 생각합니다. Windows에서 "마운트"에는 드라이브 문자가 필요하지 않습니다. 여기서 사용 된 "마운트 포인트"('dbcc_name')는 확실히 드라이브 문자가 아닙니다. – MSalters

0

WMI에 대해 쿼리 해 보셨습니까? 그렇게하는 방법에 대한 세부 정보가 필요하면 알려주십시오.

+0

답장을 보내 주셔서 감사합니다. win32api 방식으로 수행 – user198725878