总版主
|
阅读:1462回复:3
NDIS与用户程序共享内存的问题
问题是这样的,我的中间层驱动要主动与应用程序通信,因此在驱动中生成了一个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!哪位大侠能帮帮忙吗?搞了几个月了还没搞定的东西…… |
最新喜欢:alenya... |
沙发#
发布于:2004-12-25 13:31
给我加分吧,这个一定能满足你的要求:
http://www.driverdevelop.com/forum/viewthread.php?tid=20914 |
|
板凳#
发布于:2004-12-24 19:25
NdisMAllocateSharedMemory()函数分配的不是让应用程序和驱动程序共享的内存,而是让驱动程序和bus-master DMA NIC共享的内存。所以你上面提到的问题恐怕要利用别的办法才能解决
|
|
地板#
发布于:2004-12-24 16:56
你的这个问题解决了没? :cool:
|
|