阅读:2332回复:2
在PtReceive()中怎样调用NdisTransferData()??
偶想在PtReceive()中完成IP包的过滤:想不通过PtReceivePacket(),但在PtReceive()中对NdisTransferData()函数的调用有疑问:
NdisTransferData()函数的参数: NdisTransferData( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer, IN OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred ); 问ByteOffset,BytesToTransfer是不是用IP包的长度PacketSize,再减去LookAheadBufferSize得到?要减去HeaderBufferSize么?出来的Packet里有包括LookAheadBuffer么? 当LookAheadBufferSize<PacketSize时,有 { NdisDprAllocatePacket(); NdisMoveMemory() NdisTransferData() 。。。。 } 但想知道OOB数据应该在哪设置?NdisMoveMemory()函数又该怎样拷贝才合适?我该设置那些Packet的参数?LookAheadBuffer,HeaderBuffer该怎样链上Packet? 太多问题了!!好烦呀!!!! |
|
最新喜欢:peral
|
沙发#
发布于:2001-10-31 10:02
NdisTransferData()函数的参数:
NdisTransferData( OUT PNDIS_STATUS Status, IN NDIS_HANDLE NdisBindingHandle, IN NDIS_HANDLE MacReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer, IN OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred ); 问ByteOffset,BytesToTransfer是不是用IP包的长度PacketSize,再减去LookAheadBufferSize得到?要减去HeaderBufferSize么?出来的Packet里有包括LookAheadBuffer么? 答: ByteOffset是你想从该包中获得数据的起始位置。 BytesToTransfer是你想从该包中COPY多少字节的数据到你的Packet中。 整个当前可以传输包的大小是PacketSize,当然包括了LookAheadBuffer,但是不包括HeaderBuffer。 也就是BytesToTransfer=0,BytesToTransfer=PacketSize NdisDprAllocatePacket(); NdisMoveMemory() NdisTransferData() 这些还是函数的用法还是看ddk吧。 |
|
|
板凳#
发布于:2001-10-31 11:06
谢谢gjpland兄:
后来我发现在vpacket中的PacketReceiveIndicate() 函数实际上有很好的范畴。 对于 '整个当前可以传输包的大小是PacketSize,当然包括了 LookAheadBuffer,但是不包括HeaderBuffer。 但我观察了packet,有包括以太头。 另外对于OOB数据理解我有疑惑: 是否是产生了packet后,该packet就带有了OOB数据,不过我想不大 可能,我该怎样写入OOB数据呢?----也就是OOB数据在哪取? 还有我在NDIS_PACKET的PRIVATE的TotalLength和各个MDL *pNext中的ByteCount之和有些时候不一样,Private中TotalLength到底是什么? 先谢了!! |
|
|