阅读:1408回复:1
非常奇怪的问题
以下调试时怎么也通不过,出现Fault Page 错误。
用Softice跟踪一些代码时,发现根本就不执行, 这是什么问题? NdisInitializeEvent(&open->PacketQueueEvent); NdisSetEvent(&open->PacketQueueEvent); Status=PQInitialize(open->pRcvPacketQueue,MAC_TS_SIZE, QUEUE_SIZE); NdisResetEvent(&open->PacketQueueEvent); if (*Status != NDIS_STATUS_SUCCESS) { if (open && open->PacketPool != NULL) { NdisFreePacketPool(open->PacketPool); } if (deviceObject != NULL) { IoDeleteDevice(deviceObject); } if(unicodeDeviceName.Buffer) ExFreePool(unicodeDeviceName.Buffer); if(symbolicLink) { IoDeleteSymbolicLink(&open->SymbolicLink); ExFreePool(open->SymbolicLink.Buffer); } 。。。。。。 --------------------------- NDIS_STATUS PQInitialize(LPPACKET_QUEUE pPq, UINT Unitsize, UINT Totalnum) { NDIS_STATUS st=NDIS_STATUS_SUCCESS ; // PVOID pp=NULL; NDIS_PHYSICAL_ADDRESS noMaxAddr = NDIS_PHYSICAL_ADDRESS_CONST(-1,-1); st=NdisAllocateMemory(&pPq,sizeof(PACKET_QUEUE),0,noMaxAddr); if(st==NDIS_STATUS_FAILURE||pPq==NULL) { DebugPrint((\"PACKET_QUEUE allocation Fail\\n\")); return st; } pPq->UnitSize=Unitsize; //不执行 pPq->Total_Num=Totalnum; //不执行 pPq->Length=Unitsize*Totalnum; //不执行 st=NdisAllocateMemory(&(pPq->Buffer),pPq->Length,0,noMaxAddr); if(st==NDIS_STATUS_FAILURE||pPq->Buffer==NULL) { DebugPrint((\"Memory allocation for packet queue failed\\n\")); NdisFreeMemory((PVOID)pPq,sizeof(PACKET_QUEUE),0); pPq=NULL; return st; } pPq->Head=0; pPq->Tail=1; pPq->Queue_Num=0; pPq->Loss_Num=0; pPq->IsPlay=FALSE; return st; } |
|
沙发#
发布于:2002-04-03 11:39
好了,非常初级的错误。但为什么DDK编译时不能检查出来PNDIS_STATUS和NDIS_STATUS的类型不能转换赋值时错误呢?
|
|