Windows驅動開發 符號鏈結和裝置名

2022-04-23 06:28:17 字數 893 閱讀 2871

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

windows驅動建立檔案符號鏈結

最近需要實現乙個功能,在驅動中建立檔案的符號鏈結。搜了一圈,只能找到 mklink 命令,mklink 命令顯然不能在核心呼叫。因為大部分的系統呼叫最終都會呼叫到核心層的實現,所以整體思路就是搞清楚 mklink 的實現,找到對應的核心介面。簡單搜尋了下系統目錄,發現並沒有 mklink 檔案,因此...

驅動開發之符號鏈結和裝置名稱

windows下的裝置是以 device 裝置名 形式命名的。例如磁碟分割槽的c盤,d盤的裝置名稱就是 device harddiskvolume1 device harddiskvolume2 當然也可以不指定裝置名稱。如果iocreatedevice中沒有指定裝置名稱,那麼i o管理器會自動分配...

Windows驅動開發

以ddk2600版本為例 無論是ddk驅動還是pnp驅動,都需要撰寫makefile檔案.使用nmake 來驅動執行.系統目錄預設有makefile檔案,裡面包括有安裝目錄下makefile.def檔案,這個裡面包含檔案makefile.inc,及每個即編譯檔案所在目錄的dirs檔案 makefil...