如何从网络逻辑磁盘名称获取物理磁盘索引?

Posted

技术标签:

【中文标题】如何从网络逻辑磁盘名称获取物理磁盘索引?【英文标题】:How to get physical disk index from network logical disk name? 【发布时间】:2019-03-11 02:30:17 【问题描述】:

我正在编写一个能够显示硬盘性能的程序。程序的输入数据是逻辑磁盘名称(“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:" 等,但没有帮助。

【问题讨论】:

【参考方案1】:

你不能。网络协议不支持请求此类信息。 server1 甚至可能没有“物理磁盘索引”的概念。

【讨论】:

以上是关于如何从网络逻辑磁盘名称获取物理磁盘索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PowerShell获取物理磁盘的信息

Powershell:根据逻辑驱动器名称或文件路径提取物理磁盘属性[重复]

枚举特定物理设备名称的逻辑驱动器

启用存储空间时获取物理磁盘的信息

🍖磁盘管理

如何在 Linux 上获取磁盘信息?