原创 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博客開發