Windows用户模式内核模式-转

Windows用户模式内核模式-转
    运行 Windows 的计算机中的处理器有两个不同模式:“用户模式”和“内核模式”。根据处理器上运行的代码的类型,处理器在两个模式之间切换。应用程序在用户模式下运行,核心操作系统组件在内核模式下运行。多个驱动程序在内核模式下运行,但某些驱动程序在用户模式下运行。 当启动用户模式的应用程序时,Windows 会为该应用程...

Windows MDL原理总结

Windows MDL原理总结
    1 先是mdl的数据结构。 2 下面根据用法逐步的讲解mdl数据结构的含义:一般用法,先是 IoAllocateMdl :原型为: 最常用的是VirtualAddress和Length。把自己的NonPageable buffer的起始地址传给IoAllocateMdl ,长度也传给他。可是这个函数具体做了啥呢(下面只...

win32内存管理

win32内存管理
    1.Windows的内存结构Windows系统中的每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,因为32位指针可以拥有从0x00000000至0xFFFFFFFF之间的任何一个值。对于64位进程来说,则这个空间是16EB。由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线...

驱动编程-NT - WDM - WDF 驱动概念

驱动编程-NT - WDM - WDF 驱动概念
    NT是驱动模型:NT式驱动程序模型是一种比较老式的驱动程序模型,但适用于现有的Windows系统。NT式驱动模型没有固定的形式,最简单的NT式驱动程序模型这一特点,程序开发者可以编写一个完全不支持硬件工作的驱动程序,却可以将代码运行在内核模式中。 WDM驱动程序模型:WDM式驱动程序在NT式驱动程序的基础上,还必须: ...

驱动层注册表操作

驱动层注册表操作
    在用户态下面,有大把的API可供我们操作注册表,例如RegOpenKey,RegCloseKey等,这些API都是由windows提供给用户态使用的API。 那么对于驱动层了,因为驱动编程,并没有哪个能够提供额外的库可供我们调用,肯定是不能调用如RegOpenKey等这些API函数,那难道内核态就不能操作注册...

内核层与应用层通信详解

内核层与应用层通信详解
    做驱动开发的肯定会遇到应用层与内核层的通信的问题,首先说内核层与应用层的通信可以大概分为两个方面,第一是应用层向内核层主动传递消息,第二是内核层主动与应用层通信。下面我们将分开来谈两个方面。 我们先来看应用层向内核层传递的方法: [cpp] view plain copy BOOL DeviceIoControl...

Overlapped I/O 和 完成端口等异步IO在内核中的通知方式

Overlapped I/O 和 完成端口等异步IO在内核中的通知方式
    写这篇文章的动机:是因为最近在应用程序中调用DeviceIoControl读写自己做的一个驱动程序的数据,传输的数据包很多。老的处理方式只是简单的采用多线程阻塞读写数据,这几天突然想到了完成端口,于是换成 完成端口后,只用一个线程,投递上百个Overlapped读写操作,效率比原来高了许多,因此就想从windows内核...

完成端口

完成端口
    这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用MFC编写的图形界面的示例代码。 我的初衷是希望写一份互联网上能找到的最详尽的...

内核编程之-系统时间和定时器

内核编程之-系统时间和定时器
    内核编程与应用程序编程一个很重要的不同点在于:应用编程中,多数情况下只需考虑单线程就可以;在内核编程中,绝大多数情况下所写的代码都位于多线程环境中。 获得当前“滴答数”: 获得系统日前和时间往往是为了写日志,获得启动毫秒数则很适合用来做一个随机数的种子。有时也使用时间相关的函数来寻找程序的性能瓶颈。 在Win32开发中...
共16条记录
返回首页
返回首页 img
返回顶部~
返回顶部 img
';