种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

UMDF

(2021-07-02 19:00:04) 百科综合

UMDF

User-Mode Driver Framework(用户模式驱动程式架构,简称UMDF),是美国微软公司所提出视窗驱动程式基础(Windows Driver Foundation)的一部分,运行于用户模式(user mode),仅能访问用户地址空间,是核心模式驱动程式框架(Kernel-Mode Driver Framework,KMDF)的子集合(subset),因此UMDF所提供的函式支持少于KMDF,两者使用相同的状态机器、使用相同的 I/O 模型。

基本介绍

  • 中文名:用户模式驱动程式架构
  • 外文名:User-Mode Driver Framework
  • 领域:计算机

简介

User-Mode Driver Framework(用户模式驱动程式架构,简称UMDF),是美国微软公司所提出视窗驱动程式基础(Windows Driver Foundation)的一部分,运行于用户模式(user mode),仅能访问用户地址空间,是核心模式驱动程式框架(Kernel-Mode Driver Framework,KMDF)的子集合(subset),因此UMDF所提供的函式支持少于KMDF,两者使用相同的状态机器、使用相同的 I/O 模型。
UMDF提供即插即用(PNP)、电源管理(Power Manager)、异步输出输入等功能,可设定 I/O 伫列,但他的限制在于不处理中断(Interrupt)、不运行 DMA(直接存储器访问,Direct Memory Access),且不能使用核心模式资源如:未标籤页集区(NonPaged Pool),也不完全支持同步化领域(Synchronization scope),在技术上UMDF使用COM(Component Object Model)的动态连结程式库(DLL)为基底技术。

COM架构

UMDF驱动程式是一个基于COM架构的动态连结档(DLL),但UMDF并不使用COM的动态时期运行函式(runtimelibrary),单仅是借用了COM的样式。
UMDF 调用 DllGetClassObject API获取一个指针(pointer),这个指针指向一个IClassFactory的接口,并且激活 CreateInstance 这个属于IClassFactory 接口的函式来产生一个驱动程式的存储器实体(instance)。DLL 照例提供一些函式可以让COM 使用IWDFDriver-based的对象:
  • DllCanUnloadNow
  • DllGetClassObject
  • DllRegisterServer
  • DllUnregisterServer

DllMain

UMDF 驱动程式是一个动态程式库(Dynamic Link Library),运行的时候如同一个进程内(in-process)的 COM server,其代码中包括了DllMain,这是着名的DLL档的进入点(entry point)。
BOOL WINAPI DllMain(       HINSTANCE ModuleHandle,       DWORD Reason,       PVOID /* Reserved */){  if (DLL_PROCESS_ATTACH == Reason)    {    WPP_INIT_TRACING(MYDRIVER_TRACING_ID);        g_ModuleHandle = ModuleHandle;     }  else if (DLL_PROCESS_DETACH == Reason) {        WPP_CLEANUP();  }      return TRUE;};

UMDF接口

  • IWDFObject: 定义基本的 WDF 对象类型(WDF object)
  • IWDFDriver: 代表驱动程式对象(driver object)
  • IWDFDevice: 代表设备对象(device object)
  • IWDFIoQueue: 代表 I/O 要求的伫列(IO Request Queue)
  • IWDFIoRequest: I/O 要求描述(IO Request Description)
  • IWDFIoTarget: 代表 I/O 要求的目标驱动程式(IO Target)
  • IWDFMemory: 提供访问存储器区域(Memory)

相关连结

  • KMDF

标 签

搜索
随机推荐

Powered By 种豆资源网||