Получить соответствующие физические диски точек монтирования с запросами WMI? - PullRequest
6 голосов
/ 28 января 2010

Есть ли способ получить соединение между точкой монтирования (томом, который монтируется в файловую систему вместо монтирования в букву диска) и принадлежащим ему физическим диском (дисками) с помощью WMI?

Например, у меня есть точка монтирования тома на сервере W2K8, который монтируется в «C: \ Data \», а точка монтирования распространяется на физические диски 2, 4 и 5 сервера (Управление данными Диспетчер серверов показывает это), но я не могу найти способ узнать это с помощью WMI.

Тома, которые получили букву диска, могут быть связаны с WMI-классами Win32_DiskDrive -> Win32_DiskDriveToDiskPartition -> Win32_DiskPartition -> Win32_LogicalDiskToPartition -> Win32_LogicalDisk - но проблема в том, что точки монтирования тома не перечислены в класс Win32_LogicalDisk, они перечислены только в Win32_Volume. И я не нашел способа связать класс Win32_Volume с классом Win32_DiskDrive - отсутствуют некоторые классы связывания.

Кто-нибудь знает решение?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Единственный известный мне способ - использовать Win32 API для помощи.

Вы открываете дескриптор для тома, используя Win32_Volume .DeviceID, слегка измененный. Вы можете открыть дескриптор тома, используя формат:

\\.\Volume{[GUID]}

Затем вам нужно выполнить IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS на открытом дескрипторе, чтобы получить VOLUME_DISK_EXTENTS структуру. Эта структура будет содержать список идентификаторов физических дисков для тома.

Используя эти идентификаторы дисков, вы можете запросить WMI на Win32_DiskDrive .Index, чтобы получить соответствующий диск.

0 голосов
/ 12 мая 2010

Это похоже на мой вопрос здесь: наличие Win32_MountPoint и Win32_Volume в Windows XP?

В примере кода (на C #) я связываю класс Win32_Volume с классом Win32_MountPoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...