keven007
驱动牛犊
驱动牛犊
  • 注册日期2002-03-06
  • 最后登录2002-07-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1406回复:1

非常奇怪的问题

楼主#
更多 发布于:2002-04-03 11:16
以下调试时怎么也通不过,出现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;
}
keven007
驱动牛犊
驱动牛犊
  • 注册日期2002-03-06
  • 最后登录2002-07-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-03 11:39
好了,非常初级的错误。但为什么DDK编译时不能检查出来PNDIS_STATUS和NDIS_STATUS的类型不能转换赋值时错误呢?
游客

返回顶部