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...