阅读:1586回复:2
版主,请教NDIS下的内存分配问题,很紧急!!!
版主,千万别见死不救啊!!!
我正在编写一个NDIS微端口驱动,需要在内存中分配一块128KB的共享空间(NIC DMA用)。程序中用NdisMAllocateSharedMemory()返回是NULL。分配前用NdisQueryMapRegisterCount()查询,返回结果非NDIS_STATUS_SUCCESS。您对此有研究吗?能给我指明一条解决之道吗? 亿万次的感谢!!! |
|
最新喜欢:sword3... |
沙发#
发布于:2001-12-01 21:57
版主,千万别见死不救啊!!! 想必你的NIC并非标准的MINIPORT,我去年也做了一块 类似的东西,你的要求我猜想是PCI设备需要一块128K 的连续物理内存,而且说不定还需要对齐,搞不定就是 1K或者128K对齐。DKK的文档中说,NT几乎不支持分配 这么大的连续物理内存(最大只支持64K),而且也难 以保证对齐,但是可以调用,是否能够成功,DDK文档 不保证,而且对齐更不支持,你只能分配一块比128K大 的内存,然后自己对齐,比如如果是128K对齐,就要分 配256K,然后自己找一块对齐的内存去写PCI设备的寄存 器。因此,我几乎没有什么好办法。这是我唯一能够说 的。我的经验,在大内存的机器中,分配256K是可能的, 我用的机器256M内存,一般都能成功。 此外,我不支持你的DRIVER是特定机器中的,还是需要 在用户的普通机器上安装?如果只需要在你自己的机器 上安装,或者这块NIC是用于自己的设备,比如快速网络 数据采集器上,那么我还有一个好方法。你可以通过 在BOOT.INI中指定NT启动的时候不用那么多内存,比如 机器内存是64M,你可以指定NT只用60M,那么后面这4M 内存你就可以随便用。我后来就是用此方法搞定我的那个 卡的。我的卡就是一个类似高速采集卡,需要的物理内存 高达4M,我无法用普通方法分配内存,最后只好用这个 方法,好在我的卡只会在我的机器上安装。我有点忘记 具体怎么改了,如果你的确是这个情况,那么我回去翻 翻代码,可以把详细情况写出来。我记得我在白云站上 的PCI设备驱动详解一文中说过这个方法。 |
|
|
板凳#
发布于:2001-12-04 21:47
斑竹果然是好人!!!
感谢感谢! 这几天硬件问题多多,没及时复贴,见谅。 |
|