Windows驅動開發-符號鏈接和設備名


windows下的設備是以"\Device\[設備名]”形式命名的。

例如磁盤分區的C盤,D盤的設備名稱就是

"\Device\HarddiskVolume2”
"\Device\HarddiskVolume3”。

也可以不指定設備名稱,那么I/O管理器會自動分配一個數字作為設備的名稱。例如

"\Device\00000001"

設備名不容易記憶。

在驅動程序中,定義設備對象名稱需要以L"\\device\\"開頭,

定義符號鏈接的名稱需要以L"\\dosDevices\\"開頭,(注意dosDevices中的最后一個字符是s,然后IoCreateSymbolicLink函數返回失敗,半天找不到原因);

或者以L"\\??\\"開頭也可以。

符號鏈接可以理解為設備的別名,更重要的是,設備名只能被內核模式下的其他驅動所識別,而別名可以被用戶模式下的應用程序識別。“C:”就是一個符號鏈接名。

而在驅動中,符號鏈接名是這樣寫的:

L”\\??\\c:”  ---> \??\c:
L"\\??\\HelloDDK" --->\??\HelloDDK L”\\DosDevices\\HelloDDK” ---> \DosDevices\HelloDDK

在內核模式下,符號鏈接是以“\??\”開頭的,如C盤就是"\??\C:",

在用戶模式下,符號鏈接是以“\\.\”開頭的,如C盤就是"\\.\C:".

因此在應用程序中,符號鏈接名:

L"\\\\.\\HelloDDK"-->\\.\HelloDDK

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM