内核编程
文章平均质量分 68
baggiowangyu
这个作者很懒,什么都没留下…
展开
-
遍历Windows系统的内核模块
自己做了一个工具需要遍历Windows系统加载的内核模块信息,网上查了一些都是用Zwxxx内核函数来做。后来发现完全没必要... 直接上代码:#include #include #include #include #pragma comment(lib, "psapi")#define ARRAY_SIZE 1024void EnumKernelModule(){原创 2011-12-22 13:03:04 · 3139 阅读 · 0 评论 -
[Windows驱动开发](二)基础知识——数据结构
本节主要介绍驱动开发的一些基础知识。 1. 驱动程序的基本组成 1.1. 最经常见到的数据结构 a. DRIVER_OBJECT驱动对象// WDK中对驱动对象的定义// 每个驱动程序都会有一个唯一的驱动对象与之对应// 它是在驱动加载时被内核对象管理程序创建的typedef struct _DRIVER_OBJECT原创 2012-08-01 22:30:21 · 14743 阅读 · 2 评论 -
[Windows驱动开发](三)基础知识——驱动例程
一、NT式驱动的基本例程1. 驱动入口函数——DriverEntry// 驱动程序的一般性定义NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath);// DriverEntry的主要工作是对驱动程序进行初始化。它由系统进程System调用的。驱动被加原创 2012-08-07 17:25:16 · 16248 阅读 · 1 评论 -
[Windows驱动开发](一)序言
笔者学习驱动编程是从两本书入门的。它们分别是《寒江独钓——内核安全编程》和《Windows驱动开发技术详解》。两本书分别从不同的角度介绍了驱动程序的制作方法。 在我理解,驱动程序可分为两类三种: 第一类:传统型驱动 传统型驱动的特点就是所有的IRP都需要自己去处理,自己实现针对不同IRP的派发函数。其可以分为以下两种: 1. Nt式驱原创 2012-07-29 15:38:24 · 51378 阅读 · 6 评论 -
[Windows驱动开发](四)内存管理
一、内存管理概念1. 物理内存概念(Physical Memory Address) PC上有三条总线,分别是数据总线、地址总线和控制总线。32位CPU的寻址能力为4GB(2的32次方)个字节。用户最多可以使用4GB的真实物理内存。PC中很多设备都提供了自己的设备内存。这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实读写的是设备内存地址,而不是物理内存地址。原创 2012-09-03 09:48:27 · 13168 阅读 · 4 评论 -
KdPrint使用方法
格式说明符 类型%c ANSI字符 char%C 宽字符 wchar_t%d,%i 十进制有符号整数 int%D 十进制__int64 __int64%I IRP主功能代码和次功能代码 PIRP%l 十六进制的__int64 __int64转载 2013-08-15 17:26:10 · 1576 阅读 · 0 评论 -
Windows文件系统过滤驱动中打开文件时如何避免重入
调用下面的函数可以避免在打开回调中打开新的文件的时候引起重入NTSTATUS IoCreateFileSpecifyDeviceObjectHint( __out PHANDLE FileHandle, __in ACCESS_MASK DesiredAccess, __in POBJECT_ATTRIBUTES ObjectAttributes, _原创 2015-02-13 17:12:03 · 2011 阅读 · 1 评论