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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? display.c

?? usbview 為查看本機USB聯接查看代碼, 更改其中的部分可用于USB的通訊與應用
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*++

Copyright (c) 1997-1998 Microsoft Corporation

Module Name:

DISPLAY.C

Abstract:

This source file contains the routines which update the edit control
to display information about the selected USB device.

Environment:

user mode

Revision History:

04-25-97 : created

--*/

//*****************************************************************************
// I N C L U D E S
//*****************************************************************************

#include <windows.h>
#include <basetyps.h>

#include "vndrlist.h"
#include "usbview.h"
#include "usb100.h"

//*****************************************************************************
// D E F I N E S
//*****************************************************************************

#define BUFFERALLOCINCREMENT        8192
#define BUFFERMINFREESPACE          1024

//*****************************************************************************
// T Y P E D E F S
//*****************************************************************************

//*****************************************************************************
// G L O B A L S    P R I V A T E    T O    T H I S    F I L E
//*****************************************************************************

// Workspace for text info which is used to update the edit control
//
CHAR *TextBuffer = NULL;
int   TextBufferLen = 0;
int   TextBufferPos = 0;

//*****************************************************************************
// L O C A L    F U N C T I O N    P R O T O T Y P E S
//*****************************************************************************

VOID
DisplayHubInfo (
    PUSB_HUB_INFORMATION HubInfo
);

VOID
DisplayConnectionInfo (
    PUSB_NODE_CONNECTION_INFORMATION    ConnectInfo,
    PSTRING_DESCRIPTOR_NODE             StringDescs
);

VOID
DisplayPipeInfo (
    ULONG           NumPipes,
    USB_PIPE_INFO  *PipeInfo
);

VOID
DisplayConfigDesc (
    PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc,
    PSTRING_DESCRIPTOR_NODE         StringDescs
);

VOID
DisplayConfigurationDescriptor (
    PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc,
    PSTRING_DESCRIPTOR_NODE         StringDescs
);

VOID
DisplayInterfaceDescriptor (
    PUSB_INTERFACE_DESCRIPTOR   InterfaceDesc,
    PSTRING_DESCRIPTOR_NODE     StringDescs
);

VOID
DisplayEndpointDescriptor (
    PUSB_ENDPOINT_DESCRIPTOR    EndpointDesc
);

VOID
DisplayHidDescriptor (
    PUSB_HID_DESCRIPTOR         HidDesc
);

VOID
DisplayStringDescriptor (
    UCHAR                       Index,
    PSTRING_DESCRIPTOR_NODE     StringDescs
);

VOID
DisplayUnknownDescriptor (
    PUSB_COMMON_DESCRIPTOR      CommonDesc
);

PCHAR
GetVendorString (
    USHORT     idVendor
);

//*****************************************************************************
// L O C A L    F U N C T I O N S
//*****************************************************************************


//*****************************************************************************
//
// CreateTextBuffer()
//
//*****************************************************************************

BOOL
CreateTextBuffer (
)
{
    // Allocate the buffer
    //
    TextBuffer = ALLOC(BUFFERALLOCINCREMENT);

    if (TextBuffer == NULL)
    {
        OOPS();

        return FALSE;
    }

    TextBufferLen = BUFFERALLOCINCREMENT;

    // Reset the buffer position and terminate the buffer
    //
    *TextBuffer = 0;
    TextBufferPos = 0;

    return TRUE;
}


//*****************************************************************************
//
// DestroyTextBuffer()
//
//*****************************************************************************

VOID
DestroyTextBuffer (
)
{
    if (TextBuffer != NULL)
    {
        FREE(TextBuffer);

        TextBuffer = NULL;
    }
}


//*****************************************************************************
//
// ResetTextBuffer()
//
//*****************************************************************************

BOOL
ResetTextBuffer (
)
{
    // Fail if the text buffer has not been allocated
    //
    if (TextBuffer == NULL)
    {
        OOPS();

        return FALSE;
    }

    // Reset the buffer position and terminate the buffer
    //
    *TextBuffer = 0;
    TextBufferPos = 0;

    return TRUE;
}

//*****************************************************************************
//
// AppendTextBuffer()
//
//*****************************************************************************

VOID __cdecl
AppendTextBuffer (
    LPCTSTR lpFormat,
    ...
)
{
    va_list arglist;

    va_start(arglist, lpFormat);

    // Make sure we have a healthy amount of space free in the buffer,
    // reallocating the buffer if necessary.
    //
    if (TextBufferLen - TextBufferPos < BUFFERMINFREESPACE)
    {
        CHAR *TextBufferTmp;

        TextBufferTmp = REALLOC(TextBuffer, TextBufferLen+BUFFERALLOCINCREMENT);

        if (TextBufferTmp != NULL)
        {
            TextBuffer = TextBufferTmp;
            TextBufferLen += BUFFERALLOCINCREMENT;
        }
        else
        {
            // If GlobalReAlloc fails, the original memory is not freed,
            // and the original handle and pointer are still valid.
            //
            OOPS();

            return;
        }
    }

    // Add the text to the end of the buffer, updating the buffer position.
    //
    TextBufferPos += wvsprintf(TextBuffer + TextBufferPos,
                               lpFormat,
                               arglist);
}



//*****************************************************************************
//
// UpdateEditControl()
//
// hTreeItem - Handle of selected TreeView item for which information should
// be displayed in the edit control.
//
//*****************************************************************************

VOID
UpdateEditControl (
    HWND      hEditWnd,
    HWND      hTreeWnd,
    HTREEITEM hTreeItem
)
{
    TV_ITEM         tvi;
    PUSBDEVICEINFO  info;

    // Start with an empty text buffer.
    //
    if (!ResetTextBuffer())
    {
        return;
    }

    //
    // Get the name of the TreeView item, along with the a pointer to the
    // info we stored about the item in the item's lParam.
    //

    tvi.mask = TVIF_HANDLE | TVIF_TEXT | TVIF_PARAM;
    tvi.hItem = hTreeItem;
    tvi.pszText = (LPSTR)TextBuffer;
    tvi.cchTextMax = TextBufferLen-2;  // leave space for "\r\n'

    TreeView_GetItem(hTreeWnd,
                     &tvi);

    info = (PUSBDEVICEINFO)tvi.lParam;

    //
    // If we didn't store any info for the item, just display the item's
    // name, else display the info we stored for the item.
    //
    if (info != NULL)
    {
        if (info->ConnectionInfo == NULL)
        {
            // Must be Root HUB, external devices have Connection Info
            //
            AppendTextBuffer("Root Hub: %s\r\n",
                             info->HubName);

            DisplayHubInfo(&info->HubInfo->u.HubInformation);
        }
        else
        {
            if (info->HubInfo != NULL)
            {
                // Must be external HUB external
                //
                AppendTextBuffer("External Hub: %s\r\n",
                                 info->HubName);

                DisplayHubInfo(&info->HubInfo->u.HubInformation);
            }
            else
            {
                // Must be external non-HUB device.  Nothing special to
                // display here that isn't displayed in connection info
                // below.
            }

            // Display info common to any external device
            //
            DisplayConnectionInfo(info->ConnectionInfo,
                                  info->StringDescs);

            if (info->ConfigDesc)
            {
                DisplayConfigDesc((PUSB_CONFIGURATION_DESCRIPTOR)(info->ConfigDesc + 1),
                                  info->StringDescs);
            }

        }
    }

    // All done formatting text buffer with info, now update the edit
    // control with the contents of the text buffer
    //
    SetWindowText(hEditWnd, TextBuffer);
}


//*****************************************************************************
//
// DisplayHubInfo()
//
// HubInfo - Info about the hub.
//
//*****************************************************************************

VOID
DisplayHubInfo (
    PUSB_HUB_INFORMATION    HubInfo
)
{

    USHORT wHubChar;

    AppendTextBuffer("Hub Power:               %s\r\n",
                     HubInfo->HubIsBusPowered ?
                     "Bus Power" : "Self Power");

    AppendTextBuffer("Number of Ports:         %d\r\n",
                     HubInfo->HubDescriptor.bNumberOfPorts);

    wHubChar = HubInfo->HubDescriptor.wHubCharacteristics;

    switch (wHubChar & 0x0003)
    {
        case 0x0000:
            AppendTextBuffer("Power switching:         Ganged\r\n");
            break;

        case 0x0001:
            AppendTextBuffer("Power switching:         Individual\r\n");
            break;

        case 0x0002:
        case 0x0003:
            AppendTextBuffer("Power switching:         None\r\n");
            break;
    }

    switch (wHubChar & 0x0004)
    {
        case 0x0000:
            AppendTextBuffer("Compound device:         No\r\n");
            break;

        case 0x0004:
            AppendTextBuffer("Compound device:         Yes\r\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亲近乱来精品视频| 26uuu欧美| 亚洲色图20p| 欧美自拍偷拍午夜视频| 青娱乐精品视频| 国产亚洲一二三区| 精品视频在线免费看| 久久国内精品自在自线400部| 日本一区二区免费在线观看视频| 日韩精品一区二区三区视频| 成人av集中营| 美女脱光内衣内裤视频久久网站| 国产婷婷色一区二区三区四区| 精品国产91九色蝌蚪| 色综合久久久久网| 国产精品一区二区在线播放| 亚洲成a人片在线观看中文| 国产女人水真多18毛片18精品视频| 久久人人97超碰com| 欧美日韩第一区日日骚| 99久久久精品| 国产成人h网站| 蜜桃精品视频在线观看| 韩国成人福利片在线播放| 亚洲成人av福利| 蜜桃av一区二区在线观看| 国产专区综合网| 波多野结衣91| 成人蜜臀av电影| 国产盗摄精品一区二区三区在线| caoporn国产精品| 欧美私模裸体表演在线观看| 91影院在线免费观看| 成人三级在线视频| 欧美日韩国产精选| 尤物视频一区二区| 国产欧美一区二区精品性| 亚洲欧美aⅴ...| 一区二区免费视频| 亚洲人成网站色在线观看| 日韩影院在线观看| 日韩精品国产欧美| 不卡的av电影| 日韩一区二区在线免费观看| 日韩一区二区电影在线| 国产精品卡一卡二卡三| 专区另类欧美日韩| 免费一级片91| 色婷婷国产精品| 久久精品一区二区三区不卡牛牛| 亚洲精品五月天| 国产成人精品三级| 日韩视频在线观看一区二区| 亚洲精品日韩一| 国产精品一区二区三区网站| 欧美另类一区二区三区| 日韩欧美中文字幕一区| 亚洲综合无码一区二区| 日韩中文字幕av电影| 91在线porny国产在线看| 久久蜜桃香蕉精品一区二区三区| 亚洲成人福利片| 91免费看`日韩一区二区| 国产精品免费人成网站| 亚洲香肠在线观看| 国内成+人亚洲+欧美+综合在线 | 色欧美日韩亚洲| 久久久不卡网国产精品一区| 石原莉奈在线亚洲三区| 欧美日韩黄视频| 亚洲精品老司机| 色综合中文字幕国产| 91成人免费电影| 日韩欧美国产三级电影视频| 一区二区激情视频| 在线亚洲免费视频| 一区二区成人在线观看| 91色九色蝌蚪| 亚洲美女在线国产| 91蜜桃在线免费视频| 中文字幕一区二区三区色视频| 婷婷综合五月天| 成人sese在线| 亚洲欧洲一区二区三区| 色婷婷国产精品| 亚洲综合免费观看高清完整版在线| 色婷婷激情综合| 亚洲国产日韩在线一区模特| 欧美军同video69gay| 美国十次了思思久久精品导航| 日韩女优av电影在线观看| 国内不卡的二区三区中文字幕| 精品捆绑美女sm三区| 亚洲h在线观看| 在线成人小视频| 激情综合网最新| 欧美一级夜夜爽| 亚洲一区av在线| 欧美一区二区美女| 国产精品乡下勾搭老头1| 中文字幕在线观看一区二区| 在线免费观看视频一区| 免费一级片91| 欧美国产激情一区二区三区蜜月 | 欧美一级二级在线观看| 久久99精品国产麻豆不卡| 国产亚洲欧美激情| 欧亚洲嫩模精品一区三区| 免费成人在线播放| 中文字幕一区二区三区视频| 欧美日韩美少妇| 国产精品正在播放| 亚洲国产一区二区三区 | 国产精品亚洲专一区二区三区| 国产精品久久久久久亚洲伦 | 首页国产丝袜综合| 国产视频一区二区在线| 欧美丝袜丝交足nylons| 国产一区 二区 三区一级| 欧美不卡一二三| 日本大香伊一区二区三区| 蜜臀a∨国产成人精品| 亚洲精品一二三| 久久久久久久久久久久久女国产乱| 欧美综合亚洲图片综合区| 国内成人免费视频| 偷拍与自拍一区| 一区二区三区色| 国产欧美日本一区视频| 欧美成人a∨高清免费观看| 在线精品视频免费播放| 国产二区国产一区在线观看| 日韩高清电影一区| 欧美xxxxxxxx| 欧美日本乱大交xxxxx| 99久久综合狠狠综合久久| 六月丁香综合在线视频| 亚洲国产精品综合小说图片区| 中文乱码免费一区二区| 精品国产乱码久久久久久蜜臀 | 视频一区二区三区中文字幕| 亚洲欧美一区二区在线观看| 久久久一区二区三区| 91精品欧美久久久久久动漫| 国产一区啦啦啦在线观看| 三级成人在线视频| 亚洲国产一区视频| 亚洲妇熟xx妇色黄| 亚洲成人在线网站| 亚洲国产日日夜夜| 午夜不卡在线视频| 三级久久三级久久| 免费在线一区观看| 麻豆国产精品一区二区三区 | 国产精品久久久久婷婷| 精品乱人伦一区二区三区| 日韩欧美卡一卡二| 日韩欧美国产一二三区| 日韩欧美123| 欧美成人bangbros| 精品对白一区国产伦| 精品少妇一区二区三区免费观看| 日韩一区二区在线观看| 精品少妇一区二区三区在线播放 | 欧美高清一级片在线观看| 久久久久久亚洲综合| 国产视频一区二区三区在线观看| 国产日韩视频一区二区三区| 国产女主播一区| 亚洲影院免费观看| 日韩电影在线免费| 国产自产高清不卡| 99re8在线精品视频免费播放| 91丨porny丨国产入口| 欧美在线看片a免费观看| 欧美精品tushy高清| 久久久精品黄色| 亚洲日本欧美天堂| 日韩精品亚洲专区| 国产精品小仙女| 91成人看片片| 欧美精品一区二区三区蜜桃视频 | 精品盗摄一区二区三区| 中文字幕第一区综合| 亚洲综合色成人| 免费看日韩a级影片| 成人听书哪个软件好| 欧美日韩免费观看一区二区三区| 精品国产99国产精品| 亚洲欧美另类小说| 久久9热精品视频| 色呦呦一区二区三区| 日韩免费观看高清完整版| 国产精品传媒视频| 美女视频黄频大全不卡视频在线播放| 国产一区二区在线观看视频| 在线精品视频小说1| 国产精品天干天干在线综合| 婷婷激情综合网| av在线不卡电影|