2011-02-17 7 views
1

하드 드라이브, CD/DVD/블루 레이 리더, 플로피 그리고 USB가 가능한지에 대한 정보를 얻으면서 CPU의 하드웨어 정보를 얻는 것이 다소 멍청한 느낌입니다. 나는 MSDN GetDriveType을보고 있었지만 검색이 안 좋거나 이해가 안되는 것 같습니다. 어떤 생각?특정 드라이브의 유형을 어떻게 결정합니까?

+0

어떤 정보를 원하십니까? 주어진 드라이브가 어떤 종류의 드라이브입니까? 볼륨/파티션 크기? 물리적 장치 정보? –

답변

2

난 당신이에 링크 된 문서에 대해 이해하지 못했다 모르겠어요 ...

기능에 의해 허용 유일한 인수는 포함에 대한 정보를 (취득 할 드라이브의 루트 디렉토리입니다 후행 백 슬래시). 이 함수는 어떤 유형의 드라이브인지 나타내는 값을 반환합니다. 가능한 반환 값과 각각의 의미를 제공하는 차트가 표시됩니다. 예를 들어

:

GetDriveType(_T("C:\\")) // returns DRIVE_FIXED if C:\ is my hard drive 
GetDriveType(_T("A:\\")) // returns DRIVE_REMOVABLE if A:\ is my floppy drive 
GetDriveType(_T("D:\\")) // returns DRIVE_CDROM if D:\ is a CD-ROM drive 
GetDriveType(_T("N:\\")) // returns DRIVE_REMOTE if N:\ is a network drive 

그것은 또한 당신이 드라이브는 USB 타입의 구동 여부를 확인하려는 경우, 당신은 SetupDiGetDeviceRegistryProperty function를 호출하고 SPDRP_REMOVAL_POLICY 속성을 지정할 필요가 있다고 말한다.

+0

.h (헤더) 파일은 GetDrivePath입니까? 필요한 경우. – Kazuma

+0

@Kazuma : 모든 정보는 MSDN의 각 문서 페이지 맨 아래에 있습니다. 이 경우 "WinBase.h (Windows.h 포함)"라고 표시됩니다. 즉,'WinBase.h'에 정의되어 있음을 의미합니다. 그러나 당신은 자신을 포함시키지 않아야합니다. 이미'Windows.h'가 포함되어 있어야하므로 다른 것을 할 필요가 없습니다. –

+0

예, 예를 들어 GetDrivePath()를 할 때 "오류 : 식별자"GetDrivePath "가 정의되지 않았습니다." 하지만 난 Windows.h – Kazuma

1

해당 정보가있는 Windows 용으로 알고있는 유일한 올인원 API는 WMI이지만 사용할 수있는 것은 그리 간단하지 않습니다. 반면에 많은 프로그램은 패스 스루 제어 코드 또는 SMART_RCV_DRIVE_DATA과 같은 I/O 제어 코드를 사용하여 장치와 직접 통신합니다.

2

당신이 장치가 USB 장치임을 판단 할 경우 (내가 어떻게 Speccy 작품 모르겠지만, 내가 추측하고있어 필요한 시스템 정보를 얻을 수 있습니다. 이러한 방법의 조합을 사용) 핸들을 열고 DeviceIoControl()을 사용하여 IOCTL 쿼리를 보내 장치가 연결된 버스 유형을 가져올 수 있습니다.

EnumUsbDrivesLetters - 게시물은 러시아어이지만 C++ 소스 코드가 포함되어있어 쉽게 이해할 수 있습니다.

건배, 안드리

+0

이것은이 질문에 대한 유효한 답변이거나 최소한 (비록 늦게 게시 한 경우에도) 다소 도움이되는 것으로 보입니다. 자신의 블로그에 대한 링크를 조심스럽게 게시하십시오. 아무 문제가 없으므로이를 언급하는 것을 잊지 마십시오. 따라서 홍보용 스팸으로 간주되지 않습니다. – slugster

관련 문제