Windows内核编程
ACE1985
这个作者很懒,什么都没留下…
展开
-
《Windows内核编程》の基本汇编指令
1)用VS2010新建Win32 Console Application,工程名为ACECore,工程建立完成后得到打开文件ACECore.cpp,代码如下:#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){return 0;} 2)用VS2010查看汇编代码的方法:1. VC必须处于debug状态原创 2010-05-07 08:32:00 · 3112 阅读 · 1 评论 -
《Windows内核编程》---语言选择的注意点
调用约定:调用约定指的是函数被调用时,会按照不同规则,翻译成不同的汇编代码。当一个函数被调用时,首先会将返回地址压入堆栈,紧接着会将函数的参数依次压入堆栈。不同的调用约定,会指明不同的参数入栈顺序,还会指明不同的清理堆栈的方法。用C语言或者C++语言编译器编译程序时,会有四种不同的调用约定去编译函数:C语言的调用约定,函数由__cdecl修饰;标准调用约定,函数由__stdcall修饰;快速调用约定,函数由__fastcall修饰;C++类成员函数的调用约定,函数由thiscall修饰。不同的调用约定编译后原创 2010-07-06 21:51:00 · 1909 阅读 · 0 评论 -
《Windows内核编程》---NT驱动程序的基本结构和实例
Windows驱动程序分为两类:一类是不支持即插即用功能的NT式驱动程序;另一类是支持即插即用功能的WDM驱动程序。下面代码是一个简单的NT式驱动程序,先看头文件HelloDDK.h:#pragmaonce/*** 这里采用C++语言编写,如果直接包含ntddk.h,函数的符号表* 会导入错误,所以需要加入extern "C",以保证符号表的正确导入*/#ifdef __cplusplusextern"C"{#endif#include//所有NT式驱动程序都要包含该头文件#ifdef __cplusplu原创 2010-07-05 22:48:00 · 3824 阅读 · 2 评论 -
《Windows内核编程》---WDM驱动程序的基本结构和实例
WDM驱动程序的编写实例如下,先定义头文件HelloWDM.h:#pragmaonce#ifdef __cplusplusextern"C"{#endif#include#ifdef __cplusplus}#endif//设备扩展结构体typedefstruct _DEVICE_EXTENSION{ PDEVICE_OBJECT fdo; PDEVICE_OBJECT NextStackDevice; UNICODE_STRING ustrDeviceName; UNICODE_S原创 2010-07-06 16:07:00 · 3620 阅读 · 0 评论 -
《Windows内核编程》---内存管理基本概念
内存管理概念:1)物理内存PC上有三条总线:数据总线、地址总线和控制总线。32位CPU的寻址能力是4GB个字节,用户最多可以使用4GB的真实物理内存。PC中很多设备都提供了自己的设备内存,例如显卡就提供了自己的显存。这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实会读写的设备内存地址,而不会读写物理内存地址。2)虚拟内存地址Windows所有程序(包括Ring0层和Ring3层的程序)可以操作的都是虚拟内存。之所以称为虚拟内存,是因为对它的所有操作最终都会变成一系列对真是物理内存的操作。CP原创 2010-07-08 21:50:00 · 2730 阅读 · 0 评论 -
《Windows内核编程》---内核模式下字符串的基本操作
<br />驱动程序中字符串操作涉及到ASCII字符串、宽字符串,还有DDK定义的ANSI_STRING数据结构和UNICODE_STRING数据结构。<br /> <br />1)ASCII字符串和宽字符串<br />在应用程序中使用两种字符:一是char型字符串,负责记录ANSI字符集,它是指向一个char数组的指针,每个char型变量大小是一个字节,字符串是以0标志字符串结束的;一是wchar_t型的宽字符串,负责描述unicode字符集,它是指向一个wchar_t数组的指针,wchar_t字符大小为原创 2010-07-09 22:48:00 · 5643 阅读 · 0 评论 -
《Windows内核编程》---基本数据结构
驱动对象:一个驱动对象代表一个驱动程序,或者说一个内核模块。驱动对象的结构定义如下(wdm.h):typedefstruct _DRIVER_OBJECT { //结构的类型和大小 CSHORT Type;CSHORT Size; // The following links all of the devices created by a single driver // together on a list, and the Flags word provides an exten原创 2010-06-19 20:28:00 · 2437 阅读 · 0 评论