我試圖通過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
在我的經驗,所有的標準重新解析點數據期望目標的形式爲'\ ?? \',其中是目標的驅動器號和路徑。你可以試試'\ ?? \ E:\'看看是否有效? –
Luke
嗨盧克,我剛剛試過你提出的方式,但問題是,該API改變我的路徑\\?\,即使DeviceIoControl獲取參數正確,結果垃圾改變的路徑,其中,一些網站,已知和預期的行爲 –
Corelgott