windows的磁碟操作之六——獲取系統所在物理磁碟號
很多情況下,我們在程式中需要獲知作業系統安裝在哪個分割槽上或者哪個物理磁碟上,進而對其進行一些操作或避免一些操作。例如要避免對系統磁碟分割槽表的刪除操作。本節討論如何獲取作業系統所在的邏輯分割槽號和物理驅動器號。
還是先上程式碼。
/******************************************************************************
* 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
2. 擷取sysPath字串的第一個字元,即可獲得系統所在的分割槽碟符。
3. 根據邏輯分割槽號,呼叫第四節http://cutebunny.blog.51cto.com/301216/624379中討論的GetPhysicalDriveFromPartitionLetter函式即可獲得作業系統所在的物理磁碟號。