阅读:1691回复:2
TransferData?
NDIS_STATUS
MiniportTransferData( OUT PNDIS_PACKET Packet, OUT PUINT BytesTransferred, IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_HANDLE MiniportReceiveContext, IN UINT ByteOffset, IN UINT BytesToTransfer ); 有人能解释一下这个函数的功能么 跟收包有什么关系没? 是不是调用完收包的函数后要调用这个函数? 虚拟网卡需不需要这个函数? |
|
沙发#
发布于:2005-07-29 12:43
首先看这个名字,是MINIPORT打头,说明他是给协议提供调用的。
如果绑定了该MINIPORT的PROTOCOL调用了NdisTransferData,实际上就是调用的该函数。 再看NdisTransferData的作用,当PROTOCL收到一个包,但这个包只有前面的一部分,他就会调用NdisTransferData来取得剩余的一部分。 如果你的MINIPORT给协议发的包都是完整的包,这个函数就不会被调用。 |
|
板凳#
发布于:2005-07-31 22:06
#define NdisTransferData(Status,\
NdisBindingHandle, \ MacReceiveContext, \ ByteOffset, \ BytesToTransfer, \ Packet, \ BytesTransferred) \ { \ *(Status) = \ (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->TransferDataHandler)( \ ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->MacBindingHandle, \ (MacReceiveContext), \ (ByteOffset), \ (BytesToTransfer), \ (Packet), \ (BytesTransferred)); \ } 上面的宏定义就可以看出, 协议层调用 NdisTransferData 的时候,只不过是调用了 Miniport 的 TransferDataHandler。 |
|