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

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

?? testlibusb_win.c

?? USB開發包
?? C
字號:
/* LIBUSB-WIN32, Generic Windows USB Library * Copyright (c) 2002-2004 Stephan Meyer <ste_meyer@web.de> * Copyright (c) 2000-2004 Johannes Erdfelt <johannes@erdfelt.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#ifdef __GNUC__#define WINVER 0x0500#endif#define INITGUID#include <windows.h>#include <dbt.h>#include <stdio.h>#include <initguid.h>#include "usb.h"#define LIBUSB_WINDOW_CLASS "LIBUSB_WINDOW_CLASS"#define LIBUSB_BUTTON_HEIGHT 30#define LIBUSB_BUTTON_WIDTH 70#define LIBUSB_BORDER 10DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, 0xf18a0e88, 0xc30c, 0x11d0, 0x88, \            0x15, 0x00, 0xa0, 0xc9, 0x06, 0xbe, 0xd8);DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE, 0xA5DCBF10L, 0x6530, 0x11D2, \            0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);#define EDIT_BUF_INCREMENT 1024enum {  ID_EXIT = 100,  ID_REFRESH,  ID_EDIT};static char *edit_buffer = NULL;static int edit_buffer_size = 0;static int edit_buffer_pos = 0;static HWND main_win;static HWND exit_button;static HWND refresh_button;static HWND edit_box;static HDEVNOTIFY notification_handle_hub, notification_handle_dev;LRESULT CALLBACK win_proc(HWND handle, UINT message, WPARAM w_param,                           LPARAM l_param);static void on_size(int width, int height);static void on_refresh(void);static void edit_printf_init(void);static void edit_printf_free(void);static void edit_printf(const char *s, ...);static void print_configuration(struct usb_config_descriptor *config);static void print_interface(struct usb_interface *interface);static void print_altsetting(struct usb_interface_descriptor *interface);static void print_endpoint(struct usb_endpoint_descriptor *endpoint);int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prev_instance,                     LPSTR cmd_line, int cmd_show){  MSG msg;  WNDCLASSEX win_class;  DEV_BROADCAST_DEVICEINTERFACE dev_if;  LoadLibrary("comctl32.dll");  win_class.cbSize = sizeof(WNDCLASSEX);     win_class.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS ;  win_class.lpfnWndProc = win_proc;  win_class.cbClsExtra = 0;  win_class.cbWndExtra = 0;  win_class.hInstance = instance;  win_class.hIcon = NULL;  win_class.hCursor = LoadCursor(NULL, IDC_ARROW);  win_class.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);  win_class.lpszMenuName = NULL;  win_class.lpszClassName = LIBUSB_WINDOW_CLASS;  win_class.hIconSm = NULL;  RegisterClassEx(&win_class);  main_win = CreateWindowEx(WS_EX_APPWINDOW| WS_EX_CONTROLPARENT,                            LIBUSB_WINDOW_CLASS,                             "TestLibUsb - Windows Version",                             WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN                             | WS_DLGFRAME,                            CW_USEDEFAULT, 0, 500, 500, NULL, NULL,                             instance, NULL);  if(!main_win)     {      return FALSE;    }  exit_button = CreateWindow("BUTTON", "Exit",                             WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,                             10, 10,                              LIBUSB_BUTTON_WIDTH, LIBUSB_BUTTON_HEIGHT,                              main_win, (HMENU) ID_EXIT, instance, NULL);  refresh_button = CreateWindow("BUTTON", "Refresh",                                WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,                                10, 100,                                 LIBUSB_BUTTON_WIDTH, LIBUSB_BUTTON_HEIGHT,                                 main_win, (HMENU) ID_REFRESH, instance,                                 NULL);  edit_box = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", NULL,                            WS_CHILD | WS_VISIBLE | WS_VSCROLL |                             ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL                             | ES_AUTOHSCROLL | ES_READONLY,                             CW_USEDEFAULT, CW_USEDEFAULT,                             CW_USEDEFAULT, CW_USEDEFAULT,                            main_win, (HMENU) ID_EDIT, instance, NULL);   SendMessage(edit_box, WM_SETFONT, (WPARAM) CreateFont(13, 8, 0, 0,                                                        400, 0, 0, 0,                                                        0, 1, 2, 1,                                                        49, "Courier"), 0);  ShowWindow(main_win, cmd_show);  UpdateWindow(main_win);  BringWindowToTop(main_win);  usb_set_debug(4);  usb_init();  usb_find_busses();  on_refresh();  dev_if.dbcc_size = sizeof(dev_if);  dev_if.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;  dev_if.dbcc_classguid = GUID_DEVINTERFACE_USB_HUB;  notification_handle_hub = RegisterDeviceNotification(main_win, &dev_if, 0);  dev_if.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;  notification_handle_dev = RegisterDeviceNotification(main_win, &dev_if, 0);  while(GetMessage(&msg, NULL, 0, 0) )     {      TranslateMessage(&msg);      DispatchMessage(&msg);    }  DestroyWindow(main_win);  UnregisterClass(LIBUSB_WINDOW_CLASS, instance);  return 0;}LRESULT CALLBACK win_proc(HWND win, UINT message, WPARAM w_param,                           LPARAM l_param){  DEV_BROADCAST_HDR *hdr = (DEV_BROADCAST_HDR *) l_param;  switch(message)     {    case WM_DESTROY:      if(notification_handle_hub)        UnregisterDeviceNotification(notification_handle_hub);      if(notification_handle_dev)        UnregisterDeviceNotification(notification_handle_dev);      PostQuitMessage(0);      break;    case WM_SIZE:      on_size(LOWORD(l_param), HIWORD(l_param));      break;    case WM_COMMAND:      switch(LOWORD(w_param))        {        case ID_EXIT:          PostQuitMessage(0);          break;        case ID_REFRESH:          on_refresh();          break;        default:          return DefWindowProc(win, message, w_param, l_param );        }      break;    case WM_DEVICECHANGE:      switch(w_param)        {        case DBT_DEVICEREMOVECOMPLETE:          if(hdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)             on_refresh();          break;        case DBT_DEVICEARRIVAL:          if(hdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)            on_refresh();          break;        default:          ;        }      break;    default:      return DefWindowProc(win, message, w_param, l_param);    }  return 0;}static void on_size(int width, int height){  int _width, _height, _x, _y;  _width = LIBUSB_BUTTON_WIDTH;  _height = LIBUSB_BUTTON_HEIGHT;  _x = width - LIBUSB_BORDER - LIBUSB_BUTTON_WIDTH;  _y = height - LIBUSB_BORDER - LIBUSB_BUTTON_HEIGHT;  SetWindowPos(exit_button, HWND_TOP, _x, _y, _width, _height,                SWP_SHOWWINDOW);  _x -= LIBUSB_BUTTON_WIDTH + LIBUSB_BORDER;  SetWindowPos(refresh_button, HWND_TOP, _x, _y, _width, _height,                SWP_SHOWWINDOW);   _width = width - 2 * LIBUSB_BORDER;  _height = height - 4 * LIBUSB_BORDER - LIBUSB_BUTTON_HEIGHT;  _y = LIBUSB_BORDER;  _x = LIBUSB_BORDER;  SetWindowPos(edit_box, HWND_TOP, _x, _y, _width, _height,                SWP_SHOWWINDOW);}static void on_refresh(void){  struct usb_bus *bus;  struct usb_device *dev;  const struct usb_version *version;  edit_printf_init();  usb_find_devices();  version = usb_get_version();  if(version)    {      edit_printf("DLL version:\t%d.%d.%d.%d\r\n",                  version->dll.major, version->dll.minor,                   version->dll.micro, version->dll.nano);      edit_printf("Driver version:\t%d.%d.%d.%d\r\n\r\n",                  version->driver.major, version->driver.minor,                   version->driver.micro, version->driver.nano);    }  edit_printf("bus/device  idVendor/idProduct\r\n");  for (bus = usb_get_busses(); bus; bus = bus->next) {    for (dev = bus->devices; dev; dev = dev->next) {      int ret, i;      char string[256];      usb_dev_handle *udev;      edit_printf("%s/%s     %04X/%04X\r\n", bus->dirname, dev->filename,                  dev->descriptor.idVendor, dev->descriptor.idProduct);      udev = usb_open(dev);            if (udev) {        if (dev->descriptor.iManufacturer) {          ret = usb_get_string_simple(udev, dev->descriptor.iManufacturer,                                      string, sizeof(string));          if (ret > 0)            edit_printf("- Manufacturer : %s\r\n", string);          else            edit_printf("- Unable to fetch manufacturer string\r\n");        }        if (dev->descriptor.iProduct) {          ret = usb_get_string_simple(udev, dev->descriptor.iProduct, string,                                      sizeof(string));          if (ret > 0)            edit_printf("- Product      : %s\r\n", string);          else            edit_printf("- Unable to fetch product string\r\n");        }        if (dev->descriptor.iSerialNumber) {          ret = usb_get_string_simple(udev, dev->descriptor.iSerialNumber,                                       string, sizeof(string));          if (ret > 0)            edit_printf("- Serial Number: %s\r\n", string);          else            edit_printf("- Unable to fetch serial number string\r\n");        }        usb_close (udev);      }      if (!dev->config) {        edit_printf("  Couldn't retrieve descriptors\r\n");        continue;      }      for (i = 0; i < dev->descriptor.bNumConfigurations; i++)        print_configuration(&dev->config[i]);    }  }  SendMessage(edit_box, WM_SETTEXT, 0, (LPARAM) edit_buffer);   edit_printf_free();}static void edit_printf_init(void){  if(edit_buffer)    {      free(edit_buffer);    }  edit_buffer = malloc(EDIT_BUF_INCREMENT);    if(edit_buffer)    {      edit_buffer_size = EDIT_BUF_INCREMENT;    }  edit_buffer_size = 0;  edit_buffer_pos = 0;}static void edit_printf_free(void){  if(edit_buffer)    {      free(edit_buffer);    }  edit_buffer = NULL;  edit_buffer_size = 0;  edit_buffer_pos = 0;}static void edit_printf(const char *s, ...){  va_list args;  va_start(args, s);  if(edit_buffer_size - edit_buffer_pos < EDIT_BUF_INCREMENT)    {      char *tmp = realloc(edit_buffer,                           edit_buffer_size + EDIT_BUF_INCREMENT);      if(tmp)        {          edit_buffer = tmp;          edit_buffer_size += EDIT_BUF_INCREMENT;        }      else        {          return;        }    }  edit_buffer_pos += vsnprintf(edit_buffer + edit_buffer_pos,                                EDIT_BUF_INCREMENT - 1, s, args);  va_end(args);}static void print_endpoint(struct usb_endpoint_descriptor *endpoint){  edit_printf("      bEndpointAddress: %02xh\r\n", endpoint->bEndpointAddress);  edit_printf("      bmAttributes:     %02xh\r\n", endpoint->bmAttributes);  edit_printf("      wMaxPacketSize:   %d\r\n", endpoint->wMaxPacketSize);  edit_printf("      bInterval:        %d\r\n", endpoint->bInterval);  edit_printf("      bRefresh:         %d\r\n", endpoint->bRefresh);  edit_printf("      bSynchAddress:    %d\r\n", endpoint->bSynchAddress);}static void print_altsetting(struct usb_interface_descriptor *interface){  int i;  edit_printf("    bInterfaceNumber:   %d\r\n", interface->bInterfaceNumber);  edit_printf("    bAlternateSetting:  %d\r\n", interface->bAlternateSetting);  edit_printf("    bNumEndpoints:      %d\r\n", interface->bNumEndpoints);  edit_printf("    bInterfaceClass:    %d\r\n", interface->bInterfaceClass);  edit_printf("    bInterfaceSubClass: %d\r\n", interface->bInterfaceSubClass);  edit_printf("    bInterfaceProtocol: %d\r\n", interface->bInterfaceProtocol);  edit_printf("    iInterface:         %d\r\n", interface->iInterface);  for (i = 0; i < interface->bNumEndpoints; i++)    print_endpoint(&interface->endpoint[i]);}static void print_interface(struct usb_interface *interface){  int i;  for (i = 0; i < interface->num_altsetting; i++)    print_altsetting(&interface->altsetting[i]);}static void print_configuration(struct usb_config_descriptor *config){  int i;  edit_printf("  wTotalLength:         %d\r\n", config->wTotalLength);  edit_printf("  bNumInterfaces:       %d\r\n", config->bNumInterfaces);  edit_printf("  bConfigurationValue:  %d\r\n", config->bConfigurationValue);  edit_printf("  iConfiguration:       %d\r\n", config->iConfiguration);  edit_printf("  bmAttributes:         %02xh\r\n", config->bmAttributes);  edit_printf("  MaxPower:             %d\r\n", config->MaxPower);  for (i = 0; i < config->bNumInterfaces; i++)    print_interface(&config->interface[i]);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18视频在线播放| 一个色在线综合| 国产精品久久久久久一区二区三区| 国产精品免费丝袜| 日韩国产欧美在线观看| 成人精品视频一区二区三区 | 久久久久久久久久久久久女国产乱| 国产精品伦理在线| 韩国v欧美v亚洲v日本v| 欧美专区亚洲专区| 中文字幕一区在线观看| 韩国av一区二区| 欧美精品色综合| 亚洲人成电影网站色mp4| 久久99久久99| 欧美日韩国产a| 亚洲精品伦理在线| a4yy欧美一区二区三区| 国产亚洲精品精华液| 蜜芽一区二区三区| 欧美日韩国产美女| 一区二区三区蜜桃| 91在线免费看| 久久久久久久久免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美性欧美巨大黑白大战| 18涩涩午夜精品.www| 成人h动漫精品一区二区| 2024国产精品| 国产一二三精品| 日韩色在线观看| 美女网站在线免费欧美精品| 欧美肥妇bbw| 免费成人结看片| 日韩一卡二卡三卡国产欧美| 日韩精品福利网| 国产免费成人在线视频| 精品一区二区三区香蕉蜜桃| 日韩一区二区在线免费观看| 日韩二区三区在线观看| 69堂亚洲精品首页| 精品一区免费av| 久久久国产精品不卡| 床上的激情91.| 亚洲欧美自拍偷拍色图| 在线亚洲人成电影网站色www| 一区二区三区在线观看网站| 欧美午夜免费电影| 午夜国产精品影院在线观看| 欧美午夜精品久久久| 日本不卡一区二区三区| 欧美成人高清电影在线| 国产成a人亚洲精品| 国产精品久久精品日日| 日本高清无吗v一区| 偷拍日韩校园综合在线| 精品国产sm最大网站| 成人黄色一级视频| 亚洲一区二区成人在线观看| 69堂国产成人免费视频| 国产乱码一区二区三区| 亚洲精品视频在线看| 在线区一区二视频| 精品一二三四区| 亚洲欧洲av在线| 欧美草草影院在线视频| 成人国产视频在线观看| 亚洲第一搞黄网站| 国产三级欧美三级| 91国内精品野花午夜精品| 欧美日韩日日骚| 日本一区二区三区在线观看| 日韩精品影音先锋| 亚洲黄色性网站| 国产一区二区三区免费观看| 久久久久久久久久久久久久久99 | 欧美激情中文不卡| 91麻豆国产香蕉久久精品| 91精品国产色综合久久久蜜香臀| 国产日韩欧美麻豆| 国产欧美日产一区| 欧美在线不卡视频| 婷婷六月综合网| 成人av集中营| 亚洲综合精品自拍| 欧美四级电影网| 国产女人18毛片水真多成人如厕| 亚洲图片有声小说| 奇米影视一区二区三区小说| 亚洲国产综合视频在线观看| 91免费国产视频网站| 国产亚洲精品精华液| 色综合欧美在线视频区| 亚洲欧美日韩国产中文在线| 久久久久久麻豆| 美女视频一区在线观看| 日韩午夜av电影| 午夜精品爽啪视频| 精品视频1区2区3区| 亚洲欧美日韩国产综合在线 | 国产成人av电影在线| 欧美视频一区二区三区在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲欧洲中文日韩久久av乱码| 久久av资源站| 日韩久久久久久| 波多野结衣在线一区| 成人免费在线视频观看| 丁香天五香天堂综合| 久久亚洲春色中文字幕久久久| 97超碰欧美中文字幕| 国产高清亚洲一区| 亚洲国产一区二区三区| 欧美午夜不卡在线观看免费| 国产精品夜夜嗨| 亚洲欧美乱综合| 在线成人午夜影院| 色先锋aa成人| 国产成人综合在线| 亚洲美女电影在线| 4438亚洲最大| 精品一区二区免费看| 久久久久国产免费免费| 欧美在线你懂的| 欧美在线观看18| 欧美不卡一区二区| 亚洲欧美在线另类| 国产精品不卡视频| 亚洲视频在线观看一区| 亚洲欧美色一区| 亚洲一区二区三区四区的| 亚洲第一狼人社区| 日本午夜一本久久久综合| 久久精品国产精品亚洲精品| 久久精品99久久久| 丁香五精品蜜臀久久久久99网站| 风间由美性色一区二区三区| jlzzjlzz欧美大全| 欧美日韩视频在线观看一区二区三区| 欧美日韩国产电影| 久久影院电视剧免费观看| 国产精品无遮挡| 亚洲成av人片| 久久国产生活片100| 成人h动漫精品一区二| 欧美三级日本三级少妇99| 日韩视频免费直播| 国产精品乱码妇女bbbb| 一区二区三区四区视频精品免费| 五月婷婷综合在线| 国产福利精品一区| 欧美色图天堂网| 久久久精品黄色| 亚洲国产精品自拍| 成人一道本在线| 欧美久久久一区| 欧美高清在线视频| 日韩在线观看一区二区| 国产999精品久久| 欧美吞精做爰啪啪高潮| 久久综合久色欧美综合狠狠| 亚洲欧美国产毛片在线| 麻豆91小视频| 在线视频综合导航| 国产亚洲欧美一级| 天堂久久一区二区三区| 国产91在线观看丝袜| 欧美剧情电影在线观看完整版免费励志电影| 欧美成人性战久久| 亚洲一区二区三区免费视频| 国产精品中文字幕日韩精品| 欧洲亚洲精品在线| 一区精品在线播放| 国产一区二区不卡在线 | 午夜精品一区在线观看| 国产精品综合二区| 国产人妖乱国产精品人妖| 一区二区三区在线观看欧美| 国产福利电影一区二区三区| 日韩欧美亚洲一区二区| 亚洲图片欧美一区| 91在线观看高清| 国产视频一区不卡| 激情av综合网| 日韩一卡二卡三卡四卡| 亚洲成av人综合在线观看| 91蜜桃在线免费视频| 国产精品久久网站| 国产成人在线免费观看| 精品区一区二区| 日本成人中文字幕在线视频 | 国产成人免费在线观看不卡| 日韩一区二区三| 日韩在线一区二区| 在线不卡的av| 日韩高清一区在线| 51精品视频一区二区三区| 午夜av一区二区| 日韩三级av在线播放| 日本不卡视频一二三区|