资讯
安全
论坛
下载
读书
程序开发
数据库
系统
网络
电子书
微信学院
站长学院
QQ
手机软件
考试
安全
|
web开发
|
软件开发
|
移动开发
|
数据库
|
网络
|
系统
|
网站
|
考试认证
|
其他
|
读书频道
>
网站
>
网页设计
>
网络分析技术揭秘:原理、实践与WinPcap深入解析
3.1.7 内存操作的运行时函数
12-08-11
叶孤城
收藏
我要投稿
本文所属图书 >
网络分析技术揭秘:原理、实践与WinPcap深入解析
本书结合著名的开源软件库WinPcap来说明网络分析技术的实现原理及使用方法。其中包括WinPcap内核驱动,编译与使用,数据包的捕获、发送、内核过滤与接收,以及网络流量的统计与网络状态的分析等重要内容,而且作...
立即去当当网订购
运行时函数是由编译器提供的,它在程序运行时必不可少。不同的操作系统,运行时函数的实现方法也有所不同,但其接口基本一致。例如malloc函数就是典型的运行时函数,所有编译器厂商都必须提供这个函数,但在不同操作系统上它的实现方法不尽相同。
在Windows驱动程序开发中,经常用到的内存操作运行时函数如下。
1. 内存间复制
(1)非重叠的情况
在驱动程序开发中经常用到内存间的复制,WDK (Windows Driver Kit)使用RtlCopyMemory函数实现该功能,其原型如下:
VOID RtlCopyMemory( IN VOID UNALIGNED *Destination,
IN CONST VOID UNALIGNED *Source, IN SIZE_T Length);
上述函数中,参数Destination表示要复制内存的目标地址;参数Source表示要复制内存的源地址;参数Length表示要复制的内存的长度,单位是字节。
(2)可重叠的情况
用RtlCopyMemory函数可以复制内存,但是它的实现没有考虑目标内存与源内存重叠的情况。如果存在重叠的情况,可使用WDK提供的RtlMoveMemory函数,其原型如下:
VOID RtlMoveMemory(IN VOID UNALIGNED *Destination,
IN CONST VOID UNALIGNED *Source, IN SIZE_T Length);
上述函数中,参数Destination表示要复制内存的目标地址;参数Source表示要复制内存的源地址;参数Length表示要复制的内存长度,单位是字节。
2. 填充内存
在驱动程序开发中,经常会使用固定的字节值对某段内存区域进行填充,WDK为程序员提供了RtlFillMemory函数实现该功能,其原型如下:
VOID RtlFillMemory( IN VOID UNALIGNED *Destination,
IN SIZE_T Length, IN UCHAR Fill);
上述函数中,参数Destination为目标内存的地址;参数Length为待填充内存的长度;参数Fill为所填充的字节内容。
在驱动程序开发中,还经常要对某段内存填零,为此,WDK提供了RtlZeroMemory函数实现此功能,其原型如下:
VOID RtlZeroMemory(IN VOID UNALIGNED *Destination,
IN SIZE_T Length);
上述函数中,参数Destination为目标内存的地址;参数Length为待填内存的长度。
3. 内存比较
在驱动程序的开发中,可能要比较两块内存的内容是否一致,可采用RtlCompareMemory函数实现该功能,其原型如下:
SIZE_T RtlCompareMemory( IN CONST VOID *Source1,
IN CONST VOID *Source2, IN SIZE_T Length);
上述函数中,参数Sourcel为比较的第一个内存地址;参数Source2为比较的第二个内存地址;参数Length为待比较内存的长度,单位为字节。此函数返回两块内存相等的字节数。
同时,WDK提供了RtlEqualMemory函数,直接判断两块内存是否一致,其原型如下:
LOGICAL RtlEqualMemory( CONST VOID *Source1,
CONST VOID *Source2, SIZE_T Length );
函数RtlEqualMemory在两块内存一致的情况下返回非0值,否则返回0值
点击复制链接 与好友分享!
回本站首页
分享到:
更多
您对本文章有什么意见或着疑问吗?请到
论坛讨论
您的关注和建议是我们前行的参考和动力
上一篇:
1.3 功能
下一篇:
1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
112 |
1.6 本书概要
112 |
1.5.5 软件
112 |
1.5.4 可扩展性
112 |
1.5.3 融合
112 |
1.5.2 虚拟化
112 |
1.5.1 以太网的使用
112 |
1.5 云网络的特征
112 |
1.4 什么是云网络
3.2.3 Bootstrap栅格系统
3.4.4 自适应显示/隐藏页面内容
3.3.1 固定式布局
2.1.1 下载Bootstrap
3.3.2 流式布局
3.4.6 响应式Bootstrap
3.4.2 设计响应式图片
3.2.4 响应式Bootstrap栅格系统
文章
下载
读书
·
Win2000下关闭无用端口
·
禁止非法用户登录综合设置 [win9x篇]
·
关上可恶的后门——消除NetBIOS隐患
·
网络入侵检测系统
·
潜伏在Windows默认设置中的陷井
·
调制解调器的不安全
·
构建Windows 2000服务器的安全防护林
·
SQL Server 2000的安全配置
·
Windows优化大师注册机源码
·
Aspcode动画教程
·
WIN 2000服务器防止ICMP数据包攻击教程
·
实现网络隐身的简单方法
·
手工进行克隆帐号
·
用W32DASM破解网页合并器的密码
·
注册表操作动画教程
·
冰河陷阱v1.2
·
黑客攻防技术宝典:Web实战篇(第2版)
·
超级网管员——网络安全
·
代码大全(第二版)
·
软件之道:软件开发争议问题剖析
·
CSS插件工具箱
·
CSS入门经典(第3版)
·
C#并行编程高级教程:精通.NET 4 Pa
·
CMMI+敏捷整合开发
关于我们
|
联系我们
|
广告服务
|
投资合作
|
版权申明
|
在线帮助
|
网站地图
|
作品发布
|
Vip技术培训
版权所有:
红黑联盟
--致力于做最好的IT技术学习网站