阅读:1518回复:4
重谢――KNdisPacket
怎么把KNdisPacket对应的数据内容放到一个UCHAR数组中?
怎么把一个UCHAR数组构造程一个KNdisPacket? |
|
最新喜欢:![]() |
沙发#
发布于:2005-07-01 09:07
DriverStudio network framework中有现成的例子,我摘录最主要的一段:
// KNdisBufferPool m_BufferPool; // KNdisPacketPool m_PacketPool; // in initialization m_BufferPool.Initialize(MAX_BUFFER_NUMBER); m_PacketPool.Initialize(MAX_PACKET_NUMBER); // Allocate KNdisPacket from UCHAR array // PUCHAR buf; // UINT size; KNdisPacket packet = m_PacketPool.Allocate(); if (packet.IsValid()) { KNdisBuffer buffer = m_BufferPool.Allocate(buf, size); if (buffer.IsValid()) { packet.ChainAtBack(buffer); } } return packet; |
|
板凳#
发布于:2005-06-30 13:02
谢谢!
但是从UCHAR数组 怎么转换成KNdisPacket呢 |
|
地板#
发布于:2005-06-30 08:58
对不起,没写完就发出来了. 上一篇取消.
// KNdisPacket packet; UINT packetSize = packet.QueryTotalLength(); UCHAR* buf = new UCHAR[packetSize]; if (buf != 0) { KNdisBuffer ndisBuffer = packet.QueryFirstBuffer(); int offset = 0; while (ndisBuffer.IsValid()) { int len = ndisBuffer.Length(); PVOID va = ndisBuffer.Address(); NdisMoveMemory(buf + offset, va, len); offset += len; ndisBuffer = ndisBuffer.GetNext(); } } 当然, 有一些出错处理没有写,你可以根据需要加上去. |
|
地下室#
发布于:2005-06-30 08:53
// KNdisPacket packet;
UINT packetSize = packet.QueryTotalLength(); UCHAR* buf = new UCHAR[packetSize]; if (buf != 0) { KNdisBuffer ndisBuffer = packet.QueryFirstBuffer(); int offset = 0; while (ndisBuffer.IsValid()) { int len = ndisBuffer.Length(); ndisBuffer = ndisBuffer.GetNext(); } } |
|