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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

做一個myhello.c,

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

同一目錄下增加sources文件,

TARGETNAME=myhello TARGETTYPE=DRIVER SOURCES=myhello.c

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

!INCLUDE $(NTMAKEENV)\makefile.def

然后從驅(qū)動build環(huán)境進入myhello目錄,build;?

成功,構(gòu)建出.sys驅(qū)動程序;

然后使用此文的入門驅(qū)動程序;

? ??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,則出現(xiàn)下圖錯誤;提示代碼有錯;代碼應該沒問題;

? ? 此問題可能和驅(qū)動程序框架有關(guān);先來學習驅(qū)動開發(fā)中KMDF和UMDF的概念;

?

WDF驅(qū)動中KMDF與UMDF區(qū)別

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

WDF和WDM的關(guān)系有點類似于MFC和Windows SDK的關(guān)系,有編程經(jīng)驗的人一看就知道為何WDF開發(fā)比WDM容易了。

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

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


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

3、無論內(nèi)核模式的驅(qū)動程序或者用戶模式的驅(qū)動程序,都使用同一環(huán)境進行構(gòu)建,這一環(huán)境稱為WDK;都采用同一套對象模型構(gòu)建,采用同一個基礎(chǔ)承載,這個基礎(chǔ)就是WDF。由于WDF驅(qū)動模型提供了面向?qū)ο蠛褪录?qū)動的驅(qū)動程序開發(fā)框架,大大降低了開發(fā)難度。

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

? ? KMDF是內(nèi)核模式驅(qū)動程序;UMDF是用戶模式驅(qū)動程序;

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

?

關(guān)于KMDF的進一步描述見,

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。