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

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

?? rwiso.c

?? usb范例代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:

    return h;
}

BOOL
compare_buffs(char *buff1,
              char *buff2,
              int length)
/*++
Routine Description:

    Called to verify read and write buffers match for loopback test

Arguments:

    buffers to compare and length

Return Value:

    TRUE if buffers match, else FALSE

--*/
{
    int ok = 1;

    if (memcmp(buff1, buff2, length))
    {
        ok = 0;
    }

    return ok;
}

#define NPERLN 8

void
dump(
   UCHAR *b,
   int len
)
/*++
Routine Description:

    Called to do formatted ascii dump to console of the io buffer

Arguments:

    buffer and length

Return Value:

    none

--*/
{
    ULONG   i;
    ULONG   longLen = (ULONG)len / sizeof(ULONG);
    PULONG  pBuf = (PULONG) b;

    // dump an ordinal ULONG for each sizeof(ULONG)'th byte
    printf("\n****** BEGIN DUMP LEN decimal %d, 0x%x\n", len,len);
    for (i=0; i<longLen; i++)
    {
        printf("%04X ", *pBuf++);
        if (i % NPERLN == (NPERLN - 1))
        {
            printf("\n");
        }
    }
    if (i % NPERLN != 0)
    {
        printf("\n");
    }
    printf("\n****** END DUMP LEN decimal %d, 0x%x\n", len,len);
}

//  Begin, routines for USB configuration dump (Cmdline "rwiso -u" )
//

VOID
ShowEndpointDescriptor (
    PUSB_ENDPOINT_DESCRIPTOR    EndpointDesc
)
/*++
Routine Description:

    Called to do formatted ascii dump to console of a USB endpoint descriptor

Arguments:

    ptr to USB endpoint descriptor,

Return Value:

    none

--*/
{
    printf("--------------------\n");
    printf("Endpoint Descriptor:\n");

    if (USB_ENDPOINT_DIRECTION_IN(EndpointDesc->bEndpointAddress))
    {
        printf("bEndpointAddress:     0x%02X  IN\n",
               EndpointDesc->bEndpointAddress);
    }
    else
    {
        printf("bEndpointAddress:     0x%02X  OUT\n",
               EndpointDesc->bEndpointAddress);
    }

    switch (EndpointDesc->bmAttributes & 0x03)
    {
        case 0x00:
            printf("Transfer Type:     Control\n");
            break;

        case 0x01:
            printf("Transfer Type: Isochronous\n");
            break;

        case 0x02:
            printf("Transfer Type:        Bulk\n");
            break;

        case 0x03:
            printf("Transfer Type:   Interrupt\n");
            break;
    }

    printf("wMaxPacketSize:     0x%04X (%d)\n",
           EndpointDesc->wMaxPacketSize,
           EndpointDesc->wMaxPacketSize);

    printf("bInterval:            0x%02X\n",
           EndpointDesc->bInterval);
}


VOID
ShowInterfaceDescriptor (
    PUSB_INTERFACE_DESCRIPTOR   InterfaceDesc
)
/*++
Routine Description:

    Called to do formatted ascii dump to console of a USB interface descriptor

Arguments:

    ptr to USB interface descriptor

Return Value:

    none

--*/
{
    printf("\n---------------------\n");
    printf("Interface Descriptor:\n");

    printf("bInterfaceNumber:     0x%02X\n",
           InterfaceDesc->bInterfaceNumber);

    printf("bAlternateSetting:    0x%02X\n",
           InterfaceDesc->bAlternateSetting);

    printf("bNumEndpoints:        0x%02X\n",
           InterfaceDesc->bNumEndpoints);

    printf("bInterfaceClass:      0x%02X\n",
           InterfaceDesc->bInterfaceClass);

    printf("bInterfaceSubClass:   0x%02X\n",
           InterfaceDesc->bInterfaceSubClass);

    printf("bInterfaceProtocol:   0x%02X\n",
           InterfaceDesc->bInterfaceProtocol);

    printf("iInterface:           0x%02X\n",
           InterfaceDesc->iInterface);

}


VOID
ShowConfigurationDescriptor (
    PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc
)
/*++
Routine Description:

    Called to do formatted ascii dump to console of a USB config descriptor

Arguments:

    ptr to USB configuration descriptor

Return Value:

    none

--*/
{
    printf("=========================\n");
    printf("Configuration Descriptor:\n");

    printf("wTotalLength:       0x%04X\n",
           ConfigDesc->wTotalLength);

    printf("bNumInterfaces:       0x%02X\n",
           ConfigDesc->bNumInterfaces);

    printf("bConfigurationValue:  0x%02X\n",
           ConfigDesc->bConfigurationValue);

    printf("iConfiguration:       0x%02X\n",
           ConfigDesc->iConfiguration);

    printf("bmAttributes:         0x%02X\n",
           ConfigDesc->bmAttributes);

    if (ConfigDesc->bmAttributes & 0x80)
    {
        printf("  Bus Powered\n");
    }

    if (ConfigDesc->bmAttributes & 0x40)
    {
        printf("  Self Powered\n");
    }

    if (ConfigDesc->bmAttributes & 0x20)
    {
        printf("  Remote Wakeup\n");
    }

    printf("MaxPower:             0x%02X (%d Ma)\n",
           ConfigDesc->MaxPower,
           ConfigDesc->MaxPower * 2);

}


VOID
ShowConfigDesc (
    PUSB_CONFIGURATION_DESCRIPTOR   ConfigDesc
)
{
    PUCHAR                  descEnd;
    PUSB_COMMON_DESCRIPTOR  commonDesc;
    BOOLEAN                 ShowUnknown;

    descEnd = (PUCHAR)ConfigDesc + ConfigDesc->wTotalLength;

    commonDesc = (PUSB_COMMON_DESCRIPTOR)ConfigDesc;

    while ((PUCHAR)commonDesc + sizeof(USB_COMMON_DESCRIPTOR) < descEnd &&
           (PUCHAR)commonDesc + commonDesc->bLength <= descEnd)
    {
        ShowUnknown = FALSE;

        switch (commonDesc->bDescriptorType)
        {
            case USB_CONFIGURATION_DESCRIPTOR_TYPE:
                if (commonDesc->bLength != sizeof(USB_CONFIGURATION_DESCRIPTOR))
                {
                    ShowUnknown = TRUE;
                    break;
                }
                ShowConfigurationDescriptor((PUSB_CONFIGURATION_DESCRIPTOR)commonDesc);
                break;

            case USB_INTERFACE_DESCRIPTOR_TYPE:
                if (commonDesc->bLength != sizeof(USB_INTERFACE_DESCRIPTOR))
                {
                    ShowUnknown = TRUE;
                    break;
                }
                ShowInterfaceDescriptor((PUSB_INTERFACE_DESCRIPTOR)commonDesc);
                break;

            case USB_ENDPOINT_DESCRIPTOR_TYPE:
                if (commonDesc->bLength != sizeof(USB_ENDPOINT_DESCRIPTOR))
                {
                    ShowUnknown = TRUE;
                    break;
                }
                ShowEndpointDescriptor((PUSB_ENDPOINT_DESCRIPTOR)commonDesc);
                break;

            default:
                ShowUnknown = TRUE;
                break;
        }

        if (ShowUnknown)
        {
            // ShowUnknownDescriptor(commonDesc);
        }

        (PUCHAR)commonDesc += commonDesc->bLength;
    }
}


void dumpUsbConfig()
/*++
Routine Description:

    Called to do formatted ascii dump to console of  USB
    configuration, interface, and endpoint descriptors
    (Cmdline "rwiso -u" )

Arguments:

    none

Return Value:

    none

--*/
{
    HANDLE  hDEV;
    ULONG   success;
    int     siz;
    int     nBytes;
    char    buf[4096];

    PUSB_CONFIGURATION_DESCRIPTOR configDesc;

    hDEV = open_dev();

    if (hDEV && hDEV != INVALID_HANDLE_VALUE)
    {
        siz = sizeof(buf);

        nBytes = 0;

        success = DeviceIoControl(hDEV,
                                  IOCTL_ISOUSB_GET_CONFIG_DESCRIPTOR,
                                  buf,
                                  siz,
                                  buf,
                                  siz,
                                  &nBytes,
                                  NULL);

        NOISY(("request complete, success = %d nBytes = %d\n", success, nBytes));

        configDesc = (PUSB_CONFIGURATION_DESCRIPTOR)buf;

        if (success && configDesc->wTotalLength == nBytes)
        {
            ShowConfigDesc(configDesc);
        }

        CloseHandle(hDEV);
    }
}

//
//  End, routines for USB configuration and pipe info dump  (Cmdline "rwiso -u" )




//  Begin, routines for Iso Streaming
//

void
IsoStream( HANDLE hDEV, BOOL fStop )
/*++
Routine Description:

    Called to start or stop an iso stream
    (Cmdline "RwIso -g" )

Arguments:

    handle to device

Return Value:

    none

--*/
{
    ULONG success;
    int nBytes;
    DWORD ioctl;
    char i;

    if (fStop)
    {
        ioctl = IOCTL_ISOUSB_STOP_ISO_STREAM;

        for (i = 0; i < sizeof(gbuf); i++)
        {
            gbuf[ i ] = 0; // init outbuf to 0's to make sure read was good
        }

        success = DeviceIoControl(hDEV,
                                  ioctl,
                                  &gpStreamObj, //pointer to stream object initted when stream was started
                                  sizeof( PVOID),
                                  gbuf, // output buffer gets back from kernel mode
                                  sizeof(gbuf),
                                  &nBytes,
                                  NULL);

        NOISY(("DeviceIoControl STOP_ISO_STREAM complete, success = %d\n", success));
    }
    else
    {
        ioctl = IOCTL_ISOUSB_START_ISO_STREAM;

        //input is our 256-byte buffer, binary char 0-255
        for (i = 0; i < sizeof(gbuf); i++)
        {
            gbuf[i] = i;
        }

        success = DeviceIoControl(hDEV,
                                  ioctl,
                                  gbuf,
                                  sizeof(gbuf),
                                  &gpStreamObj, // will receive pointer to stream object
                                  sizeof( PVOID),
                                  &nBytes,
                                  NULL);

        NOISY(("DeviceIoControl START_ISO_STREAM complete, success = %d\n", success));
    }

    if (hDEV == INVALID_HANDLE_VALUE)
    {
        NOISY(("DEV not open"));

        return;
    }
}

void StartIsoStream( void )
{
    if (!ghStreamDev)
    {
        ghStreamDev = open_dev();

        if (ghStreamDev != INVALID_HANDLE_VALUE )
        {
            IsoStream(ghStreamDev, FALSE);

            Sleep(gMS);

            StopIsoStream();
        }
    }
}

void StopIsoStream( void )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人a∨高清免费观看| 亚洲一区在线观看网站| 1区2区3区国产精品| 丝瓜av网站精品一区二区| 国产成a人无v码亚洲福利| 日本伦理一区二区| 久久综合九色综合欧美就去吻| 中文字幕在线一区| 久久福利视频一区二区| 欧美自拍偷拍一区| 欧美激情一区二区在线| 老司机精品视频在线| 91美女片黄在线观看91美女| 久久久久久久久99精品| 午夜电影网亚洲视频| 99国产精品国产精品久久| 精品国产凹凸成av人导航| 亚洲国产一二三| 波多野结衣精品在线| 精品国产电影一区二区| 青青青爽久久午夜综合久久午夜| 色先锋资源久久综合| 欧美国产1区2区| 国产一区欧美一区| 欧美第一区第二区| 肉肉av福利一精品导航| 欧洲视频一区二区| 亚洲精品中文在线观看| 成人短视频下载| 久久精品人人做| 国产做a爰片久久毛片| 日韩视频在线一区二区| 日日摸夜夜添夜夜添精品视频| 在线区一区二视频| 一区二区欧美精品| 91福利在线观看| 亚洲亚洲人成综合网络| 色久综合一二码| 亚洲综合久久av| 欧美一a一片一级一片| 亚洲午夜一二三区视频| 欧美性生交片4| 日本特黄久久久高潮| 欧美一激情一区二区三区| 日韩成人精品在线| 欧美成人精品1314www| 精品一区精品二区高清| 欧美tk—视频vk| 国内成人免费视频| 国产精品三级视频| 色视频成人在线观看免| 亚洲午夜激情av| 91精品国产综合久久精品麻豆| 日本免费新一区视频| 日韩一区二区三区精品视频| 精品亚洲porn| 欧美激情一区三区| 欧美亚洲愉拍一区二区| 日韩电影免费在线看| 2022国产精品视频| 不卡的av中国片| 亚洲成a人在线观看| 欧美不卡在线视频| 99re视频这里只有精品| 亚洲国产精品麻豆| 精品国产污污免费网站入口| 国产suv精品一区二区三区| 亚洲视频在线一区二区| 在线播放视频一区| 国产成人自拍网| 亚洲欧美偷拍三级| 在线成人午夜影院| 成人激情开心网| 日韩精品一级中文字幕精品视频免费观看| 日韩午夜在线影院| 91丨porny丨最新| 精品亚洲成a人在线观看| 亚洲美女免费视频| 精品国产麻豆免费人成网站| 91原创在线视频| 激情深爱一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 欧美精品在线一区二区| 国产精品一区不卡| 午夜视频久久久久久| 亚洲国产成人在线| 制服丝袜亚洲精品中文字幕| 99在线精品免费| 久久99热99| 亚洲国产中文字幕在线视频综合 | 紧缚奴在线一区二区三区| 亚洲欧美国产三级| 久久精品一区二区三区不卡牛牛| 欧美综合视频在线观看| 成人av综合一区| 国精品**一区二区三区在线蜜桃| 亚洲国产精品天堂| 亚洲精品日日夜夜| 欧美国产日韩a欧美在线观看| 91精品国产色综合久久不卡蜜臀| 99久久精品情趣| 国产精一品亚洲二区在线视频| 亚洲成av人片一区二区三区 | 91视频免费观看| 国产欧美精品日韩区二区麻豆天美| 国产精品123| 日韩精品一区二区三区视频播放| 色先锋资源久久综合| 成人午夜免费av| 韩国一区二区在线观看| 午夜激情一区二区| 一区二区三区色| 椎名由奈av一区二区三区| 日本一区二区三区在线不卡| www久久久久| 久久综合中文字幕| 欧美www视频| 精品欧美久久久| 欧美一级免费大片| 精品国产一区二区三区久久影院| 欧美一区二区三区成人| 日韩三级视频在线看| 日韩三级视频在线看| 欧美xxxxxxxxx| 久久综合九色综合97婷婷女人| 欧美电影精品一区二区| 久久无码av三级| 久久精品亚洲麻豆av一区二区| 久久久久国产免费免费 | 日韩1区2区日韩1区2区| 亚洲电影视频在线| 日韩高清不卡在线| 日本一道高清亚洲日美韩| 久久国产三级精品| 狠狠色丁香久久婷婷综合丁香| 韩国女主播一区二区三区| 激情深爱一区二区| 高清久久久久久| 色国产精品一区在线观看| 欧美日本国产一区| 日韩一区二区三区四区| 国产亚洲制服色| 亚洲日本va在线观看| 午夜在线电影亚洲一区| 蜜臀国产一区二区三区在线播放 | 欧美一卡2卡三卡4卡5免费| 欧美大胆人体bbbb| 国产精品丝袜91| 亚洲v中文字幕| 国产自产高清不卡| 91在线视频在线| 欧美成人vps| 亚洲另类春色校园小说| 美女视频第一区二区三区免费观看网站 | 国产麻豆日韩欧美久久| 91免费版在线| 中文字幕欧美一区| 日韩精品电影在线| 成人免费高清在线观看| 欧美人妖巨大在线| 国产精品久久久久久久久快鸭| 午夜在线电影亚洲一区| 成人伦理片在线| 51精品秘密在线观看| 亚洲自拍都市欧美小说| 丝袜美腿亚洲一区| 成人性生交大片免费看中文| 欧美亚洲精品一区| 精品少妇一区二区三区视频免付费| 亚洲免费观看高清完整版在线| 三级成人在线视频| 成人av网在线| 91精品国产美女浴室洗澡无遮挡| 26uuu另类欧美亚洲曰本| 国产精品久久久久久福利一牛影视 | 国产乱妇无码大片在线观看| 91成人网在线| 精品免费一区二区三区| 亚洲免费观看高清完整版在线| 五月婷婷色综合| 色诱亚洲精品久久久久久| 在线电影国产精品| 亚洲欧洲在线观看av| 老司机精品视频导航| 在线中文字幕不卡| 国产日韩欧美高清| 奇米888四色在线精品| 欧美性色欧美a在线播放| 久久久91精品国产一区二区三区| 一区二区三区四区蜜桃| 三级影片在线观看欧美日韩一区二区| 色综合久久88色综合天天| 精品少妇一区二区三区在线播放| 亚洲精品视频一区| 风间由美性色一区二区三区| 91精品国产综合久久香蕉的特点 | 91小视频免费看| 7777精品久久久大香线蕉| 精品国产乱码久久| 视频在线在亚洲|