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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux那些事儿 之 戏说USB(33)字符串描述符

發布時間:2023/11/27 生活经验 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux那些事儿 之 戏说USB(33)字符串描述符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于字符串描述符,前面的前面已經簡單描述過了,地位僅次于設備/配置/接口/端點四大描述符,那四大設備必須得支持,而字符串描述符對設備來說則是可選的。

這并不是就說字符串描述符不重要,對咱們來說,字符串要比數字親切的多,提供字符串描述符的設備也要比沒有提供的設備親切的多,不會有人會專門去記前面使用lsusb列出的04b4表示的是Cypress Semiconductor Corp.。

一提到字符串,不可避免就得提到字符串使用的語言。字符串親切是親切,但不像數字那樣全球通用,使用中文了,老外看不懂,使用法文阿拉伯文什么的咱又看不懂,你知道目前世界上有多少種語言嗎?有得說七千多種,有得說五千多種,無一定論,不過使用人口超過100萬的語言也足足有140多種。字符串描述符也需要應對多種語言的情況,當然這并不是說設備里就要存儲這么多不同語言的字符串描述符,這未免要求過高了些,代價也忒昂貴了些,要知道這些描述符不會憑空生出來,是要存儲在設備的EEPROM里的,此物是需要MONEY的,要節約MONEY,盡量少占用EEPROM。所以說只提供幾種語言的字符串描述符就可以了,甚至說只提供一種語言,比如英語就可以了。

不過不管哪種語言,在PC里或者設備里存放都只能用二進制數字,這就需要在語言與數字之間進行編碼,這個所謂的編碼和這個世界上其它事物一樣,都是有多種的,起碼每種語言都會存在獨立的編碼方式,咱們的簡體中文可以使用GB2312、GBK、GB18030等,臺灣那邊兒是繁體,用的就是big5,這么一來每種語言自己內部交流是不成問題了,可相互之間就像雞同鴨講了。于是世界上的某些角落就出現了那么一些有志青年,立志要將各種語言的編碼體系給統一起來,于是就出現了UNICODE和ISO-10646。

Spec里就說了,字符串描述符使用的就是UNICODE編碼,usb設備里的字符串可以通過它來支持多種語言,不過你需要在向設備請求字符串描述符的時候指定一個你期望看到的一種語言,俗稱語言ID,即Language ID。這個語言ID使用兩個字節表示,所有可以使用的語言ID在http://www.usb.org/developers/docs/USB_LANGIDs.pdf 文檔里都有列出來,從這個文檔里你也可以明白為啥要使用兩個字節,而不是一個字節表示。這么說吧,比如中文是0X04,但是中文還有好幾種,所以就需要另外一個字節表示是哪種中文,簡體就是0X02,注意合起來表示簡體中文并不是0X0402或者0X0204,因為這兩個字節并不是分的那么清,bit0~9一共10位去表示Primary語言ID,其余6位去表示Sub語言ID,畢竟一種語言的Sub語言不可能會特別的多,沒必要分去整整一半8bits,所以簡體中文的語言ID就是0X0804。

不多羅唆,還是結合代碼,從上節飄過的usb_cache_string說起,看看如何去獲得一個字符串描述符,它在message.c里定義

char *usb_cache_string(struct usb_device *udev, int index)
{char *buf;char *smallbuf = NULL;int len;if (index <= 0)return NULL;buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);if (buf) {len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE);if (len > 0) {smallbuf = kmalloc(++len, GFP_NOIO);if (!smallbuf)return buf;memcpy(smallbuf, buf, len);}kfree(buf);}return smallbuf;
}
每個成年人都有那么一個身份證號碼,每個字符串描述符都有一個序號,身份證號可能會重復,字符串描述符這個序號是不能重復的,不過這點不用你我操心,都是設備已經固化好了的東西,重復不重復也不是咱們要操心的事。咱們要操心的事太多了,要操心吃還要操心睡。


也好理解,什么東西一多了,最好最節約最省事的區分方式就是編號,字符串描述符當然可以有很多個,參數的index就是表示了你希望獲得其中的第幾個。但是不可疏忽大意的是,你不能指定index為0,0編號是有特殊用途的,你指定0了就什么也得不到。你去華為找工號000的,不會有人應你,根本就沒這人,你找001,這次有人應你,不過是保安,趕你走的,沒事兒找任老總干嗎,沒看一個接一個的自殺正是多事之秋么。

有關這個函數,還需要明白兩點,第一是它采用的方針策略,就是苦活兒累活兒找個usb_string()去做,自己一邊兒看著,這個usb_string()怎么工作的之后再看,現在只要注意下它的參數,比usb_cache_string()的參數多了兩個,就是buf和size,也就是需要傳遞一個存放返回的字符串描述符的緩沖區。但是你調用usb_cache_string()的時候并沒有指定一個明確的size,usb_cache_string()也就不知道你想要的那個字符串描述符有多大,于是它就采用了這么一個技巧,先申請一個足夠大的緩沖區,這里是256字節,拿這個緩沖區去調用usb_string(),通過usb_string()的返回值會得到字符串描述符的真實大小,然后再拿這個真實的大小去申請一個緩沖區,并將大緩沖區里放的字符串描述符數據拷貝過來,這時那個大緩沖區當然就沒什么利用價值了,于是再把它給釋放掉。

第二就是申請那個小緩沖區的時候,使用的并不是usb_string()的返回值,而是多了1個字節,也就是說要從大緩沖區里多拷一個字節到小緩沖區里,為什么?這牽涉到C里字符串方面那個人見人愁鬼見鬼哭的代碼殺手——字符串結束符。如果你說俺是危言聳聽夸大其實,那只能說明你不是天才就是C代碼寫的少,咱不說C++,因為C++里更多的是用string。

字符串都需要那么一個結束符,這點是個正常人都知道的,但并不是每個正常人都能每時每刻的記得給字符串加上這么一個結束符。就像是個人都知道鈔票不是萬能的,但并不是每個人都知道:鈔票不是萬能的,有時還需要信用卡??赡苣阈⌒牧?000次,但在第1001次的時候你給忘記了,你的代碼就可能就可能掛了。

你從設備那里得到字符串之后得給它追加一個結束符。本來usb_string()里已經為buf追加好了,但是它返回的長度里還是沒有包括進這個結束符的1個字節,所以usb_cache_string()為smallbuf申請內存的時候就得多準備那么一個字節,以便將buf里的那個結束符也給拷過來。現在就看看usb_string()的細節,定義在message.c里
int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
{unsigned char *tbuf;int err;if (dev->state == USB_STATE_SUSPENDED)return -EHOSTUNREACH;if (size <= 0 || !buf || !index)return -EINVAL;buf[0] = 0;tbuf = kmalloc(256, GFP_NOIO);if (!tbuf)return -ENOMEM;err = usb_get_langid(dev, tbuf);if (err < 0)goto errout;err = usb_string_sub(dev, dev->string_langid, index, tbuf);if (err < 0)goto errout;size--;		/* leave room for trailing NULL char in output buffer */err = utf16s_to_utf8s((wchar_t *) &tbuf[2], (err - 2) / 2,UTF16_LITTLE_ENDIAN, buf, size);buf[err] = 0;if (tbuf[1] != USB_DT_STRING)dev_dbg(&dev->dev,"wrong descriptor type %02x for string %d (\"%s\")\n",tbuf[1], index, buf);errout:kfree(tbuf);return err;
}
6行,這幾行做些例行檢查,設備不能是掛起的,index也不能是0的,只要傳遞了指針就是需要檢查的。

10行,初始化buf,usb_cache_string()并沒有對這個buf初始化,所以這里必須要加上這么一步。當然usb_string()并不僅僅只有在usb_cache_string()里調用,可能會在很多地方調用到它,不過不管在哪里,這里謹慎起見,還是需要這么一步。

11行,申請一個256字節大小的緩沖區。前面一直強調說要初始化要初始化,怎么到這里俺就自己打自己一耳光,沒有去初始化tbuf?這是因為沒必要,為什么沒必要,你看看usb_string()最后面的那一堆就明白了。

15行,使用指定的語言ID,或者前面獲得的默認語言ID去獲得想要的那個字符串描述符?,F在看看定義在message.c里的usb_string_sub函數。
static int usb_string_sub(struct usb_device *dev, unsigned int langid,unsigned int index, unsigned char *buf)
{int rc;/* Try to read the string descriptor by asking for the maximum* possible number of bytes */if (dev->quirks & USB_QUIRK_STRING_FETCH_255)rc = -EIO;elserc = usb_get_string(dev, langid, index, buf, 255);/* If that failed try to read the descriptor length, then* ask for just that many bytes */if (rc < 2) {rc = usb_get_string(dev, langid, index, buf, 2);if (rc == 2)rc = usb_get_string(dev, langid, index, buf, buf[0]);}if (rc >= 2) {if (!buf[0] && !buf[1])usb_try_string_workarounds(buf, &rc);/* There might be extra junk at the end of the descriptor */if (buf[0] < rc)rc = buf[0];rc = rc - (rc & 1); /* force a multiple of two */}if (rc < 2)rc = (rc < 0 ? rc : -EINVAL);return rc;
}
這個函數首先檢查一下你的設備是不是屬于那種有怪僻的,如果是一個沒有毛病遵紀守法的合格設備,就調用usb_get_string()去幫著自己獲得字符串描述符。USB_QUIRK_STRING_FETCH_255就是在include/linux/usb/quirks.h里定義的那些形形色色的毛病之一,《我是Hub》里詳細的講了設備的quirk,說了USB_QUIRK_STRING_FETCH_255就表示設備在獲取字符串描述符的時候會crash。

usb_string_sub()的核心就是message.c里定義usb_get_string函數
static int usb_get_string(struct usb_device *dev, unsigned short langid,unsigned char index, void *buf, int size)
{int i;int result;for (i = 0; i < 3; ++i) {/* retry on length 0 or stall; some devices are flakey */result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,(USB_DT_STRING << 8) + index, langid, buf, size,USB_CTRL_GET_TIMEOUT);if (result == 0 || result == -EPIPE)continue;if (result > 1 && ((u8 *) buf)[1] != USB_DT_STRING) {result = -ENODATA;continue;}break;}return result;
}
我已經不記得這是第多少次遇到usb_control_msg()了,還是簡單說一下它的一堆參數,wValue的高位字節表示描述符的類型,低位字節表示描述符的序號,所以有11行的(USB_DT_STRING << 8) + index,wIndex對于字符串描述符應該設置為使用語言的ID,所以有11的langid,至于wLength,就是描述符的長度,對于字符串描述符很難有一個統一的確定的長度,所以一般來說上頭兒傳遞過來的通常是一個比較大的255字節。

和獲得設備描述符時一樣,因為一些廠商搞出的設備古靈精怪的,可能需要多試幾次才能成功。要容許設備犯錯誤,就像人總要犯錯誤一樣。

還是回過頭去看usb_string_sub函數,如果usb_get_string()成功的得到了期待的字符串描述符,則返回獲得的字節數,如果這個數目小于2,就再讀兩個字節試試,要想明白這兩個字節是什么內容,需要看看spec Table 9-16

Table 9-15是0號字符串描述符的格式,這個Table 9-16是其它字符串描述符的格式,很明顯可以看到,它的前兩個字節分別表示了長度和類型,如果讀2個字節成功的話,就可以準確的獲得這個字符串描述符的長度,然后可以再拿這個準確的長度去請求一次。

該嘗試的都嘗試了,現在看看21行,分析一下前面調用usb_get_string()的結果,如果幾次嘗試之后,它的返回值還是小于2,那就返回一個錯誤碼。如果你的辛苦沒有白費,rc大于等于2,說明終于獲得了一個有效的字符串描述符。

22行,buf的前兩個字節有一個為空時,也就是Table 9-16的前兩個字節有一個為空時,調用了message.c里定義的usb_try_string_workarounds函數
static void usb_try_string_workarounds(unsigned char *buf, int *length)
{int newlength, oldlength = *length;for (newlength = 2; newlength + 1 < oldlength; newlength += 2)if (!isprint(buf[newlength]) || buf[newlength + 1])break;if (newlength > 2) {buf[0] = newlength;*length = newlength;}
}
這個函數的目的是從usb_get_string()返回的數據里計算出前面有效的那一部分的長度。它的核心就是5行的那個for循環,不過要搞清楚這個循環,還真不是一件容易的事兒,得有相當的理論功底。

不久之前剛說了字符串描述符使用的是UNICODE編碼,其實UNICODE指的是包含了字符集、編碼、字型等等很多規范的一整套系統,字符集僅僅描述符系統中存在哪些字符,并進行分類,并不涉及如何用數字編碼表示的問題。UNICODE使用的編碼形式主要就是兩種UTF,即UTF-8和UTF-16。使用usb_get_string()獲得的字符串使用的是UTF-16編碼規則,而且是little-endpoint的,每個字符都需要使用兩個字節來表示。你看這個for循環里newlength每次加2,就是表示每次處理一個字符的,但是要弄明白怎么處理的,還需要知道這兩個字節分別是什么東東,這就不得不提及ASCII、ISO-8859-1等幾個名詞兒。

ASCII是用來表示英文的一種編碼規范,表示的最大字符數為256,每個字符占1個字節,但是英文字符沒那么多,一般來說128個也就夠了(最高位為0),這就已經完全包括了控制字符、數字、大小寫字母,還有其它一些符號。對于法語、西班牙語和德語之類的西歐語言都使用叫做ISO-8859-1的東東,它擴展了ASCII碼的最高位,來表示像n上帶有一個波浪線(241),和u上帶有兩個點(252)這樣的字符。而Unicode的低字節,也就是在0到255上同ISO-8859-1完全一樣,它接著使用剩余的數字,256到65535,擴展到表示其它語言的字符。所以可以說ISO-8859-1就是Unicode的子集,如果Unicode的高字節為0,則它表示的字符就和ISO-8859-1完全一樣了。

有上面的理論墊底兒,咱們再看看這個for循環,newlength從2開始,是因為前兩個字節應該是表示長度和類型的,這里只逐個兒對上面Table 9-16里的bString中的每個字符做處理。還要知道usb_get_string()得到的結果是little-endpoint的,所以buf[newlength]和buf[newlength + 1]分別表示一個字符的低字節和高字節,那么isprint(buf[newlength]就是用來判斷一下這個Unicode字符的低字節是不是可以print的,如果不是,就沒必要再往下循環了,后邊兒的字符也不再看了,然后就到了690行的if,將newlength賦給buf[0],即bLength。length指向的是usb_get_string()返回的原始數據的長度,692行使用for循環計算出的有效長度將它給修改了。isprint在include/linux/ctype.h里定義,你可以去看看,這里就不多說了。

這個for循環終止的條件有兩個,另外一個就是buf[newlength + 1],也就是這個Unicode字符的高字節不為0,這時它不存在對應的ISO-8859-1形式,為什么加上這個判斷?你接著看。

usb_string_sub()的26行,buf[0]表示的就是bLength的值,如果它小于usb_get_string()獲得的數據長度,說明這些數據里存在一些垃圾,要把他們給揪出來排除掉。要知道這個rc是要做為真實有效的描述符長度返回的,所以這個時候需要將buf[0]賦給rc。

29行,每個Unicode字符需要使用兩個字節來表示,所以rc必須為偶數,2的整數倍,如果為奇數,就得將最后那一個字節給抹掉,也就是將rc減1。咱們可以學習一下這里將一個數字轉換為偶數時采用的技巧,(rc & 1)在rc為偶數時等于0,為奇數時等于1,再使用rc減去它,得到的就是一個偶數。

從21~30這幾行,咱們應該看得出,在成功獲得一個字符串描述符時,usb_string_sub()返回的是一個NULL-terminated字符串的長度,并沒有涉及到結束符。牢記這一點,咱們回到usb_string函數的23行,先將size,也就是buf的大小減1,目的就是為結束符保留1個字節的位置。

26行,為buf追加一個結束符。咱們這節也就結束了。

總結

以上是生活随笔為你收集整理的Linux那些事儿 之 戏说USB(33)字符串描述符的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美日韩3p | 成人高清av在线 | 人人人爽 | 欧美a视频 | 午夜精品一区二区三区四区 | 91精品国产99久久久久久久 | 婷婷丁香激情网 | 成人av一区二区三区 | 久久影视一区二区 | 成人在线一区二区 | 日韩一区正在播放 | 五月婷丁香 | 日韩高清一 | 欧美日韩伦理一区 | 天天鲁一鲁摸一摸爽一爽 | 天天色 天天 | 成人免费观看网址 | 国产成人精品一区二区三区 | 精品欧美小视频在线观看 | 91最新网址 | avhd高清在线谜片 | 精品成人在线 | 91传媒免费在线观看 | 97成人精品视频在线观看 | 97在线视频观看 | 最近日本mv字幕免费观看 | 91男人影院 | 久久99精品久久只有精品 | 久久久免费精品视频 | 成人三级视频 | 国产成人精品一区在线 | 午夜视频在线网站 | 91福利在线观看 | 爱爱一区 | 在线日本看片免费人成视久网 | 丁香视频五月 | 国产日产欧美在线观看 | 国产高清免费观看 | a国产精品 | 天天色图 | 午夜视频在线观看网站 | 一区二区三区在线免费观看视频 | 国产精品一区二区久久国产 | 天天爱天天操天天爽 | 亚洲永久精品视频 | 中文字幕在线影院 | 日韩av一区在线观看 | 91在线精品一区二区 | 97夜夜澡人人双人人人喊 | 国内外成人免费在线视频 | 天天操天天干天天操天天干 | 精品视频中文字幕 | 超碰人人91 | 黄色成人av| 亚洲国产日韩欧美 | 亚州欧美视频 | 国模一区二区三区四区 | 在线观看中文字幕网站 | 成人在线观看日韩 | 久久精品高清视频 | 又粗又长又大又爽又黄少妇毛片 | 国产色综合天天综合网 | 日本公妇色中文字幕 | 天天操天天干天天操天天干 | 免费在线一区二区 | 国产伦理久久精品久久久久_ | 一区二区三区在线免费观看 | 日韩在线看片 | 婷婷丁香在线观看 | 99久久久久成人国产免费 | 国产福利精品一区二区 | 国产黄色播放 | 国产高清视频免费在线观看 | 国产v欧美 | 天天干天天射天天爽 | 亚洲精品美女久久久久网站 | 国产高清无av久久 | 亚洲精品视频在线免费 | 欧美精品999 | 亚洲精品午夜久久久久久久久久久 | 久久久精品网 | 久久久噜噜噜久久久 | 久久天天操| 成人免费观看av | 国产日本高清 | 精品一区二区在线免费观看 | 天天干天天操天天爱 | 在线免费国产 | 日韩视频1区 | 精油按摩av | 激情网站五月天 | 午夜av不卡 | 色噜噜狠狠狠狠色综合 | 免费在线观看一区二区三区 | 91成人免费观看视频 | 色婷婷丁香 | 在线视频在线观看 | 成人av电影免费在线观看 | 欧美美女视频在线观看 | 欧美性色黄大片在线观看 | 人人爽久久久噜噜噜电影 | 亚洲免费成人av电影 | 99久久精品无码一区二区毛片 | 天天综合网入口 | 色婷婷97 | 在线 国产 日韩 | 色多多污污 | 亚洲欧洲国产视频 | 成人久久毛片 | 国产不卡在线看 | 天堂资源在线观看视频 | 五月色综合 | 成人a视频在线观看 | 在线色亚洲 | 久久久久久中文字幕 | 国产成人在线综合 | av官网| 九九九九九精品 | 国产国语在线 | 久久精品爱视频 | 午夜色婷婷 | 中文字幕在线观看网址 | 国产日韩在线视频 | 久久久久国产a免费观看rela | 在线播放一区二区三区 | 久久高清免费视频 | 丁香久久五月 | 日韩午夜电影网 | 国产区高清在线 | 91视频下载 | 国产v在线播放 | 国产中文字幕在线播放 | 人人操日日干 | 蜜桃视频色| 成全免费观看视频 | 91成人精品 | 伊人看片 | 国内精品二区 | 狠狠色噜噜狠狠狠狠2021天天 | 五月天久久久久久 | 久久夜色网 | 日日夜夜精品 | 国产色秀视频 | 天天色天天骑天天射 | 国产视频一区在线免费观看 | 久久都是精品 | 91九色在线视频 | 99视频精品在线 | 91精品国产91热久久久做人人 | 综合激情| 久久这里有精品 | wwwww.国产| 精品 激情 | 成人久久久久久久久久 | 国产永久免费 | 一区三区视频在线观看 | 成人免费av电影 | 国产成人精品一区二区在线 | 成人福利av | 久久午夜免费视频 | 欧美在线99 | 永久免费看av | 欧美日韩观看 | 国产69精品久久久久99 | 久草久草久草久草 | 久久久资源网 | 国产黄| 亚洲情影院 | 一级黄色片网站 | 国产v欧美 | 国产分类视频 | 又湿又紧又大又爽a视频国产 | 手机av在线网站 | 色综合中文综合网 | 99精品小视频 | 国产小视频在线观看免费 | 久久专区 | 欧美日韩免费观看一区二区三区 | 特级西西444www大精品视频免费看 | 久久99久久精品 | 国产麻豆精品传媒av国产下载 | 国产精品久久久久婷婷二区次 | 亚洲女欲精品久久久久久久18 | 成人亚洲精品久久久久 | 999在线精品 | 蜜臀av在线一区二区三区 | 在线视频一区观看 | 国产精品嫩草影院99网站 | 视频在线精品 | 懂色av一区二区三区蜜臀 | 国产成人一区二 | 久久精品美女 | 午夜av影院 | www.狠狠插.com| 亚洲成aⅴ人在线观看 | 三日本三级少妇三级99 | 日韩99热 | 久久久久久欧美二区电影网 | 精品久久久久久亚洲综合网站 | 欧美在线观看视频免费 | 中文字幕免费看 | 欧美日韩免费在线观看视频 | 天堂在线视频免费观看 | 国产区在线看 | 免费高清在线视频一区· | 免费精品视频在线 | 午夜精品av | 日韩精品在线免费播放 | 天天爱av导航 | 午夜精品久久久久久久久久久久 | 在线观看91精品视频 | 色婷五月天 | 91九色老 | 国内精品久久久久影院男同志 | 日韩最新在线 | 五月天综合网站 | 一级黄色片在线免费看 | 久久草| 久久激情五月丁香伊人 | 国产美腿白丝袜足在线av | 欧美精品中文字幕亚洲专区 | 日韩 国产| 欧美性生活久久 | 亚洲va韩国va欧美va精四季 | 在线不卡a| 久久999精品 | 亚洲激情免费 | 啪啪资源 | 国产精品视频区 | 欧美日韩伦理一区 | 久久久国产精品人人片99精片欧美一 | 91九色丨porny丨丰满6 | 精品视频999| 伊人狠狠色 | 超黄视频网站 | 中文字幕在线一区观看 | 91丨九色丨蝌蚪丨老版 | 国产高清在线观看 | 国产亚洲精品久久久久久 | 天天艹天天 | 成人黄色大片 | 国产精品激情偷乱一区二区∴ | 91综合久久一区二区 | 国产成人精品一区二区三区在线观看 | 亚洲乱码精品久久久久 | 在线观看中文字幕视频 | 亚洲欧洲精品一区 | 国产亚洲精品成人av久久影院 | 国产小视频在线免费观看 | 色国产精品一区在线观看 | 2021国产精品视频 | 婷婷亚洲五月色综合 | 色婷婷精品大在线视频 | 在线免费观看黄网站 | 精品一二三四五区 | 一区二区视频在线播放 | 国产一级视屏 | 日韩免费播放 | 亚洲精品 在线视频 | 成年人国产精品 | 亚洲国产福利视频 | 射射色 | 国产中文字幕网 | 欧美国产91 | 精品国产伦一区二区三区观看方式 | 99麻豆久久久国产精品免费 | 日本精品在线 | 久久久www成人免费毛片 | 国产69久久久 | 999视频网| 久久在线看 | 免费福利影院 | 在线之家官网 | 亚洲女欲精品久久久久久久18 | 91av亚洲 | 天天综合网~永久入口 | 国产成人精品av久久 | 天天干,天天干 | 中文字幕第 | 五月婷在线播放 | 国产一区视频免费在线观看 | 国产精品美女www爽爽爽视频 | bbbbb女女女女女bbbbb国产 | 91精品啪在线观看国产81旧版 | 九九视频这里只有精品 | 狠狠色婷婷丁香六月 | 国产麻豆精品久久 | 蜜臀av免费一区二区三区 | 欧美日韩国产二区三区 | 亚洲视频第一页 | 亚州欧美精品 | 一区二区视频欧美 | 国产精品人人做人人爽人人添 | 亚州av免费 | 婷色在线 | 永久免费精品视频网站 | 亚洲欧美一区二区三区孕妇写真 | 精品免费国产一区二区三区四区 | 国产精品免费一区二区三区在线观看 | 毛片网站免费在线观看 | 91高清视频在线 | 国产伦精品一区二区三区在线 | 一区二区三区三区在线 | 日韩在线精品 | 日本精品视频免费观看 | 久久视频在线观看免费 | 99久高清在线观看视频99精品热在线观看视频 | 久久国际影院 | 亚洲va男人天堂 | 亚洲成人蜜桃 | 精品日本视频 | 丁香狠狠 | 91精品1区2区| 蜜臀av网址| 日韩精品91偷拍在线观看 | 美女网站视频免费都是黄 | 日韩免费电影网站 | 成人小视频在线 | 一区二区三区四区在线 | 91久久精品日日躁夜夜躁国产 | 福利视频导航网址 | 久久久99国产精品免费 | 国产午夜三级一二三区 | 中文字幕韩在线第一页 | 亚洲精品国精品久久99热一 | 人人干,人人爽 | 国产一区二区三区免费观看视频 | 欧美另类tv | 91精品免费在线视频 | 99热手机在线 | 亚洲不卡av一区二区三区 | 精品久久久久久久久亚洲 | 日本中文字幕在线 | 久青草影院 | 欧美日韩三级在线观看 | 日韩v在线 | 久久免费美女视频 | 激情综合网婷婷 | 欧美日韩久久不卡 | 亚洲丝袜一区二区 | 色婷婷国产| 国产在线a | 国产不卡一区二区视频 | 国产美女精品久久久 | 国产 视频 高清 免费 | 99精品视频免费观看视频 | 伊人色综合网 | 综合网在线视频 | a久久久久久 | 在线观看a视频 | 久久国产精品99国产精 | 欧美精品第一 | 天天操天天色天天射 | 午夜精品一区二区三区在线观看 | 中文字幕在线看片 | 欧美成人区 | 一区二区三区高清在线 | 国产成人中文字幕 | 天天摸天天操天天爽 | 国产美女精品视频 | 一区中文字幕在线观看 | 欧美日韩精品电影 | 久久综合狠狠综合久久激情 | 黄色国产精品 | 日韩美女av在线 | 色欧美视频 | 国产在线91精品 | 黄色片免费在线 | 91精品国产欧美一区二区成人 | 亚洲黄色三级 | 91成人免费观看视频 | 免费福利视频网站 | 91亚洲狠狠婷婷综合久久久 | 97在线观看视频国产 | 91精品国产乱码 | 国产性xxxx| mm1313亚洲精品国产 | 国内视频 | 久久久久久福利 | 日韩高清 一区 | 日韩成人精品一区二区三区 | 久久成人在线视频 | 久草视频在线免费播放 | 天天操天天操一操 | 九九在线精品视频 | 欧美日韩不卡一区二区三区 | 国产精品久久99综合免费观看尤物 | 91成人在线观看喷潮 | 日韩a欧美 | 国产视频一区在线 | 日本中文字幕高清 | 久久国产精品一区二区 | 亚洲精品在线观看免费 | 国产99区| 婷婷激情小说网 | 中文字幕在线看 | 日韩在线精品视频 | 日本黄色免费大片 | 中文字幕在线有码 | 日韩国产精品久久久久久亚洲 | 天天色天天射天天综合网 | 日韩免费在线一区 | 美女黄久久 | 成年人国产视频 | 国产资源免费在线观看 | 在线观看一区视频 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 夜夜天天干 | 国产3p视频| 在线免费观看视频a | 国产资源在线观看 | 日韩肉感妇bbwbbwbbw | 五月激情五月激情 | 日日夜夜国产 | 成人精品999 | 日日爽天天操 | 国产资源在线播放 | 亚洲黄色在线播放 | 色综合久久久久综合体桃花网 | 一级免费观看 | 国产精品 9999 | 色视频在线| 五月婷婷在线综合 | a久久免费视频 | 综合久久久久久久久 | 国产国语在线 | 蜜臀久久99精品久久久无需会员 | 国产在线精品一区 | 中文字幕在线免费97 | 亚洲 欧美 变态 国产 另类 | 精品欧美一区二区精品久久 | 久久夜色网 | 婷婷在线观看视频 | 国产成人av免费在线观看 | 欧美黄色高清 | 一区二区三区影院 | 久久蜜臀一区二区三区av | 日韩av进入 | 一级成人在线 | 少妇视频一区 | 福利精品在线 | 日韩精品一区二区三区三炮视频 | 麻豆国产精品永久免费视频 | 99视频久 | 色婷婷九月| 狠狠干电影| 亚洲高清在线观看视频 | 成人在线观看免费视频 | 一二三区在线 | 亚洲人成在线观看 | 精品国产伦一区二区三区免费 | 狠狠操欧美 | 97国产一区 | 成片免费观看视频大全 | 69av视频在线 | 久久精品免费看 | 日女人电影| 人人爽人人爽av | 国产精品成人自拍 | 日本激情动作片免费看 | 天天干天天干天天干天天干天天干天天干 | 国产精成人品免费观看 | 啪啪av在线 | 91九色蝌蚪视频在线 | 日韩免费一二三区 | 久久不射网站 | 日韩一级片观看 | 久久久久久中文字幕 | 五月天综合色 | 中文字幕在线高清 | 丰满少妇对白在线偷拍 | 999久久久久久 | 激情综合中文娱乐网 | 日日躁你夜夜躁你av蜜 | 欧美性生活久久 | 国产精品久久久久久久久久久免费 | 97视频免费在线看 | 成人国产精品免费 | 国产一级免费av | 国产一区二区高清 | av中文国产| 五月婷婷六月丁香激情 | 日本一区二区高清不卡 | 国产色婷婷在线 | 国产精品女人久久久久久 | 成人羞羞视频在线观看免费 | 精品99免费视频 | 亚洲欧美偷拍另类 | 98久久| 亚洲日本中文字幕在线观看 | 亚洲国产资源 | 欧美 日韩精品 | 日韩在线视频网址 | 人人躁| 超碰在线成人 | 国产三级精品在线 | 夜夜澡人模人人添人人看 | 亚洲成熟女人毛片在线 | 成人丝袜| av在线最新| 国产大片免费久久 | 久久国产亚洲精品 | 久久久久久福利 | 色网站国产精品 | 中文字幕av在线不卡 | 成人久久18免费网站图片 | 欧美一级免费在线 | 一区二区三区四区精品视频 | 久久婷婷国产色一区二区三区 | 人人插人人舔 | 久久夜色精品国产欧美一区麻豆 | 欧美在线观看视频免费 | 国产一级一级国产 | 91看片麻豆| 国产xx视频 | 国产精品成人自产拍在线观看 | 久久精品国产第一区二区三区 | 日韩一级电影在线观看 | 天天色天天搞 | 麻豆国产精品va在线观看不卡 | 中文字幕二区 | 五月的婷婷 | 久久精品福利视频 | 久久久久观看 | 日夜夜精品视频 | 探花在线观看 | 国产一区二区三区视频在线 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产精品一区在线观看你懂的 | 国产精品免费一区二区三区在线观看 | 日韩成人在线免费观看 | 日本精品一二区 | 欧美日韩亚洲第一 | 久久久久久久久影院 | 久99久在线视频 | 欧美国产一区二区 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 国产一区二区三区四区在线 | 成人中文字幕+乱码+中文字幕 | 国产午夜三级一区二区三桃花影视 | 久久久久国产精品一区 | 国产精品一区电影 | 天天色天天操综合网 | 精品在线一区二区三区 | 国产欧美综合视频 | 免费成人在线观看视频 | 天堂在线一区二区三区 | 97碰在线| 综合久久2023 | 久久综合加勒比 | 人人爽人人插 | 国产福利91精品一区二区三区 | 国产999精品久久久久久麻豆 | 九九免费观看视频 | 久久综合色一综合色88 | 91黄色影视 | 国产在线v| 久久久91精品国产 | 99福利片 | 五月婷丁香 | 精品久久久久_ | 久久国产精品视频观看 | 中文字幕影片免费在线观看 | 亚洲国产成人精品在线 | 国产区免费| www.在线观看av | 国产亚洲精品久久久久动 | 丁香 婷婷 激情 | 欧美最新另类人妖 | 天天操夜夜操天天射 | 国产精品一区一区三区 | 狠狠色丁香婷婷综合最新地址 | 日韩av福利在线 | 日韩欧美视频 | 婷婷在线免费 | 欧美激情第八页 | 色99在线| 免费观看全黄做爰大片国产 | 精品久久久久久亚洲综合网 | 亚洲一级免费观看 | 日韩av在线看 | 久久精品国产免费 | 最近免费观看的电影完整版 | 国产精品99久久久久久人免费 | 国产精品高潮在线观看 | 涩涩网站在线看 | 中文字幕 国产精品 | 亚洲精品国产日韩 | 久久a热6| 18国产精品福利片久久婷 | 国产视频97| 国产精品资源 | 免费av免费观看 | 精品主播网红福利资源观看 | 激情视频免费在线 | 高清不卡免费视频 | 综合精品久久 | 久久综合给合久久狠狠色 | 国产在线视频导航 | 国产中文字幕免费 | 夜夜操夜夜干 | 久久久午夜剧场 | 国内精品久久影院 | 久久噜噜少妇网站 | 在线观看黄色的网站 | 国内精品久久久久久久 | 伊人欧美 | 高清视频一区二区三区 | 国内精品久久久久久久久久久 | 国产美女视频免费观看的网站 | 日本在线观看中文字幕无线观看 | 国产成人精品一区二区三区 | 国产无遮挡又黄又爽在线观看 | 欧美午夜一区二区福利视频 | 久久综合欧美 | 国产一区福利在线 | 精品一区精品二区高清 | 日韩电影精品一区 | 狠狠色噜噜狠狠狠狠 | 久久久综合九色合综国产精品 | 日日夜夜婷婷 | 国产午夜精品在线 | 精品久久免费 | 亚洲欧美日本一区二区三区 | 国产清纯在线 | 免费人成在线观看网站 | 亚洲国产片 | 国产r级在线观看 | 成人在线视频在线观看 | 色综合天天综合 | 国产精品精品久久久久久 | 久久精品毛片基地 | 免费在线观看毛片网站 | 91禁在线观看 | 又粗又长又大又爽又黄少妇毛片 | 成人精品视频久久久久 | 免费看黄网站在线 | 色播五月激情五月 | 欧美激情xxxx性bbbb | 在线观看午夜 | 免费久久网| 91精品久久久久久综合乱菊 | 国产真实精品久久二三区 | 久久久久二区 | av日韩在线网站 | 91成品人影院 | 日韩精品欧美专区 | 国产a精品 | 91视频 - x99av| 综合网天天射 | 97国产超碰在线 | 日韩欧美视频免费在线观看 | www五月天 | 91一区二区三区久久久久国产乱 | 日韩高清不卡一区二区三区 | 蜜桃视频在线观看一区 | 国产成人91| 欧美一区二区三区激情视频 | 美女视频黄频大全免费 | 日本少妇视频 | 久精品一区 | 精品资源在线 | 99久久婷婷国产 | 黄色在线观看网站 | 色视频网站在线 | 久久人人爽人人片 | 日本中文字幕在线播放 | 国际精品久久 | 夜夜狠狠 | 精品国产午夜 | 国产精品18久久久久久久网站 | 亚洲色影爱久久精品 | 国产五月色婷婷六月丁香视频 | 国产三级在线播放 | 精品一区免费 | www.亚洲黄| 国产黄在线播放 | 国产96在线 | 亚洲爽爽网 | 91在线视频网址 | 午夜.dj高清免费观看视频 | 日韩欧美xxx | 成人h视频在线播放 | 超碰在线最新网址 | 成人黄色免费在线观看 | 国产精品视频专区 | 亚洲欧美日韩一二三区 | 久久麻豆视频 | 日韩欧美电影在线观看 | 99免费在线播放99久久免费 | 成人黄色小说在线观看 | 97在线观看免费高清完整版在线观看 | 99热网站| 在线成人免费av | 国产日本在线播放 | 91精品久久久久久综合乱菊 | 99r在线| 欧美日韩高清一区二区 国产亚洲免费看 | 在线国产91 | 久久久五月婷婷 | 夜夜躁日日躁狠狠躁 | 四虎影视成人精品国库在线观看 | 亚洲国产午夜精品 | 在线香蕉视频 | 黄色www在线观看 | 99久高清在线观看视频99精品热在线观看视频 | 国产麻豆精品95视频 | 碰超人人 | 欧美激情视频久久 | 91porny九色91啦中文 | 久久高视频| 超碰.com| 国产在线 一区二区三区 | 丝袜美女在线 | 久久综合免费视频影院 | 国产视频午夜 | 国产精品福利一区 | 九九免费在线视频 | 色综合婷婷 | 香蕉97视频观看在线观看 | 五月天免费网站 | 天堂在线一区 | 激情久久影院 | 在线免费观看国产视频 | 亚洲婷久久 | 日本最新高清不卡中文字幕 | 在线黄色免费av | 日本中文字幕电影在线免费观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品色婷婷视频 | 色九九视频 | 成人试看120秒 | 亚洲 综合 激情 | 欧美日韩精品在线免费观看 | av视屏在线播放 | 久久视频国产 | 欧美日韩不卡一区 | 四虎5151久久欧美毛片 | 黄色毛片在线 | 天堂av在线网站 | 亚一亚二国产专区 | 成年人免费观看在线视频 | 91少妇精拍在线播放 | 久久高清免费视频 | 91亚洲国产 | 日韩一级黄色大片 | 在线免费观看一区二区三区 | 91桃色视频 | 中国成人一区 | 久久久久国产成人免费精品免费 | 欧美激情综合五月色丁香 | 国产午夜麻豆影院在线观看 | 免费在线观看一区二区三区 | av资源免费观看 | 久久夜色精品国产欧美乱极品 | 最新av在线播放 | 成人欧美亚洲 | 国产日产欧美在线观看 | 伊人婷婷综合 | 欧美精品久久久久久久久久久 | 久久一精品 | 午夜 免费| 欧美精品一区二区三区四区在线 | 欧美一级视频免费看 | 欧美激情在线网站 | 粉嫩av一区二区三区免费 | 久久av电影 | 婷五月激情 | 四虎影视精品永久在线观看 | 天天干天天操天天搞 | 久久精品第一页 | 天天干 天天摸 天天操 | 亚洲精品综合久久 | 黄色一区二区在线观看 | 亚洲在线网址 | 97碰碰碰 | 久久国产精品视频免费看 | 91人人插| 麻豆91精品视频 | 天堂网一区二区 | 超碰999| 大型av综合网站 | 天天色视频 | 欧美在线一 | 91在线视频免费观看 | 欧美日韩国产在线 | 四虎8848免费高清在线观看 | 久久久久夜色 | 天天人人综合 | 波多野结衣小视频 | 99久久精品免费看国产 | 亚洲最新av | 东方av在线免费观看 | 成人黄色小视频 | 三级黄色理论片 | 青青啪 | 日日夜夜干| 国产日韩欧美中文 | 国产视频一区精品 | 狠狠做深爱婷婷综合一区 | 久久不卡电影 | 欧美另类交在线观看 | 成年人天堂com | 在线观看一区视频 | 久久99久久99精品免费看小说 | 免费色视频 | 久久久精品免费看 | 精品国产免费人成在线观看 | 久久国产电影 | 午夜在线日韩 | 国产免费成人av | 成人av高清在线观看 | 在线看国产日韩 | av一级片 | 西西444www大胆高清视频 | 探花在线观看 | 亚洲免费成人av电影 | 中文字幕丝袜美腿 | 超级碰碰碰碰 | 久久免费美女视频 | 国产精品麻豆视频 | 精品国产观看 | 国产精品亚洲片夜色在线 | 美女网站视频免费黄 | 日韩美精品视频 | 国产精品久久久久久久久久 | 人人舔人人| 狠狠干电影 | 国产视频在线免费观看 | 久久精品视频在线免费观看 | 国产精品久久毛片 | 精品亚洲国产视频 | 亚洲无吗天堂 | av字幕在线 | 久久er99热精品一区二区三区 | 久久久久久久国产精品 | 欧美一区二区免费在线观看 | www.五月天激情 | 日本中文字幕在线免费观看 | 最新中文字幕视频 | 超碰电影在线观看 | 51久久成人国产精品麻豆 | 99在线热播精品免费99热 | 亚洲国产成人精品在线观看 | 欧美 日韩 性 | 在线观看自拍 | 97免费在线观看 | 亚洲理论在线观看 | 国产一二区视频 | 狠狠干婷婷色 | 亚洲午夜精品久久久久久久久久久久 | 操操操日日日干干干 | 丁香六月在线 | 久久精品亚洲一区二区三区观看模式 | 成人一区不卡 | 欧美一区二区在线看 | 天天干天天综合 | 在线观看视频一区二区三区 | www91在线观看| 在线视频手机国产 | 国产精久久久久久妇女av | 久久爱992xxoo | 日韩免费成人av | 日韩免费播放 | 涩涩伊人 | 国产精品1024 | 一区二区三区在线免费 | 成人欧美亚洲 | 色射爱| 西西www4444大胆视频 | 久久综合久久综合九色 | 2021国产精品视频 | 色婷婷九月| 五月婷婷在线视频观看 | 婷婷干五月 | 在线亚洲欧美日韩 | 97精品国产手机 | www欧美色 | 青青河边草免费直播 | 色综合人人 | 国产精品久久久久婷婷二区次 | 国产成人精品亚洲 | 波多在线视频 | 久久国产精品色婷婷 | 91精选在线观看 | 一区三区在线欧 | 手机av在线网站 | 黄网站app在线观看免费视频 | 欧美一级片在线观看视频 | 久久精品99国产精品日本 | 久久久国产精品久久久 | 五月婷婷六月丁香在线观看 | 久久av观看| 三级黄色免费片 | 又黄又爽又色无遮挡免费 | 日韩精品一区二区电影 | 午夜久久福利影院 | 亚洲成人二区 | 亚洲婷婷丁香 | 久久九九久久 | 91香蕉视频在线下载 | 成人免费视频网站在线观看 | av在线影片 | 日本在线观看一区二区三区 | 免费日韩高清 | 日韩精品亚洲专区在线观看 | 久久精品激情 | 91在线免费观看国产 | 国产一级片久久 | av电影免费在线看 | 久久全国免费视频 | 精品视频免费看 | 一区二区三区国产精品 | 日韩一级黄色片 | 欧美精品一区二区在线播放 | 天天干夜夜爱 | 久久免费福利视频 | 黄色一级免费网站 | 玖玖在线观看视频 | 91麻豆精品国产自产在线游戏 | 国产精品国产毛片 | h网站免费在线观看 | 久久久久中文字幕 | 久久久久亚洲精品男人的天堂 | a午夜在线 | 97天天干 | 五月天丁香视频 | 成人免费视频网站 | 狂野欧美激情性xxxx欧美 | 欧美在线视频一区二区三区 | 夜夜爽天天爽 | 天堂av免费观看 | 国产欧美日韩视频 | 欧美一级黄色视屏 | 久久国产精品久久久久 | 国产精品123 | 99热九九这里只有精品10 | 在线观看免费成人av | 久久都是精品 | 九九热只有精品 | 天天综合网久久 | 青青草在久久免费久久免费 | 4438全国亚洲精品观看视频 | 精品国产一区二区三区在线 | 日日夜夜综合 | 欧美一级免费高清 | 88av色| 久久成人亚洲欧美电影 | 日韩av在线不卡 | 日韩成人精品一区二区 | 欧美日韩国产一区二区在线观看 | 国产精品麻豆三级一区视频 | www.伊人网 | 久久草av | 人人草人人草 | 国产精久久久久久妇女av | 欧美在线视频一区二区三区 | 天天爽天天爽 | 免费观看福利视频 | 欧美视频国产视频 | 久久tv| 在线观看中文字幕一区 | 日韩在线视频网址 | 九九九九九九精品 | 手机看片午夜 | 国产精品理论片 | 国内外激情视频 | 99视频在线精品国自产拍免费观看 | 成人免费观看电影 | 999久久a精品合区久久久 | 国产一卡久久电影永久 | 午夜精选视频 | 999热视频| 国产精品一区二区久久 | 日本护士三级少妇三级999 | www视频免费在线观看 | 香蕉视频最新网址 | 亚洲欧美国产视频 | 色悠悠久久综合 | 在线视频 91 | 久久综合亚洲鲁鲁五月久久 | 欧美成人日韩 | 精品国产伦一区二区三区观看说明 | 精品一区二区综合 | 玖玖精品在线 | 九九视频在线 | 久久99国产精品免费 | 天天躁天天操 | www日| 99精品黄色片免费大全 | 制服丝袜亚洲 | 97超碰人人澡人人 | 日韩av片无码一区二区不卡电影 | 日韩伦理片hd | 麻豆传媒视频在线 | 精品久久久久久久久中文字幕 | 国产日韩精品欧美 | 成年人免费电影 |