原创 windbg調試棧破壞

  本文根據《windows高級調試》5.2.2章節提供的示例進行的實驗,在win10平臺,使用該書提供的bin文件進行調試,因平臺不一樣在實驗過程中發現跟書上有些不同,本章書上的一些調試方法的正確性有待商榷(可以留言討論)。 調試準備

原创 OBS源碼閱讀計劃

  去年年中,看過一段時間OBS源碼,當時主要想通過它來對3D全屏圖片的抓取,它是通過HOOK D3D和OpenGL來實現的,不過後來我找到了更好的方式,所以閱讀OBS源碼也就終止了。   今年正好有機會可以去做自己想做的事情,所以還是想

原创 win10 虛擬顯示器開發

   

原创 記一次藍屏問題解決

  最近看了張銀奎的《軟件調試》第30章,有種醍醐灌頂、如沐春風的感覺,想找找機會去用windbg去實戰下。   最好的方式是看看部門有沒有現有的問題讓我去跟,於是找到領導,問最近有沒有什麼藍屏問題之類的需要跟蹤的,領導喜笑顏開,你真我的

原创 win7上virtualMonitor的實現--wddm過濾

  擴展屏效果圖

原创 win7 x64 inline hook的嘗試

最近因爲虛機性能問題,需要驗證下是不是因爲內核態加鎖時間過長導致,所以需要在內核態hook兩個內核函數:KeAcquireSpinLockAtDpcLevel和KeReleaseSpinLock,虛機的操作

原创 windows7虛擬顯示器部署(Virtual monitor)

最近有些網友看了我之前的博客之後,向我要虛擬顯示器的bin文件,由於之前代碼是綁定在VDI下的,沒有單獨的虛擬顯示器代碼,所以抽空提取了下相關代碼,單獨編譯。 下載地址: https://pan.baidu.com/s/1Ey-R4Z_9

原创 WDDM過濾驅動在GPU VDI上的運用(虛擬顯示器+高性能截屏)

  背景 之前有做windows下的一個WDDM過濾驅動,主要用於雲桌面,我們當前使用的是KVM的虛擬化+spice的傳輸協議。 VDI桌面虛擬化中需要硬件GPU的運算能力增強圖像運算處理能力,在普通VDI場景下,QXL顯卡使用CPU模擬

原创 Spiceserver中鏈表的使用

    spiceserver代碼中很多地方都用到了鏈表,剛開始看代碼的時候會因爲這些鏈表,或者有關這些鏈表的宏而感到困惑,造成閱讀上的困難,其實這些代碼我們可以單獨將其提取出來,寫一些demo進行驗證和測試,這樣就能很快對這些鏈表機制進

原创 開發應用識別軟件遇到的一些windows編程技能

(1)winmain函數的參數解析: /* 對於64位應用程序的處理,64位的SR進程只負責將64位dll注入到64位應用程序中,其他工作都由32位SR進程處理 */ LPWSTR *szArgList; int argCount;

原创 關於Linux信號的備忘錄

最近在做一個動態日誌模塊,需要用到linux信號,雖然用到的有關信號的東西都比較簡單,但是我感覺還是要系統的學一下信號,爲加強理解和今後便於記憶,寫了下學習和使用中的一些備忘錄。 安全的結束進程 循環的終止 有時候對於某些程序,我們不知道

原创 程序員的消極開發

在遠程協助開發階段,我這邊功能開發完後,去找A工聯調,發現A工在那很悠閒,就問,不是下個月就要轉測了嗎,怎麼這麼悠閒?工程師A不慌不忙的說,我在等待B工呢,我的XXX功能需要他那邊程序向我發送數據我才能進行下去,接着我又找到B工,他也在閒

原创 windows信號量實現讀寫同步

    windows上的線程同步提供了用戶狀態下的線程同步和內核狀態下的線程同步,內核下的線程同步因爲要涉及到內核模式和用戶模式的切換,所以消耗是用戶模式下的幾倍,但是內核下的同步機制不僅適用於線程同步還適用於進程間同步,這是用戶模式下

原创 windows驅動讀寫文件不成功

做的虛擬顯示器有個功能是設置顯示器的Edid,Edid的數據是由應用程序傳進來的,爲防止每次開機、重啓都要進行Edid的設置,需要對EDID信息進行保存。爲了保存Edid,我需要在驅動裏面操作文件,然而在操作文件的時候會出現一些問題。 讀

原创 wfp sample msnmntr的部署和測試

工程選擇最近要做Windows網絡過濾,所以找了下微軟有關wfp的sample來進行學習,於是就找到了msnmntr這個工程,它在微軟sample中的Windows-driver-samples-master\network\trans\