还是先上代码。
/******************************************************************************
* 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
函数即可获得操作系统所在的物理磁盘号。