原创 AddDevice 設備命名(2)

 設備接口 用舊的命名方法命名設備對象,並創建一個應用程序能夠使用的符號連接,存在着兩個主要問題。命名設備對象所帶來的潛在安全問題我們已經討論過。此外,訪問設備的應用程序需要先知道設備採用的命名方案。如果你的硬件僅由你的應用程序訪問,那麼不

原创 WinDBG找不到符號路徑解決方法

 WinDBG命令輸入dd Nt!NtOpenProcess正常顯示了,但有的執行不了, 事例: 一,WinDBG命令輸入!process 0 0提示錯誤 lkd> !process 0 0 **** NT ACTIVE PROCESS 

原创 ZWSetSystemInformation加載驅動

 zwSetSystemInformation函數是個未公開的函數,調用38號會加載驅動,對應的第二個參數爲SYSTEM_LOAD_AND_CALL_IMAGE結構體,第三個參數爲SYSTEM_LOAD_AND_CALL_IMAGE結構體的

原创 WTL::右鍵彈出菜單和托盤圖標

  WTL嵌入類的架構可以使整個程序很清晰,系統托盤氣泡提示、上下文菜單處理可以分別獨立出來,以下是實現代碼,很清晰就不註釋了。基本上這兩個類很少需要修改,因此我把它們放到了系統包含文件搜索路徑中。 //ContextMenu.h #pr

原创 AddDevice 設備命名(1)

在前一節中,我講述了當WDM驅動程序被第一次裝入時如何初始化。通常,一個驅動程序可以被多個設備利用。WDM驅動程序有一個特殊的AddDevice函數,PnP管理器爲每個設備實例調用該函數。該函數的原型如下: NTSTATUS

原创 無註冊表加載驅動(1)

 Loading drivers and Native applications from kernel mode, without touching registry     * Security "How to load driv

原创 WTL和WDK共存 errno.h報錯

 直接上圖 步驟一   步驟二    

原创 獲取窗口句柄

 1 this->m_hwnd 2 CWnd::GetSafeHwnd 獲取窗口類的窗口句柄 HWND GetSafeHwnd( ) const; Returns m_hWnd, or NULL if the this pointer

原创 AddDevice 設備命名(3)

 其它對象 設備可能還有其它一些需要在AddDevice中初始化的對象。這些對象可能包括各種同步對象,各種隊列頭(queue anchors),聚集/分散列表緩衝區,等等。事實上,在本書的其它地方討論這些對象的初始化更合適。 初始化設備標誌

原创 ZwLoadDriver加載驅動

 bool driver_zwload(char *strSvcName,    char *strDrvPath) { HKEY hKey = NULL; bool bRet = false; char Data[4] = {0}

原创 枚舉系統進程/線程

 HANDLE m_hProcessSnap = NULL;  HANDLE m_hThreadSnap = NULL;  HANDLE m_hProcess = NULL;  HANDLE m_hThread = NULL;  P

原创 我的友情鏈接

51CTO博客開發