阅读:1312回复:8
在 DriverWorks 的 WDM 里,如何申请一片连续的实存
在 DriverWorks 的 WDM 里,如何申请一片连续的实存,
即如何实现 NTDDK 里的这个函数: PVOID MmAllocateContiguousMemory( IN ULONG NumberOfBytes, IN PHYSICAL_ADDRESS HighestAcceptableAddress ); 救命啊! |
|
沙发#
发布于:2002-08-14 17:37
实在不行直接调这个函数不行吗?
|
|
板凳#
发布于:2002-08-14 17:41
若直接调,编译时出错:MmAllocateContiguousMemory没有定义;
如果我在 .cpp 头上加 #include <ntddk.h>, 编译还出错,一大堆重复定义. 我该怎么办? |
|
地板#
发布于:2002-08-14 17:42
这个,呵呵,我不用driverwork,就不乱说了。
|
|
地下室#
发布于:2002-08-14 17:52
自己在头文件里声明一个:
extern \"C\" PVOID MmAllocateContiguousMemory(ULONG, PHYSICAL_ADDRESS); 再把相应的lib文件加入工程。 |
|
|
5楼#
发布于:2002-08-14 18:14
老大,不行啊,我把NTDDK 目录下所有 .lib 文件都试了一遍,
LINK 还是报错: error LNK2001: unresolved external symbol _MmAllocateContiguousMemory@12 到底用哪个NTDDK 的库? 或者用哪个 DriverWorks 的类? |
|
6楼#
发布于:2002-08-14 23:06
在 DriverWorks 的 WDM 里,如何申请一片连续的实存, new (NonPagedPool) ulSize;是不是就OK啦 ??? |
|
|
7楼#
发布于:2002-08-15 09:12
我试了一下,加入ntoskrnl.lib库文件即可。记得给分:-)
|
|
|
8楼#
发布于:2002-08-15 09:50
在 DriverWorks 的 WDM 里,如何申请一片连续的实存, 用KCommonDmaBuffer不行吗? The system provides a special buffer object for DMA, and DriverWorks encapsulates this object in class KCommonDmaBuffer. A common buffer object is accessible both by the processor(s) and a specified DMA adapter, and is guaranteed to be physically contiguous for the adapter. --from driverworks help |
|