| 
: 드라이브 타입과 드라이브 명을 알아내려고 하는데..
: 잘 안되네요..
 :
 : 컴퓨터에 있는 드라이브명과 타입을 체크는 어떻게 합니까??
 :
 : 알려주세요...
 
 
 임펠리테리입니다.
 드라이브의 타입과 드라이브 명은 각각 API 함수 GetDriveType()와 GetVolumeInformation()를
 사용하여 알아낼 수 있습니다. GetVolumeInformation() 함수에서는 이런 정보 외에도,
 볼륨 시리얼 넘버, 파일 시스템 등등의 정보를 얻어낼 수 있죠.
 아래에 이 두 함수를 사용하는 방법에 대한 간단한 예제를 보여드립니다.
 
 
 AnsiString __fastcall GetDrvTypeString(char DrvChar)
 {
 AnsiString DrvTypeString;
 switch(GetDriveType((AnsiString(DrvChar)+":\\").c_str()))
 {
 case 0:    DrvTypeString = "Unknown"; break;
 case 1:    DrvTypeString = "Not exist"; break;
 case DRIVE_REMOVABLE: DrvTypeString = "Removable"; break;
 case DRIVE_FIXED: DrvTypeString = "Fixed"; break;
 case DRIVE_REMOTE: DrvTypeString = "Network"; break;
 case DRIVE_CDROM: DrvTypeString = "CD-ROM"; break;
 case DRIVE_RAMDISK:    DrvTypeString = "RAM"; break;
 }
 return DrvTypeString;
 }
 
 AnsiString __fastcall GetDrvNameString(char DrvChar)
 {
 char VolName[MAXFILE+MAXEXT+1];
 GetVolumeInformation((AnsiString(DrvChar)+":\\").c_str(), VolName, MAXFILE+MAXEXT+1,
 NULL, NULL, NULL, NULL, 0);
 return (AnsiString)VolName;
 }
 
 AnsiString __fastcall GetDrvSerialString(char DrvChar)
 {
 unsigned long VolSerial;
 GetVolumeInformation((AnsiString(DrvChar)+":\\").c_str(), NULL, 0,
 &VolSerial, NULL, NULL, NULL, 0);
 return IntToHex((int)VolSerial, 8);
 }
 
 AnsiString __fastcall GetDrvFileSystemString(char DrvChar)
 {
 char FileSystem[30];
 GetVolumeInformation((AnsiString(DrvChar)+":\\").c_str(), NULL, 0, NULL,
 NULL, NULL, FileSystem, 30);
 return (AnsiString)FileSystem;
 }
 
 
 
 void __fastcall TForm1::Button1Click(TObject *Sender)
 {
 Memo1->Lines->Clear();
 Memo1->Lines->Add(AnsiString("Drive type for d: ") + GetDrvTypeString('d'));
 Memo1->Lines->Add(AnsiString("Drive name for d: ") + GetDrvNameString('d'));
 Memo1->Lines->Add(AnsiString("Drive serial for d: ") + GetDrvSerialString('d'));
 Memo1->Lines->Add(AnsiString("Drive file system for d: ") + GetDrvFileSystemString('d'));
 }
 
 그럼 도움되시길...
 
 |