在本節中,我們學習在驅動中如何操作雙向鍊錶:鍊錶的建立,初始化,遍歷,刪除。驅動中有自己的鍊錶接構,也有相專用的操作鍊錶函式,也可以用c/c++中自已實現的鍊錶。
驅動中的鍊錶接構是:list_entry
操作鍊錶的主要api有:
initializelisthead 初始化鍊錶
islistempty 判斷鍊錶是否為空
insertheadlist 從頭部插入
inserttaillist從尾部插入
removeheadlist 從頭部刪除節點
removetaillist 從尾部刪除節點
下面一段**初始化乙個鍊錶並便利顯示:
pdata_link head;//=new(pagedpool) data_link; pdata_link pdata; void link_init() //從鍊錶中取出,並顯示 dbgprint("head=%x\n",head); pdata_link pnode=head; do //判斷 r遍歷完成否 while (!(pnode==head)); }
下面這段**,從頭部刪除乙個節點並便利顯示結果:
void link_delete() while (!(pnode==head)); }
具體參看完整原始碼。
菜鳥之驅動開發7
驅動是ring0的程式 我們ring3代的程式如果想控制ring0級的功能,那麼就需要學會ring0與ring3之間的通訊。今天就開始學習驅動與應用程式之間的通訊。我們需要在驅動產現乙個加法運算,然後我們在應用程式將兩個運算數傳入到驅動層,由驅動層計算了結果返回給應用程。我們向驅動傳輸命令需要用到 ...
菜鳥之驅動開發11
在本節中,我們將學習驅動層的記憶體管理,介紹記憶體管理中常用的api,並與應用層內管理api相對應。核心中常用的記憶體管理api與應用層記憶體管理api對應關係如下 核心api 應用層c api 說明rtlcopymemory memcpy 記憶體拷貝 rtlcopybytes memcpy 記憶體...
C 基礎學習之12 測試驅動開發
測試驅動開發,英文全稱 test driven development,簡稱tdd,是一種不同於傳統軟體開發流程的新型的開發方法。它要求在編寫某個功能的 之前先編寫測試 然後只編寫使測試通過的功能 通過測試來推動整個開發的進行。這有助於編寫簡潔可用和高質量的 並加速開發過程。測試驅動開發的基本過程如...