原创 ubuntu 下QT4鏈接C語言編寫的.a靜態庫

    很久沒有使用QT進行開發了,大概有3-4年了。一個ubuntu下的小項目,讓我重新使用QT進行開發。     用C語言寫了一個靜態庫文件.a文件,準備在QT4下進行鏈接使用。我在pro工程配置文件中增加LIBS的配置,使用各種方法

原创 C++應用程序出現 0xc0150002 錯誤導致無法啓動跟蹤解決

     在調試某個C++應用程序的時候,出現如下錯誤,應用程序無法啓動:            果斷打開 Depends.exe 工具,把這個exe文件拉到這個工具裏面查看。            很明顯了,紅色地方標明這個應用程序缺少

原创 USB驅動查詢USB設備信息

        當USB設備插入時,系統需要查詢USB設備信息,會向USB驅動發送相關的查詢指令。         通常都是在PNP的IRP中處理,主功能號 IRP_MJ_PNP,子功能號爲 IRP_MN_QUERY_ID。      

原创 Windows內核模式下套接字結構

        Windows應用層的網絡通訊使用socket非常常見。內核模式下呢?一種是可以使用TDI或者NDIS驅動程序,但是TDI驅動程序在Win7系統以後就無法使用,而NDIS驅動學習成本比較高,編程的難度比較高。如果是簡單的實

原创 Linux下查看可執行文件、動態庫的ELF頭等信息

      用法: readelf <option(s)> elf-file(s)       作用: 和Windows下的PE文件類似,ELF文件是linux系統下可執行文件、動態庫文件、靜態庫文件的標準格式。有時候我們需要查看ELF文

原创 Win7以上系統通過Dbgview打印驅動日誌

    除了使用windbg調試Windows驅動程序,調用函數 DbgPrint 通過Dbgview 查看驅動日誌也是很常用的手段。XP系統下打印

原创 軟件設計師算法之回溯法--8皇后問題

    8皇后問題,我想IT人士應該基本都聽過了。特別是會下國際象棋的。規則很簡單,每一個皇后會攻擊每一條線的其它皇后,因此要確保每一條線上(包括直線和對角斜線)只能存在一個皇后。8皇后問題我一直沒有編寫過代碼去實現。今天正好補上。  

原创 uuidgen.exe 同時生成多個GUID

    首先在VS的安裝目錄下搜索"uuidgen.exe",找到該工具。該工具通常在子目錄"Common7\Tools"。        接着打開cmd命令行工具,通過cd命令進入到該工具存放目錄,輸入命令"uuidgen.exe -c

原创 SSD開發從零到入門簡單總結

   很久沒有寫博文了,手生了,思路都生鏽了,就先寫個簡單的總結吧。          自2019年6月份開始,從事固態硬盤(SSD)的固件開發有1年半的時間。最早對SSD的一無所知,現在應該算是基本上入門了吧。 學習一個門類,總是會走或

原创 Windows驅動分發函數中IRP處理的一個細節

        最近編寫一個網口轉虛擬串口驅動,在處理Read和Write分發函數過程的時候,把數據通過網絡成功發出去了。但是應用程序或者串口設置工具的讀寫一直沒有成功返回,通過串口監控工具AccessPort137進行監控到Read和W

原创 ubuntu下gcc鏈接靜態庫.a文件

    ubuntu系統下需要鏈接.a靜態庫文件,查找了一些資料運行gcc命令發現都不能鏈接成功。最後自己通過一些測試,成功鏈接並且運行。     使用命令如下: gcc -o test dll_test.c -L  ./  SDKUse

原创 WinDbg 小貼士 -- 通過雙機聯調來遠程調試應用程序

     雙機聯調時,不僅可以調試內核層,也可以調試應用層。      被調試的系統:XP系統,因此沒有session會話需要切換。     1 使用 !process 0 0 獲取用戶空間的所有的進程的信息,然後找到你需要調試的exe進

原创 ReacOS源代碼閱讀之驅動--atexit實現原理和機制

    之前的<<main函數執行前後--全局構造和atexit>>文章裏說到atexit函數註冊的函數是在main函數之後執行的,同時類似於棧,後註冊的函數先執行。     今天通過分析ReactOS的源代碼,來驗證這個結論吧。    

原创 軟件設計師算法之分治法--歸併排序

    最近準備要考中級軟件設計師。該門考試涉及到算法相關的,剛好也順帶着整理下之前自己學習過的知識。     算法的學習沒有什麼捷徑,就是理解算法思想和邏輯。最重要的一點,一定要自己編寫代碼,調試通過,這樣纔算是完成了算法的學習。  

原创 Linux下Make編譯結果輸出到文件

    Linux系統下執行make命令,編譯比較大一點的工程或者文件的時候,在命令行下錯誤和警告信息直接就把我們的實現覆蓋了。     把編譯日誌輸出到文件是個選擇,執行如下命令即可達到目的。       make > build.lo