亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? isrdpc.c

?? plx9054的WDM驅(qū)動(dòng)程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
{
    NTSTATUS     status;    

    DebugPrint(TRACE, DBG_DPC, "---> MPReset\n");

    KeAcquireSpinLockAtDpcLevel(&FdoData->Lock);
    KeAcquireSpinLockAtDpcLevel(&FdoData->SendLock);
    KeAcquireSpinLockAtDpcLevel(&FdoData->RcvLock);

    do
    {
        ASSERT(!MP_TEST_FLAG(FdoData, fMP_ADAPTER_HALT_IN_PROGRESS));
  
        //
        // Is this adapter already doing a reset?
        //
        if (MP_TEST_FLAG(FdoData, fMP_ADAPTER_RESET_IN_PROGRESS))
        {
            status = STATUS_SUCCESS;
            MP_EXIT;
        }

        MP_SET_FLAG(FdoData, fMP_ADAPTER_RESET_IN_PROGRESS);

        //
        // Is this adapter doing link detection?                                      
        //
        if (MP_TEST_FLAG(FdoData, fMP_ADAPTER_LINK_DETECTION))
        {
            DebugPrint(WARNING, DBG_DPC, "Reset is pended...\n");
        
            //FdoData->bResetPending = TRUE;
            status = STATUS_SUCCESS;
            MP_EXIT;
        }
        //
        // Is this adapter going to be removed
        //
        if (MP_TEST_FLAG(FdoData, fMP_ADAPTER_NON_RECOVER_ERROR))
        {
           status = STATUS_DEVICE_DATA_ERROR;
           if (MP_TEST_FLAG(FdoData, fMP_ADAPTER_REMOVE_IN_PROGRESS))
           {
               MP_EXIT;
           }
           //                      
           // This is an unrecoverable hardware failure. 
           // We need to tell PNP system to remove this miniport
           //
           MP_SET_FLAG(FdoData, fMP_ADAPTER_REMOVE_IN_PROGRESS);
           MP_CLEAR_FLAG(FdoData, fMP_ADAPTER_RESET_IN_PROGRESS);
           
           KeReleaseSpinLockFromDpcLevel(&FdoData->RcvLock);
           KeReleaseSpinLockFromDpcLevel(&FdoData->SendLock);
           KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);
           
           // TODO: Log an entry into the eventlog

           IoInvalidateDeviceState(FdoData->UnderlyingPDO);
                      
           DebugPrint(ERROR, DBG_DPC, "<--- MPReset, status=%x\n", status);
            
           return status;
        }   
                

        //
        // Disable the interrupt and issue a reset to the NIC
        //
        NICDisableInterrupt(FdoData);
        NICIssueSelectiveReset(FdoData);


        //
        // release all the locks and then acquire back the send lock
        // we are going to clean up the send queues
        // which may involve calling Ndis APIs
        // release all the locks before grabbing the send lock to
        // avoid deadlocks
        //
        KeReleaseSpinLockFromDpcLevel(&FdoData->RcvLock);
        KeReleaseSpinLockFromDpcLevel(&FdoData->SendLock);
        KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);
        
        KeAcquireSpinLockAtDpcLevel(&FdoData->SendLock);


        //
        // Free the packets on SendQueueList                                                           
        //
        NICFreeQueuedSendPackets(FdoData);

        //
        // Free the packets being actively sent & stopped
        //
        NICFreeBusySendPackets(FdoData);


        RtlZeroMemory(FdoData->MpTcbMem, FdoData->MpTcbMemSize);

        //
        // Re-initialize the send structures
        //
        NICInitSend(FdoData);
        
        KeReleaseSpinLockFromDpcLevel(&FdoData->SendLock);

        //
        // get all the locks again in the right order
        //
        KeAcquireSpinLockAtDpcLevel(&FdoData->Lock);
        KeAcquireSpinLockAtDpcLevel(&FdoData->SendLock);
        KeAcquireSpinLockAtDpcLevel(&FdoData->RcvLock);

        //
        // Reset the RFD list and re-start RU         
        //
        NICResetRecv(FdoData);
        status = NICStartRecv(FdoData);
        if (status != STATUS_SUCCESS) 
        {
            // Are we having failures in a few consecutive resets?                  
            if (FdoData->HwErrCount < NIC_HARDWARE_ERROR_THRESHOLD)
            {
                // It's not over the threshold yet, let it to continue
                FdoData->HwErrCount++;
            }
            else
            {
                //                      
                // This is an unrecoverable hardware failure. 
                // We need to tell PNP system to remove this miniport
                //
                MP_SET_FLAG(FdoData, fMP_ADAPTER_REMOVE_IN_PROGRESS);
                MP_CLEAR_FLAG(FdoData, fMP_ADAPTER_RESET_IN_PROGRESS);
                
                KeReleaseSpinLockFromDpcLevel(&FdoData->RcvLock);
                KeReleaseSpinLockFromDpcLevel(&FdoData->SendLock);
                KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);
                
                // TODO: Log an entry into the eventlog
                     
                IoInvalidateDeviceState(FdoData->UnderlyingPDO);
                
                DebugPrint(ERROR, DBG_DPC, "<--- MPReset, status=%x\n", status);
                return(status);
            }
            
            break;
        }
        
        FdoData->HwErrCount = 0;
        MP_CLEAR_FLAG(FdoData, fMP_ADAPTER_HARDWARE_ERROR);

        NICEnableInterrupt(FdoData);

    } while (FALSE);

    MP_CLEAR_FLAG(FdoData, fMP_ADAPTER_RESET_IN_PROGRESS);

    exit:

    KeReleaseSpinLockFromDpcLevel(&FdoData->RcvLock);
    KeReleaseSpinLockFromDpcLevel(&FdoData->SendLock);
    KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);



    DebugPrint(TRACE, DBG_DPC, "<--- MPReset, status=%x\n", status);
    return(status);
}

NTSTATUS 
NICLinkDetection(
    PFDO_DATA         FdoData
    )
/*++

Routine Description:
    
    Timer function for postponed link negotiation. Called from
    the NICWatchDogTimerDpc. After the link detection is over
    we will complete any pending ioctl or send IRPs.
    
Arguments:

    FdoData     Pointer to our FdoData

Return Value:

    NT status
    
--*/
{
    NTSTATUS                status = STATUS_SUCCESS;
    MEDIA_STATE             currMediaState;
    PNDISPROT_QUERY_OID     pQuery = NULL;
    PNDISPROT_SET_OID       pSet = NULL;
    PVOID                   DataBuffer;    
    ULONG                   BytesWritten;
    NDIS_OID                oid;
    PIRP                    queryRequest = NULL;
    PIRP                    setRequest = NULL;
    PVOID                   informationBuffer;

    //
    // Handle the link negotiation.
    //
    if (FdoData->bLinkDetectionWait)
    {
        status = ScanAndSetupPhy(FdoData);
    }
    else
    {
        status = PhyDetect(FdoData);
    }
    
    if (status == STATUS_PENDING)
    {
        //
        // We are not done with link detection yet.
        // 
        return status;
    }

    //
    // Reset some variables for link detection
    //
    FdoData->bLinkDetectionWait = FALSE;
    
    DebugPrint(LOUD, DBG_DPC, "NICLinkDetection - negotiation done\n");

    KeAcquireSpinLockAtDpcLevel(&FdoData->Lock);
    MP_CLEAR_FLAG(FdoData, fMP_ADAPTER_LINK_DETECTION);
    KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);

    //
    // Any OID query request pending?                                                        
    //
    if (FdoData->QueryRequest)
    {
        //
        // Clear the cancel routine.
        //
        queryRequest = FdoData->QueryRequest;
        
        if(IoSetCancelRoutine(queryRequest, NULL)){
            //
            // Cancel routine cannot run now and cannot have already 
            // started to run.
            //
            DataBuffer = queryRequest->AssociatedIrp.SystemBuffer;    
            pQuery = (PNDISPROT_QUERY_OID)DataBuffer;
            oid = pQuery->Oid;
            informationBuffer = &pQuery->Data[0];
           
            switch(pQuery->Oid)
            {
                case OID_GEN_LINK_SPEED:
                    *((PULONG)informationBuffer) = FdoData->usLinkSpeed * 10000;
                    BytesWritten = sizeof(ULONG);

                    break;

                case OID_GEN_MEDIA_CONNECT_STATUS:
                default:
                    ASSERT(oid == OID_GEN_MEDIA_CONNECT_STATUS);
                    
                    currMediaState = NICIndicateMediaState(FdoData);
                    
                    RtlMoveMemory(informationBuffer,
                                   &currMediaState,
                                   sizeof(NDIS_MEDIA_STATE));
                    
                    BytesWritten = sizeof(NDIS_MEDIA_STATE);
            }

            FdoData->QueryRequest = NULL;
            queryRequest->IoStatus.Information = sizeof(ULONG);
            queryRequest->IoStatus.Status = STATUS_SUCCESS;
            IoCompleteRequest(queryRequest, IO_NO_INCREMENT);
            PciDrvIoDecrement (FdoData);
        }
    }

    //
    // Any OID set request pending?                             
    //
    if (FdoData->SetRequest)
    {
        ULONG    PacketFilter; 

        setRequest = FdoData->SetRequest;
        if(IoSetCancelRoutine(setRequest, NULL)){
        
            DataBuffer = setRequest->AssociatedIrp.SystemBuffer;    
            pSet = (PNDISPROT_SET_OID)DataBuffer;
            oid = pSet->Oid;
            informationBuffer = &pSet->Data[0];

            if (oid == OID_GEN_CURRENT_PACKET_FILTER)
            {

                RtlMoveMemory(&PacketFilter, informationBuffer, sizeof(ULONG));

                KeAcquireSpinLockAtDpcLevel(&FdoData->Lock);

                status = NICSetPacketFilter(
                             FdoData,
                             PacketFilter);

                KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);
     
                if (status == STATUS_SUCCESS)
                {
                    FdoData->PacketFilter = PacketFilter;
                }
     
                FdoData->SetRequest = NULL;

                setRequest->IoStatus.Information = 0;
                setRequest->IoStatus.Status = STATUS_SUCCESS;
                IoCompleteRequest(setRequest, IO_NO_INCREMENT);
                PciDrvIoDecrement (FdoData);
            }
        }
    }

    //
    // Any read pending?
    //
    KeAcquireSpinLockAtDpcLevel(&FdoData->RcvLock);

    //
    // Start the NIC receive unit                                                     
    //
    status = NICStartRecv(FdoData);
    if (status != STATUS_SUCCESS)
    {
        MP_SET_HARDWARE_ERROR(FdoData);
    }
    
    KeReleaseSpinLockFromDpcLevel(&FdoData->RcvLock);

    KeAcquireSpinLockAtDpcLevel(&FdoData->SendLock);

    //
    // Send packets which have been queued while link detection was going on. 
    //
    while (!IsListEmpty(&FdoData->SendQueueHead) &&
        MP_TCB_RESOURCES_AVAIABLE(FdoData))
    {
        PIRP        irp;
        PLIST_ENTRY pEntry;
        
        pEntry = RemoveHeadList(&FdoData->SendQueueHead); 
        
        ASSERT(pEntry);
        
        FdoData->nWaitSend--;

        irp = CONTAINING_RECORD(pEntry, IRP, Tail.Overlay.ListEntry);

        DebugPrint(INFO, DBG_DPC, 
                        "NICLinkDetection - send a queued packet\n");

        NICWritePacket(FdoData, irp, TRUE);
    }

    KeReleaseSpinLockFromDpcLevel(&FdoData->SendLock);

    return status;    
}




?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区久久| 色欧美乱欧美15图片| 精品国产91九色蝌蚪| 日韩专区一卡二卡| 91麻豆精品国产91久久久资源速度| 亚洲制服丝袜av| 欧美精品久久一区二区三区| 麻豆精品精品国产自在97香蕉| 日韩女优av电影| 粉嫩av一区二区三区在线播放| 中文字幕欧美日本乱码一线二线| 99免费精品在线| 亚洲444eee在线观看| 日韩免费成人网| 成人不卡免费av| 亚洲成人资源网| 337p日本欧洲亚洲大胆精品| 成人av片在线观看| 亚洲动漫第一页| 久久综合九色综合欧美98| 成人app在线观看| 五月天精品一区二区三区| 久久一二三国产| 色婷婷亚洲综合| 激情综合五月婷婷| 一区二区三区四区在线播放| 日韩美女视频一区二区在线观看| 成人午夜激情片| 日韩国产高清影视| 国产精品传媒视频| 日韩欧美一级在线播放| eeuss国产一区二区三区| 日韩电影在线看| 中文字幕在线观看一区二区| 91精品国产入口| av影院午夜一区| 久久成人免费电影| 亚洲国产精品精华液网站| 国产亚洲一区二区三区| 欧美日韩视频在线一区二区 | 久久综合久久综合亚洲| 91美女福利视频| 国产又粗又猛又爽又黄91精品| 亚洲激情在线激情| 国产欧美一区二区精品久导航| 欧美精品日韩精品| 欧美在线不卡一区| 99热这里都是精品| 国产一区二区女| 奇米色一区二区| 亚洲午夜激情网站| 成人免费在线观看入口| 久久久国产精华| 日韩视频一区二区三区| 欧美午夜不卡在线观看免费| jiyouzz国产精品久久| 国产成人精品免费看| 久久成人免费网| 久久国产精品色| 日韩黄色在线观看| 午夜视频在线观看一区| 亚洲免费大片在线观看| 国产精品乱码人人做人人爱| 久久久久99精品国产片| 精品嫩草影院久久| 日韩西西人体444www| 欧美日韩成人综合| 欧美日韩三级在线| 欧美视频三区在线播放| 日本韩国精品一区二区在线观看| av欧美精品.com| aaa国产一区| 99国产精品99久久久久久| av网站一区二区三区| 99久久99久久精品免费观看| 丁香一区二区三区| 成人av午夜电影| 91丨porny丨国产| 91成人国产精品| 欧美色视频在线观看| 欧美揉bbbbb揉bbbbb| 欧美日韩一区二区三区在线| 欧美情侣在线播放| 91精品在线观看入口| 欧美一区二区精品| 久久综合久久综合久久| 国产亚洲短视频| 国产精品久线观看视频| 亚洲九九爱视频| 亚洲高清视频在线| 青青草国产精品97视觉盛宴| 麻豆精品在线视频| 国产成人av一区二区三区在线| av网站免费线看精品| 91成人免费在线| 欧美电影免费提供在线观看| 国产亚洲va综合人人澡精品 | 懂色av一区二区三区免费看| jlzzjlzz欧美大全| 欧美日韩精品专区| 久久久无码精品亚洲日韩按摩| 国产精品视频一二三| 亚洲一区二三区| 久草热8精品视频在线观看| 国产精品一品二品| 色综合久久久久综合体| 正在播放亚洲一区| 日本一区二区三区四区在线视频| 亚洲免费av网站| 麻豆91精品视频| 成人av网站在线| 欧美一区在线视频| 国产精品福利av| 日韩中文字幕区一区有砖一区| 久久91精品久久久久久秒播| gogo大胆日本视频一区| 欧美一区二区三区不卡| 国产精品欧美久久久久一区二区| 亚洲大片一区二区三区| 国产成人在线视频网站| 欧美日韩一区二区三区高清 | 中文字幕一区二区三区四区| 五月天激情综合| 丁香激情综合五月| 欧美一区中文字幕| 一区二区三区四区视频精品免费| 毛片不卡一区二区| 欧美在线一区二区三区| 久久精品视频在线看| 日本va欧美va瓶| 色综合网站在线| 国产亚洲综合性久久久影院| 日韩电影在线看| 在线日韩av片| 国产精品久久看| 国产一区二区三区免费看| 欧美日韩综合不卡| 亚洲男人的天堂在线观看| 国产乱码精品一区二区三区五月婷| 欧美中文字幕不卡| 亚洲视频1区2区| 成人午夜在线视频| 久久嫩草精品久久久精品| 日韩精品一区第一页| 在线观看av一区二区| 中文字幕在线观看一区| 国产不卡视频一区二区三区| 日韩欧美国产精品| 日韩精品一卡二卡三卡四卡无卡| 在线视频你懂得一区| 亚洲欧洲日韩av| 成人丝袜高跟foot| 国产欧美日韩麻豆91| 国产一区不卡精品| 精品国精品国产尤物美女| 日本欧美一区二区三区| 欧美日韩精品专区| 婷婷开心久久网| 9191国产精品| 丝瓜av网站精品一区二区| 欧美精品v日韩精品v韩国精品v| 亚洲精品国久久99热| 一本久久综合亚洲鲁鲁五月天| 国产精品久久久久久福利一牛影视| 极品少妇xxxx偷拍精品少妇| 欧美tickling挠脚心丨vk| 久久国产免费看| 精品国产成人在线影院| 国内精品伊人久久久久影院对白| 日韩欧美国产精品| 国产制服丝袜一区| 国产亚洲美州欧州综合国| 国产99一区视频免费| 国产精品全国免费观看高清 | 欧美男女性生活在线直播观看| 一级中文字幕一区二区| 欧美怡红院视频| 午夜精品一区二区三区免费视频 | 色美美综合视频| 在线播放/欧美激情| 久久蜜桃av一区二区天堂| 国产精品久久一卡二卡| 欧美在线短视频| av成人免费在线| 久久这里只有精品6| 激情另类小说区图片区视频区| 精品少妇一区二区三区在线播放| 黑人巨大精品欧美黑白配亚洲| 久久久久久久久99精品| 不卡的电影网站| 亚洲成在线观看| 欧美不卡一二三| 懂色av一区二区三区免费观看| 亚洲人午夜精品天堂一二香蕉| 欧美性色黄大片| 精品一区二区三区视频在线观看| 亚洲国产岛国毛片在线| 欧美伊人久久久久久午夜久久久久| 日韩va亚洲va欧美va久久| 久久精品无码一区二区三区|