阅读:1609回复:2
passthru里PtReceive函数里的经典问题
我在passthru里的PtReceive函数里调用了分析包的函数出现了
IRQL_NOT_LESS_OR_EQUAL的错误,怎么回事请大侠指点,代码如下: PtReceive(...) { PADAPT pAdapt = (PADAPT)ProtocolBindingContext; PNDIS_PACKET SSPacket, Packet; NDIS_STATUS status = NDIS_STATUS_SUCCESS; DEBUG_PRINT("==>PtReceive\n"); if (pAdapt->MiniportHandle == NULL) { return NDIS_STATUS_FAILURE; } else { Packet=NdisGetReceivedPacket(pAdapt->BindingHandle, MacReceiveContext); AnalyzeContent(Packet);// 分析包的函数 ...... } ...... } void AnalyzeContent(PNDIS_PACKET Packet) { PVOID VirtualAddress = NULL; UINT BufferLength = 0; PNDIS_BUFFER FirstBuffer = NULL; NDIS_PHYSICAL_ADDRESS HighestAcceptableMax; NdisQueryPacket(Packet, NULL, NULL, &FirstBuffer, NULL); NdisQueryBufferSafe(FirstBuffer, &VirtualAddress, &BufferLength, LowPagePriority); DbgPrint("Buffer VirtualAddress = %08x", (UINT)VirtualAddress); DbgPrint("BufferLength = %08x\n", BufferLength); } 不知道是不是NdisQueryBufferSafe引起的错误. |
|
|
沙发#
发布于:2004-07-27 09:18
在PtReceive里Packet为空怎么得到包数据?
|
|
|
板凳#
发布于:2004-07-27 09:44
你都知道是经典问题了就应该在论坛上搜一下这方面的帖子,Packet=NdisGetReceivePacket并不是总能成功的,这取决于底层Miniport提交数据的方式
|
|