日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

(转)Linux设备驱动之HID驱动 源码分析

發布時間:2024/4/14 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)Linux设备驱动之HID驱动 源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//Linux設備驅動之HID驅動 源碼分析

http://blog.chinaunix.net/uid-20543183-id-1930836.html


HID是Human Interface Devices的縮寫.翻譯成中文即為人機交互設備.這里的人機交互設備是一個宏觀上面的概念,任何設備,只要符合HID spec,都可以稱之為HID設備.常見的HID設備有鼠標鍵盤,游戲操縱桿等等.在接下來的代碼分析中,可以參考HID的spec.這份spec可以在www.usb.org上找到.分析的代碼主要集中在linux-2.6.25/drivers/hid目錄下. 對此設備結點的處理有兩種接口,一種是read(),另一種是ioctl();
  • read(): This is the event interface. When the HID device performs an interrupt transfer, indicating a change of state, data will be made available at the associated hiddev device with the content of a struct hiddev_event:struct hiddev_event { unsigned hid; signed int value; };containing the HID usage identifier for the status that changed, and the value that it was changed to.
  • ioctl(): This is the control interface. There are a number of controls:
    HIDIOCGVERSIONint (read)Gets the version code out of the hiddev driver.
    HIDIOCAPPLICATION(none)This ioctl call returns the HID application usage associated with the hid device. The third argument to ioctl() specifies which application index to get. This is useful when the device has more than one application collection. If the index is invalid (greater or equal to the number of application collections this device has) the ioctl returns -1. You can find out beforehand how many application collections the device has from the num_applications field from the hiddev_devinfo structure.
    HIDIOCGDEVINFOstruct hiddev_devinfo (read)Gets a hiddev_devinfo structure which describes the device.
    HIDIOCGSTRINGstruct struct hiddev_string_descriptor (read/write)Gets a string descriptor from the device. The caller must fill in the "index" field to indicate which descriptor should be returned.
    HIDIOCINITREPORT?Instructs the kernel to retrieve all input and feature report values from the device. At this point, all the usage structures will contain current values for the device, and will maintain it as the device changes.
    HIDIOCGNAMEstring (variable length)Gets the device name
    HIDIOCGREPORTstruct hiddev_report_info (write)Instructs the kernel to get a feature or input report from the device, in order to selectively update the usage structures (in contrast to INITREPORT).
    HIDIOCSREPORTstruct hiddev_report_info (write)Instructs the kernel to send a report to the device. This report can be filled in by the user throughHIDIOCSUSAGE?calls (below) to fill in individual usage values in the report before sending the report in full to the device.
    HIDIOCGREPORTINFOstruct hiddev_report_info (read/write)Fills in a hiddev_report_info structure for the user. The report is looked up by type (input, output or feature) and id, so these fields must be filled in by the user. The ID can be absolute -- the actual report id as reported by the device -- or relative --?HID_REPORT_ID_FIRST?for the first report, and (HID_REPORT_ID_NEXT?| report_id) for the next report after report_id. Without a-priori information about report ids, the right way to use this ioctl is to use the relative IDs above to enumerate the valid IDs. The ioctl returns non-zero when there is no more next ID. The real report ID is filled into the returned hiddev_report_info structure.
    HIDIOCGFIELDINFOstruct hiddev_field_info (read/write)Returns the field information associated with a report in a hiddev_field_info structure. The user must fill in report_id and report_type in this structure, as above. The field_index should also be filled in, which should be a number from 0 and maxfield-1, as returned from a previous?HIDIOCGREPORTINFO?call.
    HIDIOCGUCODEstruct hiddev_usage_ref (read/write)Returns the usage_code in a hiddev_usage_ref structure, given that given its report type, report id, field index, and index within the field have already been filled into the structure.
    HIDIOCGUSAGEstruct hiddev_usage_ref (read/write)Returns the value of a usage in a hiddev_usage_ref structure. The usage to be retrieved can be specified as above, or the user can choose to fill in the report_type field and specify the report_id asHID_REPORT_ID_UNKNOWN. In this case, the hiddev_usage_ref will be filled in with the report and field infomation associated with this usage if it is found.
    HIDIOCSUSAGEstruct hiddev_usage_ref (write)Sets the value of a usage in an output report.

//利用libusb 實現的hid 讀寫 http://bbs.csdn.net/topics/370027825 寫入用usb_interrupt_write 讀取用usb_interrupt_read http://blog.csdn.net/acf/article/details/5431488 在Linux 2.6環境下讀寫HID設備(USB Key)

????? Linux 2.6內核中包含了HID驅動,能夠自動把USB Key等HID外設識別成“/dev/hiddev0”之類的設備。但是該驅動沒有實現write接口,因此無法象Windows平臺那樣使用 ReadFile和WriteFile來讀寫HID設備,而只能使用ioctl接口。
????? 網上有各種各樣讀寫HID設備的源代碼例子,有的是通過HIDIOCSUSAGE和HIDIOCGUSAGE來每次收發4個字節,適合鼠標、鍵盤之類數據傳輸量小的設備;有的是通過HIDIOCSUSAGES和HIDIOCGUSAGES來連續接收和發送多個字節,適合USB Key一類的設備。
????? 在上一篇日志(已刪除)中,介紹了如何利用《USB and PIC: quick guide to an USB HID framework》一文提供的方法與USB Key進行通信(先發送HIDIOCSUSAGES和HIDIOCSREPORT進行寫操作,再發送HIDIOCGREPORT和HIDIOCGUSAGES進行讀操作,從而完成一次通信過程)。但是經過好友測試,發現該方法不論是在PC機上,還是在Cavium Octeon 52XX開發板上均存在問題,讀出的數據始終是第一次通信的結果,除非在每次通信之前都發送HIDIOCINITREPORT控制碼,但這又會造成相當長時間的阻塞。
??????進一步的測試表明,如果按照HIDIOCGUCODE、HIDIOCSUSAGES、HIDIOCSREPORT、HIDIOCGUCODE、HIDIOCGUSAGES的順序發送控制碼,那么可以每次都讀出正確數據。不過該方法雖然在PC機上只需400毫秒延時,但是在Octeon開發板上仍會長時間阻塞在usbhid_wait_io函數那里。
????? 無奈之下,我只好根據Cavium SDK自帶的Linux內核源碼中的usb_skeleton.c寫了一個USB設備驅動程序,試圖通過直接讀寫USB端點來完成通信過程。以下是在開發和調試過程中需要注意的幾個問題:
????? 首先,必須卸載Linux內核自帶的HID驅動,否則它會自動“接管”新插入的USB Key,導致我們自己編寫的驅動程序找不到設備。對于開發板,可以在編譯內核時去掉HID相關的選項;對于PC機上已經安裝好的Linux,我也不知道該怎么卸載其中的HID驅動。
????? 其次,端點類型。在usb_skeleton.c中是通過bulk端點來訪問USB設備的,而USB Key作為HID設備,一般只有0號控制端點和一個中斷輸入端點(例如3號)。對于中斷端點,可以用usb_interrupt_msg(其實就是usb_bulk_msg)函數進行訪問;對于控制端點,則稍微麻煩一些,因為除了數據,還需要構造一個8字節的setup包。有關setup包的詳細結構,可以參考USB和HID規范。獲取setup包具體數值最簡單的方法,就是在Windows環境下用BusHound觀察USB Key的通信過程。
????? 最后,關于Report ID。在Windows環境下通過ReadFile和WriteFile訪問HID設備時,必須在數據開頭附加1字節的Report ID(一般為0)。在Linux環境下,如果使用HID驅動的ioctl接口,那么需要在hiddev_usage_ref結構中指定Report ID;如果使用自己編寫的USB驅動程序,則不需要考慮Report ID,直接發送數據就得了。
????? 經過測試,利用自己編寫的驅動程序,可以在Octeon開發板上正確讀寫HID類型的USB Key,而且讀寫之間的時間間隔也可以縮短至50毫秒。

從內核2.6.34 的代碼來看,/dev/hidraw0只能操作 endpoint 0,即通用的控制通道,強行向其寫入數據會提示

? write: Broken pipe

在內核 2.6.35以后進行了修正, 參考如下:

https://patchwork.kernel.org/patch/99990/

點擊(此處)折疊或打開

  • diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
  • index 56d06cd..6fd833d 100644
  • --- a/drivers/hid/usbhid/hid-core.c
  • +++ b/drivers/hid/usbhid/hid-core.c
  • static int usbhid_output_raw_report(struct hid_device *hid, __u8 *buf, size_t count,
  • unsigned char report_type)
  • {
  • struct usbhid_device *usbhid = hid->driver_data;
  • struct usb_device *dev = hid_to_usb_dev(hid);
  • struct usb_interface *intf = usbhid->intf;
  • struct usb_host_interface *interface = intf->cur_altsetting;
  • int ret;
  • - ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  • - HID_REQ_SET_REPORT,
  • - USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  • - ((report_type + 1) << 8) | *buf,
  • - interface->desc.bInterfaceNumber, buf + 1, count - 1,
  • - USB_CTRL_SET_TIMEOUT);
  • -
  • - /* count also the report id */
  • - if (ret > 0)
  • - ret++;
  • + if (usbhid->urbout) {
  • + int actual_length;
  • + int skipped_report_id = 0;
  • + if (buf[0] == 0x0) {
  • + /* Don't send the Report ID */
  • + buf++;
  • + count--;
  • + skipped_report_id = 1;
  • + }
  • + ret = usb_interrupt_msg(dev, usbhid->urbout->pipe,
  • + buf, count, &actual_length,
  • + USB_CTRL_SET_TIMEOUT);
  • + /* return the number of bytes transferred */
  • + if (ret == 0) {
  • + ret = actual_length;
  • + /* count also the report id */
  • + if (skipped_report_id)
  • + ret++;
  • + }
  • + } else {
  • + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  • + HID_REQ_SET_REPORT,
  • + USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  • + ((report_type + 1) << 8) | *buf,
  • + interface->desc.bInterfaceNumber, buf + 1, count - 1,
  • + USB_CTRL_SET_TIMEOUT);
  • + /* count also the report id */
  • + if (ret > 0)
  • + ret++;
  • + }
  • return ret;
  • }
  • hid-example.c,來演示如何操作 http://www.emdebian.org/~zumbi/kernel/linux-2.6-3.0.0~rc1/samples/hidraw/hid-example.c

    點擊(此處)折疊或打開

  • /*
  • ?*?Hidraw Userspace Example
  • ?*
  • ?*?Copyright?(c)?2010 Alan Ott?<alan@signal11.us>
  • ?*?Copyright?(c)?2010 Signal 11 Software
  • ?*
  • ?*?The code may be used by anyone?for?any purpose,
  • ?*?and?can serve as a starting point?for?developing
  • ?*?applications using hidraw.
  • ?*/
  • /*?Linux?*/
  • #include?<linux/types.h>
  • #include?<linux/input.h>
  • #include?<linux/hidraw.h>
  • /*
  • ?*?Ugly hack?to?work around failing compilation?on?systems that don't
  • ?*?yet populate new version of hidraw.h?to?userspace.
  • ?*
  • ?*?If?you need this,?please have your distro update the kernel headers.
  • ?*/
  • #ifndef HIDIOCSFEATURE
  • #define HIDIOCSFEATURE(len)?_IOC(_IOC_WRITE|_IOC_READ,?'H',?0x06,?len)
  • #define HIDIOCGFEATURE(len)?_IOC(_IOC_WRITE|_IOC_READ,?'H',?0x07,?len)
  • #endif
  • /*?Unix?*/
  • #include?<sys/ioctl.h>
  • #include?<sys/types.h>
  • #include?<sys/stat.h>
  • #include?<fcntl.h>
  • #include?<unistd.h>
  • /*?C?*/
  • #include?<stdio.h>
  • #include?<string.h>
  • #include?<stdlib.h>
  • #include?<errno.h>
  • const?char?*bus_str(int?bus);
  • int?main(int?argc,?char?**argv)
  • {
  • ????int?fd;
  • ????int?i,?res,?desc_size?=?0;
  • ????char buf[256];
  • ????struct hidraw_report_descriptor rpt_desc;
  • ????struct hidraw_devinfo info;
  • ????/*?Open the Device with non-blocking reads.?In?real life,
  • ???? don't use a hard coded path;?use libudev instead.?*/
  • ????fd?=?open("/dev/hidraw0",?O_RDWR|O_NONBLOCK);
  • ????if?(fd?<?0)?{
  • ????????perror("Unable to open device");
  • ????????return 1;
  • ????}
  • ????memset(&rpt_desc,?0x0,?sizeof(rpt_desc));
  • ????memset(&info,?0x0,?sizeof(info));
  • ????memset(buf,?0x0,?sizeof(buf));
  • ????/*?Get?Report Descriptor Size?*/
  • ????res?=?ioctl(fd,?HIDIOCGRDESCSIZE,?&desc_size);
  • ????if?(res?<?0)
  • ????????perror("HIDIOCGRDESCSIZE");
  • ????else
  • ????????printf("Report Descriptor Size: %d\n",?desc_size);
  • ????/*?Get?Report Descriptor?*/
  • ????rpt_desc.size?=?desc_size;
  • ????res?=?ioctl(fd,?HIDIOCGRDESC,?&rpt_desc);
  • ????if?(res?<?0)?{
  • ????????perror("HIDIOCGRDESC");
  • ????}?else?{
  • ????????printf("Report Descriptor:\n");
  • ????????for?(i?=?0;?i?<?rpt_desc.size;?i++)
  • ????????????printf("%hhx ",?rpt_desc.value[i]);
  • ????????puts("\n");
  • ????}
  • ????/*?Get?Raw Name?*/
  • ????res?=?ioctl(fd,?HIDIOCGRAWNAME(256),?buf);
  • ????if?(res?<?0)
  • ????????perror("HIDIOCGRAWNAME");
  • ????else
  • ????????printf("Raw Name: %s\n",?buf);
  • ????/*?Get?Physical?Location?*/
  • ????res?=?ioctl(fd,?HIDIOCGRAWPHYS(256),?buf);
  • ????if?(res?<?0)
  • ????????perror("HIDIOCGRAWPHYS");
  • ????else
  • ????????printf("Raw Phys: %s\n",?buf);
  • ????/*?Get?Raw Info?*/
  • ????res?=?ioctl(fd,?HIDIOCGRAWINFO,?&info);
  • ????if?(res?<?0)?{
  • ????????perror("HIDIOCGRAWINFO");
  • ????}?else?{
  • ????????printf("Raw Info:\n");
  • ????????printf("\tbustype: %d (%s)\n",
  • ????????????info.bustype,?bus_str(info.bustype));
  • ????????printf("\tvendor: 0x%04hx\n",?info.vendor);
  • ????????printf("\tproduct: 0x%04hx\n",?info.product);
  • ????}
  • ????/*?Set?Feature?*/
  • ????buf[0]?=?0x9;?/*?Report Number?*/
  • ????buf[1]?=?0xff;
  • ????buf[2]?=?0xff;
  • ????buf[3]?=?0xff;
  • ????res?=?ioctl(fd,?HIDIOCSFEATURE(4),?buf);
  • ????if?(res?<?0)
  • ????????perror("HIDIOCSFEATURE");
  • ????else
  • ????????printf("ioctl HIDIOCGFEATURE returned: %d\n",?res);
  • ????/*?Get?Feature?*/
  • ????buf[0]?=?0x9;?/*?Report Number?*/
  • ????res?=?ioctl(fd,?HIDIOCGFEATURE(256),?buf);
  • ????if?(res?<?0)?{
  • ????????perror("HIDIOCGFEATURE");
  • ????}?else?{
  • ????????printf("ioctl HIDIOCGFEATURE returned: %d\n",?res);
  • ????????printf("Report data (not containing the report number):\n\t");
  • ????????for?(i?=?0;?i?<?res;?i++)
  • ????????????printf("%hhx ",?buf[i]);
  • ????????puts("\n");
  • ????}
  • ????/*?Send a Report?to?the Device?*/
  • ????buf[0]?=?0x1;?/*?Report Number?*/
  • ????buf[1]?=?0x77;
  • ????res?=?write(fd,?buf,?2);
  • ????if?(res?<?0)?{
  • ????????printf("Error: %d\n",?errno);
  • ????????perror("write");
  • ????}?else?{
  • ????????printf("write() wrote %d bytes\n",?res);
  • ????}
  • ????/*?Get?a report from the device?*/
  • ????res?=?read(fd,?buf,?16);
  • ????if?(res?<?0)?{
  • ????????perror("read");
  • ????}?else?{
  • ????????printf("read() read %d bytes:\n\t",?res);
  • ????????for?(i?=?0;?i?<?res;?i++)
  • ????????????printf("%hhx ",?buf[i]);
  • ????????puts("\n");
  • ????}
  • ????close(fd);
  • ????return 0;
  • }
  • const?char?*
  • bus_str(int?bus)
  • {
  • ????switch?(bus)?{
  • ????case?BUS_USB:
  • ????????return?"USB";
  • ????????break;
  • ????case?BUS_HIL:
  • ????????return?"HIL";
  • ????????break;
  • ????case?BUS_BLUETOOTH:
  • ????????return?"Bluetooth";
  • ????????break;
  • ????case?BUS_VIRTUAL:
  • ????????return?"Virtual";
  • ????????break;
  • ????default:
  • ????????return?"Other";
  • ????????break;
  • ????}
  • }
  • ?
  • //----- openwrt 下安裝和調試 root@OpenWrt:~# opkg install kmod-usb-hid --force-depends Installing kmod-usb-hid (3.3.8-1) to root... Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-usb-hid_3.3.8-1_ar71xx.ipk. Installing kmod-hid (3.3.8-1) to root... Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-hid_3.3.8-1_ar71xx.ipk. Installing kmod-input-evdev (3.3.8-1) to root... Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/kmod-input-evdev_3.3.8-1_ar71xx.ipk. Configuring kmod-input-evdev. Configuring kmod-hid. Configuring kmod-usb-hid. Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-usb-hid: * ? ? ?kernel (= 3.3.8-1-231112e548aba152810eababd16134bc) * ? kernel (= 3.3.8-1-231112e548aba152810eababd16134bc) * ? kernel (= 3.3.8-1-231112e548aba152810eababd16134bc) *? root@OpenWrt:~# lsmod | grep hid usbhid ? ? ? ? ? ? ? ? 20688 ?0 [permanent] hid ? ? ? ? ? ? ? ? ? ?64032 ?1 usbhid,[permanent] usbcore ? ? ? ? ? ? ? ?99168 19 usbhid,uvcvideo,gspca_zc3xx,gspca_main,ums_usbat,ums_sddr55,ums_sddr09,ums_karma,ums_jumpshot,ums_isd200,ums_freecom,ums_datafab,ums_cypress,ums_alauda,usb_storage,uhci_hcd,ohci_hcd,ehci_hcd input_core ? ? ? ? ? ? 20016 ?7 usbhid,hid,evdev,uvcvideo,gspca_zc3xx,gspca_main # 插上usb hub, 無法發現hid設備(原因: hub的紅線為電源線, 白線為數據線) root@OpenWrt:~# dmesg | grep hid [ ? 12.000000] usbcore: registered new interface driver usbhid [ ? 12.010000] usbhid: USB HID core driver # 無hub, 直接接上hid設備, 可以找到設備 root@OpenWrt:~# dmesg | grep hid [ ? 12.000000] usbcore: registered new interface driver usbhid [ ? 12.010000] usbhid: USB HID core driver [ ?185.290000] generic-usb 0003:0483:D0D0.0001: hiddev0: USB HID v1.10 Device [STMicroelectronics CR95HF] on usb-ehci-platform-1/input1 # hid設備標識符, 不是 標準的 /dev/hiddev0 root@OpenWrt:~# ls /dev/hid* ls: /dev/hid*: No such file or directory root@OpenWrt:~# ls -al /dev/usb/hid* crw-r--r-- ? ?1 root ? ? root ? ? ?180, ?96 Jan ?1 00:03 /dev/usb/hiddev0 # 去除設備, 無標識符.? root@OpenWrt:~# ls -al /dev/usb/hid* ls: /dev/usb/hid*: No such file or directory # 插拔3次,? root@OpenWrt:~# dmesg | grep hid [ ? 12.000000] usbcore: registered new interface driver usbhid [ ? 12.010000] usbhid: USB HID core driver [ ?185.290000] generic-usb 0003:0483:D0D0.0001: hiddev0: USB HID v1.10 Device [STMicroelectronics CR95HF] on usb-ehci-platform-1/input1 [ 1034.170000] generic-usb 0003:0483:D0D0.0002: hiddev0: USB HID v1.10 Device [STMicroelectronics CR95HF] on usb-ehci-platform-1/input1 [ 1085.970000] generic-usb 0003:0483:D0D0.0003: hiddev0: USB HID v1.10 Device [STMicroelectronics CR95HF] on usb-ehci-platform-1/input1 root@OpenWrt:~# find / -name hid* /dev/usb/hiddev0 /lib/modules/3.3.8/hid.ko /overlay/lib/modules/3.3.8/hid.ko /sys/devices/platform/ehci-platform/usb1/1-1/1-1:1.1/usb/hiddev0 /sys/bus/hid /sys/class/usb/hiddev0 /sys/kernel/debug/hid /sys/module/input_core/holders/hid /sys/module/hid /sys/module/usbhid/drivers/hid:generic-usb ----------------------------------------------------------------- root@OpenWrt:/xutest# opkg install hid_xu1_ar71xx.ipk Installing hid (xu1) to root... Configuring hid. root@OpenWrt:/xutest# hidtest /dev/hiddev0 information:? HIDIOCGVERSION: 1.4 HIDIOCGDEVINFO: bustype=3 busnum=1 devnum=4 ifnum=1 vendor=0x0483 product=0xd0d0 version=0x0200 num_applications=1 HIDIOCGNAME: STMicroelectronics CR95HF Reports of type Input (1): Report id: 7 (1 fields) Field: 0: app: 8c0001 phys 0000 flags 2 (63 usages) unit 0 exp 0 Reports of type Output (2): Report id: 1 (1 fields) Field: 0: app: 8c0001 phys 0000 flags 2 (63 usages) unit 0 exp 0 Report id: 2 (1 fields) Field: 0: app: 8c0001 phys 0000 flags 2 (63 usages) unit 0 exp 0 Reports of type Feature (3): Waiting for events ... (interrupt to exit) ^C root@OpenWrt:/xutest#? 下位機修改如下:

    點擊(此處)折疊或打開

  • #if 1
  • ucNeedSend = 1;
  • Pos = HID_OFFSET_LENGTH + 1;
  • #if 0
  • ucSendData = 64;
  • for (i=0; i<ucSendData-2; i++)
  • SendBuffer[i+Pos] = 0x70 + i;
  • #else
  • ucSendData = RcvBuffer[HID_OFFSET_LENGTH];
  • for (i=0; i<ucSendData-2; i++)
  • SendBuffer[i+Pos] = RcvBuffer[i+Pos];
  • #endif
  • ????if?(ucNeedSend)?{
  • ????????/*?SendBuffer format
  • ????????????1st byte ????:?ID_SEND_HID_RESPONSE
  • ????????????2nd byte ????:?repply?or?error?code flag
  • ????????????3rd byte ????:?nb byte
  • ????????????others bytes:?data
  • ????????????#define HID_SEND_HID_RESPONSE????????????????0x07
  • ????????????#define HID_OFFSET????????????????????????????0x00
  • ????????????#define HID_OFFSET_CMDCODE????????????HID_OFFSET?+?1
  • ????????????#define HID_OFFSET_LENGTH????????????????HID_OFFSET?+?2
  • ????????*/
  • ????????SendBuffer[HID_OFFSET]?=?HID_SEND_HID_RESPONSE;
  • ????????//SendBuffer[HID_OFFSET_LENGTH]?=?MIN(HID_MAX_BUFFER_SIZE,?SendBuffer[HID_OFFSET_LENGTH]);
  • ????????SendBuffer[HID_OFFSET_LENGTH]?=?ucSendData;
  • ????????/*?Allows the transmission?*/
  • ????????SetEPTxStatus(ENDP3,?EP_TX_VALID);
  • ????????USB_SIL_Write(EP3_IN,?SendBuffer,?HID_MAX_BUFFER_SIZE);
  • ????}
  • 路由器上調試如下: root@OpenWrt:/xutest# hidtest /dev/hiddev0 /dev/hiddev0 information:? HIDIOCGDEVINFO: bustype=3 busnum=1 devnum=11 ifnum=1 vendor=0x0483 product=0xd0d0 version=0x0200 num_applications=1 VID = 0x483, PID = 0xffffd0d0 --find device HIDIOCGNAME: STMicroelectronics CR95HF Reports of type Input (1): Report id: 0x07 (1 fields) Reports of type Output (2): Report id: 0x01 (1 fields) Report id: 0x02 (1 fields) Reports of type Feature (3): 5A 08 01 02 03 04 05 06? 00 08 01 02 03 04 05 06? 5A 0A 10 11 12 13 14 15 16 17? 00 0A 10 11 12 13 14 15 16 17? 5A 0B 70 71 72 73 74 75 76 77 78? 00 0B 70 71 72 73 74 75 76 77 78? 5A 0C 10 11 12 13 14 15 16 17 18 19? 00 0C 10 11 12 13 14 15 16 17 18 19? 5A 0D 70 71 72 73 74 75 76 77 78 79 7A? 00 0D 70 71 72 73 74 75 76 77 78 79 7A? 5A 0E 10 11 12 13 14 15 16 17 18 19 1A 1B? 00 0E 10 11 12 13 14 15 16 17 18 19 1A 1B? 5A 0F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C? 00 0F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C? 5A 10 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D? 00 10 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D? 5A 11 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E? 00 11 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E? 5A 12 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F? 00 12 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F? 5A 13 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80? 00 13 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80?

    轉載于:https://www.cnblogs.com/kernel-style/p/3208428.html

    總結

    以上是生活随笔為你收集整理的(转)Linux设备驱动之HID驱动 源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产亚洲永久域名 | 日日狠狠| 精品亚洲在线 | 久久久男人的天堂 | 久草视频网 | 久久公开视频 | 婷婷伊人五月 | 五月天久久久久久 | 成人网在线免费视频 | 91麻豆精品国产自产在线游戏 | wwxxxx日本 | 精品在线小视频 | 六月丁香婷婷在线 | 日韩资源在线播放 | 综合中文字幕 | 黄色特级片 | 中文字幕日韩一区二区三区不卡 | 日本精a在线观看 | 人人网av | 欧美91精品久久久久国产性生爱 | 在线观看视频一区二区三区 | 天天干天天操天天搞 | 国产成人一级 | 久久久精品久久日韩一区综合 | 日日夜夜精品免费 | 丁香六月久久综合狠狠色 | 午夜精品久久久久久久久久久久久久 | 久久永久免费视频 | 欧美日韩国产xxx | 亚洲四虎 | 天天拍天天操 | 久久精品一区二区三区中文字幕 | 一区二区精品在线视频 | 国产精品18久久久久久久网站 | 久久人人97超碰com | 亚洲黄色在线观看 | 欧美日韩一级久久久久久免费看 | 精品黄色在线观看 | 九九九国产| 狠狠干狠狠操 | 天天操天天操天天干 | 国产精品毛片一区 | 国产成人av电影在线观看 | 美女网站在线看 | av黄色一级片| 爱色av.com| 亚洲视频观看 | 久久99视频精品 | 91手机电视 | 国产麻豆精品在线观看 | 日批视频在线观看免费 | 福利视频导航网址 | www.91成人 | 亚洲精品乱码久久久久久9色 | 色婷婷狠狠| 丁香六月在线观看 | 免费高清在线视频一区· | 欧美aa一级| 97在线观看免费观看高清 | 国产不卡视频在线 | 国产精品亚洲片夜色在线 | 成人综合婷婷国产精品久久免费 | 日韩免费观看一区二区 | 日本午夜免费福利视频 | 欧美日韩三级在线观看 | 黄色成人影院 | 国产精品日韩在线观看 | 在线观看黄色免费视频 | 四虎成人在线 | 亚洲成人软件 | 国产 日韩 欧美 中文 在线播放 | 国产精品久久久区三区天天噜 | 麻豆精品传媒视频 | 天堂av高清 | 激情欧美一区二区三区免费看 | 久色婷婷| 麻豆影视在线观看 | 成人国产精品久久久春色 | 久久一区二区三区日韩 | 免费情缘| 99久久综合狠狠综合久久 | 国产第一页精品 | 麻豆视频91 | 96精品高清视频在线观看软件特色 | 久久夜夜爽 | 久久国产精品区 | 在线免费成人 | 揉bbb玩bbb少妇bbb | 欧美另类v| 国产在线观看地址 | 久久久久久久久久久综合 | 色综合久久中文字幕综合网 | 中文字幕在线观看免费高清完整版 | 欧美在线视频精品 | 在线精品在线 | 国产码电影 | 日韩午夜精品福利 | 色的网站在线观看 | 亚洲永久国产精品 | 亚洲三级av | 日韩网站在线播放 | 激情综合色图 | 成人免费xyz网站 | 国产白浆在线观看 | www.福利视频 | 欧美与欧洲交xxxx免费观看 | 91精品国产综合久久久久久久 | 日韩欧美在线免费 | 在线免费观看一区二区三区 | 国产综合片 | 久久艹艹 | 91视频免费国产 | 91九色视频 | 久久久久久麻豆 | 2023av| 色综合中文字幕 | 国产亚洲无 | 欧美精品乱码久久久久久 | 午夜久久久久久久久久影院 | 久久在线精品视频 | 深爱激情婷婷网 | 国产色小视频 | 99久久精品国产毛片 | 精品一区 在线 | av在线电影免费观看 | 人人看人人艹 | 国产成人久久精品一区二区三区 | 国产美女视频免费观看的网站 | 婷婷久久精品 | 成人免费毛片aaaaaa片 | 亚洲黄色在线观看 | a视频在线看 | 99av国产精品欲麻豆 | 久久夜夜操 | 国产一级二级三级视频 | 国产精品免费久久久久久久久久中文 | 久久av网 | 亚洲国产色一区 | 黄色软件在线观看 | 国产精品免费视频久久久 | 久久99热这里只有精品 | 午夜久久久久久久久久久 | 玖玖视频国产 | www.色国产 | 日韩在线观看第一页 | 高清美女视频 | 99久久国产免费看 | 四虎海外影库www4hu | 永久免费的啪啪网站免费观看浪潮 | 久精品一区 | 欧美精品在线一区二区 | 最新日韩精品 | 日韩av免费一区二区 | 日韩成人邪恶影片 | 欧美在线视频精品 | .国产精品成人自产拍在线观看6 | 久草网站在线观看 | 日日操日日操 | 五月天久久综合网 | 日韩videos高潮hd | 综合亚洲视频 | 欧美有色 | 日韩欧美一区二区三区视频 | 欧美日韩中文国产 | 精品欧美一区二区在线观看 | 婷婷丁香久久五月婷婷 | 97电影网手机版 | 天天色天天操综合网 | 午夜国产福利视频 | 免费午夜在线视频 | av在观看| 日韩激情片在线观看 | 丁香资源影视免费观看 | 狠狠色噜噜狠狠 | 久草在线观看资源 | 国产麻豆果冻传媒在线观看 | 五月天网页| 少妇资源站 | 婷婷激情网站 | 在线亚洲欧美视频 | 久久夜av| 久久久精品网站 | 日韩成人精品一区二区 | 999成人| 91视频免费网址 | 91自拍91 | 国色综合| 五月天天色| 香蕉视频国产在线观看 | 99精品视频免费看 | 国产精品一区欧美 | 黄色网址av| 骄小bbw搡bbbb揉bbbb | 五月天视频网 | 91在线免费播放 | 激情久久综合 | 不卡av在线播放 | 99精品久久久久 | 97色婷婷成人综合在线观看 | 久久在线视频精品 | 久草免费新视频 | 欧美成人aa | 久久精品免费播放 | 黄色一级性片 | 狠狠干网| av线上免费观看 | 少妇bbbb搡bbbb搡bbbb| 欧美99精品| 欧美日韩国产精品一区二区亚洲 | 久久99精品国产91久久来源 | 在线亚洲成人 | 久久精品5 | 国产精品久久久久久一区二区 | 日狠狠| 丁香婷婷久久 | 91九色porny在线 | 亚洲综合激情 | 欧美一区二区三区在线播放 | 在线免费成人 | av黄色大片| 免费网站在线观看成人 | 国产分类视频 | 成人久久久久 | 色天堂在线视频 | 久久久久久久久久影院 | av丝袜制服 | 国产97碰免费视频 | 久草网首页 | 亚洲狠狠丁香婷婷综合久久久 | 日韩av三区 | 天天爽天天射 | 日韩免费一区 | 亚洲精品国产精品乱码在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 久久久久久不卡 | 91亚洲成人 | 久久这里只有精品视频首页 | 中文字幕在线视频一区 | 91重口视频 | 中文字幕一区二区三区精华液 | 亚洲精品视频中文字幕 | 人人爱爱 | 久久手机免费视频 | 天堂在线视频中文网 | 亚洲精品美女久久久久网站 | 欧美片网站yy | 成人一级在线观看 | 免费成人黄色片 | 首页中文字幕 | 在线播放亚洲 | 韩国精品视频在线观看 | www久久国产 | 91大神电影 | 色综合在 | 中文免费 | av夜夜操 | 国产无套精品久久久久久 | 欧美激情精品久久 | 天天添夜夜操 | 日韩性片 | 婷婷成人亚洲综合国产xv88 | 亚洲国产中文字幕在线观看 | 欧美另类xxxxx | 国产喷水在线 | 91久久爱热色涩涩 | 午夜美女av | 一区二区 久久 | 综合久色 | 狠狠做深爱婷婷综合一区 | 久热超碰| 日韩欧美在线综合网 | 日韩在线理论 | 国内精品视频一区二区三区八戒 | 黄色国产区 | 久久免费看 | 在线观看亚洲 | 69成人在线| 欧美另类高清 videos | 欧美 日韩 国产 成人 在线 | 国产福利一区二区三区视频 | 日日夜夜免费精品视频 | 日韩影片在线观看 | 免费在线看成人av | 久久国产精品久久精品 | 欧美激情综合色综合啪啪五月 | 国产淫片免费看 | 欧美xxxxx在线视频 | 免费观看性生活大片3 | 国产又粗又猛又爽又黄的视频免费 | 亚洲理论片在线观看 | 亚洲黄色成人网 | 日韩69av| 五月婷久久| 在线免费观看av网站 | www.久久成人 | 亚洲综合网 | 午夜久久福利视频 | 亚洲一区二区三区91 | 日日碰夜夜爽 | 久久精品专区 | 国产资源在线播放 | 伊人永久在线 | 日本中文字幕观看 | 在线观看一区 | 国产精品99久久久久久武松影视 | 欧美精品乱码99久久影院 | 久久国产福利 | 免费在线观看av的网站 | 欧美久久久久久久久久久 | 亚洲欧美视频一区二区三区 | av中文字幕网址 | 久久在线精品 | 国产成人99av超碰超爽 | av免费看在线 | 免费日韩电影 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 黄色成人小视频 | 349k.cc看片app| 99热精品视 | 九色琪琪久久综合网天天 | 国产九九精品视频 | 日本大尺码专区mv | 精品国产一区二区三区不卡 | 日韩欧美高清一区二区三区 | 色婷婷精品大在线视频 | 久久艹影院 | 亚洲电影第一页av | 欧美在线一级片 | 五月天婷亚洲天综合网鲁鲁鲁 | 99久久婷婷国产一区二区三区 | 香蕉久草| 三级av网站| 国产精品久久99综合免费观看尤物 | 狠狠的操狠狠的干 | 在线观看av不卡 | 日韩精品在线看 | 99久久99视频 | a视频在线 | 亚洲精品视频在线播放 | 亚州天堂 | 国产不卡在线播放 | 日韩欧美视频一区二区 | 深爱五月激情五月 | 天天狠狠干| 激情婷婷丁香 | 国产打女人屁股调教97 | 日本女人在线观看 | 91丨九色丨91啦蝌蚪老版 | 亚洲a在线观看 | 超碰在线99 | 九九热久久免费视频 | 91在线看网站 | 夜夜爽www | 一区二区视频在线观看免费 | 波多野结衣在线视频免费观看 | 国产成人三级在线播放 | 免费久久99精品国产 | av在线网站观看 | 久久一级电影 | 99久久这里只有精品 | 国内精品在线看 | av一级一片 | 一级淫片在线观看 | 日韩免费电影在线观看 | 天天干,夜夜操 | 在线观看91久久久久久 | 成人免费视频观看 | 国产美女精品视频 | 91视频免费 | 91精品对白一区国产伦 | 日韩三级一区 | 国产精品97| 中文字幕日韩国产 | 久久免费精彩视频 | 2019国产精品| 日韩在线| 依人成人综合网 | 久久人人看 | 中文字幕人成人 | a黄色大片 | 国产精品精品久久久久久 | 日日夜夜综合网 | 少妇视频一区 | 91成人在线视频 | 亚洲视频h | 国产只有精品 | 激情欧美一区二区免费视频 | 亚洲 欧美 综合 在线 精品 | 亚洲视频电影在线 | 开心激情婷婷 | 国产精品一区二区三区四 | 激情在线网址 | 天天干,夜夜爽 | 奇米777777 | 91精品国产九九九久久久亚洲 | 天天射天天色天天干 | 97国产在线播放 | 日韩中文字幕视频在线 | 亚洲精品久久久久999中文字幕 | 91在线最新 | 美女性爽视频国产免费app | 最新极品jizzhd欧美 | 一区二区三区免费播放 | 视频一区二区免费 | 九色91在线视频 | 欧美日本不卡视频 | 亚洲一区二区黄色 | 久久久久综合 | 欧美另类调教 | 日韩丝袜 | 丝袜+亚洲+另类+欧美+变态 | 91porny九色91啦中文 | 天天插天天射 | 欧美极品少妇xxxx | 欧美有色| av黄色影院 | 99精品毛片 | 激情欧美丁香 | 国产又粗又猛又黄 | 中文字幕丝袜一区二区 | 99热在线网站| 欧美在线视频a | 久久国产视屏 | 久久久www免费电影网 | 五月天六月色 | 久久免费国产精品1 | 国产日产精品一区二区三区四区的观看方式 | 午夜精品久久久久久久99热影院 | 国产a精品 | 六月婷操 | 成人在线观看免费视频 | 亚洲视频 视频在线 | 国产中文欧美日韩在线 | 麻豆视频免费在线播放 | 在线观看色视频 | 91av在| 这里只有精品视频在线 | 五月天中文在线 | 91免费高清观看 | 四虎成人精品永久免费av | 婷婷五月在线视频 | 久久黄色免费视频 | 四虎永久免费网站 | 久久免费av电影 | 免费观看一级特黄欧美大片 | 成人黄色在线观看视频 | 久久一本综合 | 亚洲精品美女在线 | 特级毛片网 | 久久不卡av | 国产精品乱码久久 | 97综合网| 久久免费av电影 | 不卡国产在线 | 亚洲精品一区中文字幕乱码 | 精品一区二区在线看 | 91精品国产欧美一区二区成人 | 狠狠干狠狠艹 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久国产精品免费观看 | 美女黄频在线观看 | 精品免费视频. | 在线免费视频你懂的 | 人人超碰人人 | 在线观看av网站 | 亚洲国产美女精品久久久久∴ | 精品在线视频一区 | 国产成人综合在线观看 | 麻豆国产视频 | 日日操操 | 精品国产伦一区二区三区观看方式 | 999热视频 | 午夜精品成人一区二区三区 | 九九热视频在线免费观看 | www.xxxx欧美 | 一区二区精品在线观看 | 天天操天天射天天爽 | 成人久久18免费网站图片 | 亚洲一级免费观看 | 伊人色综合久久天天网 | 久久综合毛片 | 亚州精品在线视频 | 香蕉视频在线播放 | 最新国产在线视频 | 久久国产精品久久精品 | 亚洲精品在线播放视频 | 二区精品视频 | 黄色网址国产 | 欧美色图亚洲图片 | 国产精品视频免费看 | 亚洲国产中文字幕在线观看 | 婷婷激情综合网 | 国产99久久久欧美黑人 | 中文国产字幕 | 欧美日韩国产精品一区 | 亚洲一区精品二人人爽久久 | 久久精品99国产国产精 | 国产亚洲aⅴaaaaaa毛片 | 摸阴视频| 久草 | 免费观看成人av | www.av中文字幕.com | 日本一区二区高清不卡 | 亚洲免费永久精品国产 | 久久久高清一区二区三区 | 成人av在线播放网站 | 人人爽久久久噜噜噜电影 | 久久久久这里只有精品 | 婷婷九月激情 | 在线观看黄色小视频 | 在线观看视频免费大全 | 日韩午夜电影网 | 亚洲精品合集 | 综合网五月天 | 日本在线视频网址 | 国产精品免费视频一区二区 | 欧美亚洲国产一卡 | 午夜精品久久久久99热app | 狠狠色丁香婷婷综合久久片 | 中文字幕专区高清在线观看 | 欧美激情精品久久久 | 狠狠撸电影 | 国产精品一区二区久久精品爱涩 | 天天操天天透 | 免费成人在线观看 | 国产精品久久久久久久av大片 | 五月激情婷婷丁香 | 久久人人爽人人爽人人片av免费 | 又黄又爽又无遮挡的视频 | 久久国产精品免费视频 | 欧美日韩国产网站 | 亚洲国产美女久久久久 | 91免费试看 | 精品视频久久久久久 | 免费在线观看的av网站 | adn—256中文在线观看 | 国产中文字幕在线免费观看 | 97视频在线看 | 婷婷激情欧美 | 一二区精品 | 亚洲成人免费观看 | 国产成人亚洲在线电影 | 免费av网站在线 | 亚洲黄色免费在线看 | 999成人国产 | 国产精品一区二区免费在线观看 | 超碰av在线 | 五月天丁香亚洲 | 九九综合九九 | 九九久久久久久久久激情 | 国产永久免费高清在线观看视频 | 欧美另类交在线观看 | 免费观看黄 | 91中文字幕网 | 婷婷免费在线视频 | 麻豆国产视频下载 | 超碰97人人射妻 | 中文字幕一区二区三区四区久久 | 久久香蕉国产精品麻豆粉嫩av | 国产看片免费 | 91香蕉国产在线观看软件 | 亚洲国产一区av | 日韩一二三 | 亚洲黄色片在线 | 国产色婷婷精品综合在线手机播放 | 久久福利影视 | 97超碰在 | 天天综合中文 | 久久免费大片 | 玖玖视频免费在线 | 日韩欧三级 | 国产福利一区二区在线 | 五月婷婷另类国产 | 成人一区二区三区中文字幕 | 国产在线观| 91精品久久久久 | 亚洲精品久久在线 | 成人一级电影在线观看 | 成人免费一区二区三区在线观看 | 国产香蕉久久 | 成人在线视频免费看 | 久久成人视屏 | 黄色一级大片在线观看 | 久草资源在线观看 | 国产视频一区二区在线 | 91人人射 | 国产玖玖在线 | 亚洲最新视频在线 | 欧美91av| 中文字幕丝袜 | 日韩二区三区 | 亚洲三级黄| 成人av一区二区三区 | 2023av在线| 亚洲无吗av | 国产精品久久久久国产精品日日 | 91色在线观看视频 | 精品一区二区三区香蕉蜜桃 | 美女精品国产 | 天天天色综合 | 色综合天天干 | 国产精品人人做人人爽人人添 | 99在线观看 | 99热这里有精品 | 999成人国产| 99精品一级欧美片免费播放 | 日韩精品中文字幕在线 | 麻豆国产视频 | 伊人婷婷久久 | 天天艹天天爽 | 国内精自线一二区永久 | 在线观看 国产 | 亚洲精品视频免费在线观看 | 91精品1区2区 | 国产黄色片久久久 | 日韩在线观看视频一区二区三区 | 中文字幕在线免费观看 | 国产黑丝一区二区 | 91久久偷偷做嫩草影院 | 精品国产一二三 | 人人舔人人爽 | 国产九九九精品视频 | 中文字幕在线视频网站 | 亚洲第二色 | 天天色天天爱天天射综合 | 久久精品这里精品 | 国产美女精品在线 | av成人免费 | 国产精品久久久毛片 | 久久久久免费精品视频 | 在线观看视频三级 | 丁香色婷 | 麻豆国产在线视频 | 色婷婷狠狠操 | 欧美成年人在线视频 | 色在线国产 | 成人黄色国产 | 日韩剧情| 国产资源 | 亚洲一区美女视频在线观看免费 | 国产在线视频在线观看 | 中文字幕在线观看日本 | 久久久久久久久毛片精品 | 欧美a级片免费看 | 欧美成天堂网地址 | av官网在线| 91视频91色 | 一区二区三区中文字幕在线观看 | 亚洲美女免费精品视频在线观看 | 色国产精品 | 日本免费久久高清视频 | 欧美一级乱黄 | 美女网站一区 | 狠狠的日日 | 精品久久久久久久久久岛国gif | 五月综合在线观看 | 免费观看的av网站 | 亚洲精品玖玖玖av在线看 | 国产一二区视频 | 91久久一区二区 | 最新国产在线视频 | 国产精品久久久久影视 | 日韩免费一区二区 | 国产五月婷 | 亚洲视频六区 | 中文字幕电影在线 | 伊人色综合网 | 国产精品美女毛片真酒店 | 欧美a视频在线观看 | 国产精品资源网 | 91污在线观看 | 美女av在线免费 | 国产激情电影综合在线看 | 国产原厂视频在线观看 | 国产品久精国精产拍 | 久久99精品久久久久蜜臀 | 日韩av男人的天堂 | 午夜久久美女 | 国产 在线 高清 精品 | 欧美日韩不卡一区二区三区 | 天天综合视频在线观看 | 午夜视频一区二区 | 久久高清片| 欧美日韩二区在线 | 日韩网站免费观看 | 超碰电影在线观看 | 日日躁你夜夜躁你av蜜 | 欧美日韩国产精品一区二区三区 | 玖玖在线免费视频 | 欧美激情综合网 | 69av免费视频 | 天天插天天干天天操 | 在线精品在线 | 免费福利在线视频 | 日韩视频a | 欧美日韩一区三区 | 青草视频在线 | 亚洲五月激情 | 国产一区视频免费在线观看 | 国产精品1000| 精品亚洲男同gayvideo网站 | 91av免费观看 | 免费久久99精品国产婷婷六月 | 亚洲在线免费视频 | 成人视屏免费看 | 久久久久久久网站 | 最近日韩免费视频 | 欧美日韩国产综合网 | 97精品国自产拍在线观看 | 91视频中文字幕 | 在线电影日韩 | 精品在线观看视频 | 亚洲第一中文字幕 | 久久成人国产精品一区二区 | 午夜.dj高清免费观看视频 | 亚洲va男人天堂 | 国产亚洲精品免费 | 国产成人精品av在线观 | 国产免费视频在线 | 国产精品黄色av | 天堂av在线网址 | 中文字幕免费久久 | 国产一区欧美在线 | 欧美aaaxxxx做受视频 | 久久精品电影 | www.在线观看视频 | 91传媒在线观看 | 91精品国产91p65 | 在线网址你懂得 | 欧美va天堂在线电影 | 亚洲日本va午夜在线影院 | 国产va精品免费观看 | 999视频在线播放 | 91亚州 | 97超碰成人在线 | 99精品视频在线观看视频 | 91黄视频在线观看 | 国产福利a | 国产精品日韩在线观看 | 欧美性黑人| 精品国产一区二区三区久久久久久 | 久草视频在线免费播放 | 午夜精品久久久99热福利 | a午夜在线| 久久国产精品久久久久 | 波多野结衣在线观看一区二区三区 | av在线不卡观看 | 日韩黄色av网站 | 97超在线| 五月天婷婷丁香花 | 97色在线观看免费视频 | 国产精品日韩久久久久 | 国产精品一区免费在线观看 | 四虎www com| 婷婷色伊人 | 成 人 黄 色 免费播放 | a视频在线观看 | 日韩视频一区二区三区在线播放免费观看 | 久久天堂精品视频 | 香蕉影视在线观看 | 午夜aaaa| 天堂av色婷婷一区二区三区 | 又色又爽又黄 | 日韩av资源站 | 成人黄色免费在线观看 | 免费看三级黄色片 | 国产亚洲一区二区在线观看 | 国产99久久精品 | 一本一本久久aa综合精品 | 国产特级毛片aaaaaa | 欧美综合在线视频 | 超级碰99 | 激情综合网五月婷婷 | 免费在线播放视频 | 国产高清在线永久 | 欧美男同网站 | www.夜夜操.com | 精品国产亚洲在线 | 美女精品在线观看 | 天天摸夜夜操 | 美女国产网站 | 天天干天天拍天天操 | 在线视频 一区二区 | a久久久久久 | 日本不卡一区二区三区在线观看 | 在线免费高清一区二区三区 | 超碰在线cao | 在线免费成人 | 天天天色综合 | 四川妇女搡bbbb搡bbbb搡 | 午夜精品久久久久久久久久久 | 免费看在线看www777 | 天天色天天操综合网 | 91免费版成人 | 亚洲国产69| 丁香六月久久综合狠狠色 | 91日韩精品一区 | 美女黄频在线观看 | 久草在线观 | 亚洲精品一区二区在线观看 | 亚洲国产视频直播 | 欧美日韩啪啪 | 免费在线观看av | 成人h电影 | 国产乱视频 | 成人在线视频在线观看 | 日韩一三区 | 色姑娘综合天天 | 国内精品久久久久国产 | 2021久久| 天天操天天舔天天干 | 国产精品久久久久久久久久久久午 | 日韩在线观看视频网站 | 亚洲无吗av | 黄色电影在线免费观看 | 国产精品乱码久久 | 欧美激情视频一二三区 | 亚州精品国产 | 黄色精品国产 | 欧美日韩国产精品一区二区三区 | 免费三级大片 | 中文字幕在线播放av | 久草在线视频精品 | 日韩精品中文字幕一区二区 | 97日日碰人人模人人澡分享吧 | 国产精品一区二区久久精品爱涩 | 亚洲日本黄色 | 国产人成在线观看 | 九九视频精品免费 | 一区二区激情视频 | 国产一区二区在线影院 | 亚洲天堂网在线视频 | 国产亚洲人成网站在线观看 | 国产一区成人 | 97人人模人人爽人人少妇 | 狠狠操91| 免费在线观看成人av | 97碰在线 | 国产小视频91 | 久久久免费精品视频 | 久久久久久久久国产 | av高清免费在线 | 国产综合香蕉五月婷在线 | 日韩黄色av网站 | 天天射综合 | 国产成人一二三 | 亚洲国产av精品毛片鲁大师 | 亚洲高清视频在线 | 免费a级毛片在线看 | 亚洲国产福利视频 | 成人免费 在线播放 | 国产高清不卡在线 | 一区二区激情 | 在线视频 国产 日韩 | 500部大龄熟乱视频使用方法 | 日躁夜躁狠狠躁2001 | 国产在线国偷精品产拍 | 日韩欧美在线综合网 | 91精品视频在线 | 日本中文字幕在线电影 | 日韩激情在线 | 国产精品视频 | 在线观看精品黄av片免费 | 亚洲精品mv在线观看 | 久久综合狠狠狠色97 | 91视频在线观看免费 | 免费亚洲一区二区 | 亚洲成人精品av | 午夜av在线 | av在线电影播放 | 五月婷婷视频在线观看 | 日韩av免费在线看 | 色噜噜狠狠狠狠色综合 | 麻豆视频一区二区 | 亚洲视频网站在线观看 | 久久婷婷一区二区三区 | 精品视频久久 | 欧美人zozo | 丝袜美腿一区 | 国产香蕉97碰碰碰视频在线观看 | 日日夜夜精品免费观看 | 婷婷色婷婷| 免费黄在线观看 | 国产精品久久麻豆 | 亚洲精品影视在线观看 | 国产 成人 久久 | 久久99国产精品二区护士 | 日韩欧美黄色网址 | 久久久国产精品一区二区中文 | 99精品在这里 | 国产精品久久久久av免费 | 九色精品免费永久在线 | 日本黄色免费在线观看 | 色综合久久88色综合天天人守婷 | 国产精品18久久久久久不卡孕妇 | 18久久久久久 | 在线视频app | 玖玖爱在线观看 | 久久超级碰视频 | av免费网站 | 亚洲 欧洲 国产 精品 | 97超碰在线免费 | 中文字幕一区二区在线观看 | 99久久久国产精品免费观看 | av丝袜在线 | 99热最新在线| 91在线观看黄 | 超碰97免费观看 | 欧美日韩精品影院 | 在线观看亚洲国产精品 | 欧美午夜性生活 | 精品久久网 | 国产成人在线网站 | 欧美午夜剧场 | 蜜桃av久久久亚洲精品 | 亚洲狠狠操 | 黄色小说在线免费观看 | 黄色毛片视频免费观看中文 | 在线视频观看你懂的 | 国产午夜在线观看 | 久久9999久久免费精品国产 | 成人影片在线播放 | 国产一区在线免费 | 免费一级片久久 | 日一日操一操 | 不卡精品视频 | 美女网站一区 | 97视频人人澡人人爽 | 国产成人精品一区二区三区免费 | 国产一区二区成人 | 国产盗摄精品一区二区 | 国产日本在线观看 | 国产资源免费 | 色吧av色av | 超碰在线观看99 | 97av超碰| 亚洲久在线 | 久久视频在线视频 | 亚洲激情中文 | 国产精品 欧美 日韩 | 亚洲欧美视频网站 | 久久久久久久久久网 | 麻豆国产在线视频 | 在线观看不卡视频 | 国产一二区免费视频 | 久久久久久久久久久久久久电影 | 欧美a√大片 | 婷色| 亚洲激情在线观看 | 免费的国产精品 | 日韩av免费一区二区 | 久久伦理 | 最新午夜 | 国产免费中文字幕 | 色多多污污在线观看 | 色综合久久久久综合 | 在线www色| 欧美人体xx | 国产高清在线一区 | 日韩精品一区二区三区高清免费 | 91精品在线免费 | 国产精品一区在线观看你懂的 | 手机在线中文字幕 | 国产一级二级在线观看 | 国产午夜三级一区二区三 | 24小时日本在线www免费的 | 国产精品6 | 亚洲成人av在线播放 | 国产小视频网站 | 国产一区二区精品 | 亚洲高清在线观看视频 | 国产在线精品二区 | 成人黄性视频 | 日韩精品亚洲专区在线观看 | 69人人| 久久久久久久久久久久久久电影 | 国产精品久久久视频 | 国产盗摄精品一区二区 | 91在线最新 | av日韩中文 | 在线观看黄污 | 国内精品久久久久影院一蜜桃 | 色吧久久 | 免费亚洲视频在线观看 | 国产精彩视频 | 天天射色综合 | 久久97超碰 | 久久精品国产免费看久久精品 | 久久午夜精品影院一区 | 亚洲精品在线看 | 中文字幕av全部资源www中文字幕在线观看 | 日韩综合一区二区 | 久久久久久久免费看 | 超碰在线日韩 | 国产精品igao视频网入口 | 成人免费视频a | 日韩色在线| 91成人免费看片 |