Как получить индекс физического диска из имени сетевого логического диска?

Я пишу программу, которая сможет показать производительность жесткого диска. Входными данными для программы является имя логического диска ("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:" и т. д., но это не помогло.


person rooltex    schedule 05.10.2018    source источник


Ответы (1)


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

person MSalters    schedule 05.10.2018