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

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

?? nic_req.c

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

            newDeviceState = *(PDEVICE_POWER_STATE UNALIGNED)InformationBuffer;
            oldDeviceState = FdoData->DevicePowerState;
            FdoData->DevicePowerState = newDeviceState;
            
            if (oldDeviceState == PowerDeviceD0) {

                status = PciDrvPowerBeginQueuingIrps(
                    FdoData->Self,
                    1,              // One for current OID request.
                    FALSE           // Do not query for state change.
                    );

                ASSERT(NT_SUCCESS(status));
            }
            
            //
            // Set the power state - Cannot fail this request
            //
            status = NICSetPower(FdoData, newDeviceState );

            if (status != STATUS_SUCCESS)
            {
                DebugPrint(ERROR, DBG_IOCTLS, "SET Power: Hardware error !!!\n");
                break;
            }

            if (newDeviceState == PowerDeviceD0) {

                //
                // Our hardware is now on again. Here we empty our existing queue of
                // requests and let in new ones. 
                //
                FdoData->QueueState = AllowRequests;
                PciDrvProcessQueuedRequests(FdoData);
            }
        
            status = STATUS_SUCCESS; 
            break;

        case OID_PNP_ADD_WAKE_UP_PATTERN:
            //
            // call a function that would program the adapter's wake
            // up pattern, return success
            //
            DebugPrint(TRACE, DBG_IOCTLS, "--> OID_PNP_ADD_WAKE_UP_PATTERN\n");            

            if (IsPoMgmtSupported(FdoData) )
            {
                status = NICAddWakeUpPattern(FdoData,
                                            InformationBuffer, 
                                            InformationBufferLength, 
                                            &unUsed, 
                                            &unUsed); 
            }
            else
            {
                status = STATUS_NOT_SUPPORTED;
            }
            break;

    
        case OID_PNP_REMOVE_WAKE_UP_PATTERN:

            //
            // call a function that would remove the adapter's wake
            // up pattern, return success
            //
            DebugPrint(TRACE, DBG_IOCTLS, "--> OID_PNP_ADD_WAKE_UP_PATTERN\n");            
            
            if (IsPoMgmtSupported(FdoData) )
            {
                status = NICRemoveWakeUpPattern(FdoData, 
                                               InformationBuffer, 
                                               InformationBufferLength,
                                               &unUsed,
                                               &unUsed);

            }
            else
            {
                status = STATUS_NOT_SUPPORTED;
            }
            break;

        case OID_PNP_ENABLE_WAKE_UP:
            //
            // call a function that would enable wake up on the adapter
            // return success
            //
            DebugPrint(TRACE, DBG_IOCTLS, "--> OID_PNP_ENABLE_WAKE_UP\n");            
            if (IsPoMgmtSupported(FdoData))
            {
                ULONG       WakeUpEnable;
                RtlMoveMemory(&WakeUpEnable, InformationBuffer,sizeof(ULONG));
                //
                // The WakeUpEable can only be 0, or NDIS_PNP_WAKE_UP_PATTERN_MATCH since the driver only
                // supports wake up pattern match
                //
                if ((WakeUpEnable != 0)
                       && ((WakeUpEnable & NDIS_PNP_WAKE_UP_PATTERN_MATCH) != NDIS_PNP_WAKE_UP_PATTERN_MATCH ))
                {
                    status = STATUS_NOT_SUPPORTED;
                    FdoData->AllowWakeArming = FALSE;    
                    break;
                }
                //
                // When the driver goes to low power state, it would check WakeUpEnable to decide
                // which wake up methed it should use to wake up the machine. If WakeUpEnable is 0,
                // no wake up method is enabled.
                //
                FdoData->AllowWakeArming = TRUE;
                
                status = STATUS_SUCCESS; 
            }
            else
            {
                status = STATUS_NOT_SUPPORTED;
            }

            break;            
        default:
            status = STATUS_NOT_SUPPORTED;
            break;
        }
    }while (FALSE);

    DebugPrint(LOUD, DBG_IOCTLS, "<-- HandleSetOIDRequest\n");
            
    return (status);
}

VOID 
NICServiceIndicateStatusIrp(
    IN PFDO_DATA        FdoData
    )
/*++

Routine Description:

   This routine is used indicate media status of the client.
   If the IRP was cancelled for some reason we will let
   the cancel routine do the IRP completion.
    
Arguments:


Return Value:

    None

--*/
{
    PIRP                        pIrp = NULL;
    PIO_STACK_LOCATION          pIrpSp = NULL;    
    PNDISPROT_INDICATE_STATUS   pIndicateStatus = NULL;
    NTSTATUS                    ntStatus = STATUS_CANCELLED;
    ULONG                       inBufLength, outBufLength;
    KIRQL                       oldIrql;
    

    DebugPrint(TRACE, DBG_IOCTLS, "-->ndisServiceIndicateStatusIrp\n");
    
    KeAcquireSpinLock(&FdoData->Lock, &oldIrql);

    pIrp = FdoData->StatusIndicationIrp;
              
    if(pIrp){
        
        //
        // Clear the cancel routine.
        //
        if(IoSetCancelRoutine(pIrp, NULL)){
            //
            // Cancel routine cannot run now and cannot have already 
            // started to run.
            //
            pIrpSp = IoGetCurrentIrpStackLocation(pIrp);            
            pIndicateStatus = pIrp->AssociatedIrp.SystemBuffer;
            inBufLength = pIrpSp->Parameters.DeviceIoControl.InputBufferLength;
            outBufLength = pIrpSp->Parameters.DeviceIoControl.OutputBufferLength;            
            
            //
            // Check to see whether the buffer is large enough.
            //
            if(outBufLength >= sizeof(NDISPROT_INDICATE_STATUS)){

                if(MP_TEST_FLAG(FdoData, fMP_ADAPTER_NO_CABLE)){
                    pIndicateStatus->IndicatedStatus = NDIS_STATUS_MEDIA_DISCONNECT;
                } else {
                    pIndicateStatus->IndicatedStatus = NDIS_STATUS_MEDIA_CONNECT;
                }
                pIndicateStatus->StatusBufferLength = 0;
                pIndicateStatus->StatusBufferOffset = 0;                                 
                ntStatus = STATUS_SUCCESS;
                
            } else {
                ntStatus = STATUS_BUFFER_OVERFLOW;
            }
            
            //
            // Since we are completing the IRP below, clear this field.
            //
            FdoData->StatusIndicationIrp = NULL;                
        }else {
            //
            // Cancel rotuine is running. Leave the irp alone.
            //
            pIrp = NULL;
        }
    }
    
    KeReleaseSpinLock(&FdoData->Lock, oldIrql);

    if(pIrp){
        pIrp->IoStatus.Information = sizeof(NDISPROT_INDICATE_STATUS);
        pIrp->IoStatus.Status = ntStatus;
        IoCompleteRequest(pIrp, IO_NO_INCREMENT);
        PciDrvIoDecrement (FdoData);

    }

    DebugPrint(TRACE, DBG_IOCTLS, "<--ndisServiceIndicateStatusIrp\n");
    
    return;
    
}

MEDIA_STATE
NICIndicateMediaState(
    IN PFDO_DATA FdoData
    )
{
    MEDIA_STATE CurrMediaState;
    
    KeAcquireSpinLockAtDpcLevel(&FdoData->Lock);
    
    CurrMediaState = GetMediaState(FdoData);

    if (CurrMediaState != FdoData->MediaState)
    {
        DebugPrint(WARNING, DBG_IOCTLS, "Media state changed to %s\n",
            ((CurrMediaState == Connected)? 
            "Connected": "Disconnected"));

        FdoData->MediaState = CurrMediaState;
        
        if (CurrMediaState == Connected)
        {
            MP_CLEAR_FLAG(FdoData, fMP_ADAPTER_NO_CABLE);
        }
        else
        {
            MP_SET_FLAG(FdoData, fMP_ADAPTER_NO_CABLE);
        }
        
        KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);
        
        // Indicate the media event
        NICServiceIndicateStatusIrp(FdoData);
    }
    else
    {
        KeReleaseSpinLockFromDpcLevel(&FdoData->Lock);
    }

    return CurrMediaState;
}


NTSTATUS 
NICGetStatsCounters(
    IN  PFDO_DATA   FdoData, 
    IN  NDIS_OID    Oid,
    OUT PULONG64    pCounter
    )
/*++
Routine Description:

    Get the value for a statistics OID

Arguments:

    FdoData     Pointer to our FdoData 
    Oid         Self-explanatory   
    pCounter    Pointer to receive the value
    
Return Value:

    NT Status code
    
--*/
{
    NTSTATUS     status = STATUS_SUCCESS;

    DebugPrint(TRACE, DBG_IOCTLS, "--> NICGetStatsCounters\n");

    *pCounter = 0; 

    DumpStatsCounters(FdoData);
            
    switch(Oid)
    {
        case OID_GEN_XMIT_OK:
            *pCounter = FdoData->GoodTransmits;
            break;

        case OID_GEN_RCV_OK:
            *pCounter = FdoData->GoodReceives;
            break;

        case OID_GEN_XMIT_ERROR:
            *pCounter = FdoData->TxAbortExcessCollisions +
                        FdoData->TxDmaUnderrun +
                        FdoData->TxLostCRS +
                        FdoData->TxLateCollisions;
            break;

        case OID_GEN_RCV_ERROR:
            *pCounter = FdoData->RcvCrcErrors +
                        FdoData->RcvAlignmentErrors +
                        FdoData->RcvResourceErrors +
                        FdoData->RcvDmaOverrunErrors +
                        FdoData->RcvRuntErrors;
            break;

        case OID_GEN_RCV_NO_BUFFER:
            *pCounter = FdoData->RcvResourceErrors;
            break;

        case OID_GEN_RCV_CRC_ERROR:
            *pCounter = FdoData->RcvCrcErrors;
            break;

        case OID_GEN_TRANSMIT_QUEUE_LENGTH:
            *pCounter = FdoData->nWaitSend;
            break;

        case OID_802_3_RCV_ERROR_ALIGNMENT:
            *pCounter = FdoData->RcvAlignmentErrors;
            break;

        case OID_802_3_XMIT_ONE_COLLISION:
            *pCounter = FdoData->OneRetry;
            break;

        case OID_802_3_XMIT_MORE_COLLISIONS:
            *pCounter = FdoData->MoreThanOneRetry;
            break;

        case OID_802_3_XMIT_DEFERRED:
            *pCounter = FdoData->TxOKButDeferred;
            break;

        case OID_802_3_XMIT_MAX_COLLISIONS:
            *pCounter = FdoData->TxAbortExcessCollisions;
            break;

        case OID_802_3_RCV_OVERRUN:
            *pCounter = FdoData->RcvDmaOverrunErrors;
            break;

        case OID_802_3_XMIT_UNDERRUN:
            *pCounter = FdoData->TxDmaUnderrun;
            break;

        case OID_802_3_XMIT_HEARTBEAT_FAILURE:
            *pCounter = FdoData->TxLostCRS;
            break;

        case OID_802_3_XMIT_TIMES_CRS_LOST:
            *pCounter = FdoData->TxLostCRS;
            break;

        case OID_802_3_XMIT_LATE_COLLISIONS:
            *pCounter = FdoData->TxLateCollisions;
            break;

        default:
            status = STATUS_NOT_SUPPORTED;
            break;
    }

    DebugPrint(TRACE, DBG_IOCTLS, "<-- NICGetStatsCounters\n");

    return(status);
}

NTSTATUS NICSetPacketFilter(
    IN PFDO_DATA    FdoData,
    IN ULONG        PacketFilter
    )
/*++
Routine Description:

    This routine will set up the FdoData so that it accepts packets 
    that match the specified packet filter.  The only filter bits   
    that can truly be toggled are for broadcast and promiscuous     

Arguments:
    
    FdoData         Pointer to our FdoData
    PacketFilter    The new packet filter 
    
Return Value:

    
--*/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清影院| 国产精品一区在线| **欧美大码日韩| 中文av一区二区| ...av二区三区久久精品| 亚洲三级电影网站| 一区2区3区在线看| 亚洲成a人片在线不卡一二三区| 色一情一乱一乱一91av| 99精品视频一区| 欧洲亚洲国产日韩| 欧美一区二区三区日韩视频| 成a人片国产精品| 日本免费新一区视频| 免费看黄色91| 国产传媒一区在线| 午夜欧美电影在线观看| 日韩精品一级中文字幕精品视频免费观看 | 国产精品美女久久久久高潮| 久久九九国产精品| 国产嫩草影院久久久久| 欧美一级理论性理论a| 色综合久久中文综合久久97| 久久精品国产网站| 亚洲第一av色| 成人av电影在线播放| 91在线小视频| 日韩欧美在线综合网| 国产日韩影视精品| 欧美白人最猛性xxxxx69交| 色呦呦国产精品| 日韩一区二区三| 中文字幕色av一区二区三区| 视频一区免费在线观看| 一区二区三区精品在线观看| 国产精品美女久久久久久久久| 亚洲图片欧美色图| 国产99久久久精品| 国产成人在线色| 51精品久久久久久久蜜臀| 国产日韩欧美高清在线| 日韩电影一二三区| 日韩精品福利网| 日本人妖一区二区| 蜜桃av噜噜一区| 一本色道久久综合狠狠躁的推荐 | 国产精品久久久久久久裸模| 精品欧美乱码久久久久久1区2区| 中文字幕欧美一| 久久国产精品色| 欧美偷拍一区二区| 欧美高清在线一区| 亚洲欧洲美洲综合色网| 亚洲人精品一区| 亚洲激情五月婷婷| 亚洲成人中文在线| 99久久综合色| 国产亚洲精品aa午夜观看| 日韩高清在线一区| 国产电影一区在线| 欧美电影免费观看高清完整版在线| 日韩欧美中文字幕公布| 日韩avvvv在线播放| 欧美日韩成人激情| 亚洲图片欧美色图| 国产资源精品在线观看| 日韩一区二区三区精品视频| 亚洲sss视频在线视频| 欧美在线免费观看视频| 91精品国产91久久久久久最新毛片| 亚洲在线免费播放| 欧美亚洲综合色| 久久先锋影音av鲁色资源网| 国产欧美一区二区在线| 国产精品伊人色| 欧美三级在线看| 久久嫩草精品久久久久| 蜜臀久久99精品久久久画质超高清 | 亚洲影院理伦片| 欧美日韩一区二区三区视频| 日韩欧美成人激情| **网站欧美大片在线观看| 97国产一区二区| 精品国产91乱码一区二区三区| 午夜精品123| 制服丝袜在线91| 自拍偷拍国产精品| 国产一区二区三区在线观看精品| 日韩亚洲欧美成人一区| 国产在线不卡一区| 国产精品欧美一级免费| 热久久国产精品| 精品美女一区二区三区| 一区二区三区免费网站| 欧美精品久久久久久久久老牛影院| 亚洲sss视频在线视频| 色综合欧美在线| 天天综合天天综合色| 精品日韩欧美一区二区| 99国产欧美另类久久久精品| 欧美大片在线观看| 丁香婷婷综合激情五月色| 欧美日韩国产电影| 亚洲精品久久久蜜桃| 日韩女优电影在线观看| 国产伦精品一区二区三区视频青涩 | 91精品国产色综合久久不卡蜜臀| 精品一区二区三区视频| 国产精品美女久久久久aⅴ| 欧洲中文字幕精品| 亚洲激情一二三区| 日韩精品一区二区三区视频 | 一区二区三区中文字幕在线观看| 国产98色在线|日韩| 丝袜亚洲另类欧美综合| 亚洲国产高清aⅴ视频| 欧美日韩一区二区三区四区 | 国产亚洲欧美在线| 韩国午夜理伦三级不卡影院| 亚洲色图欧美偷拍| av电影在线观看不卡| 免费成人在线影院| 精品处破学生在线二十三| 91国偷自产一区二区三区成为亚洲经典| 久久精品日产第一区二区三区高清版 | 国产99久久精品| 国产免费久久精品| 日韩一区二区三区在线视频| 99精品视频在线观看免费| 黄页视频在线91| 日韩电影网1区2区| 精品国产1区2区3区| 欧美日韩另类国产亚洲欧美一级| 亚洲一区二区影院| 欧美日韩国产另类不卡| 成人黄色免费短视频| 九九热在线视频观看这里只有精品| 一区二区视频在线| 亚洲欧洲成人av每日更新| 在线免费观看一区| 97se亚洲国产综合在线| 99综合电影在线视频| 亚洲欧洲精品一区二区三区| 国产欧美日本一区二区三区| 99精品视频在线免费观看| 一区二区三区久久久| 亚洲视频一区在线观看| 在线成人午夜影院| 国产一区 二区 三区一级| 国产精品久久久久永久免费观看 | 欧美性受xxxx| 91久久精品网| 欧美少妇性性性| 欧美天堂一区二区三区| 精品一区二区三区香蕉蜜桃| 国产精品久久夜| 国产精品国产三级国产a| 欧美日韩国产片| 成人高清视频在线观看| 亚洲电影激情视频网站| 久久夜色精品国产欧美乱极品| av色综合久久天堂av综合| 97久久精品人人做人人爽| 日日噜噜夜夜狠狠视频欧美人| 国产日韩精品久久久| 国产精品丝袜91| 精品日韩在线观看| 欧美日韩免费视频| 欧美日本乱大交xxxxx| 制服丝袜亚洲网站| 色av成人天堂桃色av| 欧美精品v国产精品v日韩精品 | 一区二区三区在线观看视频| 一区二区三区av电影 | 久久青草国产手机看片福利盒子| 99国产精品国产精品毛片| 91丨九色丨黑人外教| 国产成人午夜电影网| 免费欧美高清视频| 成人免费观看男女羞羞视频| 在线精品视频一区二区三四| 欧美一区三区二区| 国产精品午夜免费| 午夜不卡av免费| 成人aaaa免费全部观看| 韩国三级电影一区二区| 日本成人中文字幕在线视频| 亚洲成av人影院| 国产成人小视频| 91麻豆精品国产综合久久久久久| 久久综合五月天婷婷伊人| 又紧又大又爽精品一区二区| 美脚の诱脚舐め脚责91| 91碰在线视频| 亚洲精品在线观| 五月婷婷综合在线| 三级影片在线观看欧美日韩一区二区 | 亚洲狼人国产精品| 久久国产麻豆精品| 欧美视频一区在线观看|