1.8驅動代碼中和區別-24課_第1頁
1.8驅動代碼中和區別-24課_第2頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1.8 驅動代碼中C和C+代碼區別-24課A、函數調用約定 B、C和C+編譯方式C、用C+方式編譯驅動 D、C代碼升級至C+E、優化21課的代碼課時:16分*.c當文件后綴名為*.c時 編譯器將會用C編譯器方式編譯*.cpp當文件后綴名為*.cpp時 編譯器將會用C+編譯器方式編譯區別:解決辦法在需要用到C方式編譯的函數前加extern C需要用C方式編譯的頭文件做如下修改#pragma once #ifdef cplusplus extern C#endif#include /這里包含需要用C方式編譯的頭文件 #ifdef cplusplus#endif1errors in director

2、y g:驅動教程024_驅動代碼中c和c+代碼區別mini_ddk 1mini_ddk.obj : error LNK2001: unresolved external symbol struct_ServiceDescriptorTable * KeServiceDescriptorTable (?KeServiceDescriptorTable3PAU_ServiceDescriptorTableA) 1bufferoverflowk.lib(gs_support.obj) : error LNK2019: unresolved external symbol _DriverEntry8

3、referenced in function _GsDriverEntry8 1sysi386ddk_helloworld.sys : error LNK1120: 2 unresolved externals?DriverEntryYGJPAU_DRIVER_OBJECTPAU_UNICODE_STRINGZ_DriverEntry8 /要求格式?DriverEntryYGJPAU_DRIVER_OBJECTPAU_UNICODE_STRINGZ?實例 修改21課的代碼 升級到C+編譯模式A、為入口函數 添加extern C B、修改Source文件C、修改21課的BUGextern C d

4、eclspec(naked) stdcalltest(int a, int b)前面已經完成了初級內核代碼的編寫,已經是一個小巧完整的驅動文件了,本節課要講解一下理論知識。編譯器認死理兒,載入文件時.C就按C方式.CPP就按C+方式。我們將之前的.C文件改成.CPP,再用BUILD編譯一下就發現了一大堆的錯誤,解決的辦法寫在教案中.將代碼加入頭文件再次編譯后只剩下3個錯誤,頭文件的錯誤已經沒有了,再看下錯誤信息(教案中的紅字).大概是說函數符號沒有找到,另外入口函數也沒找到,總體上是LINK鏈接錯誤,所以在這兩個函數前也要加入extern C按照C方式編譯.然后看一下mini_ddl.obj里

5、入口函數被替換成了一個長串的入口函數?DriverEntryYGJPAU_DRIVER_OBJECTPAU_UNICODE_STRINGZ ?在 C 方式的時候是原來的入口函數_DriverEntry8雖然 DDK 方式編譯成功了,但是在 VC+中還是提示錯誤,這是一個非常經典的錯誤,我們在 屬性頁 - C/C+ - 高級 -編譯為 里面設置為”默認”或者”編譯為 C+代碼”.還有在上節課的測試中有一個 BUG,因為在卸載函數中是直接恢復代碼,應該加上一個判斷,如果在未HOOK 的情況下就不要再做代碼恢復了.比如在虛擬機里測試前面課程的代碼在卸載的時候就藍屏了,而更改后的代碼就不會藍屏了.前面我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論