阅读:1846回复:2
很菜!但请帮我!
各位:
我本想在passthru的ptBindAdapte中用NdisRequest将NIC 置为 混杂 模式,按DDK ptBindAdapte run in passive_level ,且NdisRequest run in <= dispatch_level,此调用应能成功! 但是,每次调用 NdisRequest 都会导致 blue screen:IRQL_NOT_LESS_OR_EQUAL! 我初次做dnis,望各位指教! passthru 的ptBindAdapt 中添加的源码如下: ///////////////////////////// pAdapt->p_request=NULL; pAdapt->p_information=NULL; do { if(NdisAllocateMemoryWithTag(&pAdapt->p_request, sizeof(NDIS_REQUEST), TAG)==NDIS_STATUS_FAILURE) break; if(NdisAllocateMemoryWithTag(&pAdapt->p_information,sizeof(ULONG), TAG)==NDIS_STATUS_FAILURE) break; *pAdapt->p_information=NDIS_PACKET_TYPE_PROMISCUOUS; pAdapt->p_request->RequestType=NdisRequestSetInformation; pAdapt->p_request->DATA.SET_INFORMATION.Oid=OID_GEN_CURRENT_PACKET_FILTER; pAdapt->p_request->DATA.SET_INFORMATION.InformationBuffer=pAdapt->p_information; pAdapt->p_request->DATA.SET_INFORMATION.InformationBufferLength=sizeof(ULONG); pAdapt->p_request->DATA.SET_INFORMATION.BytesRead=sizeof(ULONG); pAdapt->p_request->DATA.SET_INFORMATION.BytesNeeded=sizeof(ULONG); NdisRequest(&pAdapt->Status,pAdapt->BindingHandle,pAdapt->p_request); if(pAdapt->Status != NDIS_STATUS_SUCCESS) { DBGPRINT(\"<==NdisRequest error\\n\"); goto error; } }while(FALSE); //////////////////////////// [编辑 - 4/14/02 作者: anti] [编辑 - 4/14/02 作者: anti] |
|
最新喜欢:![]() |
沙发#
发布于:2002-04-14 18:47
在ptBindAdapt中设置模式要考虑很多事情,其实当你调用NdisRequest若返回非NDIS_STATUS_PENDINGM没有任何事情,但是常常返回PENDING状态(你蓝屏就是因为它),而返回PENDING后,NDIS便会调用PtRequestComplete,你看一下这个例程,你就会发现:
1。它要在Adapt的BytesNeeded和BytesReadOrWritten上面写信息,而这两个指针你都没有给空间,这么会不蓝屏。 2。在这个例程中它还会调用NdisRequestComplete向上一层,而上一层根本没有发出这样的Request,这也会出问题的。 |
|
板凳#
发布于:2002-04-14 20:36
谢谢,
1。内存我是在ptrquestcomplete中放的。 2。不过我确实疏忽了ptrequestcomplete 中的原代码: *pAdapt->BytesReadOrWritten = NdisRequest->DATA.SET_INFORMATION.BytesRead; *pAdapt->BytesNeeded = NdisRequest->DATA.SET_INFORMATION.BytesNeeded; NdisMSetInformationComplete(pAdapt->MiniportHandle, Status); 其中pAdapt->BytesReadOrWritten,pAdapt->BytesNeeded是mpsetinformation传入的参数!(此导致蓝屏) 如你所说:NdisMSetInformationComplete(pAdapt->MiniportHandle, Status); 不跳过可能是会出事! 分给你了! |
|