[DISKPART] Fix volume info retrieval

- Pass boot volume info to the (boot) disk.
- Replace some hard coded strings.
This commit is contained in:
Eric Kohl
2026-01-11 17:36:55 +01:00
parent eae4bdb95e
commit ced7700392
14 changed files with 155 additions and 96 deletions

View File

@@ -105,6 +105,11 @@ DetailDisk(
ConResPrintf(StdOut, IDS_DETAIL_INFO_TARGET, CurrentDisk->TargetId);
ConResPrintf(StdOut, IDS_DETAIL_INFO_LUN_ID, CurrentDisk->Lun);
LoadStringW(GetModuleHandle(NULL),
CurrentDisk->IsBoot ? IDS_STATUS_YES : IDS_STATUS_YES,
szBuffer, ARRAYSIZE(szBuffer));
ConResPrintf(StdOut, IDS_DETAIL_INFO_BOOT_DSK, szBuffer);
Entry = VolumeListHead.Flink;
while (Entry != &VolumeListHead)
{
@@ -174,8 +179,14 @@ DetailPartition(
{
PrintGUID(szBuffer, &PartEntry->Gpt.PartitionType);
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_TYPE, szBuffer);
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_HIDDEN, (PartEntry->Gpt.Attributes & GPT_BASIC_DATA_ATTRIBUTE_HIDDEN) ? L"Yes" : L"No");
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_REQUIRED, (PartEntry->Gpt.Attributes & GPT_ATTRIBUTE_PLATFORM_REQUIRED) ? L"Yes" : L"No");
LoadStringW(GetModuleHandle(NULL),
(PartEntry->Gpt.Attributes & GPT_BASIC_DATA_ATTRIBUTE_HIDDEN) ? IDS_STATUS_YES : IDS_STATUS_YES,
szBuffer, ARRAYSIZE(szBuffer));
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_HIDDEN, szBuffer);
LoadStringW(GetModuleHandle(NULL),
(PartEntry->Gpt.Attributes & GPT_ATTRIBUTE_PLATFORM_REQUIRED) ? IDS_STATUS_YES : IDS_STATUS_YES,
szBuffer, ARRAYSIZE(szBuffer));
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_REQUIRED, szBuffer);
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_ATTRIBUTE, PartEntry->Gpt.Attributes);
}
else if (CurrentDisk->PartitionStyle == PARTITION_STYLE_MBR)
@@ -183,7 +194,10 @@ DetailPartition(
swprintf(szBuffer, L"%02x", PartEntry->Mbr.PartitionType);
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_TYPE, szBuffer);
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_HIDDEN, "");
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_ACTIVE, PartEntry->Mbr.BootIndicator ? L"Yes" : L"No");
LoadStringW(GetModuleHandle(NULL),
PartEntry->Mbr.BootIndicator ? IDS_STATUS_YES : IDS_STATUS_YES,
szBuffer, ARRAYSIZE(szBuffer));
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_ACTIVE, szBuffer);
}
ConResPrintf(StdOut, IDS_DETAIL_PARTITION_OFFSET, PartOffset);

View File

@@ -109,6 +109,7 @@ typedef enum _FORMATSTATE
typedef enum _VOLUME_TYPE
{
VOLUME_TYPE_CDROM,
// VOLUME_TYPE_DVD,
VOLUME_TYPE_PARTITION,
VOLUME_TYPE_REMOVABLE,
VOLUME_TYPE_UNKNOWN
@@ -227,6 +228,8 @@ typedef struct _DISKENTRY
LIST_ENTRY PrimaryPartListHead;
LIST_ENTRY LogicalPartListHead;
BOOL IsBoot;
} DISKENTRY, *PDISKENTRY;
typedef struct _VOLENTRY

View File

@@ -83,13 +83,13 @@ BEGIN
IDS_DETAIL_INFO_TARGET "Target : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Location Path"
IDS_DETAIL_INFO_CURR_RO_STATE "Current Read-only State"
IDS_DETAIL_INFO_RO "Read-only"
IDS_DETAIL_INFO_BOOT_DSK "Boot Disk"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Pagefile Disk"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernation File Disk"
IDS_DETAIL_INFO_CRASH_DSK "Crashdump Disk"
IDS_DETAIL_INFO_CLST_DSK "Clustered Disk"
IDS_DETAIL_INFO_CURR_RO_STATE "Current Read-only State: %s\n"
IDS_DETAIL_INFO_RO "Read-only: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Boot Disk: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Pagefile Disk: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernation File Disk: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Crashdump Disk: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Clustered Disk: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partition %lu\n"
IDS_DETAIL_PARTITION_TYPE "Type : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Hidden : %s\n"

View File

@@ -83,13 +83,13 @@ BEGIN
IDS_DETAIL_INFO_TARGET "Target : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Location Path"
IDS_DETAIL_INFO_CURR_RO_STATE "Current Read-only State"
IDS_DETAIL_INFO_RO "Read-only"
IDS_DETAIL_INFO_BOOT_DSK "Boot Disk"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Pagefile Disk"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernation File Disk"
IDS_DETAIL_INFO_CRASH_DSK "Crashdump Disk"
IDS_DETAIL_INFO_CLST_DSK "Clustered Disk"
IDS_DETAIL_INFO_CURR_RO_STATE "Current Read-only State: %s\n"
IDS_DETAIL_INFO_RO "Read-only: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Boot Disk: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Pagefile Disk: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernation File Disk: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Crashdump Disk: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Clustered Disk: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partition %lu\n"
IDS_DETAIL_PARTITION_TYPE "Type : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Hidden : %s\n"

View File

@@ -89,14 +89,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Percorso : %hu\n"
IDS_DETAIL_INFO_TARGET "Target : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Percorso di locazione"
IDS_DETAIL_INFO_CURR_RO_STATE "Stato Sola lettura corrente"
IDS_DETAIL_INFO_RO "Sola lettura"
IDS_DETAIL_INFO_BOOT_DSK "Disco di avvio"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Disco di pagefile"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Disco file di ibernazione"
IDS_DETAIL_INFO_CRASH_DSK "Disco di crashdump"
IDS_DETAIL_INFO_CLST_DSK "Disco clustered"
IDS_DETAIL_INFO_LOC_PATH "Percorso di locazione: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Stato Sola lettura corrente: %s\n"
IDS_DETAIL_INFO_RO "Sola lettura: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Disco di avvio: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Disco di pagefile: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Disco file di ibernazione: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Disco di crashdump: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Disco clustered: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partizione %lu\n"
IDS_DETAIL_PARTITION_TYPE "Tipo : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Nascosto : %s\n"

View File

@@ -82,14 +82,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Ścieżka : %hu\n"
IDS_DETAIL_INFO_TARGET "Docelowy : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Identyfikator LUN : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Ścieżka lokalizacji"
IDS_DETAIL_INFO_CURR_RO_STATE "Aktualny stan Read-only"
IDS_DETAIL_INFO_RO "Tylko do odczytu"
IDS_DETAIL_INFO_BOOT_DSK "Dysk rozruchowy"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Dysk pliku stronicowania"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Dysk pliku hibernacji"
IDS_DETAIL_INFO_CRASH_DSK "Dysk zrzutu awarii systemu"
IDS_DETAIL_INFO_CLST_DSK "Dysk klastrowany"
IDS_DETAIL_INFO_LOC_PATH "Ścieżka lokalizacji: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Aktualny stan Read-only: %s\n"
IDS_DETAIL_INFO_RO "Tylko do odczytu: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Dysk rozruchowy: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Dysk pliku stronicowania: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Dysk pliku hibernacji: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Dysk zrzutu awarii systemu: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Dysk klastrowany: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partycja %lu\n"
IDS_DETAIL_PARTITION_TYPE "Typ : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Ukryta : %s\n"

View File

@@ -84,14 +84,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Caminho : %hu\n"
IDS_DETAIL_INFO_TARGET "Alvo : %hu\n"
IDS_DETAIL_INFO_LUN_ID "LUN ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Caminho de localização"
IDS_DETAIL_INFO_CURR_RO_STATE "Estado actual somente de leitura"
IDS_DETAIL_INFO_RO "Apenas leitura"
IDS_DETAIL_INFO_BOOT_DSK "Disco de inicializaçã"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Ficheiro de paginação de disco"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Ficheiro de hibernação de disco"
IDS_DETAIL_INFO_CRASH_DSK "Despejo de memória de disco"
IDS_DETAIL_INFO_CLST_DSK "Disco em cluster"
IDS_DETAIL_INFO_LOC_PATH "Caminho de localização: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Estado actual somente de leitura: %s\n"
IDS_DETAIL_INFO_RO "Apenas leitura: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Disco de inicializaçã: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Ficheiro de paginação de disco: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Ficheiro de hibernação de disco: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Despejo de memória de disco: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Disco em cluster: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partition %lu\n"
IDS_DETAIL_PARTITION_TYPE "Type : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Hidden : %s\n"

View File

@@ -90,14 +90,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Cale : %hu\n"
IDS_DETAIL_INFO_TARGET "Țintă : %hu\n"
IDS_DETAIL_INFO_LUN_ID "LUN ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Localizat în"
IDS_DETAIL_INFO_CURR_RO_STATE "Stare curentă nemodificabilă"
IDS_DETAIL_INFO_RO "Nemodificabil"
IDS_DETAIL_INFO_BOOT_DSK "Disc inițializator"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Disc cu fișier de paginare"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Disc cu fișier de hibernare"
IDS_DETAIL_INFO_CRASH_DSK "Disc cu fișier «crashdump»"
IDS_DETAIL_INFO_CLST_DSK "Disc în «cluster»"
IDS_DETAIL_INFO_LOC_PATH "Localizat în: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Stare curentă nemodificabilă: %s\n"
IDS_DETAIL_INFO_RO "Nemodificabil: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Disc inițializator: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Disc cu fișier de paginare: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Disc cu fișier de hibernare: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Disc cu fișier «crashdump»: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Disc în «cluster»: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partiție %lu\n"
IDS_DETAIL_PARTITION_TYPE "Tip : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Ascuns : %s\n"

View File

@@ -84,14 +84,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Path : %hu\n"
IDS_DETAIL_INFO_TARGET "Target : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Путь к диску"
IDS_DETAIL_INFO_CURR_RO_STATE "Текущее состояние ""Только для чтения"""
IDS_DETAIL_INFO_RO "Только для чтения"
IDS_DETAIL_INFO_BOOT_DSK "Загрузочный диск"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Pagefile диск"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernation File диск"
IDS_DETAIL_INFO_CRASH_DSK "Crashdump диск"
IDS_DETAIL_INFO_CLST_DSK "Кластерный диск"
IDS_DETAIL_INFO_LOC_PATH "Путь к диску: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Текущее состояние ""Только для чтения"": %s\n"
IDS_DETAIL_INFO_RO "Только для чтения: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Загрузочный диск: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Pagefile диск: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernation File диск: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Crashdump диск: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Кластерный диск: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partition %lu\n"
IDS_DETAIL_PARTITION_TYPE "Type : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Hidden : %s\n"

View File

@@ -86,14 +86,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Path : %hu\n"
IDS_DETAIL_INFO_TARGET "Target : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Rruga e vendndodhjes"
IDS_DETAIL_INFO_CURR_RO_STATE "Read-only Gjendja aktuale"
IDS_DETAIL_INFO_RO "Read-only"
IDS_DETAIL_INFO_BOOT_DSK "Boot Disk"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Faqja dokumenteve Disk"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernimi i dokumeteve Disk"
IDS_DETAIL_INFO_CRASH_DSK "Hedhja e te dhenave Disk"
IDS_DETAIL_INFO_CLST_DSK "Grupimet ne Disk"
IDS_DETAIL_INFO_LOC_PATH "Rruga e vendndodhjes: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Read-only Gjendja aktuale: %s\n"
IDS_DETAIL_INFO_RO "Read-only: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Boot Disk: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Faqja dokumenteve Disk: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hibernimi i dokumeteve Disk: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Hedhja e te dhenave Disk: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Grupimet ne Disk: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partition %lu\n"
IDS_DETAIL_PARTITION_TYPE "Type : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Hidden : %s\n"

View File

@@ -92,14 +92,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Yol : %hu\n"
IDS_DETAIL_INFO_TARGET "Hedef : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "Konum Yolu"
IDS_DETAIL_INFO_CURR_RO_STATE "Şimdiki Yalnızca Okunur Durumu"
IDS_DETAIL_INFO_RO "Salt-Okunur"
IDS_DETAIL_INFO_BOOT_DSK "Önyükleme Diski"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Sanal Bellek Diski"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hazırda Bekletme Dosyası Diski"
IDS_DETAIL_INFO_CRASH_DSK "Çökme Dökümü Diski"
IDS_DETAIL_INFO_CLST_DSK "Kümelenmiş Disk"
IDS_DETAIL_INFO_LOC_PATH "Konum Yolu: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "Şimdiki Yalnızca Okunur Durumu: %s\n"
IDS_DETAIL_INFO_RO "Salt-Okunur: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "Önyükleme Diski: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "Sanal Bellek Diski: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "Hazırda Bekletme Dosyası Diski: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "Çökme Dökümü Diski: %s\n"
IDS_DETAIL_INFO_CLST_DSK "Kümelenmiş Disk: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Bölüm %lu\n"
IDS_DETAIL_PARTITION_TYPE "Tür : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Gizli : %s\n"

View File

@@ -91,14 +91,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "Path : %hu\n"
IDS_DETAIL_INFO_TARGET "Target : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun ID : %hu\n"
IDS_DETAIL_INFO_LOC_PATH "位置路径"
IDS_DETAIL_INFO_CURR_RO_STATE "当前的只读状态"
IDS_DETAIL_INFO_RO "只读模式"
IDS_DETAIL_INFO_BOOT_DSK "启动磁盘"
IDS_DETAIL_INFO_PAGE_FILE_DSK "页面文件磁盘"
IDS_DETAIL_INFO_HIBER_FILE_DSK "休眠文件磁盘"
IDS_DETAIL_INFO_CRASH_DSK "故障转储磁盘"
IDS_DETAIL_INFO_CLST_DSK "群集的磁盘"
IDS_DETAIL_INFO_LOC_PATH "位置路径: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "当前的只读状态: %s\n"
IDS_DETAIL_INFO_RO "只读模式: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "启动磁盘: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "页面文件磁盘: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "休眠文件磁盘: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "故障转储磁盘: %s\n"
IDS_DETAIL_INFO_CLST_DSK "群集的磁盘: %s\n"
IDS_DETAIL_PARTITION_NUMBER "Partition %lu\n"
IDS_DETAIL_PARTITION_TYPE "Type : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "Hidden : %s\n"

View File

@@ -91,14 +91,14 @@ BEGIN
IDS_DETAIL_INFO_PATH "路徑 : %hu\n"
IDS_DETAIL_INFO_TARGET "目標 : %hu\n"
IDS_DETAIL_INFO_LUN_ID "Lun 識別碼: %hu\n"
IDS_DETAIL_INFO_LOC_PATH "位置路徑"
IDS_DETAIL_INFO_CURR_RO_STATE "目前的唯讀狀態"
IDS_DETAIL_INFO_RO "唯讀模式"
IDS_DETAIL_INFO_BOOT_DSK "啟動磁碟"
IDS_DETAIL_INFO_PAGE_FILE_DSK "頁面檔案磁碟"
IDS_DETAIL_INFO_HIBER_FILE_DSK "休眠檔案磁碟"
IDS_DETAIL_INFO_CRASH_DSK "損毀傾印磁碟"
IDS_DETAIL_INFO_CLST_DSK "叢集磁碟"
IDS_DETAIL_INFO_LOC_PATH "位置路徑: %s\n"
IDS_DETAIL_INFO_CURR_RO_STATE "目前的唯讀狀態: %s\n"
IDS_DETAIL_INFO_RO "唯讀模式: %s\n"
IDS_DETAIL_INFO_BOOT_DSK "啟動磁碟: %s\n"
IDS_DETAIL_INFO_PAGE_FILE_DSK "頁面檔案磁碟: %s\n"
IDS_DETAIL_INFO_HIBER_FILE_DSK "休眠檔案磁碟: %s\n"
IDS_DETAIL_INFO_CRASH_DSK "損毀傾印磁碟: %s\n"
IDS_DETAIL_INFO_CLST_DSK "叢集磁碟: %s\n"
IDS_DETAIL_PARTITION_NUMBER "磁碟分割 %lu\n"
IDS_DETAIL_PARTITION_TYPE "類型 : %s\n"
IDS_DETAIL_PARTITION_HIDDEN "已隱藏 : %s\n"

View File

@@ -1829,6 +1829,42 @@ GetVolumeSize(
}
static
PDISKENTRY
GetDiskForVolume(
_In_ PVOLENTRY VolumeEntry)
{
PLIST_ENTRY Entry;
PDISKENTRY DiskEntry;
INT i;
DPRINT("GetDiskFromVolume(%p)\n", VolumeEntry);
DPRINT("Extents: %p\n", VolumeEntry->pExtents);
if (VolumeEntry->pExtents == NULL)
return NULL;
DPRINT("Extents: %lu\n", VolumeEntry->pExtents->NumberOfDiskExtents);
Entry = DiskListHead.Flink;
while (Entry != &DiskListHead)
{
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
for (i = 0; i < VolumeEntry->pExtents->NumberOfDiskExtents; i++)
{
DPRINT("DiskNumber: %lu -- %lu\n", VolumeEntry->pExtents->Extents[i].DiskNumber, DiskEntry->DiskNumber);
if (VolumeEntry->pExtents->Extents[i].DiskNumber == DiskEntry->DiskNumber)
return DiskEntry;
}
Entry = Entry->Flink;
}
return NULL;
}
static
VOID
IsVolumeSystem(
@@ -1838,7 +1874,7 @@ IsVolumeSystem(
HKEY hKey;
DWORD dwError, dwLength;
DPRINT1("IsVolumeSystem()\n");
DPRINT("IsVolumeSystem()\n");
VolumeEntry->IsSystem = FALSE;
@@ -1882,8 +1918,9 @@ IsVolumeBoot(
_In_ PVOLENTRY VolumeEntry)
{
WCHAR szSystemDir[MAX_PATH];
PDISKENTRY DiskEntry;
DPRINT1("IsVolumeBoot()\n");
DPRINT("IsVolumeBoot()\n");
VolumeEntry->IsBoot = FALSE;
@@ -1893,11 +1930,17 @@ IsVolumeBoot(
GetSystemDirectoryW(szSystemDir,
ARRAYSIZE(szSystemDir));
DPRINT1("SystemDirectory: %S\n", szSystemDir);
DPRINT1("DriveLetter: %C\n", VolumeEntry->DriveLetter);
DPRINT("SystemDirectory: %S\n", szSystemDir);
DPRINT("DriveLetter: %C\n", VolumeEntry->DriveLetter);
if (szSystemDir[0] == VolumeEntry->DriveLetter)
{
VolumeEntry->IsBoot = TRUE;
DiskEntry = GetDiskForVolume(VolumeEntry);
if (DiskEntry)
DiskEntry->IsBoot = TRUE;
}
}
@@ -1948,7 +1991,6 @@ AddVolumeToList(
return;
}
wcscat(VolumeEntry->DeviceName, L"\\");
DPRINT("DeviceName: %S\n", VolumeEntry->DeviceName);
RtlInitUnicodeString(&Name, VolumeEntry->DeviceName);
@@ -1977,8 +2019,8 @@ AddVolumeToList(
szVolumeName,
MAX_PATH + 1,
&VolumeEntry->SerialNumber,
NULL, // [out, optional] LPDWORD lpMaximumComponentLength,
NULL, // [out, optional] LPDWORD lpFileSystemFlags,
NULL,
NULL,
szFilesystem,
MAX_PATH + 1))
{