跟我一起学习windows驱动(PME接口)
来源:互联网 发布:如何精通三坐标编程 编辑:程序博客网 时间:2024/06/05 06:46
WDF编程接口类似PME(Property/Method/Event)接口模型。
属性描述对象特性,通过Get或Retrieve获得属性,通过Set或者Assign设置属性。就像WdfDeviceGetDevicePnpState、WdfDeviceGetDevicePowerState和WdfDeviceSetDeviceState,都是设备对象的属性方法。
除了属性接口,WDF其它接口函数是方法接口,如WdfDriverCreate、WdfDeviceCreate等,WDF驱动程序通过方法函数接口操作WDF框架对象。
事件对于WDF驱动来说非常重要,WDF驱动,除了入口函数DriverEntry,其它的都无外乎事件处理函数,以及事件处理函数调用的子函数。
事件函数实际上就是回调函数,一般把它叫做“事件回调”。
当创建一个回调对象时,可以通过属性结构体WDF_OBJECT_ATTRIBUTES或者其它结构体设置事件回调。当相应的事件发生,系统会检查对象是否有对应事件回调,
有就调用。
基对象WDFOBJECT事件回调,前面已经讲过通过WDF_OBJECT_ATTRIBUTES设置。
子对象事件回调既可以设置公共的基对象回调,也可以设置子对象回调。
以设备对象创建WdfDeviceCreate为例,
_Must_inspect_result__IRQL_requires_max_(PASSIVE_LEVEL)NTSTATUSFORCEINLINEWdfDeviceCreate( _Inout_ PWDFDEVICE_INIT* DeviceInit, _In_opt_ PWDF_OBJECT_ATTRIBUTES DeviceAttributes, _Out_ WDFDEVICE* Device ){ return ((PFN_WDFDEVICECREATE) WdfFunctions[WdfDeviceCreateTableIndex])(WdfDriverGlobals, DeviceInit, DeviceAttributes, Device);}
参数DeviceAttributes用做设置基对象属性。
DeviceInit设置对象特有属性,例如pnp和电源回调。
可以通过下面的函数WdfDeviceInitSetPnpPowerEventCallbacks来设置:
_IRQL_requires_max_(DISPATCH_LEVEL)VOIDFORCEINLINEWdfDeviceInitSetPnpPowerEventCallbacks( _In_ PWDFDEVICE_INIT DeviceInit, _In_ PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks ){ ((PFN_WDFDEVICEINITSETPNPPOWEREVENTCALLBACKS) WdfFunctions[WdfDeviceInitSetPnpPowerEventCallbacksTableIndex])(WdfDriverGlobals, DeviceInit, PnpPowerEventCallbacks);}
参数PnpPowerEventCallbacks是一个回调函数数据结构,设置PNP和电源回调函数。
- 跟我一起学习windows驱动(PME接口)
- 跟我一起学习windows驱动编程(对象和句柄)
- 跟我一起学习windows驱动编程(引用计数、上下文空间)
- 跟我一起学习Makefile
- 跟我一起学习VIM
- 跟我一起学习VIM
- 跟我一起学习VIM
- 跟我一起学习VIM
- 跟我一起学习Windows Store的开发(2):初识Windows Store应用程序
- 跟我一起学习Windows Store的开发(3):Win8重要快捷键+Windows UI
- 跟我一起学习C 第一节
- 跟我一起makefile学习笔记
- 《跟我一起学makefile》学习笔记
- 跟我一起写makefile 学习笔记
- 跟我一起makefile学习笔记
- [置顶]【转载】跟我一起学习VIM
- 跟我一起学习Windows Store的开发(1):如何创建WindowsStore的应用程序
- 跟我一起Makefile
- 按键常规使用
- 036.isEqual 不合理的重写
- 使用mysql查询显示行号
- 冒泡排序算法及其简单优化(基于Java)
- Android四大基本组件介绍与生命周期
- 跟我一起学习windows驱动(PME接口)
- 035.isEqual 两个变量是否相等
- tomcat服务器下打不开img标签src的图片名为中文打不开的问题?
- UVa11478 - Halum
- distribution源码分析(一):Distribution架构
- 034.== 两个变量是否相等
- JAVA多线程和并发基础面试问答
- Linux里如何查找文件内容
- 基于攻击链的威胁感知系统