我正在尝试通过ist设备路径将Windows设备挂载到ntfs文件夹。设备路径采用以下形式:
\\?\GLOBALROOT\Device\ImDisk{0}
我想将它挂载到一个空的ntfs文件夹中,让我们说:
c:\temp\
我尝试安装的设备是ImDisk ram驱动器,它带有api。基本上api通过
安装设备hDir = CreateFile(Directory, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS |
FILE_FLAG_OPEN_REPARSE_POINT, NULL);
然后做
DeviceIoControl(hDir, FSCTL_SET_REPARSE_POINT, &ReparseData,
16 + iSize + 2 + iSize + 2, NULL, 0, &dw, NULL))
从我在msdn中可以看到的所有内容都正确完成。唯一的问题是:它不起作用。无论使用何种设备符号,我都无法使用创建的联结打开资源管理器。当我尝试打开它时,资源管理器会创建并识别交汇点,资源管理器告诉我目标语法无效。
到目前为止,我尝试通过以下方式安装设备:
\\?\GLOBALROOT\Device\ImDisk0
\\.\GLOBALROOT\Device\ImDisk0
\\.\Device\ImDisk0
\\Device\ImDisk0
这些似乎都不起作用。 我很肯定Ram-Drive存在且正确格式化。我可以通过Driveletter访问它(如果我在创建期间分配一个,那么E:\)
我可以通过
访问它CreateFile("\\?\GLOBALROOT\Device\ImDisk0\file.txt")
我可以创建一个FileStream,从中执行代码等。
有关如何将其安装在ntfs文件夹中的任何线索? 任何帮助表示赞赏!
提前致谢!
Corelgott
答案 0 :(得分:0)
...试
mklink / d c:\ temp \\?\ GLOBALROOT \ Device \ ImDisk0 \
可以通过 rd c:\ temp
删除没有尝试DosDev。
dosdev x:\\?\ GLOBALROOT \ Device \ ImDisk0 \
可以通过 dosdev -d x:
删除虽然LINKD可能是某些遗留系统的一个选项,但干净安装的WinXP SP3显示linkd.exe 未找到:
dir%systemdrive%\ linkd.exe / s / a-d / b
答案 1 :(得分:0)
除了SuperGQ的回答:
...试
mklink / d c:\ temp \?\ GLOBALROOT \ Device \ ImDisk0 \
没有尝试DosDev(DefineDosDevice()Win32的一个例子 API)
mklink仅存在于Windows Vista及更高版本上。 Windows 2000 / XP用户需要安装Server 2003 Resource Kit并通过以下方式建立NTFS交接点:
LINKD Destination Source
有关LINKD和NTFS Junctions的更多文档:http://support.microsoft.com/kb/205524
此外,删除命令略有不同,因为LINKD包含内置删除工具:
LINKD Source /D
虽然mklink无法删除符号链接。类似的东西:
fsutil reparsepoint delete PATH
是必需的。
具体而言,{8}存在于Windows 8,Windows Server 2008,Windows Server 2012,Windows Vista和Windows 7中(但奇怪的是,Windows 7未在technet文档http://technet.microsoft.com/en-us/library/cc753194.aspx中列出)