亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

CR95HF DLL兼容性問題排查:從加載失敗到穩(wěn)定部署實(shí)踐

CR95HF DLL兼容性問題排查:從加載失敗到穩(wěn)定部署實(shí)踐 1. 問題背景與典型現(xiàn)象1.1 先說說CR95HF是什么CR95HF是意法半導(dǎo)體ST推出的一款多協(xié)議非接觸式收發(fā)器芯片支持ISO/IEC 14443 A/B、ISO/IEC 15693以及ISO/IEC 18092等主流NFC/RFID協(xié)議。在很多NFC讀寫器方案里它扮演的是“射頻前端協(xié)議?!钡慕巧鳈C(jī)通過SPI或UART給它發(fā)命令幀它負(fù)責(zé)把命令調(diào)制成射頻信號(hào)再把卡片返回的數(shù)據(jù)解調(diào)回傳給主機(jī)。我之前做過一個(gè)基于CR95HF的門禁讀卡器項(xiàng)目PC端上位機(jī)需要通過USB轉(zhuǎn)SPI比如FT232H這類橋接芯片和CR95HF通信。ST官方提供了一個(gè)PC端的DLL封裝庫(kù)用來(lái)屏蔽底層SPI通信細(xì)節(jié)應(yīng)用層只需要調(diào)用幾個(gè)API就可以實(shí)現(xiàn)尋卡、防碰撞、讀寫塊等操作。聽起來(lái)很省事對(duì)吧但實(shí)際調(diào)試起來(lái)DLL兼容性問題能把人折磨到懷疑人生。1.2 “DLL compatibility issue”到底長(zhǎng)什么樣結(jié)合標(biāo)題里的關(guān)鍵詞和網(wǎng)上大量同類問題反饋CR95HF DLL兼容性問題在實(shí)操中通常表現(xiàn)為這幾種形態(tài)第一DLL加載失敗。程序一啟動(dòng)就彈窗“無(wú)法定位程序輸入點(diǎn)”或者“動(dòng)態(tài)鏈接庫(kù)(DLL)初始化例程失敗”對(duì)應(yīng)Windows錯(cuò)誤碼1114ERROR_DLL_INIT_FAILED。這個(gè)問題在調(diào)用CR95HF.DLL時(shí)特別常見因?yàn)楣俜紻LL內(nèi)部依賴了某些運(yùn)行時(shí)組件一旦初始化階段出錯(cuò)整個(gè)DLL就廢了。第二DLL能加載但函數(shù)調(diào)用就崩潰。寫一個(gè)最簡(jiǎn)單的OpenPort測(cè)試程序編譯通過運(yùn)行也不報(bào)缺DLL但一調(diào)API就閃退或者返回值永遠(yuǎn)是錯(cuò)誤碼。這種情況往往是調(diào)用約定calling convention不匹配或者參數(shù)類型聲明錯(cuò)了。第三32位/64位架構(gòu)不匹配。這是最隱蔽的一類。CR95HF官方DLL有x86和x64兩個(gè)版本如果你在64位系統(tǒng)上裝了64位DLL但應(yīng)用程序是32位的系統(tǒng)根本不會(huì)去加載64位DLL這時(shí)候會(huì)報(bào)“模塊找不到”或者“不是有效的Win32應(yīng)用程序”。第四DLL依賴鏈斷裂。CR95HF.DLL本身不是孤立的它內(nèi)部還依賴了FTDI的驅(qū)動(dòng)庫(kù)如果走FT232H方案、微軟的VC運(yùn)行庫(kù)、甚至C運(yùn)行時(shí)msvcr100.dll / msvcp100.dll系列。任何一個(gè)依賴項(xiàng)缺失或者版本不對(duì)都會(huì)導(dǎo)致加載失敗。我自己踩過的坑是在Win10 64位專業(yè)版上用Visual Studio 2019編譯了32位Release版測(cè)試程序DLL文件也放在exe同目錄了但一運(yùn)行就報(bào)“系統(tǒng)無(wú)法執(zhí)行指定的程序”。折騰了一下午最后發(fā)現(xiàn)是CR95HF.DLL依賴的FTD2XX.dll版本太老而系統(tǒng)里新裝的FTDI驅(qū)動(dòng)是64位版本32位程序根本找不到對(duì)應(yīng)的32位FTD2XX.dll于是整個(gè)加載鏈路就斷了。如果你還沒遇到這些問題只是提前搜索那么恭喜你看完這篇文章能省下大量排錯(cuò)時(shí)間。2. 為什么CR95HF的DLL會(huì)這么容易出兼容性問題2.1 官方DLL的設(shè)計(jì)架構(gòu)與依賴鏈先了解CR95HF官方DLL的內(nèi)部結(jié)構(gòu)這是定位問題的前提。ST提供的DLL名字通常叫“CR95HF-DLL”版本隨芯片固件一起發(fā)布核心功能是封裝SPI通信時(shí)序和命令幀構(gòu)造。它的內(nèi)部依賴鏈大致是應(yīng)用層 → CR95HF.dll → FTD2XX.dllFTDI USB轉(zhuǎn)SPI驅(qū)動(dòng)庫(kù)→ 操作系統(tǒng)USB驅(qū)動(dòng)棧 → 硬件。這條鏈路上任何一環(huán)出問題最終表現(xiàn)出來(lái)都是CR95HF.DLL相關(guān)的兼容性錯(cuò)誤。我用Dependencies工具一個(gè)開源替代Dependency Walker的工具打開CR95HF.dll看到的依賴項(xiàng)里明確列出了FTD2XX.dll、KERNEL32.dll、USER32.dll、msvcrt.dll這幾個(gè)。其中FTD2XX.dll是最大的變數(shù)因?yàn)樗荈TDI公司發(fā)布的動(dòng)態(tài)庫(kù)版本非常多而且FTDI官方安裝包還會(huì)自動(dòng)更新它。如果你電腦上先裝了FTDI最新驅(qū)動(dòng)再裝ST官方開發(fā)包ST包里的舊版FTD2XX.dll可能會(huì)被覆蓋也可能反過來(lái)覆蓋了新版導(dǎo)致版本錯(cuò)亂。另外CR95HF.DLL初始化失敗WinError 1114的核心機(jī)制是Windows加載DLL時(shí)會(huì)先執(zhí)行DLL的入口函數(shù)DllMain。在DllMain里它會(huì)嘗試加載依賴的庫(kù)如果任何一個(gè)依賴庫(kù)初始化失敗或者版本不兼容導(dǎo)致某個(gè)導(dǎo)出函數(shù)解析失敗DllMain就返回FALSEWindows隨即拋出ERROR_DLL_INIT_FAILED。這就是為什么很多人明明把DLL放在exe同目錄了還報(bào)1114錯(cuò)誤的根本原因——不是缺文件而是依賴項(xiàng)初始化掛掉了。2.2 32位與64位架構(gòu)錯(cuò)配的坑Windows下32位程序和64位程序是兩套獨(dú)立的運(yùn)行環(huán)境系統(tǒng)目錄、注冊(cè)表、DLL加載路徑完全隔離。CR95HF官方DLL在安裝包里有區(qū)分x86和x64版本在“C:\Program Files (x86)\STMicroelectronics\CR95HF”這類路徑下通常能看到兩個(gè)子目錄。但很多新手容易犯的錯(cuò)誤是用64位的Python解釋器跑ctypes卻加載了32位的CR95HF.DLL報(bào)錯(cuò)信息可能不是“不是有效的Win32應(yīng)用程序”而是更迷惑的“找不到指定的模塊”錯(cuò)誤碼126。這里有個(gè)Windows加載規(guī)則需要記住進(jìn)程是32位時(shí)加載DLL會(huì)去“C:\Windows\SysWOW64”找系統(tǒng)庫(kù)進(jìn)程是64位時(shí)才去“C:\Windows\System32”。但LoadLibrary搜索路徑的優(yōu)先級(jí)是先看應(yīng)用程序目錄再看系統(tǒng)目錄。如果你的應(yīng)用程序目錄里同時(shí)存在32位和64位DLL文件同名不同架構(gòu)Windows不會(huì)幫你“自動(dòng)選擇匹配的版本”它只會(huì)按搜索順序找到第一個(gè)就直接加載。架構(gòu)不匹配時(shí)加載會(huì)失敗但它不會(huì)繼續(xù)去搜另一個(gè)版本。所以一個(gè)很實(shí)用的建議是建立獨(dú)立的DLL存放目錄讓每個(gè)項(xiàng)目只放對(duì)應(yīng)架構(gòu)的DLL文件不要圖省事把所有版本都堆在一起。我在實(shí)際開發(fā)中會(huì)把x86和x64分成兩個(gè)子目錄用環(huán)境變量或者構(gòu)建腳本來(lái)切換這樣既清晰又不容易踩坑。2.3 調(diào)用約定與函數(shù)導(dǎo)出名的隱性問題CR95HF.DLL的API函數(shù)采用了標(biāo)準(zhǔn)C風(fēng)格的導(dǎo)出方式函數(shù)名沒有做裝飾name decoration。這意味著在C#里用DllImport導(dǎo)入時(shí)EntryPoint必須精確匹配DLL里的導(dǎo)出名在C里用隱式鏈接時(shí)需要一個(gè)合適的.lib文件如果用LoadLibrary GetProcAddress動(dòng)態(tài)加載還得注意函數(shù)的調(diào)用約定是__cdecl還是__stdcall。ST官方在CR95HF_DLL用戶手冊(cè)里給出的函數(shù)原型是int CR95HF_OpenPort(char* pPortName); int CR95HF_ClosePort(void); int CR95HF_Reset(void); int CR95HF_Transmit(unsigned char* pucData, unsigned char ucDataLength, unsigned char bWaitForReply, unsigned char* pucReply, unsigned char* pucReplyLength);默認(rèn)調(diào)用約定是__cdeclC調(diào)用約定。但如果你在C#里用DllImport默認(rèn)的CallingConvention是Winapi實(shí)際落到__stdcall這就造成了“函數(shù)調(diào)用參數(shù)棧不平衡”的問題輕則返回垃圾值重則在Debug下觸發(fā)運(yùn)行時(shí)檢查失敗。我在網(wǎng)上搜到過不少帖子問“為什么C#調(diào)用CR95HF_OpenPort返回0但打開串口失敗”多半就是這個(gè)原因?qū)е碌?。解決方法是顯式指定CallingConvention[DllImport(CR95HF.dll, CallingConvention CallingConvention.Cdecl)] public static extern int CR95HF_OpenPort(string pPortName);還有一種情況是DLL文件版本更新后某些API函數(shù)被重命名了比如舊版本是CR95HF_Open新版本改成CR95HF_OpenPort如果你的程序編譯時(shí)用的是舊版.lib運(yùn)行時(shí)卻加載了新版DLL就會(huì)報(bào)“無(wú)法定位程序輸入點(diǎn)”。這種問題在ST官方更新DLL后非常常見排查時(shí)需要確認(rèn)DLL版本和頭文件版本是否一致。3. 系統(tǒng)化排查流程與實(shí)操步驟3.1 第一步確認(rèn)你的軟硬件環(huán)境基線排錯(cuò)最忌諱上來(lái)就亂試。先列出你的環(huán)境基線我每次做NFC讀寫器上位機(jī)調(diào)試時(shí)都會(huì)先確認(rèn)下面這張表項(xiàng)目檢查內(nèi)容推薦配置操作系統(tǒng)32位還是64位Win10/11 64位應(yīng)用架構(gòu)編譯出來(lái)的程序是x86還是x64與操作系統(tǒng)一致或明確選x86CR95HF DLL版本官方安裝包里的版本號(hào)建議用最新版并記錄MD5依賴庫(kù)版本FTD2XX.dll版本與FTDI驅(qū)動(dòng)匹配上位機(jī)語(yǔ)言C/C/C#/Python任選但加載方式不同接口方式SPI還是UART與DLL內(nèi)的傳輸層匹配這里有一個(gè)容易被忽略的點(diǎn)CR95HF-DLL內(nèi)置的傳輸層是固定的。第一代官方DLL只支持通過FTDI芯片走SPI第二代開始加入了UART支持通過FTDI的UART模式或者直接接串口芯片。如果你手里的DLL版本是只支持SPI的而你硬件上是UART連接那DLL也能加載成功但OpenPort會(huì)一直返回錯(cuò)誤。這個(gè)不是“兼容性問題”而是“功能不匹配”排查時(shí)要區(qū)分開。3.2 第二步用命令行工具快速驗(yàn)證DLL本身是否健康很多人一遇到DLL報(bào)錯(cuò)就去找各種“修復(fù)工具”這其實(shí)是很大的誤區(qū)。DLL修復(fù)工具大多是整理系統(tǒng)級(jí)DLL的對(duì)于CR95HF這種特定廠商的DLL它們幾乎幫不上忙。正確做法是用命令行工具直接檢查DLL的依賴和導(dǎo)出表。Windows自帶的where命令可以確認(rèn)DLL到底被搜到了哪個(gè)路徑where /R C:\ CR95HF.dll也可以用小工具DependenciesGitHub開源支持現(xiàn)代Windows拖入CR95HF.dll就能看到它的依賴項(xiàng)、導(dǎo)出函數(shù)、以及每個(gè)依賴是否被解析到。比如它會(huì)把FTD2XX.dll標(biāo)記為紅色說明在搜索路徑里找不到這個(gè)依賴這就直接定位了問題。還可以用Visual Studio自帶的dumpbin工具看導(dǎo)出符號(hào)dumpbin /exports CR95HF.dll輸出里會(huì)列出所有導(dǎo)出的函數(shù)名和序號(hào)。如果里面看不到CR95HF_OpenPort這種函數(shù)說明這個(gè)DLL文件本身不對(duì)可能是被精簡(jiǎn)過的、或者是芯片原廠內(nèi)部用的版本不是完整的發(fā)布版。3.3 第三步用最小測(cè)試程序復(fù)現(xiàn)問題我強(qiáng)烈建議在寫正式業(yè)務(wù)代碼前先弄一個(gè)“最小可復(fù)現(xiàn)工程”把所有變量降到最低。以C為例用動(dòng)態(tài)加載的方式寫一個(gè)5分鐘就能跑通的測(cè)試#include windows.h #include cstdio typedef int (*CR95HF_OpenPortFn)(char*); int main() { HMODULE hDll LoadLibraryA(CR95HF.dll); if (!hDll) { DWORD err GetLastError(); printf(LoadLibrary failed, error %lu\n, err); return -1; } CR95HF_OpenPortFn openPort (CR95HF_OpenPortFn)GetProcAddress(hDll, CR95HF_OpenPort); if (!openPort) { DWORD err GetLastError(); printf(GetProcAddress failed, error %lu\n, err); FreeLibrary(hDll); return -2; } char portName[32] COM4; int ret openPort(portName); printf(CR95HF_OpenPort returned %d\n, ret); FreeLibrary(hDll); return 0; }這個(gè)測(cè)試能精確區(qū)分問題發(fā)生在“加載階段”還是“調(diào)用階段”。如果LoadLibrary就返回NULL那就是DLL加載失敗繼續(xù)按依賴項(xiàng)排查如果LoadLibrary成功但GetProcAddress失敗說明DLL里沒有導(dǎo)出這個(gè)函數(shù)檢查DLL版本如果都成功了但openPort返回值異常那就是調(diào)用約定或參數(shù)類型的問題。我把這套測(cè)試方法寫進(jìn)團(tuán)隊(duì)內(nèi)部知識(shí)庫(kù)后后面每個(gè)新成員接手CR95HF項(xiàng)目都能在10分鐘內(nèi)定位到自己的問題出在哪一層而不是反復(fù)百度“dll初始化例程失敗”。3.4 第四步處理WinError 1114的幾個(gè)固定思路如果你的LoadLibrary直接報(bào)錯(cuò)1114ERROR_DLL_INIT_FAILED通??梢园聪旅鎺讞l路徑依次排查用Dependencies工具檢查依賴項(xiàng)是否全部解析成功。重點(diǎn)關(guān)注FTD2XX.dll、MSVCRT.dll、KERNEL32.dll。如果FTD2XX.dll顯示缺失那就是FTDI驅(qū)動(dòng)庫(kù)的問題。解決辦法是安裝FTDI官方最新的CDM驅(qū)動(dòng)包并確保安裝路徑通常是“C:\Windows\System32”或“C:\Windows\SysWOW64”按架構(gòu)對(duì)應(yīng)里有正確的FTD2XX.dll。檢查VC運(yùn)行庫(kù)是否齊全。CR95HF.DLL如果是用較舊的Visual Studio版本編譯的可能依賴VC2010、VC2013等運(yùn)行庫(kù)。裝一個(gè)“Microsoft Visual C Redistributable最新支持版合集”可以覆蓋絕大多數(shù)情況。這個(gè)在微軟官網(wǎng)就能下建議把2015到2022的x86和x64版本都裝一遍成本低收益高。查看Windows事件日志。WinR輸入eventvwr.msc在“Windows日志 → 應(yīng)用程序”里找Error級(jí)別的條目來(lái)源是“Application Error”或“Windows Error Reporting”。事件詳情里會(huì)寫清楚是哪個(gè)模塊導(dǎo)致DLL初始化失敗有時(shí)候能直接看到“CR95HF.dll”在初始化時(shí)加載“某缺失文件名”失敗。把所有DLL和exe放到同一目錄。這聽起來(lái)很基礎(chǔ)但真的有很多人忽略。Windows加載DLL的搜索順序第一個(gè)就是應(yīng)用程序目錄如果沒開啟SafeDllSearchMode把CR95HF.dll和FTD2XX.dll和exe放一起是最穩(wěn)妥的不要依賴系統(tǒng)PATH。3.5 第五步Python環(huán)境下特殊的坑因?yàn)闊嵩~里出現(xiàn)了大量Python調(diào)用DLL報(bào)1114錯(cuò)誤的記錄這里單獨(dú)說一下。Python中使用ctypes加載CR95HF.DLL常見的錯(cuò)誤是import ctypes dll ctypes.CDLL(rC:\path\to\CR95HF.dll) # 報(bào)錯(cuò)OSError: [WinError 1114] 動(dòng)態(tài)鏈接庫(kù)(DLL)初始化例程失敗這個(gè)錯(cuò)誤在Python里出現(xiàn)本質(zhì)上和C里L(fēng)oadLibrary失敗是同一回事——DLL初始化階段掛了。但Python還有一個(gè)特殊之處Python解釋器本身的位數(shù)決定了加載DLL的位數(shù)。如果你用的是64位Python加載32位DLL會(huì)報(bào)“不是有效的Win32應(yīng)用程序”如果你用的是32位Python加載64位DLL也會(huì)報(bào)同樣的錯(cuò)。CR95HF官方DLL如果只提供了32位版本那你就必須用32位Python。判斷Python位數(shù)很簡(jiǎn)單python -c import platform; print(platform.architecture())輸出是(64bit, WindowsPE)就是64位是(32bit, WindowsPE)就是32位。另外ctypes加載DLL時(shí)如果DLL的初始化例程里依賴了某個(gè)不需要的組件比如某些DLL在DllMain里嘗試創(chuàng)建設(shè)備句柄設(shè)備沒連接就會(huì)初始化失敗這時(shí)候就算所有依賴項(xiàng)都齊全DLL也會(huì)加載失敗。CR95HF官方DLL在計(jì)算機(jī)休眠后重新喚醒時(shí)偶爾會(huì)出現(xiàn)這個(gè)問題因?yàn)榈讓覨TDI句柄已經(jīng)失效DllMain里做了清理操作反而報(bào)錯(cuò)。這時(shí)候最簡(jiǎn)單的處理方式是重啟程序或者徹底拔出USB設(shè)備重新插入。4. 從“能用”到“用得穩(wěn)”長(zhǎng)期方案與經(jīng)驗(yàn)總結(jié)4.1 不要用“DLL修復(fù)工具”解決廠商DLL問題網(wǎng)絡(luò)熱詞里大量出現(xiàn)“dll修復(fù)工具”“免費(fèi)dll修復(fù)”“電腦自帶dll修復(fù)在哪里”這類詞我必須提醒一句這些工具對(duì)CR95HF這種特定廠商DLL的兼容性問題基本沒有幫助。系統(tǒng)級(jí)DLL修復(fù)工具比如DISM、SFC能修復(fù)的是Windows自帶的系統(tǒng)DLL比如kernel32.dll、user32.dll這種。CR95HF.dll是第三方廠商發(fā)布的應(yīng)用級(jí)DLL修復(fù)工具不可能知道它應(yīng)該依賴哪個(gè)版本的FTD2XX.dll更不可能幫你修復(fù)“調(diào)用約定不匹配”這種邏輯層面的問題。我見過不少同行在遇到CR95HF報(bào)錯(cuò)時(shí)第一反應(yīng)是下載各種“DLL修復(fù)工具”結(jié)果折騰一整天也沒解決最后用Dependencies一看就是FTD2XX.dll版本不對(duì)。正確姿勢(shì)永遠(yuǎn)是先查依賴鏈再查架構(gòu)匹配最后查代碼層調(diào)用。4.2 自建一套輕量級(jí)DLL封裝層為了讓業(yè)務(wù)代碼不直接依賴CR95HF.DLL的脆弱加載邏輯我后來(lái)做了一個(gè)很輕量的封裝層。核心思路是程序啟動(dòng)時(shí)不立即加載CR95HF.DLL而是延遲到真正需要打開讀卡器時(shí)才加載同時(shí)把每次調(diào)用都包在try/catch里加載失敗時(shí)給出明確的錯(cuò)誤提示缺哪個(gè)依賴、建議怎么解決。這個(gè)封裝層在C#里實(shí)現(xiàn)很直觀public class Cr95hfDllLoader { private IntPtr _dllHandle; public bool TryLoad(string dllPath) { _dllHandle NativeMethods.LoadLibrary(dllPath); if (_dllHandle IntPtr.Zero) { int errorCode Marshal.GetLastWin32Error(); string message errorCode switch { 126 模塊未找到請(qǐng)檢查CR95HF.dll及其依賴項(xiàng)是否完整, 127 函數(shù)入口點(diǎn)未找到請(qǐng)檢查DLL版本是否與程序匹配, 1114 DLL初始化例程失敗請(qǐng)檢查VC運(yùn)行庫(kù)和FTDI驅(qū)動(dòng), _ $DLL加載失敗錯(cuò)誤碼{errorCode} }; throw new InvalidOperationException(message); } // 用GetProcAddress解析所有函數(shù)指針 return true; } }這樣用戶看到的不是“應(yīng)用程序錯(cuò)誤”的彈窗而是能直接定位問題的中文提示。對(duì)產(chǎn)線部署和維護(hù)來(lái)說這個(gè)體驗(yàn)提升是巨大的。4.3 關(guān)于版本凍結(jié)與更新策略CR95HF的DLL屬于嵌入式上位機(jī)工具鏈的一部分我個(gè)人的建議是不追求最新只追求固定。一旦你驗(yàn)證某個(gè)版本的CR95HF.DLL配合特定版本的FTD2XX.dll能穩(wěn)定工作就把這兩個(gè)文件連同版本號(hào)、MD5值一起提交到項(xiàng)目倉(cāng)庫(kù)里并寫好部署文檔。不要隨意升級(jí)FTDI驅(qū)動(dòng)庫(kù)因?yàn)镕TDI的新驅(qū)動(dòng)往往是為他們自己的新芯片設(shè)計(jì)的對(duì)老芯片的兼容性不一定更好。我遇到過最典型的案例是FTDI發(fā)布了新的驅(qū)動(dòng)版本客戶電腦自動(dòng)更新后原本穩(wěn)定的CR95HF讀卡器程序直接打不開一查就是新的FTD2XX.dll改了內(nèi)部接口導(dǎo)致CR95HF.DLL初始化失敗。最后我們給客戶的解決方案很“原始”——把舊版FTD2XX.dll回滾回去問題立刻消失。這個(gè)案例說明嵌入式工具鏈的穩(wěn)定性往往不取決于“用最新的”而在于“鎖死經(jīng)過驗(yàn)證的版本組合”。這和Web開發(fā)里鎖package.json版本是同一個(gè)邏輯。4.4 排查工具清單與問題速查表這里總結(jié)一張CR95HF DLL兼容性問題的速查表我實(shí)際排查時(shí)都是對(duì)著這個(gè)表逐項(xiàng)過的錯(cuò)誤碼/現(xiàn)象可能原因解決動(dòng)作126 找不到指定模塊依賴項(xiàng)缺失通常是FTD2XX.dll安裝FTDI驅(qū)動(dòng)包確認(rèn)依賴項(xiàng)127 找不到指定程序入口點(diǎn)DLL版本與編譯時(shí)的.lib版本不一致替換為編譯時(shí)對(duì)應(yīng)的DLL版本1114 DLL初始化例程失敗依賴項(xiàng)初始化失敗或設(shè)備狀態(tài)異常檢查VC運(yùn)行庫(kù)重啟設(shè)備193 不是有效的Win32應(yīng)用程序架構(gòu)不匹配檢查exe與DLL的32/64位一致性LoadLibrary成功但函數(shù)調(diào)用返回異常值調(diào)用約定不匹配確認(rèn)__cdecl/__stdcall并顯式指定OpenPort返回錯(cuò)誤碼但DLL加載正常硬件連接方式與DLL內(nèi)置傳輸層不一致確認(rèn)使用的DLL版本支持SPI還是UART排查工具方面我常用的就是這幾個(gè)Dependencies開源檢查DLL依賴樹替代老舊的Dependency Walkerdumpbin /exportsVS自帶看導(dǎo)出函數(shù)Process ExplorerSysinternals出品運(yùn)行時(shí)查看進(jìn)程加載了哪些DLL模塊gflags / htrace如果需要深度調(diào)試DLL加載行為可以用Windows的加載器追蹤功能4.5 和其他廠商N(yùn)FC芯片DLL的對(duì)比如果橫向?qū)Ρ萅XP的NFC讀卡器方案比如RC522、PN532會(huì)發(fā)現(xiàn)ST的CR95HF DLL兼容性問題不算極端但確實(shí)比同類產(chǎn)品多一些“陷阱”。RC522大多是SPI直連MCUPC端很少用官方DLLPN532有HSU/I2C/SPI多種接口官方庫(kù)通常做成跨平臺(tái)的lib庫(kù)相對(duì)清爽。CR95HF的問題在于它的PC端生態(tài)相對(duì)小眾ST更新維護(hù)的頻率也一般導(dǎo)致很多細(xì)節(jié)只能靠社區(qū)沉淀。這就意味著如果你選擇CR95HF做產(chǎn)品方案最好在項(xiàng)目早期就把DLL兼容性測(cè)試納入到研發(fā)流程里。不要等到產(chǎn)品交付了才發(fā)現(xiàn)客戶現(xiàn)場(chǎng)有一半電腦跑不起來(lái)。我在幫客戶做方案選型時(shí)會(huì)建議他們做一張“目標(biāo)電腦環(huán)境兼容性測(cè)試矩陣”覆蓋Win10 32位、Win10 64位、Win11、有無(wú)FTDI驅(qū)動(dòng)等組合趁早發(fā)現(xiàn)風(fēng)險(xiǎn)。5. 幾個(gè)容易忽視的實(shí)操細(xì)節(jié)5.1 串口和SPI的混用問題CR95HF-DLL內(nèi)部實(shí)現(xiàn)了一個(gè)“端口抽象層”有的版本同時(shí)支持“COM口方式”和“SPI方式”靠OpenPort傳入的字符串來(lái)區(qū)分。如果你傳的是“COM4”DLL會(huì)按串口解析如果傳的是“SPI0”DLL會(huì)按FTDI SPI方式解析。但不同版本的DLL對(duì)這個(gè)字符串的格式要求并不完全一致。有些版本要求傳入“\\.\COM4”這種帶設(shè)備命名空間的格式有些版本只要“COM4”就行。這個(gè)細(xì)節(jié)寫進(jìn)代碼里很容易被忽略但一旦DLL升級(jí)就可能導(dǎo)致“為什么換了DLL后OpenPort一直失敗”的經(jīng)典問題。我的習(xí)慣是在封裝層里做一次端口字符串標(biāo)準(zhǔn)化統(tǒng)一轉(zhuǎn)成“\\.\COMx”格式避免底層DLL版本差異影響上層調(diào)用。5.2 CRT堆不一致導(dǎo)致的內(nèi)存崩潰老版本CR95HF.DLL是用VC6或VC2008編譯的跑在Win10/11上如果你的應(yīng)用程序用的是新版Visual Studio比如VS2019/2022兩邊可能各自鏈接了不同版本的C運(yùn)行時(shí)庫(kù)。DLL內(nèi)部分配了內(nèi)存然后在EXE里釋放或者反過來(lái)會(huì)觸發(fā)“堆損壞”或隨機(jī)崩潰。雖然CR95HF的API設(shè)計(jì)上沒有要求調(diào)用者負(fù)責(zé)釋放DLL內(nèi)部?jī)?nèi)存的情況但在某些版本的例程代碼里確實(shí)存在調(diào)用方自己malloc一個(gè)緩沖區(qū)傳給DLL的情況DLL內(nèi)部不負(fù)責(zé)釋放但會(huì)越界寫。這種問題在Debug下可能一切正常在Release下就隨機(jī)崩。排查思路是在所有API調(diào)用的前后檢查內(nèi)存使用量是否異?;蛘哂肁pplication Verifier工具做一次全面的堆檢查。如果確認(rèn)是DLL版本太老導(dǎo)致的只能升級(jí)DLL版本或者換用更新的芯片方案。5.3 多線程環(huán)境下的串行化CR95HF-DLL在內(nèi)部沒有做線程安全保護(hù)官方文檔里也說明了這一點(diǎn)。如果你的上位機(jī)用了多線程比如一個(gè)線程輪詢尋卡另一個(gè)線程處理UI事件兩個(gè)線程同時(shí)調(diào)用CR95HF API輕則返回錯(cuò)誤重則導(dǎo)致DLL內(nèi)部狀態(tài)機(jī)錯(cuò)亂后續(xù)所有命令都失敗。解決方式是在應(yīng)用層加一個(gè)互斥鎖把DLL的所有調(diào)用串行化private readonly object _cr95hfLock new object(); public int SafeOpenPort(string portName) { lock (_cr95hfLock) { return NativeMethods.CR95HF_OpenPort(portName); } }這個(gè)細(xì)節(jié)在短時(shí)間測(cè)試時(shí)體現(xiàn)不出來(lái)但跑連續(xù)尋卡7x24小時(shí)的老化測(cè)試時(shí)線程安全問題一定會(huì)暴露。我們項(xiàng)目里第一次做耐久測(cè)試跑了6小時(shí)候出現(xiàn)卡死加鎖之后連續(xù)跑48小時(shí)都沒問題。5.4 靜電與熱插拔對(duì)DLL句柄的影響最后說一個(gè)硬件層面影響DLL的問題。CR95HF通過FTDI芯片連接USB熱插拔時(shí)Windows會(huì)卸載設(shè)備導(dǎo)致FTDI句柄失效。此時(shí)CR95HF.DLL內(nèi)部的設(shè)備句柄沒有自動(dòng)重連機(jī)制你再調(diào)API返回的就是“設(shè)備不存在”之類的錯(cuò)誤。如果程序沒有做句柄失效檢測(cè)用戶看到的可能就是“DLL初始化失敗”的提示。解決建議是在OpenPort之后周期性地調(diào)用一個(gè)輕量級(jí)API比如CR95HF_GetFirmwareVersion來(lái)探測(cè)設(shè)備是否在線如果連續(xù)幾次失敗就主動(dòng)調(diào)用CR95HF_ClosePort并提示用戶重新插拔設(shè)備。這個(gè)探測(cè)機(jī)制我放在了一個(gè)后臺(tái)定時(shí)器里效果很好。6. 寫在最后的個(gè)人經(jīng)驗(yàn)CR95HF的DLL兼容性問題說到底不是一個(gè)“修一下就好”的bug而是一整套環(huán)境治理問題。它牽涉到Windows DLL加載機(jī)制、32/64位架構(gòu)隔離、第三方驅(qū)動(dòng)依賴、編譯工具鏈差異等多層因素。遇到問題時(shí)不要迷信什么“一鍵修復(fù)工具”老老實(shí)實(shí)按“依賴檢查 → 架構(gòu)核對(duì) → 最小復(fù)現(xiàn) → 代碼審查”的套路來(lái)基本都能定位到根因。我個(gè)人踩過最大的坑就是沒有盡早驗(yàn)證“目標(biāo)環(huán)境的FTDI驅(qū)動(dòng)版本”導(dǎo)致交付前一天才發(fā)現(xiàn)客戶機(jī)器上的新版驅(qū)動(dòng)和CR95HF.DLL不兼容。后來(lái)我把“DLL版本鎖死 依賴項(xiàng)自動(dòng)化檢查”寫進(jìn)了交付checklist之后再?zèng)]因?yàn)檫@個(gè)問題翻過車。最后再分享一個(gè)小技巧在項(xiàng)目倉(cāng)庫(kù)里放一個(gè)environment_check.bat腳本自動(dòng)檢查exe位數(shù)、DLL位數(shù)、FTD2XX.dll是否存在、系統(tǒng)VC運(yùn)行庫(kù)是否安裝。讓任何拿到代碼的同事或客戶先跑一遍這個(gè)腳本再?zèng)Q定要不要找你看問題。這一招真的能幫你省下大量重復(fù)溝通的時(shí)間也適合在其他依賴原生DLL的項(xiàng)目里復(fù)用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大但人体久久久久| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚 | 丁香六月激情| 青青色综合| 综合网 欧美| 999岛国大片| 福利天天都操| 激情五月天网| 91夜色| 丁香五月性| 加勒比东京热五月天天堂网| 在线观看一级α片刺激高潮视频| 欧美激情片一区二区| 乱伦一区二区三区‘| 国产乱码久久久久久| 强奸乱伦亚洲第一页| 好舒服视频| 小情侣高清国产在线视频| 欧美日韩一干二干| 欧美精品99久久久**| 久久综合女优| 亚洲色图欧美色图日韩色图| 亚洲Av噜噜一区二区三区妖精| 伊人热综合| 男人的天堂在线有码| 超碰97伊人| 夜夜草网站| 91人精品妻入口| 亚洲AV色图一区| 91美女视屏| 郑州宾馆老熟女露脸啪啪| 人妻熟妇一区二区三区| 欧美淫穴| 日本欧美中文字幕| 爱爱久久| 水野优香在线观看| 欧美强奸一区二区诱惑| 精品蜜乳AV免费观看| 日韩欧美三级| 国产丝袜一区二区三区| 日韩传媒在线| 伊人亚洲国产一成人久久精品,久久| 国产真乱mangent| 激情四射婷婷六月天| 东京热亚洲一区二区| 亚洲影院成人| 亚洲中文丝袜美腿诱惑字幕| 亚洲国成人情色好看电影| 精品国产一级久久| 夜夜天天噜狠狠爱2021| 日韩精品熟妇| 精品国产嫩穴视频| 91老熟女逼| 欧美日韩操逼嗦吊| 日本在线视频导航| 91久久精品蜜臀| 2020视频1区2区3区| 久久久久久久亚洲Av无码| 欧美精品日韩久久久九| 日本熟妇人妻中出视频| 国产久久久久久久久一区二区| 欧美极度丰满熟妇hd| 丰满高潮18xxxx| 亚洲图片色图欧美另类| 国产毛片精品一区二区色欲黄A片| 国产精品久久久亚洲一区| 91麻豆天美国产欧美日| 97大色网| 丰满人妻一区二区三区| 色欲人妻一区二区在线| 色777999综合| 啊啊啊爽爽| 蜜乳成人AV| 97人人操人人摸| 99爱爱| 国产精品三级视频网站| 亚洲 图片 欧美 色图| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 一级特黄aaa大片在线观看成人一级片在线观看 | 久久综合九九| 亚洲视频一二区| 在线五区| 欧美亚洲国产91在线| 手机午夜电影神马久久| 中文字幕一区日韩精| 色穴精品| 欧美成人精品一区二区男人蜜臀| 日本成熟少妇A∨网站| 人摸人人操人| 亚州中文字幕超碰97| 久久香蕉国产线看观看亚洲女人 | 超碰亚洲欧美日韩无| 欧美少妇一区二区三区| 超碰社区97| 嫩草在线视频| 91在线美女| 91老熟女91老女人| 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美一区二区三区不卡高清视频| 污啪啪啪视频| 91欧美少妇| 高潮毛片无遮挡高清免费| 天天摸,夜夜摸| 78m啪啪啪| 国产亚洲日本精品在线| 91/欧美| 亚洲影视综合| 亚洲欧美一区二区三区在钱蜜桃| 超碰色图| 色香阁在线| 青青草在线成人视频| 婷婷10月天青娱乐| 做爱福利视频一区二区| 欧美色爱综合| 探花熟女,姿勢到位,體驗感也到位| 中文啪啪视频| 久热影视| 亚洲玖玖爱| 午夜大香蕉| w w w.久久精品| 97色涩| 亚欧成人中文字幕一区| 国产97色在线 | 亚洲| 五月天激情综合网| 精品国产一区二区三区在线播出| 中文字幕日韩情色| 97香焦色区| 日韩中文字幕国产| 这里是精品| 超碰视97中文| 97福利视频| 国产强奸乱伦无码视频| Julia Annxxxxx| 久久人妻视频网| 日韩无码操逼片| 人人妻人人色一区二区三区| 射丝袜高跟鞋99| 国模不卡| 伊人热综合| 熟女露脸激情自拍视频| 91熟女熟妇视频网站| 制度丝袜99| 清纯唯美综合| 激情人妻另类| 日韩一999精品| 伊人网综合在线视频| 成人青青草原伊人| 亚州日韩97| 久久精品人体AV| 亚洲精品无码成人久久久99| 啪啪自拍九九综合| 久久99草| 91精品丝袜久久久久久无码人妻| 密桃99999| 一二三四视频中文字幕在线看| 国产夫妻性生活视频| 看黑丝美女操逼青青网站| 国产精品久久成人免费| 国产亚洲精品A在线观看下载| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 郑州宾馆老熟女露脸啪啪| 九九九九国产| 久久久草草精品| 久久日本熟妇熟色高清| 中文字幕 一区二区 亚洲无码| 69精品久久久久中文字幕| 国产强奸乱伦无码视频| 在线二区不卡| 欧美综合在线91| 蜜臀久久一区二区| 曰本人妻人人澡人人夹| 91免费看一区二区三区| 好爽视频在线观看| www.人人摸在线视频| 国产农村妇女精品一| 久久久婷婷| 日本熟妇人妻中出视频| 欧美人人操人人插| 欧美 亚洲精品首页| 婷婷精品国产一区二区三区日韩| 亚洲一区二区三区久久 亚洲一区二区| 日韩色欲久久一二三四区| 欧美AB在线| 又黄又硬又粗又长国产视频| 亚洲综合射| 精品国产国产AV| 内射日韩大臀美女| 碰碰在线视频| 欧美系列在线一区二区| 牛黄色久午久| 激情视屏国产乱伦强奸| 26UUU欧美激情一区二区| 最新日本中文字幕| 五月丁香黄色网| 围产精品一区二区三区视频播放| 国产成年免费大片黄在线观看| 新97国产超碰| 伦在线97| 色亚州人久干视频在线观看免费版| 亚洲中文字幕乱码无码一区二区| 玖玖97综合 | 日韩AV熟女乱伦| av天堂天堂av日韩| 国产熟女完整版中字 | 国产毛片毛片4p懂色| 午夜一区| 97天堂| 超碰综合97在线| 福利大香蕉| 欧美激色| 亚洲春色欧美| 天天cao在线| 97超碰超| 国产毛片毛片4p懂色| 精品久久久一本一道| 日韩精品影视| 97久久久网站| 神马麻豆福利院 | 伊人网免费视频| 日韩综合无码一区久久92| 天天做天天爱| 日本影视久久免费| 人人性爱视频免费| 女欧美一区二三区| 伊人91| 久久香蕉国产线看观看亚洲女人 | 91美女在线观看| 欧美激情亚洲| 亚洲无码视频免费在线观看网址!| 精品少妇999| 91精品无码久久久久久久 | 青青草久草AV| 中文字幕第二页| 91女色| dy888午夜老子影视达达兔| 97色碰| www熟女乱伦com| 一级日本牲交大片好爽在线看| 粉嫩av平台| 国产在线观看一区二区三区 | 俺去啦俺来也久久综合| 最新三级网址| 五月婷婷久久综合| 免费看美国人人爽,人人操| 久日91在线| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 亚洲色图日韩丝袜制服一区二区五月在线| 九九九九精品精| 91爱啪| 在线观看中文字幕| 伊人激情五月天一区二区| 亚洲成?V人片在线观看福利| 色久综合| 欧美日韩人人早| 天天爱综合网| 91亚洲网| 欧美日韩一区二区三区四区蜜桃| 99热成人| 青青国产在线拍揄自揄拍| 欧美日本不卡| 日韩性爱一级片| 欧美操逼熟女| 91久久婷婷| 99www.bibizy香蕉资源国产一区二区三区高清 | 久久久精品一区二区| 91美女在线| 成人无码在线视频网站| 五月丁香影院| 蜜臀色乳| 亚洲91在线| 久久一级无码精品毛片6| 六月丁丁香| 精品人妻1237| 97中文字幕一区| 好吊色综合| 中国国产精品一区视频| 婷婷久久综合| 91人妻久久久久久久久久久久久| 嗯嗯啊啊好爽| 亚洲三区视频| 日韩激情视频| 好吊色综合| 3P乱轮视频| 伊人大香蕉在线| 自拍第一页| 国产黄色视频久久| 男人的天堂啪啪| www. 男人天堂成人在线| 97干97色| 精品久久99| 香蕉色网| 人人操人人操人人人操| 亚洲中文字幕有码视频一区二区三区| 夜夜嗨一区| 欧美亚洲色图另类国产| 夜夜狼人妻| 久9无限国产| 囯产乱伦一区二区三女| 国产亚洲色婷婷99精品91| 777超碰| 粉嫩在线一区二区懂色| 免费网站观看www在线观| 亚洲色图欧美| 人妻丝袜无 码视频专区| 九九人妻| 九月丁香综合网| 丝袜熟女2P| 久久久久久久综合,国产| 伊人网青青| 97人人干| 97国产精品在线观看| 岛国大片国产| 日本九九久久99播| 国产激情视频一区区三区| 极品综合| caopeng97人妻| 97色碰| 色九九九九久| 97aiaiai| 91在线视频免费中出| 欧美 亚洲 在线| 啊视频在线| 成人九九| 色欲天天综合网| 蜜臀在线看片| 手机在线看片免费人成视频| 熟妇激情| 国产亚州精品美女久久久免费| 亚洲色悠悠久久88| 国产精品久久久久久久久久梁医生| 啊啊啊com| 大香蕉伊人网| 91最新综合| 操啊国产| 亚洲成人精品久久久| 国产视频人人网| 18一区二区三区| 激情综合网亚洲| 青青操97| 五月婷婷丁香六月丁香| 日韩欧美水蜜桃人妻| 性暴力欧美猛交在线直播| 亚州操操穴网| 2018天天日天天日| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 欧美三级中文字幕hd| 天天色踪合| 国产女人高潮嗷嗷嗷叫小说| Julia Annxxxxx| 日韩探花精品在线视频| 丰满丝袜少妇AV| 留下AⅤ黄色片| 97伦综合| 天天综合精品| 日本一二区不卡| 91网站18在线观看| 成人av福利在线观看| 天天色怡春院| 丰满人妻一区二区三区大胸懂色| 久久久涩| 欧美色偷拍 | 超碰精品日韩欧美国产| 国产精品天美传媒| 免费1级a做爰片观看| 亚洲色欲一区二区三区| 亚洲蜜桃V妇女| 清纯唯美亚洲另类| 丰满少妇人妻久久久久久| 亚洲啪AⅤ永久无码| 狠操91,com| 日本精品高清一二区一本到| 97爱亚洲| 丁香婷婷激情五月天无毒不卡| 国产伦精品| 国产性刺激| 亚洲二区精品在线观看| 怡红院成人视频| 天美AV片| 亚洲成人日韩小说| 91欧美www| 久久久久密| 把腿张开老子CAO烂你| 97在线视频免费看| 人妻人人澡人人爽人人| 第一高清av中文字幕| 天美精品原创av片国产| 久9久9久9久9久9久9| 天天欧美欧美亚洲网| 一本精品日本在线视频精品 | 野狼激情网| 国产日韩精品suv| 国产不卡的视频| 国色天香av| 国产一级操B视频| 91五十路| 啊啊啊久久久视频| 9/A片| 激情视频一二三| 亚洲日本加勒比在线| 亚洲国产欧美一区二区潘金莲| 人妻人久久精品中文字幕| 欧美 亚洲 制服 精品| 天天躁日日躁xxxxx| 黑人在线91| 婷婷香网站| 懂色综合久久久| 午夜亚洲WWW湿好大| yazhououmeizongya| 99999精品成人| 国产 v乱码一区二| 老熟女搡BBBB搡BBBB视频| 大香蕉草草| 欧美在线55555| 五月综合激情网| 午夜福利精品| 91制服丝袜中文字幕| 亚拍在线| 射欧美综合| 亚洲最大无码中文字幕网站| 亚洲精品免费中文字幕| 日韩猛交| 新91视频.cmp| 色综合99999| 欧色综合| 天天肏美女| 欧美在线视频99| 日本日皮视频逼| 久久精品日韩| 被男人吃奶很爽的毛片| 国产精品 视频| 99热精品在线观看| 久久精品高清无码一区| 色情亚洲日本成人| 色女99一级片在线观看| 国产精品一区二区三区在线密挑| 99色天堂| 伊欧美综合视频| 久久九色| 欧美 亚洲 在线| 2020天天色综合| 91 综合 色| 抽插爽| 青青青国产| 日本一级一级一级一级| 翔田千里av一区二区三区| 国产精品成人福利在线| 在线欧美69V免费观看视频| 欧美人人操人人插| 欧美成人A√在线一区二区| 操逼操2| 色97欧美| 91大香蕉伊人| 麻豆色99999| 丝袜加勒比| 婷婷久草| av线电影| 日韩无码服务区| 大干人妻| 九t超碰| 久久丝袜| 射久久| 亚洲天堂欧美| 伊人四虎综合| 久久熟女嫩草成人片免费 | 骚乳在线| 久久久久久波多野吉衣高潮| 无码久| 激情综合网一盗摄| 熟女熟妇一区二区三区视频| 91AV天堂| 少妇激情AV| 亚洲 中文 欧美 日韩 在线| 婷婷8月天青娱乐| 97亚洲在线| 亚洲av资源| 91n处女在线观看| 神马麻豆福利院| 男人的天堂三级| 国产sv美女内射| 中文字幕在线第二页| 精品国产乱码久久久久久免费| 欧洲精品久久| 肥臀熟女一区二区三区视频| 九九九九精品| 自怕偷自怕亚洲精品| 精品一区二区三区丰满熟女-亚洲欧美一区| 综合色久欲| 久久女人| 天天躁日日躁成人字幕aⅴ| 国产亚洲美日韩Aⅴ中文字幕无码成人| 日本高清_区二区三区| 强免费黄色网址| 国产少妇肉丝在线观看| 国产精品久久9| 欧美A√综合网 | 精品一区二区三区蜜桃臀赵总 | 久久精品国产99精品亚洲蜜...| 美国一区二区三区视频| 色婷婷六月丁香七月婷婷| 欧美黄片免费在线观看视频| 欧美操逼录像国产黄色国产| 午夜舔阴达高潮视频免费看| 青青草九九九九九| 色噜噜人妻av中文字幕| 日本性爱不卡视频| 欧美偷偷网| 国产日韩无码一区二区三区久久区| 日韩pv中文| a人片中文字幕一区二区| 欧美淫乱视频| 青青草中文-久久青草精品一区二区三| 欧美大干日韩| 91爱看| 日韩AV噜噜噜一区二区三区四区| 精品午夜福利| 中文一区二区婷婷视频| 久久产精品一区二区三区电影| 天天综合日韩网| 97欧美视频| 白嫩嫩一区| 熟女人妻精品一区二区视频| 久久久久久久亚洲Av无码| 色姑娘综合网| 黄色视频60分钟| 五月天大香蕉| 新精精品久久精品| 一起草高清无码| 太久视频| 麻豆久久视频在线地址| 色色青青久久| 精品高潮| 丁香五月激情综合国产| 欧美日本天堂| 欧美性爱一区二区| 日韩AC| 国产少妇与亚洲av| 2020中文字幕在线| 浓厚中出中文字幕在线| 婷婷在线播放| 天天综合网入口~91| 日本女人久久久| 日韩国产乱子伦App| 国产青一二三| 日本二三四区| 26uuu国产免费观看| 大香蕉在线视频重口味毛片在线| 欧美黑人熟妇精品91| 亚洲黄色电影| 秋霞曰韩R级| 加勒比海成人视频网| 精品视频一区二区| 男人天堂一区二区| 国产乱子伦一区二区三区免看| 色欲久久久久综合网| 蜜臀少妇一区二区| 日本幼女18+| 亚洲色图日韩精品| 久久久久久性爱片| 97亚洲在线| 人妻中文在线| 97网站在线观看 | 熟女网站最新| 两女互慰AV高潮喷水在线观看| 嗯嗯啊啊视频在线看| 91白虎| 人人看人人摸人人色| 97精品久久久久中文字幕| 中字幕人妻一区二区三区| 久久9亚洲| 绯色一区二区三区不卡少妇| 免费黄色A片| 天天日美女的B| 国产三级在线现体验区| 日韩欧美视频青青| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 日韩AV噜噜噜一区二区三区四区 | 日韩草久视频| 综合欧美亚洲| 欧美日韩高潮喷水91| 精品人妻一区二区三区视频在线| 99久久久er直播网址| 亚洲男人的天堂网| 色在线亚洲视频www| 欧美亚洲高清不卡| 视频在线观看免费一区二区三区| AV中文在线可看| 日天天九九天堂666| 久久‘黄片视频| 男人天堂久久精品不卡| 性在久久久久久| 日本高清加勒比| 日本肏逼视频在线观看| 偷拍导航视频网站| 亚洲天堂男人在线| 白丝av| 91爽啪| 黄色免费网| 99re69| 干干干天天| 综合色久欲| 伊人激情| 黄色大片视频在线免费看| 欧美综合骚| 在线播放成人高清免费视频| 又摸又舔在线观看网站| 一本大道不卡一二三区| 四季av一区二区凹凸精品小说| 九九色精品| 91另类| 欧美视频第二页| 免费精品人妻一区二区三| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 少妇熟女视频一二三区| 久久伊人大香蕉| 另类图片综合| 亚洲AV无码久久久国产精品| 日韩91网站| 色五月激情综合网| 91综合在线| 妇人噜噜| 丁香六月啪啪| 超碰免费人妻人人| 蜜桃精品一区二区三区久在线| 色婷婷电影| 一级性爱视频免费在线| 激情综合网一盗摄| AA丁香综合激情| 极品国产内射| 日本黄页视频在线观看| 999久久久精品国产| 你懂的在线观看区国产| 玖玖爱伊人玖玖爱| 99这里有精品| 思思热在线cao| 精品国产乱码久久久| 男女激情中文字幕| 日韩 欧美 视频 在线 一区| 伊色久人大在线| 五月天久久婷婷亚洲 | 嗯啊不要啊在线 | 野狼激情网| 97人妻免费中文字幕| www.男人天堂| 操九九九九九九| 欧美性爱免费短视频| 久久伊人东京热| 天天舔天天 | 国产精品久久久三级无码| 久久久久久久强迫| 超碰97综合网| 禁止观看美女黄| 国模少妇一区二区三区| 大香蕉99热| 久久久精品国产亚洲AV无码| 超碰在线人妻中文字幕| 中韩中文字幕在线观看| 成人天天看站长推荐| 丁香激情五月天| 日韩色| 国产精品一区二区a| 9久久久久久| 99re这里| 欧美激情欧美精品| 五月丁香影视| 无色无码| 国产免费一区2区3区| 欧美真人抽搐一进一出gif | 国产久久成人| 欧美色图第一页| 欧美性色综合网| 亚洲人成网站7777| 裸模AV女优| 射综合网| 超碰人妻中文在线| 樱花蜜乳av| 裸体1区| 啪啪啪精品视频| 欧美变态激情网| 爽爽淫人网| 欧美一区二区观看在线| 欧美区亚洲区偷拍区| 久久久人妻| 99热日| 亚洲第一色页夜| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 亚洲啪啪性视频| 午夜福利精品| 亚洲国产精品有声| 日韩熟女乱伦中出| 嗯嗯啊啊啊好爽| 欧美色吧综合| 一区超碰一区| 久久久久久久六六 | 欧州一区二区三区四区| 亚洲毛片基地专区| 91亚洲网站| 欧亚三区动漫| 大香蕉啪啪啪啪在线| 久久黄黄| 97超碰色五月| 欧美 亚洲 制服 精品| 狠狠操狠狠插| 精品久久久久久亚洲| 91精品无码人妻系列| 九九探花视频在线观看| 亚洲精品白浆高清久久久久久 | 蜜桃丰满熟妇av无码区不卡| 爱爱60秒免费视频| 操操啪| 福利社区午夜一区二区| 极品出轨视频网站| 青青色综合| 伦伦成年午夜免费视频| 国产精品剧情| 麻豆天美制片厂网站视频| 色婷婷狠狠| 无码少妇精品一区二区60岁老人| 久久精品国产亚洲妲己影视| 偷拍精品一区二区三区| 午夜丁香婷婷| 亚洲精品男人的天堂| 亚洲综合在线视频| 亚洲人人操| 色欧美天天| 九九无码久久精品视频| 99热| 欧美激情总合网| 99国产精品在线观看| 又摸又舔在线观看网站| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 99热伊人| 日韩三四五区| 亚州色图狠狠干| 色呦呦、国产精品| 老熟妇综合| 欧美日韩不卡a片| 第四色奇米影视777| 亚洲一级性爱视频免费看| 搞中出久久| 一级特黄aaa大片在线观看成人一级片在线观看| 蜜臀无码视频在线观看| 99re热有精品视频国产| ji熟女.com| 中国探花熟女| 东京热激情视频一二三区| 熟妇亚洲一区二区三区| 久啪| 天天操天天看| 98久久超碰| 亚洲一区操| 午夜寂寞欧美| 国产欧美一区激情交| 理论久久婷婷网 8| 亚洲精品天天影视综合网 | 91jk色拍| 破处bbq| 久九色| 99青草| 亚洲第一二区另类图| 嗯阿好爽好紧| 免费AV中文网在线观看| www.91理论| 日本丝袜人妻内射| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 澳门黄片一香蕉视频| 91美女视频直播| 天天情欲宗合网| 天天92av| 97碰碰日本乱偷人妻中文的| 蜜臀AV秘一区翔田千里| 美女视频尤物网在线看| 91美女视频直播| 97人人色| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 天天色怡春院| 无马一区二区| 天天色天天干天天爱| 亚洲国产高清福利视频| 国产精品自产拍在线观看社区| 综合日本女人伊人| 欧洲性人爱视频| 99久久国产精品免费高潮| 国语av最新自产拍在线观看| 小草精彩毛片| 69超碰综合| 国产后入内射| 人人模人人看| 亚洲av无码成人精品国产| 狠狠干精品一二三四五六2022| 亚欧操逼片在线观看 | 97啪啪| 97国产高清视频在线观看| 91久久久久久| 啊啊啊啊啊啊啊在线| 特色a在线上| 天天做日日做天天欢。| 日韩美女久久一区二区三区| 亚洲中字慕不卡| 九九精品99| 亚码激情| 美女91av| 囯产精品久久久久久久久久梁医生 | 2017天天操| 囯产操逼片| www.高清无码诱惑一区.com| 精品国产乱码久久久久久网站入口| 亚洲电影中字一区二区| 亚洲好看强奸乱伦| 97精品一二区| 91熟女丨老女人| 欧美一区二区三区四区综合| www.夜夜操| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 99热日| 久久精品 六十路 熟女 欧美| 色爱三区| 久久久久久久久久精| 青娱乐福利99| 97人肏| 巨乳特殊服务按摩| 91成人精品在线播放| 天天干天天日天天射黄色| 熟女91网站| 操逼啊啊啊91| 蜜色网色哟哟| 老熟女网站| 丁香六月婷婷| 日日碰视频网| 99精品久久久久久久婷婷| 一区二区三区四区姦女| 午夜性生活av免费在线看| 亚洲一卡2卡3卡4卡乱码网站| 欧美精品人妻视频| 日韩少妇无码| 91bbb| 992这里有精品| 亚洲人综合19| 婷婷五月天丁香| 国产97在线播放| 日本精品不卡一二三区| 亚洲青青草| 日本高清_区二区三区| 99热 按摩 日韩| 大香蕉人妻久久| 综合久| 久久综合女优| 亚洲伊人a线观看视频| 嗯……啊…嗯嗯…啊…好舒服| 亚洲欧美97√| 亚洲精品 大香蕉| 97久久国产| 欧美亚洲国内自拍| 大香蕉草草| 美女刺激久久国产欧美| 欧美韩日精品99综合| 国语av最新自产拍在线观看| 久久99深爱久久99精品| 成人性爱高清视频免费看| 久久久精品中文字幕麻豆| 中文人妻av高清一区| 岛国艾薇凹凸视频天堂| 国产久久日| 亚洲天堂7777| 天天内射| 欧美日本中字另类在线| 欧美A√综合网 | 人妻少妇久久| 黄色激情电影在线观看| 亚洲一区亚洲天堂| 国产强奸超碰AV| 尤物视频偷拍免费| 夜嗨影院| 狠色婷婷久久一区二区三区_| 温婉少妇玩3p| 殴美色网| 久久久久久久 九九九九九九九| 丰满人妻aA一区二区三区| 丝袜喷水在线| 在线国产福利网址导航| 日韩精品人妻中文字幕久久久| 欧美少妇性爱网站| 欧美日韩97在线| 色噜噜狠狠色综无码久久合欧美| 国产女人视频三四五区| 亚洲第一页欧美| 51一区二区三区| 精品一区二区三区蜜桃| www老逼91| 日韩99精品视频综合区| 精品人妻一区二区三区夜夜| 强奸乱伦亚洲第一页| 9ⅰ久久久天天| 色婷婷丁香五月| 成人性爱免费播放| 中文欧丝袜诱惑| 开心五月婷婷| 操国产逼| 久久久神马影院| 岛国视频免费在线观看| 大香蕉视频啪啪啪啪| 国产精品久久久久久久黄无码| 九九九九九九精品| 91久久久久久| 久久久一区二区三区三州| 欧美色图小说综合| 婬女免费一二三区A片| 久操视频在线观看| 99re在线精品78| 亚洲成人免费在线| 欧美97爱| 久久精品国产99国产精品亚洲| 国产美女高潮叫床视频| 校园春色综合网| 久9久9精品| 深田咏美亚洲精品福利社| 亚洲素人综合| 大香蕉伊人网WWWn0n| 日本一区二区不卡精品| 加勒比海人人操超碰在线| 日韩ab网 | 国产无码成人无码| 香一区二区三区| 乱伦Av网| 秋霞Av理论一级在线| 91少妇通奸网站| 男人的天堂激情| 丰满人妻大屁一区二区| 日本乱人伦片中文三区| 2017天天操天天日| 欧美日韩高潮喷水91| 少妇高潮对白在线观看| 亚洲不卡三级手机播放| 97这里只精品| 亚洲成人无码影院| 日韩无码服务区| 超碰 另类 欧美 | 久干9操| 97色碰| 亚洲猛交| 久久久久9| 大香樵伊人网| 韩国一级婬片A片无码天美| 日本在线999| 女同性恋一区二区三区精品视频| www.91久久| 亚洲男人久久综合天堂| 人妻欧美| 久久人妻少妇| 国产成人AV麻豆| 一区二区娱乐网站| 不卡av在线中文字幕| 尤物AV免费网站| 天堂资源欧美| 国产一区二区三区精品观看啪| 亚洲伊人成综合成人网| 久久精品超碰| 亚洲情色无码一区二区三区| 熟妇xxxxx性春色| 国产精品自拍xxxx| 久久久久久亚洲精品中文字幕人妻| 伊人aaa| 丝袜视频网国产90| a级免费在线观看| 久久九色| 少妇同性| 97在线看| 日韩三级天堂在线观看| 天堂日本亚洲欧美| 亚州性色| 亚洲精品久久久久久久蜜桃臀| 国产超碰在线一区| 免费中文综合精品| 国产区91柔拿会所技师| 国产亚州日韩欧美看片| 另类天堂| 欧美综合传媒| 17c在线成人免费A片观看| 中文字幕丝袜人妻| 天天插天天射| 九九九一二三| 日韩人妻精品| 少妇色综合| 欧美少妇内射| 日韩钢筋无码高清啾啾啾| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 婷婷操逼| 午夜免费福利视频一区| 免费A V在线| 久久毛卡| www.99中文字幕| 日欧操屄| 无码精品久久| 九九热久久99精品re| 高潮毛片无遮挡高清免费| 岛国福利在线精品播放| 国产成人99久久亚洲综合| 啊啊啊想要| 日本熟妇精品九九| 加勒比性爱成人在线| 人妻一区久久二区三区色播| 97超碰天天| 中文字幕丝袜人妻| 精品无码一区二区| 天天干天天干天天干| 一区二区三区在线资源| 97舔舔| 很黄很污的免费网站| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲激情久久久伊人综合| 啊啊啊好大好深| 99国产女人| 男人的天堂 在线一区| 国产在线观看一区二区三区| www.亚洲黄色| 亚洲国产一区二区入口| 色久桃花影院在线观看| 午夜福利成人免费视频| 大香蕉啪啪啪| 色性荡荡荡荡视频| 96AV久久久| 日本蜜桃| 欧美在线|亚洲| 亚洲情色 欧美| 清纯唯美亚洲综合| 激情文学88| 韩国手机不卡无码三级视频| 久久人人爽爽人人爽人人片αV| 97在线精品观看视频| 91精品啪在线观看国产城中村| 自拍鲍鱼一区在线高清观看免费| 操一区| 18一区二区三区| 先锋音影AV| 啊啊啊久久久视频| 99热日| 99热婷婷一区二区三| 日本一区二区亚洲综合| 美女诱惑一区| 欧美性91| 偷拍 欧美 日韩| 国产色精品午夜大片| 韩国一级婬片A片AAAAA| 久久侵犯人妻爽爽爽| 好湿好紧好爽 视频| 亚热日本熟女| 五十路二区在线| 欧美图片校园春色| 亚洲无码偷拍| 国语精品内射在线观看| 五月天玖玖资源站| 毛片中心9视频99| av操操不卡| 国产91丝袜在线播放蜜月| AAAA级日本片免费视频| 日韩一性一交一A片俄罗斯| 亚洲有薄码区日本系列中文字幕| 性性久久| 超碰97伊人| 少妇淫妇久久久久久久| 精品久久久久久无码| 久久婷婷色| 99九九久久| 熟人人妻少妇精品久久| 亚洲综合欧美| 亚洲第一在线视频| 另类亚洲图色| 少妇人妻在线| 色综合一区二区三区| 日本色色色视频| 按摩中文字幕| 亚洲射综合网| 欧美日韩欧美| 精品久久无码午夜福利| 日韩人成网站在线播放| 国产自产91区13区| juliaann精品熟女一区| 青青草华人在线欧美在线| 日韩美女啪啪一区| 蜜臀av在线播放一区二区三区| 色综合99999| 蜜臀久久99精品久久久| 最新国产亚洲精品精品国产亚洲综合 | 无码九九| 日韩黄色片子| 黄污污污污| 精品无码一二三四区| 亚洲色人| 强奸乱伦αv片| 乱老熟女一区二区三区| 夜色综合| 国产福利第一视频| 97频视在线| 色逼综合| AV和黑人在线播放| 97青青操视频| 欧美性五月| 97免费视频在线| 无码抄逼网| 小骚逼被操的爽不爽| 天天上日日上日韩精品| 日韩人妻精品久久久久| 懂色av中文字幕| 超碰成人公开| 五月丁香综合网| 中文字幕一品色图| 萌白酱自拍视频| 人妻天天操天天爽视频免费| 欧美夜色| 亚洲综合网91| 国产精品午夜高潮呻吟久久av| 日本黄色裸日本黄色裸体| 成人免费性爱视视| 熟妇人妻一区二区三区| 中文乱码字幕观看视频| 丁香激情五月天| 极品美女嘿咻| 99国产精品视频尤物| av午夜玫瑰| 桃花色综合影院| www.狠狠干.coom| 加勒比久久av| 中日韩欧美精品无码AⅤ一区二区| 另类图片五月| 鸥美中出| 欧美色图天堂在线| sewuyueav| 人人操人人摸人人看人人干| 91美女在线视频| 天天插天天操| 精品精品精品| 久久夜夜| 天天看少妇| 国产一级舔足在线观看| 综合色图区| 超碰色美女| 婷婷伊人綜合中文字幕| 97久久久网站| av在线一区二区三区| 啊啊啊啊啊好舒服视频| 日韩黄色av中文字幕| 久久久久亚洲精品| 一级日本牲交大片好爽在线看| 五月天婷婷成人网| 久久久天堂| www.久久爱| 777超碰| 欧州色图区| 日韩性爱小视频| 一区二区 日韩 欧美 国产 传媒| 激情小说在线视频| 久久e6只有精品| 91在线欧美| 亚洲日韩青青草色月| h4610国产人妻| 国产九九九九九九| 91精品国产麻豆国产自产在| www.男人的天堂| 99啪啪视频| 人妻久久一区二区三区 | 自拍偷拍 日韩无码|