原创 內核驅動中改寫寄存器值

在Kernel Model的驅動程序中向給定的寄存器地址、內存地址或IO端口地址等16進制的地址寫入指定的值。 主要依靠的是MSDN中提供的MmMapIoSpace函數進行的。該函數將一個十六進制的物理地址映射到一個指針,然後針對該指針進

原创 設備節點和設備堆棧

在 Windows 中,設備由即插即用 (PnP) 設備樹中的設備節點來表示。通常,向設備發送 I/O 請求時,一些驅動程序會幫助處理該請求。這些驅動程序中的每一個都與一個設備對象相關聯,這些設備對象在堆棧中進行排列。設備對象的順序與它

原创 HCK驅動簽名

一、HLK/HCK簽名 這種類型的驅動簽名需要先進行HLK/HCK的測試,其中HCK(HardwareCertification Kit)是win8、win8.1的驅動測試工具;而HLK(Hardware Lab Kit)是微軟隨win1

原创 Computer Hardware ID(CHID)及驅動推送

以往Windows Update(WU)在進行驅動推送時,都是依據HWID(Hardware ID)進行的,機器上每個設備,比如聲卡、網卡、觸控芯片等等,都有自己的HWID。但WU卻無法對不同型號的機器進行區別。比如同一款聲卡,它可能被安

原创 NTSTATUS Code

These are from the Windows .NET Server 2003 RC2 DDK.   00000000 STATUS_SUCCESS 00000000 STATUS_WAIT_

原创 生成具有目錄結構的CAB文件

一、使用makecab.exe生成CAB文件 在微軟簽名的過程中有時需要提交.cab格式的文件,該格式是使用微軟的makecab.exe或Cabarc.exe來進行生成的。 這裏主要介紹的是使用makecab.exe來生成cab文件的過程

原创 KMDF中未分頁內存的類型選擇

在內核驅動程序中,內存空間的動態分配不能使用C語言的malloc等函數,取而代之的是ExAllocatePoolWithTag()和ExFreePool(),使用方法舉例如下: #defineTEST_POOL_TAG          

原创 esp和ebp寄存器

一、概括說明 http://bbs.chinaunix.net/thread-1777156-1-1.html esp是棧指針,是CPU機制決定的,push、pop指令會自動調整esp的值 又因爲函數的參數和局部變量,其實是與進入函數那時

原创 AT&T與Intel彙編語法的比較

GCC採用的是AT&T的彙編格式, 也叫GAS格式(Gnu ASembler GNU彙編器), 而微軟採用Intel的彙編格式.  語法上主要有以下幾個不同. 1、寄存器命名原則 在 AT&T 彙編格式中,寄存器名要加上 '%' 作

原创 KMDF版本以及庫文件的命令規則

一、KMDF版本號與WDK和OS的對應關係 KMDF的版本號基本上都是伴隨着WDK的發佈而更新的,而WDK的更新一般又是和OS是同步的,比如:Win7對應WDK7,Win8對應WDK8,Win8.1對應WDK8.1,Win10對應WDK1

原创 彙編語言中循環語句的實現

一、概述 C語言中有許多不同的結構,比如if-else、do-while、while、for、swich等等,這些結構的彙編實現都是一層一層在前者的基礎上進行構建的。比如if-else是基於jmp命令實現的,do-while是基於if-e

原创 eax, ebx, ecx, edx, esi, edi, ebp, esp等通用寄存器的作用

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 彙編語言中CPU上的通用寄存器的名稱,是32位的寄存器。如果用C語言來解釋,可以把這些寄存器當作變量看待。 比方說:add eax,-2 ;  

原创 解決內核驅動開發中設備名稱顯示不正確的問題

爲了讓驅動與上層應用程序可以通信,我們定義了一個工具接口。當該接口被打開時,驅動會專門創建一個設備並掛載在Sample driver下面,它就是用來與應用程序進行通信的接口。 但之前,該設備在設備管理器中的顯示一直是有問題的,一直被標識成

原创 靜態局部變量

在局部變量前加上“static”關鍵字,就成了靜態局部變量。靜態局部變量存放在內存的全局數據區。函數結束時,靜態局部變量不會消失,每次該函數調用 時,也不會爲其重新分配空間。它始終駐留在全局數據區,直到程序運行結束。靜態局部變量的初始化與

原创 設備協安裝程序

CoInstaller,也稱協同安裝程序,是微軟公司開發的win32的DLL,它是用來幫助在Windows 2000以後的系統上進行設備安裝。它被Setup API調用作爲類安裝程序的“助手”。例如,供應商可以提供協同安裝程序將特定設備信