如何获得本地磁盘分区名称!

flyingfloat 2008-04-29 10:54:31
如果我的硬盘分成如下分区:

System(C:)
Document(D:)
Personal(E:)
Development(F:)

我想取得各个分区的名称该如何实现呢?

比如我想把最后取得的各个分区的名字赋给一个变量,使变量的内容分别为以下内容:
CString disk1,disk2,disk3,disk4;
disk1 = System(C:);
disk2 = Document(D:);
disk3 = Personal(E:);
disk4 = Development(F:);
...全文
513 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-04-29
  • 打赏
  • 举报
回复
TCHAR name[MAX_PATH];
GetVolumeInformation(_T("C:\\"), name, MAX_PATH, NULL, NULL, NULL, NULL, 0);
Kudeet 2008-04-29
  • 打赏
  • 举报
回复
API:

GetVolumeInformation
HeroAlur 2008-04-29
  • 打赏
  • 举报
回复
BOOL GetDiskAndPartitionNumbers (char driveLetter, DWORD *diskNumberPtr,
DWORD *partitionNumberPtr)
{
HANDLE fileHandle;
STORAGE_DEVICE_NUMBER deviceInfo;
DWORD bytesReturned;
char rawDiskName[] = "\\\\.\\C:";

// Open the raw disk

rawDiskName[4] = driveLetter;
fileHandle = CreateFile(rawDiskName, GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
if (fileHandle == INVALID_HANDLE_VALUE) return FALSE;

// Get disk and partition number information using a device control
// request

if (!DeviceIoControl(fileHandle, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL,
0, &deviceInfo, sizeof(deviceInfo), &bytesReturned,
NULL))
return FALSE;
if (bytesReturned != sizeof(deviceInfo))
return FALSE;

// Put values into the passed pointers

*diskNumberPtr = deviceInfo.DeviceNumber;
*partitionNumberPtr = deviceInfo.PartitionNumber;
printf("%d %d\n", deviceInfo.DeviceNumber, deviceInfo.PartitionNumber);

// Close the handle to the raw disk and return success

CloseHandle(fileHandle);

return TRUE;
}
ouyh12345 2008-04-29
  • 打赏
  • 举报
回复
一个获得硬盘物理信息的类

http://www.vckbase.com/document/viewdoc/?id=706
acinonyx 2008-04-29
  • 打赏
  • 举报
回复
http://book.77169.org/ask26/how183436.htm

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧