本篇文章将对PCIe驱动程序的源文件代码作详细解释与说明。整个WDF驱动程序工程共包含4个头文件(已经在上篇文章中讲解)和3个.c文件(Driver.c Device.c Queue.c)Driver.c在看复杂的代码前,先给出程序流程图 1 #include "driver.h" 2 #inc.....
在WDF的PCIe驱动程序中,共有四个.h文件(Public.h Driver.hDevice.h Trace.h)。本文将分别对四个文件源代码进行详细的解释。Public.h 1 #ifndef _USER_H 2 #define _USER_H 3 // 4 // Define an Inter...
WDK和DDK的作用 开发WINDOWS下的驱动程序,需要一个专门的开发包,如:开发JAVA程序,我们可能需要一个JDK,开发 WINDOWS应用程序,我们需要WINDOWS的SDK,现在开发WINDOWS下的驱动程序,我们需要一个DDK/WDK。驱动程序的文件格式都是PE格式。Windows驱动....
分类:
其他好文 时间:
2015-07-28 20:46:17
阅读次数:
128
本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法。在上一篇简要介绍了WDF和开发环境搭建后,本篇将讲述几个WDF中的概念,对开发者了解WDF非常有帮助,属于“内功部分”;本篇文章结构将没那么清晰,当句句都是作者通过看书、看论文、看MSDN提炼出来的...
本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法。这个系列的博客将首先用一个篇幅为不懂Windows下PCI/PCIe驱动开发的介绍WDF和开发环境搭建,接下来几篇将直接讲述程序编写,看完这几篇后,希望能够帮助读者了解如何通过500行左右的代码实现...
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