C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[1575] Re:[질문]Dirve 검색???
박지훈.임프 [cbuilder] 3655 읽음    1999-07-13 00:00
: 드라이브 타입과 드라이브 명을 알아내려고 하는데..
: 잘 안되네요..
:
: 컴퓨터에 있는 드라이브명과 타입을 체크는 어떻게 합니까??
:
: 알려주세요...


임펠리테리입니다.
드라이브의 타입과 드라이브 명은 각각 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'));
}

그럼 도움되시길...

+ -

관련 글 리스트
1574 [질문]Dirve 검색??? 안영두 3282 1999/07/13
1575     Re:[질문]Dirve 검색??? 박지훈.임프 3655 1999/07/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.