XiangXiangRen
总版主
总版主
  • 注册日期2003-02-22
  • 最后登录2015-09-01
  • 粉丝13
  • 关注0
  • 积分1042分
  • 威望472点
  • 贡献值1点
  • 好评度145点
  • 原创分13分
  • 专家分1分
阅读:1457回复:3

NDIS与用户程序共享内存的问题

楼主#
更多 发布于:2003-02-22 15:49
    问题是这样的,我的中间层驱动要主动与应用程序通信,因此在驱动中生成了一个Event,并由应用程序等待SetEvent.驱动程序要将大量数据发送给应用程序,于是先把这些数据写到一块ShareMemory中,然后设置事件,应用程序在事件发生后,通过DeviceIoControl来读到这个SharenMomery的指针,于是获得了数据……
    我现在是要把一个NT的类似中间层驱动的东西升级到2000中间层驱动,原来的代码是在ProtocolBindAdapter中调用了
   NdisAllocateSharedMemory(adapter->NdisAdapterRegistrationHandle,
                                 adapter->SharedMemorySize,
                                 FALSE,
                                 &adapter->SharedMemoryPtr,
                                 &adapter->SharedMemoryPhysicalAddress
                                 );
   我不理解这个函数,但是发现在Ndis4.0的时候已经不能用了,我找了一个相似的这样的调用,而且说明只能在MPInitilize中调用,于是我这么调用了
        NdisMAllocateSharedMemory(MiniportAdapterHandle,
                                 adapter->SharedMemorySize,
                                 FALSE,
                                 &adapter->SharedMemoryPtr,
                                 &adapter->SharedMemoryPhysicalAddress
                                 );
     结果发现总是分配不到空间,返回地址总是NULL!哪位大侠能帮帮忙吗?搞了几个月了还没搞定的东西……
 

  

最新喜欢:

alenyangalenya...
baobaook
驱动牛犊
驱动牛犊
  • 注册日期2004-10-28
  • 最后登录2005-09-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-24 16:56
你的这个问题解决了没? :cool:
shortlight
驱动牛犊
驱动牛犊
  • 注册日期2003-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望81点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-24 19:25
NdisMAllocateSharedMemory()函数分配的不是让应用程序和驱动程序共享的内存,而是让驱动程序和bus-master DMA NIC共享的内存。所以你上面提到的问题恐怕要利用别的办法才能解决
frog_huang
驱动牛犊
驱动牛犊
  • 注册日期2002-06-05
  • 最后登录2008-05-02
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-25 13:31
给我加分吧,这个一定能满足你的要求:
http://www.driverdevelop.com/forum/viewthread.php?tid=20914
游客

返回顶部