日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

win7构建成功helloworld驱动、WDF驱动中KMDF与UMDF区别

發布時間:2025/4/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 win7构建成功helloworld驱动、WDF驱动中KMDF与UMDF区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做一個myhello.c,

#include <ntddk.h>VOID DriverUnload(PDRIVER_OBJECT driver) {DbgPrint("goodbye"); }// DriverEntry,入口函數。相當于main。 NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) {DbgPrint("first: Hello, my salary!");// 設置一個卸載函數便于這個函數能退出。driver->DriverUnload = DriverUnload;return STATUS_SUCCESS; }

同一目錄下增加sources文件,

TARGETNAME=myhello TARGETTYPE=DRIVER SOURCES=myhello.c

?同一目錄下增加MAKEFILE文件,

!INCLUDE $(NTMAKEENV)\makefile.def

然后從驅動build環境進入myhello目錄,build;?

成功,構建出.sys驅動程序;

然后使用此文的入門驅動程序;

? ??https://blog.csdn.net/bcbobo21cn/article/details/112074021

makefile文件和前面一樣;

sources文件如下;

TARGETNAME=mytest TARGETTYPE=DRIVERKMDF_VERSION_MAJOR=1SOURCES= mytest.rc \mytest.c TARGET_DESTINATION=wdfMSC_WARNING_LEVEL=/W4 /WX

附帶一個資源文件,mytest.rc

#include <windows.h>#include <ntverp.h>#define VER_FILETYPE VFT_DRV #define VER_FILESUBTYPE VFT2_DRV_SYSTEM #define VER_FILEDESCRIPTION_STR "Sample Driver using WDF" #define VER_INTERNALNAME_STR "mytest.sys"#include "common.ver"

如果sources文件的第三句,寫為?

? ??INCLUDES=$(WDKPATH)\inc\wdf\kmdf\1.9\

build,則提示找不到 <wdf.h>;

如果第三句寫為

?INCLUDES=C:\WinDDK\7600.16385.1\inc\wdf\kmdf\1.9\
或,
KMDF_VERSION_MAJOR=1

build,則出現下圖錯誤;提示代碼有錯;代碼應該沒問題;

? ? 此問題可能和驅動程序框架有關;先來學習驅動開發中KMDF和UMDF的概念;

?

WDF驅動中KMDF與UMDF區別

早期的Windows 95/98的設備驅動是VxD(Virtual Device Driver),其中x表示某一類設備。從Windows 2000開始,開發驅動程序必以WDM(Windows Driver Model)為基礎的,
從Vista開始,微軟推出了新的驅動程序開發環境WDF(Windows Driver Foundation )。

WDF和WDM的關系有點類似于MFC和Windows SDK的關系,有編程經驗的人一看就知道為何WDF開發比WDM容易了。

WDF有KMDF(內核模式的驅動程序)和UMDF(用戶模式的驅動程序)兩種模式:

1、內核模式驅動程序 KMDF(Kernel-Mode Driver Framework): 這類驅動程序作為內核模式操作系統組件的一部分執行,它們管理I/O、即插即用、內存、進程和線程、安全等。內核模式驅動程序通常為分層結構。 關于KMDF更多的內容,可參閱 MSDN中“Getting Started with Kernel-Mode Driver Framework ”。


2、用戶模式驅動程序 UMDF(User-Mode Driver Framework): ?這類驅動程序通常提供 Win32 應用程序與內核模式驅動程序或其他操作系統組件之間的接口。用戶模式驅動程序支持基于協議或基于串行總線(如攝像機和便攜音樂播放器)的設備。關于KMDF更多的內容,可參閱 MSDN中“ Introduction to UMDF“。

3、無論內核模式的驅動程序或者用戶模式的驅動程序,都使用同一環境進行構建,這一環境稱為WDK;都采用同一套對象模型構建,采用同一個基礎承載,這個基礎就是WDF。由于WDF驅動模型提供了面向對象和事件驅動的驅動程序開發框架,大大降低了開發難度。

4、KMDF是Windows系統底層驅動,文件名為:*.SYS,Vista為2萬多外設提供了KMDF,其中也包括USB2.0,因此對于具有USB2.0協議的FX2,只需編寫與FX2相關的UMDF即可;UMDF是用戶層驅動,文件名為:*.DLL。

? ? KMDF是內核模式驅動程序;UMDF是用戶模式驅動程序;

? ? WDM的含義是,Windows Driver Model,Windows驅動程序模型;
? ? WDF的含義是,Windows Driver Foundation,微軟開源驅動程序模塊框架;

?

關于KMDF的進一步描述見,

? ??https://docs.microsoft.com/zh-cn/windows-hardware/drivers/gettingstarted/kmdf-as-a-generic-pair-model

先build出驅動程序;有時間再加載和調試;因為可能引起藍屏,等不需要做其他工作,再單獨加載和調試驅動;

總結

以上是生活随笔為你收集整理的win7构建成功helloworld驱动、WDF驱动中KMDF与UMDF区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。