Как получить индекс физического диска из сетевого логического имени диска? - PullRequest
0 голосов
/ 05 октября 2018

Я пишу программу, которая сможет показать производительность жесткого диска.Входные данные для программы - логическое имя диска («D:», «E:» и т. Д.).Я должен получить индекс физического диска по логическому имени диска.Нет проблем для локальной машины.Я могу сделать это следующим образом:

 HANDLE h = ::CreateFile( L"\\\\.\\d:" , 0 , 0 , NULL , OPEN_EXISTING, 0 , NULL);  
  STORAGE_DEVICE_NUMBER info = { };   
   DWORD bytesReturned = 0;
   ::DeviceIoControl( h , IOCTL_STORAGE_GET_DEVICE_NUMBER , NULL , 0,&info,sizeof( info ) , &bytesReturned , NULL );

, а затем использовать info.DeviceNumber для дальнейшего использования.Но я не знаю, как сделать то же самое для сетевого диска.Как я могу изменить локальный путь L"\\\\.\\D:", если мне нужно получить дескриптор сетевого логического диска "D:" на сервере с именем "server1".Я пробовал L"\\\\server1\\\\.\\D:", L"server1\\\\.\\D:" и т. Д., Но это не помогло.

1 Ответ

0 голосов
/ 05 октября 2018

Вы не можете.В сетевом протоколе нет поддержки для запроса такого рода информации.server1 может даже не иметь понятия «индекс физического диска».

...