将 HarddiskVolume 路径转换为正常路径[重复]

2024-03-10

我有这样的设备路径

设备\HarddiskVolume2\Windows\

我想将其转换为像这样的正常路径

C:\Windows

我尝试使用 (_fullpath-_splitpath-etc...) 但没有新结果。该功能执行哪个功能?


一种选择是更换Device\ with \\?\像这样:

\\?\HarddiskVolume2\Windows\

然后您可以使用打开目录的句柄CreateFile()FILE_FLAG_BACKUP标记,然后调用GetFinalPathNameByHandle() https://msdn.microsoft.com/en-us/library/windows/desktop/aa364962%28v=vs.85%29.aspx找到DOS路径。

#include <Windows.h>
#include <stdio.h>

int main(int argc, char ** argv)
{
    wchar_t lpszFilePath[MAX_PATH + 1];
    DWORD dw;

    HANDLE hFile = CreateFileW(L"\\\\?\\HarddiskVolume2\\Windows\\", GENERIC_READ, 
        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, 
        FILE_FLAG_BACKUP_SEMANTICS, NULL); 
    if (hFile == INVALID_HANDLE_VALUE) 
    {
        printf("CreateFile: %u\n", GetLastError());
        return 1;
    }

    dw = GetFinalPathNameByHandleW(hFile, 
        lpszFilePath, _countof(lpszFilePath) - 1, VOLUME_NAME_DOS); 

    if (dw == 0)
    {
        printf("GetFPNBYH: %u\n", GetLastError());
        return 1;
    }
    else if (dw >= _countof(lpszFilePath))
    {
        printf("GetFPNBYH: output requires %u characters\n", dw);
        return 1;
    }

    printf("%ws\n", lpszFilePath);
    return 0;
}

大概有一个执行转换的内部函数,并且可能可以使用它而不必打开句柄,但据我所知,它没有记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 HarddiskVolume 路径转换为正常路径[重复] 的相关文章

  • 具有不同大小结构的结构数组的 malloc()

    如果每个结构都包含一个大小不同的字符串数组 那么如何正确地 malloc 一个结构数组 因此每个结构可能有不同的大小 并且不可能 realloc 结构体数量 sizeof 结构体名称 after malloc 初始大小 sizeof 结构名
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 在 wampserver 2.2 上安装 php_imagick.dll PHP 扩展

    我使用的是 32 位操作系统的 Windows 7 我安装了 ImageMagick 6 8 7 Q16Link https www imagemagick org script download php windows我能够从命令行 转换
  • 在 C++ 中将成对向量转换为两个独立向量的最快方法

    假设我有一个vector of pair
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • 如何在 C++ 中将 CString 转换为 double?

    我如何转换CString to a double在 C 中 Unicode 支持也很好 Thanks A CString可以转换为LPCTSTR 这基本上是一个const char const wchar t 在 Unicode 版本中 知
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • tabcontrol selectedindex 更改事件未被触发 C#

    嘿伙计们 我有一个很小的问题 请参阅下面的代码 this is main load private void Form1 Load object sender EventArgs e tabAddRemoveOperator Selecte
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 受限 AppDomain 中的代码访问安全异常

    Goal 我需要在权限非常有限的 AppDomain 中运行一些代码 它不应该访问任何花哨或不安全的内容 except对于我在其他地方定义的一些辅助方法 我做了什么 我正在创建一个具有所需基本权限的沙箱 AppDomain 并创建一个运行代
  • 带有私有设置器的 EFCore Base 实体模型属性 - 迁移奇怪的行为

    实体模型继承的类内的私有设置器似乎会导致 EFCore 迁移出现奇怪的问题 考虑以下示例 其中有多个类 Bar and Baz 继承自Foo 跑步时Add Migration多次命令 添加 删除private修饰符 生成的模式在多个方面都是
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne

随机推荐

  • 使用R的lm(),公式对象应该作为字符传递?

    我发现 R 使用 lm 时有一个奇怪的行为 基于cars对象 以下函数是在速度 30 时使用局部线性回归绘制拟合断裂距离 func1 lt function fm spd w lt dnorm cars speed spd sd 5 fit
  • Jenkins 与 intellij 共享库

    我开始实现 Jenkins 共享库并尝试使用 intellij 作为我的 ide 编写我的 jenkinsfile 如何从共享 lib 存储库获取函数到其中包含 jenkins 文件的其他存储库 只是为了澄清从 jenkins 运行时对我有
  • 查找数组的第一个重复项

    我决定学习 python 并使用 CodeFight 进行训练 第一个面试练习是找到数组的第一个重复项并返回它 如果没有则返回 1 这是我写的代码 def firstDuplicate a b print len a for i in ra
  • 当两个命令都存在时,在 jupyter 中使用“%”比使用“!”有优势吗?

    例如当我使用 pip install VSCode 建议我使用 pip install 同样有一个版本mv对彼此而言 and 使用其中一种比另一种有优势吗 Yes pip在大多数边缘情况下 将正确解析适当的虚拟环境 当前内核使用的虚拟环境
  • 如何在 Spring WebClient 中一次设置多个标头?

    我试图为我的其余客户端设置标头 但每次我都必须写 webclient get uri blah blah header key1 value1 header key2 value2 如何使用 headers 方法同时设置所有标头 如果这些标
  • Cloudinary api - 解决承诺

    我想编写一个函数 返回一个布尔值 指示我的 Cloudinary 空间中是否已存在具有指定 public id 的图像 我可以使用以下代码将结果记录到控制台 function isUploaded public id cloudinary
  • 不可能的布局?

    我开始认为这是不可能的 但我想我会问你们 基本上它是一个 2 列布局 但 业务 需要以下内容 始终占据整个浏览器窗口 适应浏览器窗口大小的调整 左栏的宽度是固定的 但该宽度在不同页面上应该是灵活的 左列顶部有一个固定高度的区域 左栏有一个底
  • 所有 mysql 引擎之间的主要区别是什么?

    我想总结一下所有 Mysql 引擎之间的主要区别 当然也包括最流行的引擎 我应该使用什么标准来确定使用哪个引擎 这里对它们进行了很好的描述 http dev mysql com doc refman 5 0 en storage engin
  • 如何更改 tcsh 提示符以显示当前工作目录?

    我在用tcsh我正在寻找一种响应式工作目录 我至少想显示最后一个文件夹名称而不是获取完整路径 想象我当前的工作目录是 user hostname home us Desktop my projects 然后我想显示这样的提示 user ho
  • 获取 Librosa 中与 STFT 相关的频率

    使用时librosa stft 要计算频谱图 如何获取相关的频率值 我对生成图像不感兴趣 如librosa display specshow 而是我希望掌握这些价值观 y sr librosa load recordings high pi
  • Azure 媒体播放器无法在 iPhone 上使用 AES 保护

    我们在 iPhone 6 A1586 上播放受 AES 使用 JWT 令牌身份验证 保护的视频时遇到问题 欠费错误如下 0x50300000 视频播放因损坏问题而中止 或者因为视频使用了您的浏览器不支持的功能 禁用加密后 播放相同的视频不会
  • Google 脚本可跨多个工作表工作

    我是 Google 脚本的新手 所以如果这个问题已经得到解答 我深表歉意 我有一个包含多个工作表的电子表格 其中一些工作表上有一个状态列 使用我已经发现的代码 我可以根据状态列中单元格中的值设置整个行颜色 我遇到的问题是我只能让代码在一张纸
  • 有效查询合并2个以上子查询

    我有一个数据库 books primary key bookID characterNames foreign key books bookID locations foreign key books bookID 角色名称和位置的文本位置
  • 我可以在批处理文件中使用多少个变量

    我有点好奇我可以在批处理文件中设置多少个变量 我这里有一个小脚本 ECHO OFF SETLOCAL EnableDelayedExpansion FOR L P IN 1 1 2147483647 DO SET Foo P P ECHO
  • 寻求参考来理解一种模式“!_[$0]++”

    我是 AWK 新手 使用移植到 Windows UNXUtils 的 GNU 实用程序和 gawk 而不是 awk 该论坛上的解决方案的工作原理如下绝对的魔法 并且我正在尝试找到一个可以阅读的来源 以更好地理解该解决方案中提供的模式表达式
  • 从点(x,y)以给定角度在边界内绘制一条线[重复]

    这个问题在这里已经有答案了 我正在尝试在 JavaScript 画布上画一条线 我有两个点A和B 如图所示 我使用此代码来查找这两点之间的角度 p1 is point A and p2 is point B var theta Math a
  • 为什么当我使用 DriverManager.getConnection 时我的 SQL 连接会卡住?

    我的 Java 代码如下所示 并且我的机器上运行着一个 MySQL 数据库 System out println Loading JDBC Class forName com mysql jdbc Driver newInstance Sy
  • Visual Studio 诊断会话无法启动 - 运行 Visual Studio 2013 诊断需要哪些访问权限

    Visual Studio 2013 诊断会话无法启动 无法加载收集器代理 访问被拒绝 我想知道运行性能和诊断工具需要哪些访问权限 我遇到了同样的问题 对我来说 这是由于我不是我的开发人员计算机上的本地管理员 如果我在本地管理员的提升帐户下
  • Microsoft 推送通知服务定价

    我已阅读有关他们为 Windows 手机提供的推送通知服务的 Microsoft 文档 但没有有关定价的信息 我在某处读到 每天 每个应用程序 每个设备最多可以免费使用 500 个通知 并且它是未经身份验证的模式 但也有经过身份验证的模式
  • 将 HarddiskVolume 路径转换为正常路径[重复]

    这个问题在这里已经有答案了 我有这样的设备路径 设备 HarddiskVolume2 Windows 我想将其转换为像这样的正常路径 C Windows 我尝试使用 fullpath splitpath etc 但没有新结果 该功能执行哪个