深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(3)
2009-09-11 00:00:00 来源:WEB开发网将分配的内存,进行回收的函数是ExFreePool和ExFreePoolWithTag,它们的原型是:
VOID
ExFreePool(
IN PVOID P
);
VOID
ExFreePoolWithTag(
IN PVOID P,
IN ULONG Tag
);
参数P就是要释放的地址。
下面的代码为WinPcap中使用内核内存操作的实例:
PWCHAR getAdaptersList(void)
{
…
PWCHAR DeviceNames = (PWCHAR) ExAllocatePoolWithTag(PagedPool, BufLen,
'0PWA');
…
ExFreePool(DeviceNames);
}
1.1.7 内存操作的运行时函数
运行时函数是程序运行时必不可少的,由编译器提供。针对不同的操作系统,运行时函数的实现方法不同,但接口基本保持一致。例如,malloc函数就是典型的运行时函数,所有编译器厂商都必须提供这个函数,但在不同操作系统上的实现方法就不尽相同了。
1.1.7.1 内存间复制(非重叠的情况)
在驱动程序开发中,经常用到内存的复制。DDK为程序员提供了RtlCopyMemory函数。
VOID
RtlCopyMemory(
IN VOID UNALIGNED *Destination,
IN CONST VOID UNALIGNED *Source,
IN SIZE_T Length
);
参数Destination表示要复制内存的目标地址。参数Source表示要复制内存的源地址。参数Length表示要复制的内存的长度,单位是字节。
1.1.7.2 内存间复制(可重叠的情况)
用RtICopyMemory可以复制内存,但其内部没有考虑目标内存与源内存重叠的情况。对可重叠的情况DDK提供了RtIMoveMemory函数。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接