很多情况下,我们在程序中需要获知操作系统安装在哪个分区上或者哪个物理磁盘上,进而对其进行一些操作或避免一些操作。例如要避免对系统磁盘分区表的删除操作。本节讨论如何获取操作系统所在的逻辑分区号和物理驱动器号。
windows的磁盘操作之六——获取系统所在物理磁盘号
原创
©著作权归作者所有:来自51CTO博客作者cutebunny的原创作品,请联系作者获取转载授权,否则将追究法律责任
还是先上代码。
/******************************************************************************
* Function: get the number of disk which the system installed on
* input: N/A
* output: N/A
* return: Succeed, disk number
* Fail, -1
******************************************************************************/
DWORD GetSystemDiskPhysicalNumber(void)
{
CHAR sysPath[DISK_PATH_LEN];
CHAR diskLetter;
DWORD diskNumber;
DWORD ret = GetSystemDirectory(sysPath, sizeof(sysPath));
if (ret == 0)
{
fprintf(stderr, "GetSystemDirectory() Error: %ld\n", GetLastError());
return (DWORD)-1;
}
diskLetter = sysPath[0];
diskNumber = GetPhysicalDriveFromPartitionLetter(diskLetter);
return diskNumber;
}
代码分析:
1. 先调用GetSystemDirectory 函数获取windows路径。sysPath中存储的路径形式为C:\WINDOWS\system32。
2. 截取sysPath字符串的第一个字符,即可获得系统所在的分区盘符。
3. 根据逻辑分区号,调用第四节http://cutebunny.blog.51cto.com/301216/624379中讨论的GetPhysicalDriveFromPartitionLetter函数即可获得操作系统所在的物理磁盘号。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
windows的磁盘操作之四——根据逻辑分区号获得物理磁盘号
第一节中http://cutebunny.blog.51cto.com/301216/624027我们谈到了磁盘设备名称的两种形式:对于物理驱动器x,形式为 \\.\PhysicalDriveX,编号从0开始,例如 名称
磁盘 windows 休闲 DeviceIoControl 物理驱动器 -
virsh 磁盘操作
磁盘扩容 添加磁盘
云计算 mysql 自动挂载 文件系统 -
Linux磁盘操作,分区操作
Linux磁盘操作,分区操作,fdisk mke2fs等
linux primary 磁盘操作 分区操作