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

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

?? io.c

?? Vitual Ring Routing 管你知不知道
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
    MiniportAdapter *VA,
    VRR_QUERY_PHYSICAL_ADAPTER *Query)
{
    ProtocolAdapter *PA;

    if (Query->Index == 0)
        PA = FindPhysicalAdapterFromGuid(VA, &Query->Guid);
    else
        PA = FindPhysicalAdapterFromIndex(VA, Query->Index);

    return PA;
}

//* ReturnQueryPhysicalAdapter
//
//  Initializes a returned VRR_QUERY_PHYSICAL_ADAPTER structure
//  with query information for the specified physical adapter.
//
void
ReturnQueryPhysicalAdapter(
    ProtocolAdapter *PA,
    VRR_QUERY_PHYSICAL_ADAPTER *Query)
{
    if (PA == NULL) {
        ReturnQueryVirtualAdapter(NULL, &Query->VA);
        Query->Index = (uint)-1;
        RtlZeroMemory(&Query->Guid, sizeof Query->Guid);
    }
    else {
        ReturnQueryVirtualAdapter(PA->VirtualAdapter, &Query->VA);
        Query->Index = PA->Index;
        Query->Guid = PA->Guid;
    }
}

//* IoQueryPhysicalAdapter
//
//  Handles queries for information about a virtual adapter.
//
NTSTATUS
IoQueryPhysicalAdapter(
    IN PIRP Irp,
    IN PIO_STACK_LOCATION IrpSp)
{
    VRR_QUERY_PHYSICAL_ADAPTER *Query;
    VRR_INFO_PHYSICAL_ADAPTER *Info;
    MiniportAdapter *VA;
    ProtocolAdapter *PA;
    KIRQL OldIrql;
    NTSTATUS Status;

    Irp->IoStatus.Information = 0;

    if ((IrpSp->Parameters.DeviceIoControl.InputBufferLength != sizeof *Query) ||
        (IrpSp->Parameters.DeviceIoControl.OutputBufferLength < sizeof *Info)) {
        Status = STATUS_INVALID_PARAMETER;
        goto Return;
    }

    Query = (VRR_QUERY_PHYSICAL_ADAPTER *) Irp->AssociatedIrp.SystemBuffer;
    Info = (VRR_INFO_PHYSICAL_ADAPTER *) Irp->AssociatedIrp.SystemBuffer;

    //
    // Return information about the specified virtual adapter.
    //
    VA = FindVirtualAdapterFromQuery(&Query->VA);
    if (VA == NULL) {
        Status = STATUS_INVALID_PARAMETER_1;
        goto Return;
    }

    if (Query->Index == (uint)-1) {
        //
        // Return query information for the first physical adapter.
        //
        KeAcquireSpinLock(&VA->Lock, &OldIrql);
        ReturnQueryPhysicalAdapter(VA->PhysicalAdapters, &Info->Next);
        KeReleaseSpinLock(&VA->Lock, OldIrql);

        Irp->IoStatus.Information = sizeof Info->Next;
    }
    else {
        //
        // Return information about the specified physical adapter.
        //
        PA = FindPhysicalAdapterFromQuery(VA, Query);
        if (PA == NULL) {
            Status = STATUS_INVALID_PARAMETER_2;
            goto ReturnReleaseVA;
        }

        //
        // Return query information for the next physical adapter.
        //
        KeAcquireSpinLock(&VA->Lock, &OldIrql);
        ReturnQueryPhysicalAdapter(PA->Next, &Info->Next);
        KeReleaseSpinLock(&VA->Lock, OldIrql);

        //
        // Return miscellaneous information about the virtual adapter.
        //
        ReturnQueryPhysicalAdapter(PA, &Info->This);
        ProtocolQuery(PA, Info);

#if 0
        ReleasePA(PA);
#endif

        Irp->IoStatus.Information = sizeof *Info;
    }

    ReturnQueryVirtualAdapter(VA, &Info->Next.VA);
    Status = STATUS_SUCCESS;
ReturnReleaseVA:
#if 0
    ReleaseVA(VA);
#endif
Return:
    Irp->IoStatus.Status = Status;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);

    return Status;
}

//* IoQueryNeighborCacheInitLink
//
// Helper for IoQueryNeighborCache.
//
IoQueryNeighborCacheInitLink(
    MiniportAdapter *VA,
    VRR_INFO_LINK *LInfo,
    Link          *link)
{
    Time Delta = IoTimeDelta();
    uint i;

    LInfo->FromIF = link->outif;
    LInfo->ToIF = link->inif;
    LInfo->Metric = link->Metric;
    LInfo->TimeStamp = link->TimeStamp + Delta;
    LInfo->Usage = link->Usage;
    LInfo->Failures = link->Failures;
    LInfo->DropRatio = link->DropRatio;
    LInfo->ArtificialDrops = link->ArtificialDrops;
    LInfo->QueueDrops = link->QueueDrops;

    switch (VA->MetricType) {
    case METRIC_TYPE_WCETT:
        LInfo->MetricInfo.Wcett.TotSentProbes = link->MetricInfo.Wcett.Etx.TotSentProbes;
        LInfo->MetricInfo.Wcett.TotRcvdProbes = link->MetricInfo.Wcett.Etx.TotRcvdProbes;
        LInfo->MetricInfo.Wcett.FwdDeliv = link->MetricInfo.Wcett.Etx.FwdDeliv;
        LInfo->MetricInfo.Wcett.ProbeHistorySZ = link->MetricInfo.Wcett.Etx.ProbeHistorySZ;
        LInfo->MetricInfo.Wcett.LastProb = link->MetricInfo.Wcett.Etx.LastProb;
                    
        LInfo->MetricInfo.Wcett.PairsSent = link->MetricInfo.Wcett.PktPair.PairsSent;
        LInfo->MetricInfo.Wcett.RepliesSent = link->MetricInfo.Wcett.PktPair.RepliesSent;
        LInfo->MetricInfo.Wcett.RepliesRcvd = link->MetricInfo.Wcett.PktPair.RepliesRcvd;
        LInfo->MetricInfo.Wcett.LastPktPair = link->MetricInfo.Wcett.PktPair.LastPktPair;
        LInfo->MetricInfo.Wcett.CurrMin = link->MetricInfo.Wcett.PktPair.CurrMin;
        LInfo->MetricInfo.Wcett.NumPktPairValid = link->MetricInfo.Wcett.NumPktPairValid;
        LInfo->MetricInfo.Wcett.NumPktPairInvalid = link->MetricInfo.Wcett.NumPktPairInvalid;
        break;
    }
}

//* IoQueryNeighborCache
//
//  Handles queries for information about a neighbor cache entry.
//
NTSTATUS
IoQueryNeighborCache(
    IN PIRP Irp,
    IN PIO_STACK_LOCATION IrpSp)
{
    VRR_QUERY_NEIGHBOR_CACHE *Query;
    VRR_INFO_NEIGHBOR_CACHE *Info;
    MiniportAdapter *VA = NULL;
    NeighborCacheEntry *NCE;
    KIRQL OldIrql;
    NTSTATUS Status;
    Time Now = KeQueryInterruptTime();
    uint millisecs;
    uint ns100;

    PAGED_CODE();

    Irp->IoStatus.Information = 0;

    if ((IrpSp->Parameters.DeviceIoControl.InputBufferLength != sizeof *Query) ||
        (IrpSp->Parameters.DeviceIoControl.OutputBufferLength < sizeof *Info)) {
        Status = STATUS_INVALID_PARAMETER;
        goto Return;
    }

    //
    // Note that the Query and Info->Query structures overlap!
    //
    Query = (VRR_QUERY_NEIGHBOR_CACHE *) Irp->AssociatedIrp.SystemBuffer;
    Info = (VRR_INFO_NEIGHBOR_CACHE *) Irp->AssociatedIrp.SystemBuffer;

    //
    // Return information about the specified virtual adapter.
    //
    VA = FindVirtualAdapterFromQuery(&Query->VA);
    if (VA == NULL) {
        Status = STATUS_INVALID_PARAMETER_1;
        goto Return;
    }

    if (IsUnspecified(Query->Address)) {
        //
        // Return the address of the first NCE.
        //
        KeAcquireSpinLock(&VA->NC.Lock, &OldIrql);
        if (VA->NC.FirstNCE != SentinelNCE(&VA->NC)) {
            RtlCopyMemory(Info->Query.Address, VA->NC.FirstNCE->VAddress,
                          sizeof(VirtualAddress));
            Info->Query.RemIF = VA->NC.FirstNCE->RemIF;
            Info->Query.LocIF = VA->NC.FirstNCE->LocIF;
        }
        KeReleaseSpinLock(&VA->NC.Lock, OldIrql);

        Irp->IoStatus.Information = sizeof Info->Query;
    }
    else {
        //
        // Find the specified NCE.
        //
        KeAcquireSpinLock(&VA->NC.Lock, &OldIrql);
        for (NCE = VA->NC.FirstNCE; ; NCE = NCE->Next) {
            if (NCE == SentinelNCE(&VA->NC)) {
                KeReleaseSpinLock(&VA->NC.Lock, OldIrql);
                Status = STATUS_INVALID_PARAMETER_2;

                goto Return;
            }

            if (VirtualAddressEqual(Query->Address, NCE->VAddress) &&
                (Query->RemIF == NCE->RemIF) &&
                (Query->LocIF == NCE->LocIF))   // VRR: NCE (address,RemIF) may no longer be unique. 
                break;
        }

        //
        // Return miscellaneous information about the NCE.
        //
        RtlCopyMemory(Info->Address, NCE->PAddress, sizeof(PhysicalAddress));
        Info->LocIF = NCE->LocIF;
        Info->State = NCE->State;
        Info->RefCnt = NCE->RefCnt;
        Info->BitsPerSec = NCE->BitsPerSec;
        Info->Rssi = NCE->Rssi;
        Info->TimeLastHello = (uint)(KeQueryInterruptTime() - NCE->TimeLastHello);
        if (NCE->Timeout == 0)
            Info->Timeout = 0;
        else
            Info->Timeout = (uint)((NCE->Timeout - KeQueryInterruptTime()) / 10000);
        Info->CountFailRexmit = NCE->CountFailRexmit;
        Info->CountFailHelloLoss = NCE->CountFailHelloLoss;
        Info->CountFailQoSEvict = NCE->CountFailQoSEvict;
        Info->CountFailHelloFail = NCE->CountFailHelloFail;
        Info->AveUsedBitsPerSecond = NCE->AveUsedBitsPerSecond;
        
        //
        // Populate AdjOut link members.
        //
        IoQueryNeighborCacheInitLink(VA,&Info->AdjOut,&NCE->AdjOut);
        
        //
        // Return address of the next NCE (or zero).
        //
        if (NCE->Next == SentinelNCE(&VA->NC)) {
            RtlZeroMemory(Info->Query.Address, sizeof(VirtualAddress));
            Info->Query.RemIF = (uint)-1;
            Info->Query.LocIF = -1;            
        }
        else {
            RtlCopyMemory(Info->Query.Address, NCE->Next->VAddress,
                          sizeof(VirtualAddress));
            Info->Query.RemIF = NCE->Next->RemIF;
            Info->Query.LocIF = NCE->Next->LocIF;
        }

        KeReleaseSpinLock(&VA->NC.Lock, OldIrql);

        Irp->IoStatus.Information = sizeof *Info;
    }

    Status = STATUS_SUCCESS;
Return:
#if 0
    if (VA != NULL)
        ReleaseVA(VA);
#endif
    Irp->IoStatus.Status = Status;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);

    return Status;

}

//* IoFlushNeighborCache
//
//  Handles requests to flush the neighbor cache.
//
NTSTATUS
IoFlushNeighborCache(
    IN PIRP Irp,
    IN PIO_STACK_LOCATION IrpSp)
{
    VRR_QUERY_NEIGHBOR_CACHE *Query;
    MiniportAdapter *VA;
    const uchar *Address;
    NTSTATUS Status;

    PAGED_CODE();

    Irp->IoStatus.Information = 0;

    if (IrpSp->Parameters.DeviceIoControl.InputBufferLength != sizeof *Query) {
        Status = STATUS_INVALID_PARAMETER;
        goto Return;
    }

    Query = (VRR_QUERY_NEIGHBOR_CACHE *) Irp->AssociatedIrp.SystemBuffer;

    //
    // Find the specified virtual adapter.
    //
    VA = FindVirtualAdapterFromQuery(&Query->VA);
    if (VA == NULL) {
        Status = STATUS_INVALID_PARAMETER_1;
        goto Return;
    }

    if (IsUnspecified(Query->Address))
        Address = NULL;
    else
        Address = Query->Address;

    NeighborCacheFlushAddress(&VA->NC, Address, (VRRIf) Query->RemIF);
#if 0
    ReleaseVA(VA);
#endif
    Status = STATUS_SUCCESS;

Return:
    Irp->IoStatus.Status = Status;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);

    return Status;
}



//* ReturnQueryMaintenanceBufferNode
//
//  Initializes a returned VRR_QUERY_MAINTENANCE_BUFFER_NODE structure
//  with query information for the specified maintenance buffer node.
//  Does NOT initialize Query->VA.
//
void
ReturnQueryMaintenanceBufferNode(
    MaintBufNode *MBN,
    VRR_QUERY_MAINTENANCE_BUFFER_NODE *Query)
{
    if (MBN == NULL) {
        RtlZeroMemory(Query->Node.Address, SR_ADDR_LEN);
        Query->Node.InIF = 0;
        Query->Node.OutIF = 0;
    }
    else {
        RtlCopyMemory(Query->Node.Address, MBN->Address, SR_ADDR_LEN);
        Query->Node.InIF = MBN->InIf;
        Query->Node.OutIF = MBN->OutIf;
    }
}

//* IoQueryMaintenanceBuffer
//
//  Handles queries for information about the maintenance buffer.
//
NTSTATUS

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人精品在线观看| 亚洲国产精品久久人人爱蜜臀| 97精品电影院| 青青草国产成人av片免费| 国产精品美女久久久久久久网站| 欧美少妇xxx| 成人av网在线| 国产一区二区三区在线看麻豆| 亚洲韩国精品一区| 国产精品久久午夜夜伦鲁鲁| 日韩欧美亚洲国产另类| 欧美综合天天夜夜久久| 成人激情图片网| 国内精品久久久久影院薰衣草| 天天综合网天天综合色| 亚洲理论在线观看| 国产精品剧情在线亚洲| 精品sm捆绑视频| 91精品国产福利| 欧美日韩视频在线第一区| www.成人在线| 青青草97国产精品免费观看无弹窗版| 亚洲欧美一区二区三区孕妇| 国产亚洲成aⅴ人片在线观看| 日韩三级视频在线观看| 欧美日韩电影一区| 欧美三级电影在线观看| 91视视频在线直接观看在线看网页在线看| 国产乱色国产精品免费视频| 久久精品国产免费看久久精品| 亚洲成人激情av| 一区二区三国产精华液| 亚洲精品免费播放| 亚洲男人天堂av| 亚洲人妖av一区二区| 日韩伦理免费电影| 亚洲视频1区2区| 亚洲人成人一区二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 久久嫩草精品久久久精品 | 日韩女优av电影在线观看| 欧美精品国产精品| 欧美精品日日鲁夜夜添| 91 com成人网| 欧美一区二区三区在线观看视频| 91精品婷婷国产综合久久竹菊| 欧美久久久久久蜜桃| 宅男噜噜噜66一区二区66| 91精品在线一区二区| 日韩免费一区二区三区在线播放| 欧美sm美女调教| 欧美激情综合在线| 亚洲色图另类专区| 亚洲综合久久久久| 日韩电影一区二区三区四区| 久久精品国产一区二区三区免费看| 老司机免费视频一区二区三区| 国产一二三精品| 成人免费福利片| 欧洲一区二区三区在线| 宅男噜噜噜66一区二区66| 精品电影一区二区三区| 国产欧美一区二区三区鸳鸯浴 | 欧美一区二区三区免费| 欧美哺乳videos| 国产精品卡一卡二| 亚洲成人动漫av| 韩国女主播一区| 95精品视频在线| 4438x成人网最大色成网站| 久久这里只有精品视频网| 日韩一区在线看| 日韩精品午夜视频| 成人av在线影院| 欧美日韩激情一区二区三区| 久久综合九色欧美综合狠狠| 亚洲欧洲日韩av| 蜜臀av性久久久久蜜臀av麻豆| 国产成人综合亚洲91猫咪| 欧美在线免费观看亚洲| 精品免费日韩av| 综合网在线视频| 麻豆精品在线看| 91丨九色porny丨蝌蚪| 精品久久国产老人久久综合| 亚洲男人的天堂在线aⅴ视频| 蜜臀av性久久久久av蜜臀妖精| 粗大黑人巨茎大战欧美成人| 欧美日韩日日摸| 国产精品久久福利| 免费成人在线影院| 91久久精品日日躁夜夜躁欧美| 精品国产污污免费网站入口 | 中文字幕一区不卡| 男女男精品网站| 色哟哟精品一区| 国产无人区一区二区三区| 亚洲va韩国va欧美va精品| 成人精品鲁一区一区二区| 日韩天堂在线观看| 一区二区欧美国产| 不卡一区二区在线| 精品国产百合女同互慰| 亚洲国产美女搞黄色| 丁香婷婷综合网| 欧美xxxx老人做受| 亚洲成av人片观看| 色久综合一二码| 中文字幕在线不卡一区| 国产永久精品大片wwwapp| 欧美喷水一区二区| 一区二区免费看| 99re6这里只有精品视频在线观看| 精品成人一区二区三区| 麻豆精品在线视频| 欧美一区二区久久| 性欧美疯狂xxxxbbbb| 在线免费观看日本一区| 亚洲欧洲三级电影| www.视频一区| 国产精品国产三级国产普通话蜜臀 | 国产一区二区精品久久| 欧美一区二区视频在线观看| 亚洲在线视频网站| 在线国产电影不卡| 亚洲尤物在线视频观看| 色综合久久久网| 亚洲视频资源在线| 91网站最新地址| 亚洲视频免费在线观看| 91在线porny国产在线看| 国产精品久久久久久久久快鸭 | 国产成人在线观看免费网站| 久久久精品tv| 国产米奇在线777精品观看| 久久精品一二三| 国产精品夜夜嗨| 久久久精品tv| 成人成人成人在线视频| 国产精品国产三级国产普通话三级| 成人午夜视频网站| 亚洲丝袜精品丝袜在线| 91成人免费在线视频| 一区二区三区四区不卡视频| 欧美伊人久久久久久午夜久久久久| 亚洲精品国产精品乱码不99| 色视频一区二区| 午夜精品视频在线观看| 欧美日高清视频| 日本sm残虐另类| 久久综合资源网| 国产白丝精品91爽爽久久| 中文字幕日本不卡| 91在线看国产| 亚洲成人免费在线| 精品国内二区三区| 成人免费福利片| 亚洲国产sm捆绑调教视频| 4438x亚洲最大成人网| 久久99久久99| 国产精品午夜久久| 欧美色视频在线观看| 人禽交欧美网站| 国产农村妇女毛片精品久久麻豆| 99精品黄色片免费大全| 天涯成人国产亚洲精品一区av| 2022国产精品视频| 91久久精品网| 久久99精品国产麻豆不卡| 亚洲国产精品激情在线观看| 91蝌蚪porny| 奇米精品一区二区三区四区 | 欧美aa在线视频| 国产亚洲1区2区3区| 在线免费观看视频一区| 黄色日韩三级电影| 一区视频在线播放| 欧美成人精品高清在线播放| 国产丶欧美丶日本不卡视频| 一区二区三区精品在线| 2017欧美狠狠色| 精品视频在线免费看| 国产盗摄一区二区| 丝袜美腿亚洲综合| 国产精品久久久久国产精品日日| 欧美乱妇一区二区三区不卡视频| 国产精品一区三区| 香蕉成人伊视频在线观看| 久久精品欧美一区二区三区麻豆| 欧美亚男人的天堂| 国产传媒欧美日韩成人| 青青草原综合久久大伊人精品优势 | 91精品国产美女浴室洗澡无遮挡| 成人动漫av在线| 久久99国产乱子伦精品免费| 亚洲精品v日韩精品| 久久久久久久久一| 欧美久久一区二区| 91碰在线视频| 国产suv一区二区三区88区|