1.?安裝WDK,并配置系統環境變量:WDKROOT-D:\WinDDK\7600.16385.1
2.?啟動VS2005,在菜單欄“工具”-“選項”內選擇“項目和解決方案”-“VC++目錄”依次添加所需的目錄,具體配置如下圖:
注意:$(WDKROOT)\inc\api一定要放在第一個,否則會導致編譯失敗
win7安裝vs2015安裝包丟失或損壞。
3.?具體的項目屬性按照如下設置:
注:創建項目時選擇“Win32項目”
vs2008是什么軟件、
vs2010應用程序錯誤報告。?
代碼例子:
?
- #include?<ntddk.h>??
- extern?"C"?VOID?DriverUnload(IN?PDRIVER_OBJECT?pDriverObject);??
- extern?"C"?NTSTATUS?DispatchRoutine(PDEVICE_OBJECT?pDevObj,?PIRP?pIrp);??
- ??
- extern?"C"?NTSTATUS?DriverEntry(PDRIVER_OBJECT?pDriverObject,PUNICODE_STRING?pRegistryPath)//驅動入口??
- {??
- ????DbgPrint("DriverEntry\r\n");??
- ??
- ????pDriverObject->DriverUnload?=?DriverUnload;//注冊卸載函數??
- ????pDriverObject->MajorFunction[IRP_MJ_CREATE]?=?DispatchRoutine;//注冊派遣函數??
- ????pDriverObject->MajorFunction[IRP_MJ_CLOSE]?=?DispatchRoutine;??
- ????pDriverObject->MajorFunction[IRP_MJ_WRITE]?=?DispatchRoutine;??
- ????pDriverObject->MajorFunction[IRP_MJ_READ]?=?DispatchRoutine;??
- ??
- ????return?STATUS_SUCCESS;??
- }??
- ??
- extern?"C"?VOID?DriverUnload(PDRIVER_OBJECT?pDriverObject)??
- {??
- ????DbgPrint("DriverUnload\r\n");??
- }??
- ??
- extern?"C"?NTSTATUS?DispatchRoutine(PDEVICE_OBJECT?pDevObj,?PIRP?pIrp)??
- {??
- ????NTSTATUS?status?=?STATUS_SUCCESS;??
- ????pIrp->IoStatus.Status?=?status;??
- ????pIrp->IoStatus.Information?=?0;??
- ????IoCompleteRequest(pIrp,?IO_NO_INCREMENT);//完成IRP請求??
- ????return?status;??
- }??
編譯運行,會發現提示錯誤,
?
第一種情況:
vs2008 助手破解。?
error LNK2019: 無法解析的外部符號 @__security_check_cookie@4
請您將“項目屬性”-“C/C++”-“代碼生成”的“緩沖區安全檢查”設為“否”
?
第二種情況:
會出現error?C3861:?“SAL_functionClass”:?找不到標識符等等100多的錯誤信息,
vs有一個錯就總之編譯。?
形成原因是因為:安裝了windows?sdk6.0?和7.1的沖突,?在vc項目的lib,?incluce里調整順序。?把7.1放在6.0的前面。
?
第三種情況:
error LNK1295: “/MANIFESTUAC”與“/DRIVER”規范不兼容;鏈接時不使用“/MANIFESTUAC”
?
vs2010編譯和執行在哪。這是因為UAC開啟導致的 , 進入項目 - 屬性 - 連接器 - 清單文件 - 啟用用戶賬戶控制(否)即可
?
編譯成功,出現系統文件: