2011-10-17 46 views
3

我試圖通過ist設備路徑掛載一個windows設備到一個NTFS文件夾。設備路徑的格式爲:設備的Windows掛載點

\\?\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); 

的設備,然後從所有我可以在這個MSDN做得正確看到做了

DeviceIoControl(hDir, FSCTL_SET_REPARSE_POINT, &ReparseData, 
      16 + iSize + 2 + iSize + 2, NULL, 0, &dw, NULL)) 

。唯一的問題是:它不起作用。無論使用創建的連接點,無論設備標記如何,都無法由資源管理器打開。當我嘗試打開它時,該瀏覽器會創建並識別該聯結,資源管理器告訴我目標語法無效。

到目前爲止,我已經嘗試通過解決它喜歡安裝設備:

\\?\GLOBALROOT\Device\ImDisk0 

\\.\GLOBALROOT\Device\ImDisk0 

\\.\Device\ImDisk0 

\\Device\ImDisk0 

的這一切似乎工作。 我認爲Ram-Drive存在且格式正確。我能夠通過一個驅動器號來訪問它(如果我把它時指定一個的創作FE E:\)

而且我可以通過

CreateFile("\\?\GLOBALROOT\Device\ImDisk0\file.txt") 

訪問它,我可以創造一個FileStream,從中等執行代碼。

任何線索如何將它掛載到ntfs文件夾中? 任何幫助表示讚賞!

在此先感謝!

Corelgott

+0

在我的經驗,所有的標準重新解析點數據期望目標的形式爲'\ ?? \ ',其中是目標的驅動器號和路徑。你可以試試'\ ?? \ E:\'看看是否有效? – Luke

+0

嗨盧克,我剛剛試過你提出的方式,但問題是,該API改變我的路徑\\?\ ,即使DeviceIoControl獲取參數正確,結果垃圾改變的路徑,其中,一些網站,已知和預期的行爲 – Corelgott

回答

0

嘗試...

mklink/DC:\ TEMP \\。\ GLOBALROOT \設備\ ImDisk0 \

這可以通過道中被刪除:\ TEMP

失敗嘗試DosDev

dosdev X:\\?\ GLOBALROOT \設備\ ImDisk0 \

這可以通過去除dosdev -dx:

雖然LINKD可能是某些遺留系統的選項,一個乾淨的安裝WinXP中的SP3透露linkd.exe是發現:

DIR%SYSTEMDRIVE%\ linkd.exe/S /廣告/ b

+1

Mklink僅在Windows Vista和更高版本上存在。 Windows 2000/XP用戶需要通過「LINKD Destination Source」創建一個NTFS聯結點。可能會將其添加到您的答案中。 – DanteTheEgregore

0

除了SuperGQ的回答是:

嘗試...

mklink/DC:\ TEMP \ \ GLOBALROOT \設備\ ImDisk0 \

如果失敗嘗試DosDev(該DefineDosDevice()的Win32 API的例子)

mklink只存在於Windows上Vista和起來。在Windows 2000/XP的用戶需要通過安裝Server 2003 Resource Kit,使一個NTFS交接點,而不是:

LINKD Destination Source 

上LINKD和NTFS結更多的文檔:http://support.microsoft.com/kb/205524

另外,刪除命令在LINKD不同位包含一個內置的清除工具:

LINKD Source /D 

雖然mklink無法刪除符號鏈接。例如:

fsutil reparsepoint delete PATH 

是必需的。

具體來說,mklink存在在Windows 8和Windows Server 2008,Windows Server 2012中,Windows Vista和Windows 7中(不過,奇怪的是,微軟Windows 7不TechNet文檔http://technet.microsoft.com/en-us/library/cc753194.aspx中列出)