如何从网络逻辑磁盘名获取物理磁盘索引?
How to get physical disk index from network logical disk name?
我正在编写一个能够显示硬盘性能的程序。该程序的输入数据是逻辑磁盘名称("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
进一步使用。但我不知道如何为网络驱动器做同样的事情。如果我需要在名为 "server1"
的服务器上获取网络逻辑驱动器 "D:" 的句柄,我该如何更改本地路径 L"\\.\D:"
。我试过了
L"\\server1\\.\D:"
、L"server1\\.\D:"
等,但没有帮助。
你不能。网络协议不支持请求此类信息。 server1
甚至可能没有 "physical disk index" 的概念。
我正在编写一个能够显示硬盘性能的程序。该程序的输入数据是逻辑磁盘名称("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
进一步使用。但我不知道如何为网络驱动器做同样的事情。如果我需要在名为 "server1"
的服务器上获取网络逻辑驱动器 "D:" 的句柄,我该如何更改本地路径 L"\\.\D:"
。我试过了
L"\\server1\\.\D:"
、L"server1\\.\D:"
等,但没有帮助。
你不能。网络协议不支持请求此类信息。 server1
甚至可能没有 "physical disk index" 的概念。