阅读:1603回复:2
如何发送自己的数据???
想做一个可以发送mac数据的东西,在PtDispatch函数里面发送应用程序下来的数据(完整的链路程数据)。但是总是出错(蓝屏!),下面我把代码给你看看,希望得到大家的指点!谢谢!
NDIS_HANDLE PoolHandle; PNDIS_PACKET pNdisPacket; PNDIS_BUFFER pNdisBuffer; UINT PacketLeng; UCHAR WritePacketData[MAX_PACKET_LENGTH]; //Mac包的内容 NdisAllocatePacketPool( &status, &PoolHandle, 1, MAX_PACKET_LENGTH ); if( status != NDIS_STATUS_SUCCESS ) { status = STATUS_INSUFFICIENT_RESOURCES; DBGPRINT((\"<==NdisAllocatePacketPool Failed !!!!!!!!!!!!!!! \\n\")); break; } NdisAllocatePacket( &status, &pNdisPacket, PoolHandle); if (status != NDIS_STATUS_SUCCESS) { status = STATUS_INSUFFICIENT_RESOURCES; DBGPRINT((\"<==NdisAllocatePacket Failed!!!!!!!!!!!!!!! \\n\")); break; } NdisAllocateBuffer(&status, &pNdisBuffer, PoolHandle, &WritePacketData, PacketLeng); if(status!=NDIS_STATUS_SUCCESS ) { DBGPRINT((\"<==NdisAllocateBuffer Failed !!!!!!!!!!!!!!! \\n\")); break; } pNdisBuffer->Next = NULL; NdisChainBufferAtFront(pNdisPacket, pNdisBuffer); IoMarkIrpPending(Irp); NdisSend(&status, pAdaptList->BindingHandle, pNdisPacket); if (status != NDIS_STATUS_PENDING) { // The send didn\'t pend so call the completion handler now PtSendComplete( pAdaptList->BindingHandle, pNdisPacket, status ); DBGPRINT((\"<==Send Suceed !!!!!!!!!!!!!!! \\n\")); } else{ DBGPRINT((\"<==Send NDIS_STATUS_PENDING !!!!!!!!!!!!!!! \\n\")); } break; |
|
最新喜欢:![]()
|
沙发#
发布于:2003-12-10 11:07
rlb,你的这个问题解决了嘛?
我现在也遇到了相似的问题:就是要把应用程序传下来的数据,组成一个arp应答包,传给上层 |
|
|
板凳#
发布于:2002-03-12 16:31
of course killed by system.
because WritePacketData is local variable. move it to global or use ExAllocatePool to dynamic allocate memory instead. |
|
|