本文是对Win7(64)+VS2010+WDK7.1.0(WinDDK\7600.16385.1)开发驱动的小结。一、系统工具1、Win7(amd64位)系统注:已装系统后,管理员身份运行cmd命令,查看bcdedit/settestsigningtrue、bcdedit/debugon等命令是否运...
1 实验要求(WDM驱动)2 编写过程2.1 确立整体架构2.1.1 入口函数——DriverEntry(1)作用设置pDriverObject结构体,注册AddDevice和相关PNP函数,包括IRP_MJ_PNP,IRP_MJ_CREATE等(2)注意AddDevice在Driver_Objec...
windows内核api就是ntoskrnl.exe导出的函数。我们可以跟调用应用层的api一样,调用内核api。不过内核api需要注意的是,如果函数导出了,并且函数文档化(也就是可以直接在msdn上搜索到)。ExFreePool函数导出,并且文档化,那么我们可以直接调用。导出了未文档化,那么我们就要声明。什么叫文档化和未文档化呢?大家来看一个函数:
UCHAR *PsGetProcessIma...
最后的一点开发工作:跟踪驱动。
一、驱动跟踪
1. 包含TMH头文件
#include "step5.tmh"
2. 初始化跟踪
在DriverEntry中初始化。
WPP_INIT_TRACING( DriverObject, RegistryPath );
WDF_OBJECT_ATTRIBU...
在《Windows 驱动开发 - 5》我们所说的读写操作在本篇实现。
在WDF中实现此功能主要为:EvtIoRead和EvtIoWrite。
首先,在EvtDeviceAdd设置以上两个回调事件。
ioQueueConfig.EvtIoRead = EvtIoRead;
ioQueueConfig.EvtIoWrite = EvtIoWrite;
然后,在EvtDev...
在《Windows 驱动开发 - 5》我们所说的读写操作在本篇实现。
在WDF中实现此功能主要为:EvtIoRead和EvtIoWrite。首先,在EvtDeviceAdd设置以上两个回调事件。
ioQueueConfig.EvtIoRead = EvtIoRead;
ioQueueConfig.EvtIoWrite = EvtIoWrite;然后,在EvtDevicePrepareHardwa...
分类:
其他好文 时间:
2015-06-27 22:46:56
阅读次数:
205
1.Ring0驱动层代码的编写:
//codemsg.h 通信控制码的定义
#ifndef _DEFINE_H_
#define _DEFINE_H_
// _number: 0 -> 2047 : reserved for Microsoft 微软保留
// 2047 -> 4095 : reserved for OEMs 用户自定义
#define ...
分类:
其他好文 时间:
2015-06-24 19:08:01
阅读次数:
136
上篇《Windows 驱动开发 - 5》我们设置了回调事件EvtIoDeviceControl,我们在此篇来实现他。
我们知道在进行读写之前我们要进行一定约定,比如同步。
在WDF中控制同步约定的方法为:WdfUsbTargetDeviceSendControlTransferSynchronously
NTSTATUS WdfUsbTargetDeviceSendContr...
上篇《Windows 驱动开发 - 4》我们已经完成了硬件准备。但是我们还没有具体的数据操作,例如接收读写操作。
在WDF中进行此类操作前需要进行设备的IO控制,已保持数据的完整性。
我们知道进行WDF开发主要是跟随IRPs的“脚步”。
I/O Request Delivery Mechanism
I/O request type...
HelloWDM例子编译完成之后,在win7下安装显示查看setupapi.dev看到如下信息这个C:\MyDriver_Check目录完全不是我指定的,我放到c盘根目录下查看inf[SourceDisksFiles]HelloWDM.sys = 1,MyDriver_Check,把该字段修改为He...