摘要:
派遣函数是Windows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中。IRP与派遣函数IRP的处理机制类似于Windows应用程序中的“消息处理”,驱动程序接收到不同的IRP后,会进入不同的派遣函数,在派遣函数中IRP得到处理。1.IRP在Windows内核中,有一种数据结构叫做IRP(I/O Request Package),即输入输出请求包。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求。操作系统 阅读全文
摘要:
1:打开SCM管理器函数SC_HANDLE OpenSCManager(LPCTSTR lpszMachineName,//计算机名称 LPCTSTR lpszDatabaseName,//scm数据库名称 DWORD fdwDesiredAccess); // 使用权限----Open SCManager 函数打开指定计算机上的service control manager database。其中参数lpszMachineName指定计算机名,若为空则指定为本机。参数lpszDatabaseName指... 阅读全文
摘要:
★驱动入口函数(DriverEntry) DriverEntry是加载驱动的函数,由系统进程调用。其原型如下:NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, // 指向系统创建的驱动对象 IN PUNICODE_STRING pRegistryPath // 指向驱动服务键的键名);★创建设备对象(IoCreateDevice)NTSTATUS IoCreateDevice( IN PDRIVER_OBJECT DriverObject, // 指向驱动对象 IN ULONG DeviceExtensionSize, // ... 阅读全文
摘要:
由于你的驱动将要绑定到文件系统驱动的上边,文件系统除了处理正常的IRP 之外,还要处理所谓的FastIo.FastIo是Cache Manager 调用所引发的一种没有irp 的请求。换句话说,除了正常的Dispatch Functions 之外,你还得为DriverObject 撰写另一组Fast Io Functions.这组函数的指针在driver->FastIoDispatch. 首先需要了解的是:FastIo 是独立于普通的处理IRP 的分发函数之外的另一组接口。但是他们的作用是一样的,就是由驱动处理外部给予的请求。而且所处理的请求也基本相同。其次,文件系统的普通分发例程和fa 阅读全文
摘要:
一、背景介绍1.1WindowsNT操作系统的组成1.1.1用户模式(UserMode)与内核模式(KernelMode) 从Intel80386开始,出于安全性和稳定性的考虑,该系列的CPU可以运行于ring0~ring3从高到低四个不同的权限级,对数据也提供相应的四个保护级别。运行于较低级别的代码不能随意调用高级别的代码和访问较高级别的数据,而且也只有ring0层的代码可以直接进行对物理硬件的访问。由于WindowsNT是一个支持多平台的操作系统,为了与其他平台兼容,它只利用了CPU的两个运行级别。一个被称为内核模式,对应80x86的ring0层,操作系统的核心部分,包括设备驱动程序都运. 阅读全文
摘要:
WDK(Windows Driver Kit)是一种完全集成的驱动程序开发系统,它包含 Windows DDK,用于测试 Windows 驱动器的可靠性和稳定性.WDM 是 Win32设备驱动程序体系结构Windows设备驱动程序,过去是WDM(Windows Driver Model)框架,编程复杂,初学者难以掌握其编程要领。为了解决这一问题,微软对WDM驱动程序的架构做了改进,形成了全新的WDF(Windows Driver Foundation)框架结构。它提供了面向对象和事件驱动的驱动程序开发框架,大大降低了开发难度。从现在开始,掌握Windows设备驱动程序的开发人员,由过去的“专业 阅读全文
摘要:
vWDK(WindowsDriverKit)是一种完全集成的驱动程序开发系统,它包含WindowsDDK,用于测试Windows驱动器的可靠性和稳定性.WDM是Win32设备驱动程序体系结构vCreateFile函数创建或打开下列对象,并返回一个可以用来访问这些对象的句柄。文件pipes邮槽通信资源磁盘驱动器(仅适用于windowsNT)控制台文件夹(仅用于打开)HANDLECreateFile(LPCTSTRlpFileName,//指向文件名的指针DWORDdwDesiredAccess,//访问模式(写/读)DWORDdwShareMode,//共享模式LPSECURITY_ATTRIB 阅读全文