驱动复习总结--指明代码加载内存位置的几种方式
来源:互联网 发布:阿里云cdn 编辑:程序博客网 时间:2024/06/08 08:58
//第一种方法
//
// demo.h
//
#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <NTDDK.h>
#ifdef __cplusplus
}
#endif
#define PAGEDCODE code_seg("PAGE") //分页内存
#define LOCKEDCODE code_seg() //非分页内存
#define INITCODE code_seg("INIT") //初始化内存块:指明该函数只是在加载的时候需要载入内存,之后可以卸载掉
#define PAGEDDATA data_seg("PAGE")
#define LOCKEDDATA data_seg()
#define INITDATA data_seg("INIT")
//
// demo.cpp
//
#include "demo.h"
#pragma INITCODE
extern "C" NTSTATUS DriverEntry(....)
{
}
#pragma PAGEDCODE
NTSTATUS DispatchRoutine(IN PDEVICE_OBJECT pDevObj,
IN PIRP pIrp)
{
}
#pragma PAGEDCODE
VOID DriverUnload (IN PDRIVER_OBJECT pDriverObject)
{
}
------------------------------------------------
//
//第二种方法
//使编译器把代码放到特定段的传统方法是使用alloc_text编译指示。但不是每种编译器都支持这个编译指示,
//判断是否定义了ALLOC_PRAGMA可以帮助决定能否使用alloc_text编译指示,这个编译指示可以把驱动程
//序的单独例程放到特定段中
#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)
#pragma alloc_text(INIT, StartHook)
#pragma alloc_text(PAGE, DispatchIoCtrl)
#pragma alloc_text(PAGE, RemoveHook)
#pragma alloc_text(PAGE, UnloadDriver)
#endif
- 驱动复习总结--指明代码加载内存位置的几种方式
- 指明代码加载内存位置的几种方式
- AJAX几种加载方式总结
- java 几种加载驱动的方法
- java 几种加载驱动的方法
- 驱动的内存加载
- 数码管的几种驱动方式汇总
- Flex加载图片的几种方式
- comboBox 加载数据的几种方式
- Spring的几种加载方式
- java 加载文件的几种方式
- Jquery加载的几种方式
- spring加载配置文件的几种方式
- jquery预加载的几种方式
- JS页面加载的几种方式
- UIImage加载图片的几种方式
- ImageView加载图片的几种方式
- UIimage的几种加载方式
- ffmpeg av_open_input_file 不能打开文件原因
- C语言多线程实例,VC下使用
- Android开发平台振动器系统详解
- 抽象工厂模式第三步-使用抽象工厂模式
- 坐标转换基本原理
- 驱动复习总结--指明代码加载内存位置的几种方式
- uboot环境变量与内核MTD分区关系
- logout函数,有待改进,先完成基本的功能
- 解决MyEclipse内存不足
- ArcGIS Engine升级记录,从9.3到10.0
- The Art of Readable Code
- SSH简单定时器例子
- 拼接存储过程 数据保留2位小数
- SSH文件上传的简单例子