欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

LibUSB-Win32實(shí)戰(zhàn):Windows下USB驅(qū)動(dòng)與通信編程全解析

LibUSB-Win32實(shí)戰(zhàn):Windows下USB驅(qū)動(dòng)與通信編程全解析 簡介一套可用于Windows平臺(tái)的LibUSB-Win32編程示例包適合有C/C基礎(chǔ)的設(shè)備驅(qū)動(dòng)開發(fā)者和嵌入式學(xué)習(xí)人員參考旨在不編寫內(nèi)核驅(qū)動(dòng)的前提下通過標(biāo)準(zhǔn)LibUSB接口完成USB設(shè)備的枚舉、讀寫與控制。資源共91個(gè)文件壓縮包約442KB以c/h源碼為主包含def導(dǎo)入定義與lib靜態(tài)庫另配txt說明文檔、bat批處理腳本、makefile工程文件和exe驅(qū)動(dòng)安裝工具從源碼編譯、驅(qū)動(dòng)注冊到實(shí)機(jī)運(yùn)行均有涉及。源碼部分同時(shí)提供C、C#與VB三種語言示例演示庫初始化、設(shè)備枚舉、配置與端點(diǎn)選擇、數(shù)據(jù)收發(fā)等完整流程并展示如何利用P/Invoke調(diào)用原生DLL實(shí)現(xiàn)跨語言控制包內(nèi)還體現(xiàn)USB設(shè)備的描述符層級組織幫助理解VID/PID識別、配置描述符、接口描述符與端點(diǎn)描述符等核心概念。借助msvc、gcc、bcc等目錄下的工程文件與構(gòu)建腳本讀者可快速生成適配本機(jī)的版本。目前已有417人學(xué)習(xí)下載對于希望以輕量方式切入Windows USB編程并快速上手實(shí)際項(xiàng)目的開發(fā)者是一份可直接對照演練的參考資料。1. Windows 下 USB 編程為什么繞不開 LibUSB-Win32從驅(qū)動(dòng)門檻到三行代碼拿到這個(gè)壓縮包的時(shí)候我第一反應(yīng)是翻README.txt和include/usb.h因?yàn)閺奈募湍芸闯鲞@不是一份「教程講義」而是一套可以直接編譯、直接調(diào)用的完整庫。做過 USB 設(shè)備調(diào)試的人都有體會(huì)Windows 下訪問 USB 設(shè)備最惡心的一步不是寫代碼而是驅(qū)動(dòng)。你要么需要 WinUSB、要么需要廠商自己的驅(qū)動(dòng)不然CreateFile根本拿不到設(shè)備句柄。LibUSB-Win32 解決的就是這個(gè)問題——它用一套用戶態(tài)驅(qū)動(dòng)把 Linux 上libusb那套 API 平移到了 Windows裝一次install-filter.exe之后 C/C、C#、VB 都能通過同一個(gè) DLL 控制設(shè)備不用再碰 KMDF/UMDF 那套內(nèi)核開發(fā)流程。這份資源適合兩類人一是被設(shè)備驅(qū)動(dòng)折騰到懷疑人生的嵌入式軟件工程師二是想給自定義 USB 設(shè)備寫上位機(jī)但沒有內(nèi)核驅(qū)動(dòng)簽名條件的朋友。我拿到手之后在 Visual C 6.0 和 VS2019 下各編譯了一遍下面把完整流程和踩過的坑寫出來。2. 先搞懂庫的構(gòu)成libusb0.dll、usb.h 與 install-filter.exe 各管什么2.1 壓縮包里的真實(shí)文件布局與各自作用解壓之后先別急著開 IDE我習(xí)慣先把文件和目錄捋一遍。這個(gè)包里核心的東西是bin、include、lib、examples四個(gè)目錄。include/usb.h是唯一的頭文件整個(gè)庫的 API 聲明全在這一個(gè)文件里別看它只有幾百行usb_init、usb_find_busses、usb_find_devices、usb_open、usb_claim_interface、usb_bulk_read/write、usb_control_msg這些函數(shù)全在里頭。bin目錄下是運(yùn)行時(shí)需要的文件——libusb0.dll是核心動(dòng)態(tài)庫libusb0.sys是驅(qū)動(dòng)文件install-filter.exe是驅(qū)動(dòng)安裝工具testlibusb.exe和testlibusb-win.exe是兩個(gè)測試程序。lib目錄下按編譯器分了子目錄msvc、gcc、bcc對應(yīng) MSVC、MinGW、Borland C 三種工具鏈的導(dǎo)入庫。examples里的bulk.c是批量傳輸?shù)耐暾雍竺嬷v代碼時(shí)我會(huì)拿它做底子。特別要說一下install-filter.exe這個(gè)工具它干的事是給指定 VID/PID 的設(shè)備安裝 LibUSB-Win32 的過濾器驅(qū)動(dòng)。所謂「過濾器」意思是它不接管整個(gè)設(shè)備棧而是插在 USB 棧上層讓用戶態(tài)程序能直接讀寫端點(diǎn)。裝完之后設(shè)備管理器里會(huì)看到設(shè)備變成了 LibUSB-Win32 Devices下面掛著你原來的設(shè)備實(shí)例。這套方案省掉了自己寫 INF、簽名驅(qū)動(dòng)的麻煩但代價(jià)是設(shè)備會(huì)被這個(gè)驅(qū)動(dòng)綁定拔掉換臺(tái)電腦要重裝。2.2 為什么要用 install-filter 而不是自簽驅(qū)動(dòng)很多入門者在這一步會(huì)去折騰「自己寫 INF 加載 libusb0.sys」我勸你不要。LibUSB-Win32 的驅(qū)動(dòng)是未簽名的在 64 位 Windows Vista 之后的系統(tǒng)上強(qiáng)制驅(qū)動(dòng)簽名策略會(huì)直接拒絕加載未簽名驅(qū)動(dòng)除非你每次開機(jī)按 F8 進(jìn)禁用驅(qū)動(dòng)簽名模式——這顯然不是能交付給客戶的方案。install-filter.exe走得是另一條路它利用的是 Windows 對用戶態(tài)驅(qū)動(dòng)過濾機(jī)制的支持安裝過程本質(zhì)是把設(shè)備重定向到 libusb0 驅(qū)動(dòng)上不需要你簽任何東西。我一般在 Win7/Win10/Win11 上都測試過Win10 1809 和 Win11 22H2 都能正常裝沒有碰到簽名攔截。另外要注意的是install-filter.exe安裝時(shí)會(huì)彈一個(gè)對話框讓你選設(shè)備這要求設(shè)備必須先插在機(jī)器上、并且被系統(tǒng)識別為未知設(shè)備或者帶廠商驅(qū)動(dòng)。如果你的設(shè)備已經(jīng)被系統(tǒng)自帶的 usbccgp 驅(qū)動(dòng)接管需要先在設(shè)備管理器里卸載驅(qū)動(dòng)再重新掃描硬件改動(dòng)讓設(shè)備處于「未安裝驅(qū)動(dòng)」?fàn)顟B(tài)這時(shí) install-filter 才能識別到它。這個(gè)順序經(jīng)常有人搞反導(dǎo)致裝完過濾器設(shè)備還是走舊驅(qū)動(dòng)。2.3 編譯環(huán)境選型VC6 可以但 VS2019 要注意運(yùn)行庫壓縮包里lib/msvc那個(gè)目錄里的導(dǎo)入庫是舊的 COFF 格式Visual C 6.0 可以直接用VS2008 之前都沒問題。但我試了下 VS2019 也能鏈接只要在項(xiàng)目里加上libusb0.lib的路徑然后在using namespace之前#pragma comment(lib, libusb0.lib)C 項(xiàng)目就能編過。不過 VS2019 默認(rèn)的字符集是 Unicode而 libusb 的 API 全是窄字符char*你把項(xiàng)目屬性里的字符集改成「多字節(jié)字符集」或者直接忽略警告都行。關(guān)于libusb0.dll的依賴它只依賴系統(tǒng)的ntdll.dll、kernel32.dll、user32.dll這三個(gè)基礎(chǔ) DLL不像后來 libusb 1.0 還需要 WinUSB 或 libusbK 支撐。這既是優(yōu)點(diǎn)也是缺點(diǎn)優(yōu)點(diǎn)是部署到干凈 Windows 機(jī)器上不需要裝 VC Redistributable 運(yùn)行庫缺點(diǎn)是這個(gè)庫 32 位版只支持 32 位進(jìn)程如果你的上位機(jī)是 x64 編譯的得用包里msvc_x64目錄下那份獨(dú)立編譯的 x64 版 DLL兩個(gè)平臺(tái)的文件不能混用。3. 從枚舉到讀寫用 Visual C 完成一次完整 USB 通信3.1 初始化與設(shè)備枚舉先掃總線再按 VID/PID 找設(shè)備寫代碼之前先把bin目錄里的testlibusb-win.exe跑一遍它會(huì)列出當(dāng)前總線上所有 USB 設(shè)備的總線號、設(shè)備號和 VID/PID這個(gè)輸出可以用來驗(yàn)證驅(qū)動(dòng)是否裝成功了。如果這步出來的列表是空的問題九成在驅(qū)動(dòng)沒綁上而不是代碼問題。下面是我實(shí)際項(xiàng)目里用的初始化模板#include stdio.h #include usb.h int main(void) { struct usb_bus *bus; struct usb_device *dev; usb_init(); // 初始化 libusb 內(nèi)部狀態(tài) usb_find_busses(); // 掃描系統(tǒng)里的 USB 總線 usb_find_devices(); // 掃描每條總線上的設(shè)備 for (bus usb_get_busses(); bus; bus bus-next) { for (dev bus-devices; dev; dev dev-next) { printf(%04x:%04x bus%s dev%s\n, dev-descriptor.idVendor, dev-descriptor.idProduct, bus-dirname, dev-filename); } } return 0; }usb_init()只需要調(diào)一次usb_find_busses()和usb_find_devices()每次重新枚舉時(shí)都要成對調(diào)用比如熱插拔之后要從頭再掃一遍。usb_get_busses()返回的是靜態(tài)分配的鏈表頭遍歷時(shí)不用自己釋放內(nèi)存。鏈表中每個(gè)usb_device結(jié)構(gòu)體里的descriptor字段存放了設(shè)備描述符idVendor和idProduct是識別設(shè)備最關(guān)鍵的兩個(gè)值后面的usb_open()是拿設(shè)備句柄而查找匹配得靠這兩個(gè) ID。3.2 打開設(shè)備與聲明接口內(nèi)核里有個(gè)「互斥鎖」在等你找到設(shè)備之后下一步是打開并聲明接口。這里有個(gè)容易翻車的地方usb_open()成功只能說明句柄拿到了但如果你不調(diào)usb_claim_interface()后續(xù)的usb_bulk_write()會(huì)返回-EBUSY。原因是 LibUSB-Win32 在內(nèi)核驅(qū)動(dòng)里給每個(gè)接口加了一把互斥鎖一次只允許一個(gè)進(jìn)程占用接口不聲明接口就相當(dāng)于沒進(jìn)臨界區(qū)。usb_dev_handle *handle usb_open(dev); if (!handle) { fprintf(stderr, usb_open 失敗: %s\n, usb_strerror()); return -1; } // 拿配置描述符里的接口數(shù)一般設(shè)備只有一個(gè)接口 int ret usb_claim_interface(handle, 0); if (ret 0) { fprintf(stderr, usb_claim_interface 失敗: %d, %s\n, ret, usb_strerror()); usb_close(handle); return -1; }usb_claim_interface的第二個(gè)參數(shù)是接口編號多數(shù)設(shè)備是 0。有些復(fù)合設(shè)備有多個(gè)接口比如聲卡加按鍵控制那就得逐個(gè) claim但 LibUSB-Win32 對多接口同時(shí) claim 的支持不完整我實(shí)測在雙接口設(shè)備上第二個(gè)接口經(jīng)常 claim 失敗遇到這種情況建議只碰主接口。usb_strerror()是排查錯(cuò)誤的好幫手幾乎所有 API 返回負(fù)數(shù)時(shí)都能用它拿到人類可讀的原因比裸看錯(cuò)誤碼強(qiáng)太多。3.3 批量傳輸端點(diǎn)地址與包大小的四組關(guān)鍵參數(shù)批量傳輸是 USB 設(shè)備最常用的數(shù)據(jù)通道方式examples/bulk.c里就有現(xiàn)成的例子。它的邏輯很直接從 bulk-in 端點(diǎn)收數(shù)據(jù)、往 bulk-out 端點(diǎn)發(fā)數(shù)據(jù)。改參數(shù)時(shí)看四點(diǎn)int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout); int usb_bulk_write(usb_dev_handle *dev, int ep, const char *bytes, int size, int timeout);ep是端點(diǎn)地址注意它包含了方向位——0x81 表示 endpoint 1 IN設(shè)備到主機(jī)0x01 表示 endpoint 1 OUT主機(jī)到設(shè)備地址里的最高位 0x80 就是方向標(biāo)志照抄設(shè)備數(shù)據(jù)手冊里的端點(diǎn)描述符即可。size是單次傳輸?shù)淖畲笞止?jié)數(shù)這個(gè)值必須小于等于端點(diǎn)描述符里的 wMaxPacketSize超了驅(qū)動(dòng)會(huì)給你攔下來或者拆包。timeout單位是毫秒0 表示無限等待我建議實(shí)際項(xiàng)目里不要設(shè) 0設(shè)個(gè) 1000 就夠不然設(shè)備異常時(shí)線程會(huì)卡死在驅(qū)動(dòng)里。返回值是實(shí)際傳輸?shù)淖止?jié)數(shù)負(fù)數(shù)是錯(cuò)誤碼。// 從端點(diǎn) 0x81 收一包超時(shí) 1000ms char buffer[64]; int len usb_bulk_read(handle, 0x81, buffer, sizeof(buffer), 1000); if (len 0) { // 常見錯(cuò)誤: -110 超時(shí), -4 設(shè)備不存在, -9 接口未 claim fprintf(stderr, bulk read failed: %d\n, len); } else { process_packet(buffer, len); }真實(shí)設(shè)備上有個(gè)規(guī)律大批量數(shù)據(jù)比如幾百 KB要拆成多次usb_bulk_read循環(huán)調(diào)用因?yàn)閱未?size 受端點(diǎn)最大包限制。我一般先把端點(diǎn)描述符的 wMaxPacketSize 打印出來然后按這個(gè)值設(shè) size配合 while 循環(huán)去收完整個(gè)數(shù)據(jù)流。如果傳來的是變長幀很多設(shè)備會(huì)在包末尾帶一個(gè)短包或 ZLP零長度包來標(biāo)記結(jié)束代碼里要留意len 0的情況別當(dāng)錯(cuò)誤處理。3.4 控制傳輸讓設(shè)備進(jìn)入配置模式的標(biāo)準(zhǔn)動(dòng)作除了批量傳輸控制傳輸是 USB 設(shè)備另外一個(gè)逃不掉的通道所有標(biāo)準(zhǔn)請求獲取描述符、設(shè)置配置、設(shè)置地址都走控制管道。LibUSB-Win32 里對應(yīng)的是usb_control_msg它在底層幫你構(gòu)造了 Setup Packet比直接調(diào) DeviceIoControl 要友好很多。int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout);requesttype是 bmRequestType重點(diǎn)看它的三個(gè)位段bit7 是方向0x80 表示設(shè)備到主機(jī)bit6-5 是類型0x00 標(biāo)準(zhǔn)、0x20 廠商、0x40 保留bit4-0 是接收者0x00 設(shè)備、0x01 接口、0x02 端點(diǎn)。request是 bRequest標(biāo)準(zhǔn)請求里 0x06 是 GET_DESCRIPTOR0x09 是 SET_CONFIGURATION廠商自定義設(shè)備通常用 0x00-0xFF 里的值具體查設(shè)備手冊。value和index的含義跟著請求走比如 GET_DESCRIPTOR 時(shí)value高字節(jié)放描述符類型0x02 配置描述符、低字節(jié)放索引index放語言 ID。實(shí)話說控制傳輸最容易出錯(cuò)的就是 bmRequestType 的位段拼錯(cuò)我在往一個(gè)指紋模組寫廠商控制命令時(shí)就因?yàn)樵?requesttype 里漏了 0x80 方向位導(dǎo)致設(shè)備一直不回?cái)?shù)據(jù)最后用 USB 分析儀抓包才定位到。建議調(diào)試初期先把標(biāo)準(zhǔn)請求比如 GET_DESCRIPTOR調(diào)通確認(rèn)控制管道沒問題再碰廠商私有命令。4. 避坑與排查LibUSB-Win32 在 Windows 上的五個(gè)常見翻車點(diǎn)4.1 安裝了過濾器驅(qū)動(dòng)但 testlibusb-win 看不到設(shè)備現(xiàn)象install-filter.exe執(zhí)行完顯示成功設(shè)備管理器里也出現(xiàn)了 LibUSB-Win32 Devices但跑testlibusb-win.exe列表里就是沒有目標(biāo)設(shè)備。原因設(shè)備管理器里看到的不一定是「被 libusb0.sys 接管」的狀態(tài)。常見情況是系統(tǒng)里同時(shí)裝了廠商官方驅(qū)動(dòng)LibUSB-Win32 的過濾器掛在了驅(qū)動(dòng)棧的上層而usb_find_devices()是通過遍歷 USB 總線上的設(shè)備節(jié)點(diǎn)來枚舉的沒有暴露給 libusb0 的設(shè)備自然掃不到。解決在設(shè)備管理器里找到目標(biāo)設(shè)備右鍵「更新驅(qū)動(dòng)程序」→「瀏覽我的電腦」→「讓我從列表中選取」選 LibUSB-Win32 Device 那個(gè)條目。如果列表里沒有把bin目錄下的libusb0.inf手動(dòng)指定一下路徑再選。裝完之后把設(shè)備拔插一次確保驅(qū)動(dòng)棧重新綁定。4.2 64 位系統(tǒng)下程序一啟動(dòng)就崩潰錯(cuò)誤碼 0xC0000135現(xiàn)象程序編譯通過運(yùn)行后立刻彈「找不到 libusb0.dll」或者直接啟動(dòng)失敗。原因LibUSB-Win32 的 x64 DLL 和 32 位 DLL 不能互相替代如果你用 x64 編譯器、但鏈接了 32 位版導(dǎo)入庫運(yùn)行時(shí)加載 DLL 的架構(gòu)匹配不上直接掛。更隱性的坑是系統(tǒng) PATH 里存在一個(gè)舊版本 DLL應(yīng)用程序從 PATH 里找到了錯(cuò)誤位數(shù)的庫。解決把bin目錄里對應(yīng)架構(gòu)的 DLL 拷貝到 exe 同目錄這樣可執(zhí)行文件會(huì)優(yōu)先從自身目錄加載。VS 工程里注意 link 選項(xiàng)的Additional Library Directories用lib/msvc_x64還是lib/msvc兩個(gè)目錄不能加錯(cuò)。調(diào)完記得用 Dependency Walker 看一眼實(shí)際加載的 DLL 路徑。4.3 反復(fù)-110超時(shí)但同一條命令在 Linux 下是好的現(xiàn)象usb_bulk_read老是返回 -110超時(shí)換到 Linux 上同一個(gè)設(shè)備同樣的讀寫操作完全正常。原因Windows 對 USB 有 EHCI/xHCI 控制器級別的不同調(diào)度策略LibUSB-Win32 對中斷傳輸和批量傳輸?shù)木彺婀芾頉]有 libusb 1.0 那么激進(jìn)而且這個(gè)老庫對高速批量端點(diǎn)Bulk-Only的處理有個(gè)已知限制——單次傳輸 size 過大時(shí)容易超時(shí)。解決把單次 size 從端點(diǎn)的 wMaxPacketSize 改成它的一半或者每次讀前先發(fā)一個(gè) 0 字節(jié)控制請求重置設(shè)備端點(diǎn)。我習(xí)慣把 size 設(shè)為 4096 以下實(shí)測 -110 的概率會(huì)大幅降低。另外檢查一下usb_set_configuration(handle, 1)有沒有調(diào)用沒設(shè)配置就讀寫會(huì)有詭異行為。4.4 USB 線一拔程序就死鎖回收線程卡在 usb_close現(xiàn)象設(shè)備熱插拔之后負(fù)責(zé)通信的線程沒有異常返回而是直接掛死調(diào)試發(fā)現(xiàn)卡在usb_close()或者usb_release_interface()。原因LibUSB-Win32 在設(shè)備突然斷開時(shí)不會(huì)給所有阻塞中的 IO 請求立即返回錯(cuò)誤驅(qū)動(dòng)棧的處理方式是等待超時(shí)或下一次訪問時(shí)報(bào)錯(cuò)這在拔線的瞬間會(huì)形成窗口。解決程序里不要依賴單次調(diào)用的返回值來判斷設(shè)備斷開要疊加一個(gè)心跳機(jī)制——周期性地發(fā)一個(gè)輕量控制請求比如 GET_DESCRIPTOR 或者廠商自定義的讀版本號命令連續(xù)失敗 N 次再觸發(fā)usb_reset()或usb_close()。同時(shí)把timeout從 0 改成有限值別讓線程無限阻塞。4.5 同一臺(tái)電腦上多個(gè)進(jìn)程互相搶設(shè)備現(xiàn)象兩個(gè)上位機(jī)程序同時(shí)操作同一個(gè) USB 設(shè)備后啟動(dòng)的進(jìn)程 claim 接口失敗甚至先啟動(dòng)的進(jìn)程也出現(xiàn)間歇性讀取錯(cuò)誤。原因LibUSB-Win32 的互斥是接口級別的不是設(shè)備級別的而且它在多個(gè)進(jìn)程上的行為不如 libusb 1.0 穩(wěn)定。解決設(shè)計(jì)上做一個(gè)單實(shí)例互斥體CreateMutex帶固定名字同一時(shí)刻只允許一個(gè)進(jìn)程打開設(shè)備。如果需要多個(gè)進(jìn)程協(xié)作讀寫不同端點(diǎn)建議改用 libusb 1.0 的libusb_set_auto_detach_kernel_driver那種方案。我這個(gè)經(jīng)驗(yàn)可能有點(diǎn)保守但在這個(gè)老庫上多進(jìn)程并發(fā)確實(shí)就是坑。5. 進(jìn)階用法與動(dòng)態(tài)庫封裝把 LibUSB-Win32 變成 C/C# 都能調(diào)的模塊5.1 用 C 類把 C 接口包裝成 RAII 風(fēng)格句柄生命周期不再裸奔用裸 C API 寫大型上位機(jī)項(xiàng)目最大的隱患是usb_dev_handle*指針在異常路徑下容易泄漏——某一個(gè)usb_claim_interface失敗直接 return后面usb_close就不會(huì)執(zhí)行。我一般會(huì)做一層薄封裝把 LibUSB-Win32 的 C API 收進(jìn) C 類里。這里的關(guān)鍵是用一個(gè) struct 來保存設(shè)備句柄、接口號、端點(diǎn)地址然后讓構(gòu)造函數(shù)負(fù)責(zé)枚舉和打開析構(gòu)函數(shù)負(fù)責(zé)釋放。注意這個(gè)類不能拷貝因?yàn)榭截惲司浔羔槙?huì)導(dǎo)致兩次usb_close操作同一個(gè)內(nèi)存地址直接崩。class UsbDevice { public: UsbDevice(int vid, int pid, int interface_id 0) : handle_(nullptr), interface_id_(interface_id) { usb_init(); usb_find_busses(); usb_find_devices(); for (usb_bus* bus usb_get_busses(); bus; bus bus-next) { for (usb_device* dev bus-devices; dev; dev dev-next) { if (dev-descriptor.idVendor vid dev-descriptor.idProduct pid) { handle_ usb_open(dev); if (handle_ usb_claim_interface(handle_, interface_id_) 0) { return; } if (handle_) usb_close(handle_); handle_ nullptr; } } } } ~UsbDevice() { if (handle_) { usb_release_interface(handle_, interface_id_); usb_close(handle_); } } int BulkRead(int ep, char* buf, int size, int timeout_ms) { return usb_bulk_read(handle_, ep, buf, size, timeout_ms); } private: usb_dev_handle* handle_; int interface_id_; };這段代碼把「找設(shè)備、打開、聲明接口」壓縮到了構(gòu)造函數(shù)里每個(gè)步驟失敗時(shí)句柄都會(huì)被及時(shí)釋放不會(huì)出現(xiàn)半初始化的對象。實(shí)際使用時(shí)如果構(gòu)造函數(shù)執(zhí)行完handle_仍為nullptr說明設(shè)備沒插好或驅(qū)動(dòng)沒綁直接拋異?;蚍祷劐e(cuò)誤即可。析構(gòu)函數(shù)里usb_release_interface在設(shè)備已被拔掉時(shí)可能返回負(fù)值但析構(gòu)函數(shù)里不能拋異常所以這里我選擇忽略返回值讓usb_close去兜底清理。5.2 用 C# 的 P/Invoke 調(diào) libusb0.dll三種封送最容易出錯(cuò)的類型如果上位機(jī)是 C# / VB.NET 寫的可以繞開 C 層直接 P/Invoke 調(diào)libusb0.dll。但這里有幾個(gè)類型映射不是想當(dāng)然就能抄對的我踩過幾個(gè)坎列一下常用的幾個(gè)函數(shù)簽名[DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern void usb_init(); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern int usb_find_busses(); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern int usb_find_devices(); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern IntPtr usb_open(IntPtr usbDevicePtr); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern int usb_claim_interface(IntPtr dev, int iface); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern int usb_bulk_read(IntPtr dev, int ep, byte[] bytes, int size, int timeout); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern int usb_bulk_write(IntPtr dev, int ep, byte[] bytes, int size, int timeout); [DllImport(libusb0.dll, CallingConvention CallingConvention.Cdecl)] public static extern int usb_close(IntPtr dev);三個(gè)注意點(diǎn)第一usb_bulk_read的 buffer 參數(shù)用byte[]就可以CLR 會(huì)自動(dòng)把它釘在內(nèi)存上不需要手動(dòng)GCHandle.Alloc但前提是size不能超過數(shù)組長度超了會(huì)踩內(nèi)存。第二CallingConvention一定要是Cdecllibusb0.dll 的導(dǎo)出函數(shù)是 C 調(diào)用約定如果寫成默認(rèn)的Winapi也就是 stdcall64 位下也許碰巧沒問題32 位下必定棧錯(cuò)亂。第三usb_open接收的是usb_device*指針在 C# 側(cè)如果是通過遍歷usb_get_busses()拿到的先封成IntPtr再傳不要試圖直接拿托管結(jié)構(gòu)體去轉(zhuǎn)。之前有人在論壇上問為什么 C# 里usb_bulk_read總是讀不到數(shù)據(jù)后來發(fā)現(xiàn)是usb_init忘調(diào)了——這個(gè)函數(shù)在 C 側(cè)省略調(diào)用偶爾也能工作因?yàn)?DLL 內(nèi)部有默認(rèn)初始化但在跨語言調(diào)用時(shí)丟一次初始化就會(huì)讓內(nèi)部狀態(tài)機(jī)完全不對。所以 C# 里嚴(yán)格按照usb_init → usb_find_busses → usb_find_devices順序來一步都不能省。5.3 部署細(xì)節(jié)DLL 該放哪、驅(qū)動(dòng)怎么跟隨 U 盤分發(fā)最后一個(gè)影響交付體驗(yàn)的點(diǎn)是部署。LibUSB-Win32 的驅(qū)動(dòng)安裝本質(zhì)是修改了系統(tǒng)的 USB 驅(qū)動(dòng)棧配置所以「綠色版免安裝」是不存在的哪怕程序本身不用安裝驅(qū)動(dòng)必須裝一次。我現(xiàn)在的做法是做一個(gè)driver_installer目錄里面放install-filter.exe、libusb0.dll、libusb0.sys、libusb0.inf然后寫一個(gè) bat 腳本把 DLL 拷到 exe 同目錄避免 PATH 污染。echo off set BIN_DIRdriver_installer set APP_DIR. echo [1/2] 安裝 LibUSB-Win32 過濾器驅(qū)動(dòng) %BIN_DIR%\install-filter.exe -q echo [2/2] 部署 libusb0.dll 到程序目錄 copy /Y %BIN_DIR%\libusb0.dll %APP_DIR%\ copy /Y x64\libusb0_x64.dll %APP_DIR%\libusb0_x64.dll echo 完成。請將設(shè)備插入 USB 口后重新運(yùn)行程序。 pause這個(gè)腳本里的-q參數(shù)是靜默模式但實(shí)測在某些 Windows 版本上靜默安裝會(huì)失敗失敗時(shí)就去掉-q讓用戶手動(dòng)選設(shè)備。設(shè)備文件不加簽名所以安裝時(shí)用戶會(huì)被 UAC 彈窗問一次是否允許更改設(shè)備設(shè)置這是預(yù)期行為要在交付說明里寫明。我還踩過一個(gè)跟 VC 運(yùn)行庫相關(guān)的坑程序如果靜態(tài)鏈接了新版 MSVC 的運(yùn)行庫部署到?jīng)]有裝過 VS Redistributable 的機(jī)器上會(huì)報(bào)錯(cuò)建議項(xiàng)目屬性里把/MT換成/MD或者直接把對應(yīng)的 vc_redist 塞到安裝包里。從那以后我每次交付 LibUSB-Win32 相關(guān)的上位機(jī)都強(qiáng)制自己走一遍完整流程新裝一臺(tái)干凈的 Windows VM插設(shè)備、裝過濾器、跑 testlibusb-win、再跑自己的程序。這套驗(yàn)證流程幫我提前擋掉了大部分用戶側(cè)的「驅(qū)動(dòng)沒裝對」「DLL 版本不對」問題。這個(gè)老庫雖然不像 libusb 1.0 維護(hù)得那么活躍但在不少工控方案里它仍然是首選因?yàn)榻涌诤唵?、依賴少把上面這幾個(gè)坑避開它就能在本地上好好干活。希望這篇拆解能幫你節(jié)省幾個(gè)晚上的排查時(shí)間。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
综合九九久久| 九九色中文| 天天综合网91| 少妇性BBB搡BBB爽爽爽电影| 9热精品| 亚洲九九夜夜| 五月天com| 国产成人网址| 婷婷久久免费| 综合激情九月婷婷,激情综合婷婷中文字| 九九性爱网| 五月天婷亚洲天综合网综合| 日韩精品超碰在线观看| 91在线人| 婷婷五月欧美综合| 国产毛片精品一区二区色欲黄A片| 久噜久噜| 日日干日日s| 美女91一起草| 啪啪视频99| 九九久久99| AAA亚洲AV| 秋霞性爱AV| 香港九九六区八区99| WWW久久久| 欧美va亚洲va在线播放| 婷婷五月天手机版视频| 婷婷五月综合婷婷| 九九热这里有精品视频| 99思思在线视频| 91chinese 在线| 狠狠干2007| 久久WW| 免费看欧美成人A片无码| 国产精品色色| 五月婷婷色播| 思思热视频| 激情综合五月色在线| 狠狠99| 噜噜五月天综合| 亚洲乱码精品久久久久..| AV色婷婷| 九九人人操| 无月播播激情在线观看视频| 婷婷五月天黄色小说| 色婷婷成人影片| 婷婷五月香蕉| 婷婷丁香六月五月天| 色综合婷婷| av激情在线| 国产婷婷五月| 婷婷操超碰| 丁香色色五月| 成人在线日韩欧美| 狠狠操综合| 日本在线视频看se99| 国产看真人毛片爱做A片| 97干视频| 成人片在线播放| 中文字幕精品在线观看| 九九香蕉网| 久久激情五月天| 中文字幕丰满人妻无码专区| 第四色激情网| www.yw尤物| 另类视频五月天| 亚洲操人| 色伦专区97中文字幕| 国产AV一区二区三区最新精品| 色偷偷综合| 五月丁香六月成人| 黑人巨粗进入警花疼哭A片| 亚洲视色| 色综合久久888| 婷婷五月丁香基地| 色婷| 97色干| 天天日天天色| 五月婷婷丁香五月 | 激情综合丁香五月| 99久.| 亚洲精品色| 成人片在线播放| 俺去也婷婷| 538在线精品| 婷婷综合中文| 成人av中文字幕| 免费九九热| 日日夜夜狠狠婷婷色| 五月色婷婷综合色| A久久| 五月丁香久久久久| 97日本在线播放| 久久一级免费黄色片| 97五月婷婷| 中美日韩成人在线| 这里只有精品9| 色综合五月天| 开心五月色婷婷综合开心网| 激情伊人网| 九九99精品| 狠狠狠人妻| 战争与艾拉电影免费观看| 噜噜狠狠色综无码久久合欧美| 色九月婷婷丁香| 大香蕉久| 五月婷婷人人人操| www.com五月天| 伊人久久大香线蕉av最新| 亚洲综合婷婷| 色偷偷色婷婷| 五月网网站| 婷婷成人五月天| 99日韩| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 思思久久精品| 国产午夜成人免费看片无遮挡| 欧美碰碰| 大伊久久| 午夜精品久久久久久久爽| 噜噜狠狠色综合久| 狠狠色噜噜| 久久六月天| 大色鬼综合| 大香蕉久热| 777精品成人a v久久| 人人草人人爱| 综合激情九月婷婷,激情综合婷婷中文字 | 色婷婷精品| 51国精产品自偷自偷综合| 色婷婷亚洲综合网站| 9久精品| 五月精品免费XXX| 色999亚洲人成色| 色啦啦视频| 久久伊人大香蕉| 天天天天天日| 丁香五月婷婷久久久| 久热这里只有精品6| 蜜乳久AV| 婷婷丁香五另类网站| 激情五月网站| 人人摸人人搞| 国产亚洲99| 综合XX网| 五月天天综合| 久久9精品| 五月丁香婷色| 五月天久久网站| 婷婷丁香五月视频| 丁香五月六月婷婷殴美综合| 亚洲最大视频网站| 99热都是精品| 青青草原亚洲天堂| 久久伊人五月天| 九九热大香蕉| 色99色| 国产日日操夜夜操的肉棒视频| 在线观看免费视频| 91ncom.色| 开心婷婷五月中文字幕组| 色色99| 欧美激情五月天婷婷| 久久丁香五月| 狠狠久久婷婷| 国产操碰| 另类五月婷婷| 综合色图婷婷| 精品人妻伦一二三区久久| 五月婷婷碰碰| 五月婷婷真爱激情网| 最新国产AV| 啪啪啪五月天| 婷婷成人五月天成人文学小说| 热91久| 免费久久这里只有精品99| 国产精品久久久久久久久久| 色色 9| ai97re99一本| 激情久久五月天| 男女99免费视频| 五月天久久婷婷| 欧美在线干| 久久久久er热| 亚洲丁香五月在线观看| 丁香六月激情| 色天堂婷婷| 99热在线观看这里只有精品| 91porn一起草| 国产精品人人做人人爽人人添| 天天婷婷操| 欧美色一级色| 日本色99| www.五月婷婷久久.com| 天天综合五月天| 久久HD| 《诡秘之主》在线观看| 丁香五月婷婷久久久| 婷婷综合成人| 91欧美| 久久精品凹凸分类| 婷婷午夜激情| 丁香五月中文字幕久色| 久久视频婷婷| 色色婷婷五月天| 最新热中文字幕| 九九九九精品精| 99re6久热只有精品6在线直播| 婷婷色五月激情| 麻豆WWWCOM内射软件| 婷婷久久亚洲| 亚洲精品乱码久久久久99| 亚洲黄网在线| 99热这里是精品| 亚洲色A| 中文字幕不卡+婷婷五月| 亚洲无码成人| 色五月丁香伊人| 91ncm视频| 色激情五月天| 婷婷在线视频| 91视频一起草| 五月丁香激情综合久久| 五月婷婷丁香五月婷婷| 国产夫妻操逼内射视频| 欧美日韩成人在线| 色五月婷婷操逼| 免费无码毛片一区二区A片| 久久九九热视频| 婷婷五月天在线看| 五月 激情视频| 日韩AV在线影片| 日韩超碰在线| 丁香婷婷成人网| 久久综合五月天| 五月天五月天激情网| 久久这里只有精彩| 亚洲五月天婷婷| 五月婷婷影视| 91紱請| 激情五月丁香五月| 97在线视频人妻九色| 天堂婷婷丁香六月网| 超碰在线看| 欧美日本99| 香蕉综合网| 99爱在线精品视频免费观看| 丁香婷婷婷五月| 久久这里都是精品视频| 丁香六月成人网| 99色精品视频| 亚洲色婷婷色| 五月丁香婷婷久久| 婷婷激情综合网| 翔田千里aV中文字幕| 91Chinese在线| 婷婷九月丁香天堂丁香天堂| 国产1区2区| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 国产激情综合| 色色色99| 99精品国产在热久久| 丁香六月在线| 专区无日本视频高清8| 青青.com| site:pzdcoin.com| 午夜精品777| 伊人大香五月天| 九九这里只有精品在线视频| 五月丁香婷婷在线综合蜜桃| 天天婷婷操| 天天草天天舔| 五月婷婷在线综合| 日本久久精品18| 99热成人精品网站| 狠狠草在线观看| 九九碰九九爱97超碰| 丁香五月综合激情啪啪| 亚洲色频| www.金莲av| 97婷婷五月丁香| 日本在线观看aaa 99| 91在线观看www| 男人的天堂97| 91丨九色丨43老版熟女| www..com色爱| 夜夜爽天天干| 激情综合色| 五月丁香六月色| 最近中文字幕大全免费版在线 | 色99网| 五月丁香日本片| 678五月丁香亚洲综合| 天天在线久久综合 | 久久机热/这里只有精品| 丁香六月婷| 图片区 小说区 区 亚洲五月 | 97色婷婷成人综合在线观看| 日韩精品AV一区二区三区| 国精产品一区一区三区免费视频| 久久婷婷电影| 99在线观看亚洲| 激情美女五月天激情在线| 色婷婷五月天天天干天天操天天爽| 婷婷五月18永久免费视频| 五月丁香综合影院| 一本道在线电影| 精品国产乱码久久久久夜深人妻| Blackedraw视频一区二区| 色色综合热| 91凹凸在线| 五月丁香婷婷AV天堂| 人人草人人爱手机视频看看| 四虎成人精品永久免费AV九九| 色玖玖| 婷婷五月天你懂的| 亚洲射激情| 色五月天电影| 野战J办公桌椅H| 婷婷丁香综合| 六月丁香五月激情网| 亚洲色色色| 五月激情啪啪| 五月丁香综合啪啪| 五月天久久小说| 天堂久久精品| 激情综合激情综合| 色天使久久综合| 5月激情天| 五月花激情| 丁香五月在线播放| www.久久久久久久| 五月丁香啪啪| 精品国婬伦V无码久久久| 外国碰视频网站97| 九九热在线精品视频| 五月婷婷色| 亚洲综合色色| 亚洲第一综合| 超碰在线50| 66精品国产成人| 婷婷五月天激情小说| 五月丁香六月片| 婷婷五月大| 婷婷国产成人| 久久久国产精品黄毛片| 97碰久久| 人人爽天天爽| 亚洲无码黄色| 五月丁香久久激情网| 天天日,天天插| 最近中文字幕2019视频1| 亚洲精品无码久久| 国产成人综合在线| 亚洲天堂啪啪| 在线中文字幕视频| 丁香伊人网| 激情久久综合网| 五月丁香婷婷中文网| 亚洲欧美成人在线| 国产99美少妇| 午夜丁香婷婷| www狠狠com| 日韩人妻无码一区二区| 99热这里都是精品| 五月激情另类| 琪琪色五月婷婷老师| 亚洲一个色| 婷婷久久综合| 五月婷婷影院| 成人视频网| 99热超碰在线| 激情五月天婷婷| hd五月婷婷在线| 色婷婷基地| 婷婷九月| 色婷婷小说| 婷婷五月 丁香六月| 天天色天天日| 婷婷热婷婷色| www。五月,com| 天天舔日日肏夜夜爽| 91蝌蚪窝视频在线| 五月天狠狠网| 日本3级片偷拍网站| 亚洲午夜电影| 欧美成性色| 婷婷操逼| 五月涩涩网| 亚洲AV成人在线观看| 欧美精品熟女一区二区| www,com,五月色色| 五月天婷婷丁香| 亚洲激情五月婷婷日日| 五月婷婷 自拍| 色欲久久久久久综合网综合网| www.久久99热地址发布| 在线观看婷婷5月| 婷婷丁香综合在线| 六月丁香久久| 五月丁香色婷婷综合| 4399精品一区二区| 五月天久久婷婷| 热久久66| 五月婷婷99热| 2018夜夜草| 久久a热| 变态另类9| 内射人妻视频国内| www.婷婷五月天| 丁香五月婷婷黑人妻黄色电影院| 极品人妻XXXXOOOO| www.日本91| 夜夜躁狠狠| 婷婷色五月91啪啪| 色色五月天婷婷| 婷婷在线五月天观看| 91色五月在线观看| 色五月婷婷亚洲| 色五月婷婷激情五月| 亚洲蜜乳AV| 久久HD| 五月开心婷婷| 色五月婷婷激情基地| 激情五月综合网| 久久久久久久久久久久久久人妻视频| 91精品久| 欧美电影在线播放| 久操热线| 亚洲这里只有精品| www.久久66| 久久9精品视频| 爱爱网址9| 99热免费精品| 激情综合五月婷婷六月丁香| 人妻熟妇六区| 久久综合这里只有精品1| 99热人人艹| 久久只有18视频| 国产欧洲欧洲精品久久| 综合五月天天天天天五月| 思思99久久| 超碰九热| 国产高清av黄色看片| 久久99久久99精品免视看婷婷| 99久久免费精品| 五月亭亭六月色| 9l视频自拍9l视频自拍九色学生| 亚洲激情六月| 婷婷大香焦| 久99久精品| 天天色激情| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 日 日干 日日做| 91大神操美女| 六月丁香停| 婷婷婷久久| 七七婷婷综合| 另类小说色婷婷| 狼人狠狠操| 天天久| 26UUU精品一区二区c〇m| 天天色播| 色 免费网站视频| 久久婷五月综合| 精品九九网| 精品久9| 99国产精品久久久久久久久久久 | 99久久久国产大片| 五月天婷婷日日爱| 婷婷天天舔| 99热免费精品热久久66| 五月丁香久久网| 丁香香五月激情免费视频| 亚洲综合色婷婷| 91久久综合| 成人午夜免费电影| 婷婷六月激情| 婷婷五月深情丁香深爱日韩| 五月婷婷六月丁香免费| 天堂A∨在线| 色狠狠999综合| 91精产品自偷自偷综合| 亚洲第一成人无码A片| 亚洲不卡| 激情 五月 婷婷 丁香| 六月丁香婷婷五月天| 99精品超在线播放| 99色在线视频| 五月婷婷在线短视频| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 97五月久久丁香婷婷| 99re视频在线| 影音先锋一区二区三区| 99热国产这里只有| 2025年最新亚洲在线欧美| WWW久久久| 91婷色| 99九九99九九九视频精彩| 中文字幕av在线播放| 婷婷五月天激情电影| 碰碰女| 无码地址| 开心五月天激情网站| 亚洲五月天另类小说图片| 久综合色| 欧美精品在线观看| 97亚洲婷婷| 人妻狠狠操| 日本九九热| 婷婷久久综合| 综合色图区| 在线综合亚洲欧美65| 久婷首页| 涩涩五| 日日杆天天| 91久久久久久久| 国产69久久久欧美黑人A片| 色婷婷狠狠色| 日韩在线观看亚洲| 97夫妻超碰| www,超碰| 五月天婷婷色播| 五月丁香色六月激情干大屄| 开心五月激情网| 六月婷婷色色网| 日本成人综合| 亚洲 五月 婷婷 成人| 天天爱天天秀天天做| 五月丁香啪啪网| 婷婷色五月天色| 性色播| 26uuu精品一区二区| 丁香五月婷婷网| 九九热精品| 中文字幕五月久久婷婷| 色九月激情综合网| 九九综合久久| 婷婷激情五月视频| 最新亚洲色色网| 超碰91在线| 成人免费超碰| 加勒比色色| 成人五月丁香社区| 2015WWW永久免费观看播放| 久久这里在精品视频| 久久久27操| 婷婷中文字幕网站| 另类五月婷婷| 五月婷婷影院| 久操97| 婷婷五月天免费| 天天插天天爱| 97碰免费视频在线| 丁香久久久| 婷婷成人综合| 91日视频| 色五月综合在线| 日本不卡高字幕在线2019| 91操操| 91黄址| 超碰色女| 婷婷五月天福利| 香蕉视频性爱BB做爱| 日日干综合| 婷婷伊人网| 丁香婷婷性爱| 亚洲五月婷| 91好好热日本在线| 五月婷婷成人| 91久久综合| 丁香五月天狠狠| 亚洲国产另类av| 就爱操www com| 激情综合网五月婷婷| www99久久| 日日爽夜夜爽| 久操干| 无码橾| 婷婷五月色影视先锋| AV性爱网| 99热在线观看精品| 91丨九色丨东北熟女| 色婷网| 亚洲最大视频| 八戒青柠影视剧在线观看| 丁香月五月天婷婷久久| www.丁香五月| 26uuu成人网| 99色精品| 色婷婷丁香五月天| 国产片天天爽夜夜爽| www.狠狠| www。88热在线视频免费观看| 久久久久人妻精品| 五月激情婷婷六月丁香| 97超级啪啪在线观看| 久久思思精品| 在线视频99| 天天摸天天肏| 99这里只有精品国产| 图片区 小说区 区 亚洲五月| 婷婷在线午夜| 日韩AV一区二区三区| 天堂网啪啪| 五月婷婷欧美| 性色做爰片在线观看WW| 婷婷丁香色无五月| 狠狠色狠狠| AVDV久久| 999热在线视频| 99a级片| 性色五月天| 亚洲爱爱无码婷婷色五月| 色婷婷色综合久久精品V| 亚美欧色影院| 日韩婷婷| 中文不卡av| 色欲午夜无码久久久久久张津瑜| 九九黄色网| 久久无码成人| 激情五月综合网最新| 免費亭亭成人| 免费人人操| 色情五月婷婷| 婷婷五月天视频亚洲| 久久性爱视频| 9|在线观看视频| 国产成人网站在线观看| 五月天中文网| 国产韩日亚洲美州欧亚综合在线| 91在线精品一区二区| 中文字幕AV在线播放| 色五月天网| 久婷婷五月天影院| 国产肥白大熟妇BBBB视频| 五月天综合| 婷婷五月丁香综合激情小说| 亚洲乱码w在线观看| 国产精品久久久久久妇女6080| 99在线精品免费视频| 天天操夜夜爽天天操| 狠狠色中色| 超碰九色| 婷婷无码视频| 老司机日日夜夜青草| 欧美日韩成人免费在线| 大香蕉丁香五月| 激情六月婷婷| 色玖玖综合网| 五月丁香中文字幕| 六月婷婷七月丁香| 天天射影| 丁香九九九九| 久久的爱大香蕉| 亚洲字幕AV一区二区三区四区| 干一干xxxx| 色丁香久久久| 激情黄色五月天| 婷综合六月| 久久久国产精品黄毛片| 人妻久久久久久久 | 开心五月激情五月丁香五月婷婷| 一起草无码视频| 91人人澡人人爽人人看| 久久九九经典| 热99色| AA片在线观看视频在线播放| 超碰碰碰碰| 亚洲六月色| 91精品在线看| 婷婷六月啪啪| 综合激情在线| 久久综合中文字幕| 五月婷婷深深爱| 色婷婷五月天在线观看| 99.色| 五月色欧洲| 丁香综合伊人| 欧美美女国产日韩一区二区久| 亚洲AV成人在线| 丁香五月婷婷色情综合| 国产综合色婷婷精品久久| 91精品国产日韩91久久久久久国模| 另类图片五月天激情| 欧美在线ee日韩| 超碰天堂网| 99热这里是精品| 97色色婷婷| 亚洲亚洲人成综合网络| 黄桃AV无码免费一区二区三区| 婷婷综合视频| 婷婷综合仓库中文| 超级碰碰99| 久人人操| 国产精品视频| 俺来也综合网精品一区| 思思视频这里是精品| 国产精品噜噜在线视频| 丁香五月亚洲婷婷| 色99网站| 一区二区乱码视频| 色综合天天| 亚洲国产精品VA在线看黑人| 亚洲欧美综合7777色亭亭| 久久精99| 婷婷五月综合久久中文字幕| 婷婷开心深爱五月天| 日本的α片xxxwww| 999热在线视频| 九九成人| 狼人久草| 强奸幻女毛片| 人人操91| 五月天激情国产综合AV| 亚洲狠狠狠色婷婷综合激情久久久| 亚洲 无码 中文字幕 中出| 性生活视频98791| 日本天堂免费99| 久久婷婷五月| 色吧网综合| 国产成人在线精品| 亚洲AAA| 色五月AV| 亚洲亚洲人成综合网络| yazhochengrenavwang| 99ri精品| 99惹| 99热这里只有精品中文字幕| 婷婷五月激情图片| 婷婷丁香综合在线| 六月色婷婷色| 欧美美美女性色视频| 婷婷五月天av| 婷婷五月另类网站| 丁香婷婷久久| 色99在线视频| 婷婷九月| 色婷婷88| 成人超碰Av| 婷婷六月丁香五月| 国产毛片精品一区二区色欲黄A片| 1024你懂的欧美曰韩| 淫荡家庭AV| 丁婷婷五月天在线播放| 99热在线观看| 丁香九月综合| 亚洲最大五月天成人网| 夜夜操天天干| 色狠狠综合入口| 99 这里只有精品| 五月天婷婷丁香| 国外亚洲成AV人片在线观看| 亚洲啪视频| 色婷婷综合视频| 日本欧美成人片AAAA| 琪琪色热色色| 五月丁六月香| 99ree6| 日韩色色色色色| 九九热精品视频| 淫五月停停| 嫩草视频观看| 天天色综网| 久久97久久99久久综合欧美| 色婷婷五月天av在线| 婷婷色片| 在线99精品| 热99只有里视频| 国产精品第一国产精品| 99精品视频在线观看免费| 六月丁香激情| 99久视频| 婷婷综合在线| 亚洲啪啪视频| 丁香五月综合激情啪啪| 五月丁香婷婷免费视频| 色黄啪啪| 99热免费精品| 色婷婷人人| 色婷婷色人人射| 亚洲字幕AV一区二区三区四区| 亚洲激情亚洲激情| 99热免费精品| 九九国产视频| 婷婷综合五月| 狠狠色综合网| 狠狠干综合| 超碰精品在线| 开心激情网五月天| 91精品91久久久中77777| 殴美激情综合网| www.com任你艹| 婷婷激情小说| 久久久久99精品成人网站| 99热都是精品| 99男人的天堂| 99热e| 特黄三级片| 婷婷五月天精品| av中文在线| 99热日本| 免费试看小视频 99| αv中文字幕在线观| site:ornaments52.com| 好叼操在线观看| 婷婷五月丁香六月天亚洲综合| 亚洲精品第一国产综合亚AV| 这里只有久久精99| 五月天激情啪啪| 91超碰九色| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 色婷婷成人丁香| 中文字幕在线免费看线人| 免费观看的AV| 婷婷丁香黄色| 九色PORNY自拍成人精彩视频| 嫩草视频在线观看| 久久久久9999| 操熟女成人网| 天堂综合久久| 激情伊人五月天| 国产色婷婷亚洲| 超碰人人摸AV| 超碰色综合| 六月婷婷之青青草| 色综久久久| 亚洲精品在线视频| 5月色婷婷| 超碰69天堂| 99re视频在线播放| 婷婷五月天Av| 伊人久热91| 五月丁香777| 五月天欧美激情| 99九九热播在线免费视频| 伊人玖玖婷婷| 五月www| 91九色成人原创视频| 99热亚洲精品| 五月婷婷九| 色99日韩| 一本婷婷丁香久久| 日本狠狠干| 中文久久久人妻| 91婷婷五月丁香碰| 久久综合九九| 五月天婷婷久久视频| 欧美色狠婷久| 丁香五月www| 日本一级黄色电影| 国产精品A片| 中文字幕在线日亚洲9| 亚洲av| 亚洲天堂99| 99热视精品| 九九热超碰| 中文在线视频久9| 婷婷综合久久| www久热com| 六月婷婷六月天天在线免费| 在线99色| 丁香五月激情图片婷婷| 久久婷婷视频| 色噜噜狠噜噜视频| 五月婷六月丁| 五月天婷婷五月| 综合噜噜| 思恩热国产视频右线观看| 婷婷94s| 九九综合| 久久五月天婷婷| 高清无码入口| 99爱无码| 桃色激情婷婷伊人网| 超碰免费人妻| 久久九九激情五月天| 99操逼| 成人精品人妻| 五月天色区| 婷婷射婷婷舔| 五月丁香| 五月天婷婷网站888| 婷婷丁香黄色| 91男人资源站| 色无婷婷| 99久久综合| 91.com男女操| 五月婷婷五月天| 九九视频这里只有精品| 一级A片天天操夜夜操| 婷婷五月丁香综合激情小说| 五月丁香婷婷色| 五月丁香无码| 91成人看| 九热视频免费观看| 91制片厂久久久国产电影| 三人荫蒂添的好舒服A片| 色婷婷久久| 欧洲色| 色婷婷综合视频| 五月天色不卡| 99热在线观看免费精品| 99re思思热久久| 丁香六月婷婷综合| 色综合婷婷| 九九五月天| 99碰碰| 丁香婷婷性久久| 人人九色| 九九久久精品| 狠狠穞A片一區二區三區| 亚洲第一第二网站| www.夜夜操.com| www夜夜操| 人人综合久| 五月婷婷影院| 亚洲精品99| 亚洲精品久久久久AV无码| 亚洲精品国产setv| 日本三级日本三级99| 91碰碰视频在线观看| 一区二区无码视频| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 欧美精品XXXXBBBB| 日韩人妻白浆视频系列| 五月停停99| 色色五月激情| 婷婷久热| 丁香五月日韩| 天天激情综合| 伊人干练久| 可似看的AV| 九月婷婷激情| 五月丁香六月婷| 婷婷伊人五月天| 一区二区三区四区牛| 婷婷五月天黄色网址| 色婷婷五月综合| 久色中文| 亚洲熟妇无码乱子AV电影| 操操操Av| 综合色播| 久久五月丁香综合| 色婷婷五月天成人网| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 欧美五月婷婷| 人人插9| 噜噜噜噜噜在线| 色亚洲无码| 激情黄色小说五月天| 亚洲另类视频| www99热| 婷综合六月| 色色五月天com| 最新日本A片| 骚货艹网站视频| 在线看片av| 五月婷婷香蕉| 婷婷人妻激情| 精品无码色| 996er热| 午夜少妇在线观看视频| AVV黄| 激情综合4月| 日日干日日| 男女啪啪做爰高潮无遮挡| 加勒比久热| 五月婷婷与六月丁香图片激情| 啄木鸟黑丝一区二区| 99久久精品国产色欲| 色婷婷基地 | 五月丁香婷婷激情影院欧美| 婷婷六月网| 色色色婷婷五月| 五月久久丁香| 九玖视频这里只有精品| 99无码视频| 亚洲天堂热| 97伊人综合婷婷| 狠狠操天天日| 亚洲综合九九| 变态另类色图 | 日本视频久久| 色五月婷婷中文字幕在线观看| 久久色五月天激情小说| 激情五月天婷婷| 久操热线| 2025天天日爽| 99国产精品久久久久久久久久久| 五月婷婷中文字幕| 俺去也五月天婷婷| 久热在线中文字幕色999舞| 99ri精品| 久久婷婷丁香| 2021日韩无码| 婷婷五月天男人影院色色网| 亚洲欧美婷婷五月色综合| 99九九这里有免费视频| 九九成人高清视频| 超碰国产在线| 色吧五月婷婷| 天天操天天草天天草天天| av国产精品| 婷婷丁香人妻天久久| www.婷婷.com| 大胆伊人久久| 激情五月,激情综合网| 国外亚洲成AV人片在线观看| 五月婷婷六月丁| 九九热在线观看视频| 国产在线黄色| 99久久久久久www| www.com色播五月天| 九九亚洲视频| 婷婷综合国产| 成人性爱无码| 国产乱轮一区二区三区| 国产精品久久久60086| 乱精品一区字幕二区| 夜夜骑操AV| 亚洲旡码| 九九热这里只有精品5| 婷婷午夜| 丁香婷婷激情综合五月激情| 五月婷婷五月天| 99热在线观看99| 丁五月激情视频免费| 97干在线看| 热99精品视频| 亚洲天堂婷婷| 丁香婷婷婷五月| 人人操操97| 中文av网| 思思99久久| 色九月婷婷综合| 2015WWW永久免费观看播放| 99热这里只有精品3| 69人妻人人澡人人爽久久| 99热免费| av在线观看免费| 五月叮香啪| 婷婷色色播五月天| 五月婷婷丁香91| 婷婷丁香五月高清| 99热日| 大香网伊人久久综合| 色五月xxx| 一本色道久久88加勒比| 99er久久| 一级韩国产精品毛| 久久久久亚洲AV无码网影音先锋| 中文字幕永久免费| 婷婷久久综合| 五月婷婷激情四月| 久久精品噜噜噜成人A∨色欲| 97色啪| 欧美va精品va老师va| 久久精品无码一区| 丁香五月六月| 色色五月天激情| 国产高潮A片羞羞视频涩涩| 成年人99热| 伊人大香蕉在线视频| 啪啪啪大香蕉| 激情都市五月天| 伊人狠狠色婷婷综合丁香一区| 丁香五月综合| 欧美综合激情丁香五月六月婷| 五月天激情综合在线| 大香蕉太香蕉视频97| 色婷婷激情| 丁香五月天激情视频| 99性色| 丁香五月婷婷99| 免费AV播放| 久久这里只有精品热在99| 久久久思思热| 九月激情综合婷婷| 日韩一区二区A片免费观看| 日日夜夜干| 亚州激情在线视频| 久热爱大香蕉在线蜜臀悦色 | 激情综合网五月婷婷| 另类的婷婷| Aα在线免费观看| 九九aV| 久久婷婷五月| 欧美激情xxxXX| 婷婷伊人75| 欧美情色一区| 五月婷婷丁香婷婷| 九九精品片一| 中文字幕激情综合| 亚洲AV影片在线观看| 国产成人av在线播放| 亚洲色vA| 丁香六月狠狠| …亚洲黄色在线播放日韩、av中文a…| 久久性爱视频| 秋霞AV淫| 99视频这里有精品免费观看| 狠狠做六月爱婷婷综合aⅴ| 色婷婷情片| 久久se 综合网| 99热免| 丁香五月六月激情| 综合亚洲六月婷婷在线| 色色色色区| 九九香蕉网| 大香蕉啪啪| 深爱五月激情| 色宗合久久五月婷婷| 久久丁香五月天| 久草a片| 婷婷六月丁综合| 亚洲国产精品VA在线看黑人| 99热亚洲精品| 天天 青草 丝袜制服 在线| 五月久久五月激情| 五月激情久久| 97色 五月天丁香| 亚洲乱码日产精品BD| 中文久久婷婷| 五月丁香天堂网| 丁香五月婷婷天激情| 欧美va在线| 亚洲狠狠狠| 婷婷色网站| 夜夜骑天天玩天天日| www.ppypp| 丁香六月色婷婷| 婷婷综合精品视频97| 丁香五月在线| 综合网啪| 91成人品| 五月天色五月| 欧美在线| 玖玖福利视频资源| 99热这里精| 岛国av电影网站| 久久五月天色| 亚洲第一综合| 精品婷婷| 国产精品色色| 无码激情AAAAA片-区区| 国产在线激情视频| 日本色超碰| 伊人五月天97| 久激情网| 五月天亚洲最大成人| 亚洲激情五月丁香久久久久| 九九亚洲视频| 五月丁香六月婷婷久久肏| 婷婷五月色情天| 激情五月激情综合网| 成人AV在线中文版| 久热久re| 啊V视频在线观看| 丁香五月图片| 国产色五月| 超碰在线9| 91丨九色丨43老版熟女| 婷婷五月欧美综合| 综合色色综合| 综合狠狠伊人| 特级片神马电影| 182TV大香蕉| 欧美激情综合| 五月综合激情图片| 色啪影院| 婷婷开心综合人妻小说网址| 色99网站| 51国精产品自偷自偷综合| 亚洲网综合在线| 先锋资源婷婷| 亚州欧美国产久精国产99综合视频| 另类婷婷丁香| 色原狠狠综合| 4399在线日本A片| 国产裸舞福利资源在线视频| 久久婷婷在线| 久草大| 五月综合激情婷婷六月色窝| 九九99偷拍视频| 午夜丁香| 久久欧洲综合网| 婷香五月| 99久久超级| 色色色99| 99久久大片| 五月天激情小说网| 39视频第二区| 色欲Av五月天| 无码色| 中文字幕中文有码在线| 淫视馆AV在线| www.99热. com这里只有精品| AAA久久久| 超碰2021| 综合综合色色| 天天操夜夜操| 玖玖色综合色| 快乐激情五月色婷婷 | 久久久人妻系列| 久久久精品人妻| 久久码久久无清| 日批在线看| 久久只有18视频| 大香蕉人人网| 婷婷五月天激情综合深爱| 在线99热| 久久99久久久| 久久人妻高清中文| 婷婷性爱| 9久久久久| 婷婷伊人网| 九九成人电影婷婷| 婷婷性爱| 91人操| 色婷婷综合电影| 五月天夜夜爱夜夜操| 97色色色| 久99热| 亚州操操| www.激情com| 五月好婷婷| 97亚洲视频在线| 另类五月婷婷| 在线播放中文字幕| 日本久久超碰| 26uuu| Www.se.久久| 人人舔天天| 亚洲亚洲人成综合网络| 国产日批视频免费播放| 狼人久草| 色五月天堂| 97婷婷狠狠| 丁香婷婷91在线观看视频| 五月天亭亭俺也| Caoporn公开| 99热这里只有精品18| 婷婷色五月大香蕉在线| 婷婷5月开心6月| 五月丁香久久| 色爱综合视频| 九九av| 五月婷婷久久开心网| 丁香六月天| 激情五月天在线| 无码人妻精品一区二区蜜桃色欲| 色欲婷婷夜夜| 婷婷色婷婷| 婷婷国产日本欧美| 五月天激情国产综合婷婷婷| 五月婷婷中字在线| 99久在线精品99re8| 久久综合这里只有精品1| 婷婷金品综合视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 91人妻人人操| 色婷婷社区| 97自拍99| 五月丁香成人| 九九色综合|