阅读:882回复:2
急!在线守~做过miniport网卡的请进拿分
问题如下:在DriverEntry中注册的sendhandler为xxxsend.其中有一参数packet,是PNDIS_PACKET型号的.我想从中提取出包的各种信息,如目的地址,源地址,长度...数据域等等.请问如何做到?多谢!
|
|
|
沙发#
发布于:2003-03-26 16:21
看看这段代码:
UINT CopyPacket2Buf( IN PNDIS_PACKET Packet, OUT PUCHAR pPacketContent, OUT UINT* pPacketSize) { UINT bufLength; MDL* pNext; UINT i; PUCHAR pbuf; // 获得packet长度 NdisQueryPacket(Packet, NULL, NULL, NULL,pPacketSize); // NdisQueryBufferSafe(Packet->Private.Head, &pbuf, &bufLength, 32 ); NdisMoveMemory(pPacketContent,pbuf,bufLength); i=bufLength; pNext=Packet->Private.Head; // next 是一个mdl for(;;) { pNext=pNext->Next; // next 是一个mdl if (pNext==NULL) break; NdisQueryBufferSafe(pNext,&pbuf,&bufLength,32); NdisMoveMemory(pPacketContent+i,pbuf,bufLength); i+=bufLength; } ASSERT(*pPacketSize == i); return *pPacketSize; } pPacketContent中是完整的以太数据报,下面就是自己想要什么就去什么了。 |
|
|
板凳#
发布于:2003-03-26 10:39
NDIS_GET_PACKET_HEADER_SIZE
NDIS_GET_PACKET_PROTOCOL_TYPE NDIS_GET_PACKET_STATUS ... 其它的自己到头文件,DDK里找找. |
|
|