seant
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1586回复:2

版主,请教NDIS下的内存分配问题,很紧急!!!

楼主#
更多 发布于:2001-11-30 16:17
版主,千万别见死不救啊!!!
我正在编写一个NDIS微端口驱动,需要在内存中分配一块128KB的共享空间(NIC DMA用)。程序中用NdisMAllocateSharedMemory()返回是NULL。分配前用NdisQueryMapRegisterCount()查询,返回结果非NDIS_STATUS_SUCCESS。您对此有研究吗?能给我指明一条解决之道吗?

亿万次的感谢!!!

最新喜欢:

sword3isword3...
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2001-12-01 21:57
版主,千万别见死不救啊!!!
我正在编写一个NDIS微端口驱动,需要在内存中分配一块128KB的共享空间(NIC DMA用)。程序中用NdisMAllocateSharedMemory()返回是NULL。分配前用NdisQueryMapRegisterCount()查询,返回结果非NDIS_STATUS_SUCCESS。您对此有研究吗?能给我指明一条解决之道吗?

亿万次的感谢!!!
 


想必你的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设备驱动详解一文中说过这个方法。
不再回忆从前,我已经生活在幸福当中。
seant
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-04 21:47
斑竹果然是好人!!!
感谢感谢!
这几天硬件问题多多,没及时复贴,见谅。
游客

返回顶部