驅動學習筆記 Hello World !

2021-06-07 04:43:49 字數 1251 閱讀 2959

編譯環境用xp下vc6+ddk

新建乙個資料夾當作工程目錄,路徑是e:/lingdux/

從別的工程copy過來兩個檔案,

乙個是makefile,它用來指定檔案之間的依賴關係,確定專案中哪些檔案時需要重新編譯的,那些事已經編譯過的。裡面的內容不用改,直接預設就ok

另乙個是source,它用來儲存一些配置資訊,內容如下:

targetname=lingdux  這句用來指定目標程式存放的路徑

targettype=driver 這句是指定目標型別,driver為驅動程式

targetpath=driver 這句指定編譯時的中間檔案存放的路徑

sources=lingdux.c  這句指定了原始檔

在工程目錄想建立乙個空檔案命名lingdux.c,雙擊用vc6開啟,開始寫**~!

遵循c語言,只有乙個入口函式driverentry,有兩個引數

ntstatus driver entry(in pdriver_object driverobject, 第乙個是pdriver_object型別 系統程序呼叫的驅動物件

in ounicode_string registrypath)  第二個是in ounicode_string型別  字串型別,註冊路徑

返回值型別為ntstatus,系統狀態。

輸出函式為dbgprint(),包含的標頭檔案是ntddk.h

編寫完成後,發現這個驅動程式沒有退出功能,系統載入後不能停止,重新啟動後才能再次載入,不利於除錯,下面就新增乙個退出功能。

driverobject->driverunload=unload 為驅動物件註冊乙個解除安裝例程指定乙個空函式

在驅動停止的時候被呼叫,用於刪除一些裝置物件,符號鏈結,釋放驅動載入的資源。

void unload(in pdriver_object driverobject)

完整**如下:

#include

void unload(in pdriver_object driverobject)

ntstatus driverentry(in pdriver_object driverobject,in punicode_string registrypath)

儲存以上**,然後開啟ddk,路徑選擇工程目錄,執行build命令,

編譯出來的驅動檔案為e:/lingdux/driver/i386/lingdux.sys

用coderui的驅動載入工具載入

用debug viwe成功截獲到輸出hello world!

Flask學習筆記(四)從helloworld開始

所有flask程式必須有乙個程式例項。flask呼叫檢視函式後,會將檢視函式的返回值作為響應的內容,返回給客戶端。一般情況下,響應內容主要是字串和狀態碼。當客戶端想要獲取資源時,一般會通過瀏覽器發起http請求。此時,web伺服器使用wsgi web server gateway inte ce 協...

Linux驅動程式入門 Hello World

2008 7 16 22 06 17 收藏 列印 投 票 74 中小 linux驅動程式入門 hello world ohy 20080716 1 引言 記得在學習vc 和c語言的時候,一開始都會以乙個hello world的例子作為演示,將學者逐漸引入殿堂,這個幾乎成了計算機程式語言學習必經的乙個...

Linux驅動程式入門 Hello World

1 引言 記得在學習vc 和c語言的時候,一開始都會以乙個hello world的例子作為演示,將學者逐漸引入殿堂,這個幾乎成了計算機程式語言學習必經的乙個入門之路。當然,在學習linux程式設計的時候也是這樣,下面的例子應該是再熟悉不過了 首先用vi編寫乙個c程式 vi hello.c inclu...