본문 바로가기
C & C++/C & C++

하드 디스크 볼륨값 - GetVolumeInformation()

by izen8 2012. 8. 21.
반응형

원형 :

 

GetVolumeInformation(LPCTSTR lpRootPathName, LPTSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength,LPDWORD lpFileSystemFlags,LPTSTR lpFileSystemNameBuffer,DWORD nFileSystemNameSize)


예제 )

 

#include

<iostream>

#include

<windows.h>

using

std::cout;

using

std::endl;

 

void main()
{

char

buffer[256] = {0, };

LPCSTR

DrivePathName;

int

n = 0;

char

DriveName[100];

char

FileSystem[100];

LPCTSTR

drivename;

GetLogicalDriveStrings(256, buffer);

while(buffer[n] != NULL)
{

for

( int i = 0 ; i < sizeof( *(buffer+n) ); i++)
{
DrivePathName= buffer+n;
n+=4;

 

ZeroMemory( DriveName,

sizeof

( DriveName )); // 여기서 초기화를 해줘야만 값이 안들어갈때 빈칸으로 나온다..
ZeroMemory( FileSystem,

sizeof

( FileSystem ));
ZeroMemory( &drivename,

sizeof

( drivename ));

 

GetVolumeInformation(DrivePathName,DriveName, 1024, NULL, NULL, NULL, FileSystem, 1024);

 

cout << "드라이브 경로 : " << DrivePathName<< endl;

cout << "드라이브 이름 : " << DriveName << endl;

cout << "포맷형식 : " << FileSystem << endl << endl;

}
}
}

 

 

 

위에서 ZeroMemory()를 통해서 초기화를 하지 않았을경우,

 

D드라이브의 경우 가상드라이브이기 때문에

 

D드라이브의 포맷형식에 값이 안들어가기 때문에 NTFS라고 나온다.. 그러니 D드라이브는 빈칸이지요...

 

이번예제는 저번에 올렸던 드라이브이름 찾기를 응용해서 쓴거다...

 

변수명을 좀더 보기좋게 바꿨으니.. 이렇게 활용하면 좋을듯 ^_^;

아.. 저번엔 printf문을 썼었는데..

 

역시 c++이 편하긴 하네... ~_~


cout 만세 !!!!

좀더 자세한 내용은 MSDN으로~

 

반응형

댓글