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

标签 c++ c windows winapi hard-drive

我正在编写一个能够显示硬盘性能的程序。该程序的输入数据是逻辑磁盘名称(“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:" 如果我需要在名为 "server1"。我努力了 L"\\\\server1\\\\.\\D:", L"server1\\\\.\\D:" 等但是它没有'有帮助。

最佳答案

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

关于c++ - 如何从网络逻辑磁盘名获取物理磁盘索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52668041/

相关文章:

c - setvbuf 无法使标准输入无缓冲

c - 如何在 C99 中迭代 char*?

c++ - 如何在 C++ 中分解指向成员的指针(获取类和成员类型)?

c++ - 接受 cpp 中的任何类型的参数

c++ - 从 Objective C 调用带有回调的 C++ 方法

c++ - 为什么在这种情况下创建临时实例不起作用?

c - 有没有办法用位字段声明无符号固定宽度整数?

c++ - 我如何使用 cryptimportkey 函数导入私钥来加密数据相同的结果使用导入的 key

windows - 如果我违反了对 ProgID 的要求会怎样?

c# - 连接到 SQL Online 数据库的 Windows 8 应用商店应用程序