首页 > TAG信息列表 > Irp
64内核开发第十五讲 IRP 派遣函数 与 通信。 驱动框架补充
目录IRP 派遣函数 与通信方式一丶IRP1.1 IRP介绍 理论知识1.2 IRP的类型1.3 派遣函数1.4 设备对象 与符号链接1.5 IRP堆栈介绍二丶内核与应用层的通信方式 缓存方式(缓冲区方式)2.1 缓存方式2.2 读取 写入 控制等IRP的大小获取2.3 缓存方式派遣函数中的使用例子三丶MDL方式(直接IO方IoCompleteRequest
IoCompleteRequest函数表示调用方已完成所有I/O请求处理操作,并将给定的 IRP 返回给 I/O 管理器。 数原型 编辑 播报 VOID IoCompleteRequest( IN PIRP Irp, IN CCHAR PriorityBoost ); 参数 编辑 播报 Irp 指向将要完成的IRP报文数据结构。 PriorityBoost 指定系统定义Windows内核-7-IRP和派遣函数
Windows内核-7-IRP和派遣函数 IRP以及派遣函数是Windows中非常重要的概念。IRP 是I/O Request Pocket的简称,意思是I/O操作的请求包,Windows中所有User和Kernel之间的交流都会被封装成一个IRP结构体,然后不同的IRP会被派遣到不同的派遣函数里面,通过派遣函数来实现I/O操作。 IRP typeWindows内核驱动--实现修改线程优先级demo
在User下修改优先级比较麻烦,该驱动可以直接用线程ID,和优先级级数两个参数直接修改线程的优先级: Client代码: #include <Windows.h> #include <stdio.h> #include "..\PriorityBooster\PriorityBoosterCommon.h" int Error(const char* message) { printf("%s (error=%d)\nWindows内核开发-4-内核编程基础
Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作。 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Create和Close操作调度实例 4 DeviceIoControl操作调度实例 5 安装和测试驱动程序 整个完关于文件透明加密解密
关于文件透明加密解密 1.windows文件系统概述 硬盘文档加密系统驱动原理一般有两种:通过HOOK一些底层的系统内核调用对文件目录的访问权限进行控制,在文件系统输入输出驱动上层直接建立一个驱动对文件目录的数据进行加密。由于windows文件系统不是物理设备,其堆栈结C/C++底层实现指定磁盘只读
C/C++底层实现指定磁盘只读 燕狂徒写的驱动挂钩,限制磁盘只读,用于保证涉密计算机的稳定,相当于将磁盘变成ROM #include "ntddk.h"#include#define DRIVERNAME "OnlyRead(GongXiPeng!)" // for use in messagestypedef struct tagDEVICE_EXTENSION { PDEVIC/C++ 实现文件透明加解密
C/C++ 实现文件透明加解密 今日遇见一个开超市的朋友,真没想到在高校开超市一个月可以达到月净利润50K,相比起我们程序员的工资,真是不可同日而语,这个世道啊,真是做程序员不如经商开超市,我们高科技的从业者,真是造原子弹不如卖茶叶蛋。请见代码详细注释 //内核编程
内核编程 一. 驱动程序概述 1. 介绍 每一个进程都有一个4GB的进程空间,储存了进程需要的所有代码和数据,并分为用户空间和内核空间不同进程的用户空间相互隔离,互不影响,共享内核空间,操作系统通过内核层代码给应用程序提供支持用户空间代码不能直接访问内核空间,执行的命令也有限windows驱动开发-HelloWorld驱动
#include <ntddk.h> extern "C" VOID DriverUnload(IN PDRIVER_OBJECT pDriverObject); extern "C" NTSTATUS DispatchRoutine(PDEVICE_OBJECT pDevObj, PIRP pIrp); extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUWDF驱动中访问 PCI 设备配置空间
Windows XP 和 Windows Server 2003 及更高版本的操作系统可以独占控制 PCI 本地总线 规范定义的配置空间标头以及功能链接列表中的所有功能。 驱动程序不得尝试修改这些寄存器。 但是,驱动程序可以使用 IRP _ MN _ 写入 _ 配置请求或总线接口标准的 SetBusData 方法, _ 将不Windows驱动开发易错点总结
总结一下在windows驱动开发中,经常会犯的错误,加以注意! 问题1: 没有完成IRP 这是个新手非常容易犯的错误,没有设置IRP状态,完成IRP。这会导致,调用该驱动的应用程序,无法关闭,即使被kill,也会变成系统进程存在,因为有资源在内核中没清理干净。 pIrp->IoStatus.Status = ntStatus; pIrp->IoS内核驱动驱动对象
目录驱动对象讲解一丶驱动对象1.1 结构1.2 输出代码输出基本的驱动对象信息1.3 结果1.4 其它简介 驱动对象讲解 一丶驱动对象 1.1 结构 在内核中. 每一个驱动模块都是一个驱动对象. 都有一个 DRIVER_OBJECT结构体代表. 可以想象成驱动对象是一个进程容器. 容纳百川. 下面针对驱动Windows 文件过滤驱动经验总结
Windows 文件过滤驱动经验总结作者:sinister本文转载自驱动开发网看了 ChuKuangRen 的第二版《文件过滤驱动开发教程》后,颇有感触。我想,交流都是建立在平等的基础上,在抱怨氛围和环境不好的同时应该先想一想自己究竟付出了多少?只知索取不愿付出的人也就不用抱怨了,要怪也只能怪自己。64位内核开发第一讲,驱动框架.
驱动框架介绍 1.应用程序3环到0环的框架 1.1 3环到0环的驱动框架. 首先是我们的3环API API -> 封装数据跟命令 ->调用kerner32或者ntdll的函数 ->进行封装,传送给IRP结构体 ->调用驱动 这里接触了一个新的概念.IRP .IRP结构体其实是3环的数据以及命令.进行封装传送到0环的时候.保存键盘过滤驱动源码
#include <wdm.h> // Kbdclass驱动的名字 #define KBD_DRIVER_NAME L"\\Driver\\Kbdclass" typedef struct _C2P_DEV_EXT { // 这个结构的大小 ULONG NodeSize; // 过滤设备对象 PDEVICE_OBJECT pFilterDeviceObject; // 同时调用时的保护锁 KSPIN_LO键盘记录器,可截获到 QQ 的password
因为 QQ password做了特殊的保护,所以通过远程注入得到password框内容以及通过钩子来得到键盘消息均不能探測到 QQ 的password,可是通过对键盘驱动的过滤却是能够记录下 QQ password输入期间的内容。附上源代码。 #define DBG 1 #include <ntddk.h> #include <ntst一个简单的文件系统过滤驱动框架
很多人认为文件系统过滤驱动很复杂,其实也有一定道理,因为需要有很多细节需要考虑到,这是一个简单的文件系统过滤驱动,抛去了大部分细节,留下了一个简单的框架,其实这样文件系统过滤驱动就变得蛮简单的,很多接口可以不用实现,只要知道大致流程,其它都将会很清晰。 #define DBG 1 #