九九99在线视频-九九99香蕉在线视频美国毛片-九九99热久久精品在线9-九九99热-九九99久久精品在免费线bt-九九99久久

以文本方式查看主題

-  曙海教育集團(tuán)論壇  (http://www.adgdgn.cn/bbs/index.asp)
--  WinCE系統(tǒng)定制與驅(qū)動(dòng)開發(fā)  (http://www.adgdgn.cn/bbs/list.asp?boardid=36)
----  WINCE下的USB驅(qū)動(dòng)開發(fā)  (http://www.adgdgn.cn/bbs/dispbbs.asp?boardid=36&id=1819)

--  作者:wangxinxin
--  發(fā)布時(shí)間:2010-11-26 10:53:36
--  WINCE下的USB驅(qū)動(dòng)開發(fā)

首先USB加載式流接口驅(qū)動(dòng)要點(diǎn)分析

為了支持不同類型的外圍設(shè)備,WinCE平臺(tái)提供了具有定制接口的流接口驅(qū)動(dòng)程序模型。因?yàn)榇蟛糠諹SB外圍設(shè)備由于功能性更適合流接口驅(qū)動(dòng)的結(jié)構(gòu),所以一般都采用加載式流接口驅(qū)動(dòng)程序模型來開發(fā)USB設(shè)備驅(qū)動(dòng)程序。

(1)USB系統(tǒng)結(jié)構(gòu)分析
WinCE下USB系統(tǒng)軟件由兩層組成:較高USB設(shè)備驅(qū)動(dòng)程序?qū)雍洼^低的USB函數(shù)層。較低的USB函數(shù)層本身又由兩部分組成:較高的通用串行總線驅(qū)動(dòng)程序(USBD)模塊和較低的主控制器驅(qū)動(dòng)程序(HCD)模塊。通過HCD模塊功能和USBD模塊實(shí)現(xiàn)高層的USBD接口函數(shù),USB設(shè)備驅(qū)動(dòng)程序就能與外圍設(shè)備進(jìn)行通訊。

在數(shù)據(jù)傳輸?shù)倪^程中,操作流程通常按下列的次序進(jìn)行:①USB設(shè)備驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)傳輸?shù)某跏蓟赐ㄟ^USBD接口函數(shù)給USBD模塊發(fā)送數(shù)據(jù)傳輸?shù)恼?qǐng)求。②USBD模塊將該請(qǐng)求分成一些單獨(dú)的事務(wù)。③HCD模塊排出事務(wù)次序。④主控制器硬件執(zhí)行事務(wù)。這里需要提醒的是,所有的事務(wù)都是從主機(jī)發(fā)出的,外圍設(shè)備完全是被動(dòng)接受型的。

(2)USB設(shè)備驅(qū)動(dòng)程序入口點(diǎn)函數(shù)
從結(jié)構(gòu)分析我們可知,所有的USB設(shè)備驅(qū)動(dòng)程序必須在它們的DLL庫設(shè)置一定的入口點(diǎn)與USBD模塊進(jìn)行適當(dāng)?shù)慕换ァTO(shè)置入口點(diǎn)函數(shù)有兩個(gè)作用:一是使得 USBD 模塊能與外部設(shè)備交互;二是使得驅(qū)動(dòng)程序能創(chuàng)建和管理任何可能需要的注冊(cè)鍵。

下面簡要介紹相關(guān)函數(shù)的作用:USBDeviceAttach是當(dāng) USB 設(shè)備連接到主計(jì)算機(jī)時(shí)運(yùn)行,USBD模塊會(huì)調(diào)用這個(gè)函數(shù)初始化USB設(shè)備,取得USB設(shè)備信息和配置USB設(shè)備,并且申請(qǐng)必需的資源。 USBInstallDrive是在第一次加載USB設(shè)備驅(qū)動(dòng)程序時(shí)首先被調(diào)用,它使得驅(qū)動(dòng)程序能創(chuàng)建需要的注冊(cè)鍵,用于將一個(gè)驅(qū)動(dòng)程序所需的注冊(cè)表信息寫入到HKEY_LOCAL_MACHINE\\Drivers\\USB\\ClientDrivers目錄下,例如設(shè)備名稱等。需要注意的是,USB設(shè)備驅(qū)動(dòng)程序不使用標(biāo)準(zhǔn)的注冊(cè)表函數(shù),而是使用RegisterClientDriverID()、RegisterClientSettings()函數(shù)來注冊(cè)相應(yīng)的設(shè)備信息。

USBUninstallDriver是在用戶刪除USB設(shè)備驅(qū)動(dòng)程序時(shí)調(diào)用,負(fù)責(zé)刪除注冊(cè)鍵并釋放其它相關(guān)資源。它通過調(diào)用 UnRegisterClientSettings()和UnRegisterClientDriverID()函數(shù)來刪除由驅(qū)動(dòng)程序的 USBInstallDriver()函數(shù)創(chuàng)建的所有注冊(cè)鍵。因此,我們?cè)隍?qū)動(dòng)程序中就需要嚴(yán)格按照這三個(gè)函數(shù)的原型來實(shí)現(xiàn),否則就不能為設(shè)備管理器所識(shí)別。

3.USB設(shè)備流接口驅(qū)動(dòng)的實(shí)現(xiàn)步驟

從WinCE USB設(shè)備驅(qū)動(dòng)模型及結(jié)構(gòu)分析中,我們可以清晰的看到主機(jī)和外設(shè)之間的實(shí)現(xiàn)方式。在主機(jī)端,通過USBD模塊和HCD模塊使用默認(rèn)的PIPE訪問一個(gè)通用的邏輯設(shè)備,實(shí)際上就是說USBD和HCD是一組訪問所有USB設(shè)備的邏輯接口,它們負(fù)責(zé)管理所有USB設(shè)備的連接、加載、移除、數(shù)據(jù)傳輸和通用配置。其中HCD是主機(jī)控制驅(qū)動(dòng),是為USBD提供底層的功能訪問服務(wù),USBD是USB總線驅(qū)動(dòng),位于HCD的上層,利用HCD的服務(wù)提供較高層次的功能。因此,實(shí)現(xiàn)USB加載流驅(qū)動(dòng)程序大致需要完成以下步驟:

(1)選擇代表設(shè)備的文件名前綴。前綴非常重要,設(shè)備管理器在注冊(cè)表中通過前綴來識(shí)別設(shè)備。同時(shí),在流接口命名時(shí)也將這個(gè)前綴作為入口點(diǎn)函數(shù)的前綴,如果設(shè)備前綴為XXX,那么流接口對(duì)應(yīng)為XXX_Close,XXX_Init等。

(2)設(shè)置驅(qū)動(dòng)的各個(gè)入口點(diǎn)函數(shù)。所謂入口點(diǎn)是指提供給設(shè)備管理器的標(biāo)準(zhǔn)文件I/O接口。在生成一個(gè)DLL后,就用設(shè)備文件名前綴替換名字中的XXX。因此,每個(gè)加載式流接口驅(qū)動(dòng)程序必須實(shí)現(xiàn)XXX_Init()、XXX_IOControl()以及XXX_PowerUp()等一組標(biāo)準(zhǔn)的函數(shù),用來完成標(biāo)準(zhǔn)的文件I/O函數(shù)和電源管理等。

(3)建立.DEF文件。當(dāng)設(shè)備管理器初始化USB設(shè)備編譯出來的流接口函數(shù)后,還必須建立一個(gè).def文件。DEF文件定義了DLL要導(dǎo)出的接口集,而且加載式流驅(qū)動(dòng)大多是以DLL形式存在的,所以應(yīng)將DLL和DEF的文件名統(tǒng)一起來。DEF文件告訴鏈接程序需要輸出什么樣的函數(shù),最后將驅(qū)動(dòng)程序編譯到內(nèi)核中去,這樣這個(gè)USB設(shè)備流接口驅(qū)動(dòng)程序就可以被應(yīng)用程序調(diào)用。

(4)在注冊(cè)表中為驅(qū)動(dòng)程序建立表項(xiàng)。在注冊(cè)表中建立驅(qū)動(dòng)程序入口點(diǎn),這樣設(shè)備管理器才能識(shí)別和管理這個(gè)驅(qū)動(dòng)。此外,注冊(cè)表中還能存儲(chǔ)額外的信息,這些信息可以在驅(qū)動(dòng)運(yùn)行之后被使用到。

在這次USB驅(qū)動(dòng)開發(fā)過程中,錯(cuò)走許多冤枉路使我叫苦連天。我感受最深的是由于WinCE提供了通用串行總線驅(qū)動(dòng)程序(USBD)模塊、USBD接口函數(shù)全集、樣本主機(jī)控制器驅(qū)動(dòng)程序(HCD)模塊。所以,我們只需要根據(jù)USB設(shè)備硬件特性,利用USBD提供的不同函數(shù),實(shí)現(xiàn)流接口函數(shù)與外圍設(shè)備的交互。在沒有特別的情況下,我最大的收獲經(jīng)驗(yàn)是把這些公用的源程序照搬過來,能極大的縮短開發(fā)周期,從而能更快速地進(jìn)行嵌入式開發(fā)。

隨著USB設(shè)備的普及,擺在開發(fā)人員面前的驅(qū)動(dòng)開發(fā)任務(wù)也是越來越繁重了,特別是對(duì)于一些嵌入式開發(fā)廠商來講,由于設(shè)備所采用的操作系統(tǒng)不同,相應(yīng)的硬件接口也是不一樣的,開發(fā)相關(guān)的USB 驅(qū)動(dòng)程序更是難上加難。Windows CE.NET 是微軟推出的功能強(qiáng)大的嵌入式操作系統(tǒng),國內(nèi)采用此操作系統(tǒng)的廠商已經(jīng)很多了,本文就以windows ce.net為例,簡單介紹一下如何開發(fā)windows ce.net下的USB驅(qū)動(dòng)程序。

首先要熟悉一些USB的基本概念,當(dāng)然最好把USB 1.1的協(xié)議看一遍,(當(dāng)然現(xiàn)在2。0的協(xié)議都已經(jīng)有了)http://www.usb.org
上可以下載,我記得好像有個(gè)中文版的,翻譯的還可以,http://www.driverdevolep.com
上有的,具體位置記不太清楚了,中文版的協(xié)議可以快速翻一邊,了解一些基本的概念,但是設(shè)計(jì)到一些關(guān)鍵性的東西最好還是看英文版的心里比較清楚些。

這里我就不介紹USB的基本協(xié)議了,假設(shè)用戶已經(jīng)熟悉了USB設(shè)備的一些基本的概念,并且對(duì)Winows CE.NET的開發(fā)有一定的了解。

下面簡略介紹一下Windows CE.NET中USB設(shè)備驅(qū)動(dòng)開發(fā)的一些基礎(chǔ)知識(shí)。

Windows CE.NET 的USB系統(tǒng)軟件分為兩層: USB Client設(shè)備驅(qū)動(dòng)程序和底層的Windows CE實(shí)現(xiàn)的函數(shù)層。USB設(shè)備驅(qū)動(dòng)程序主要負(fù)責(zé)利用系統(tǒng)提供的底層接口配置設(shè)備,和設(shè)備進(jìn)行通訊。底層的函數(shù)提本身又由兩部分組成,通用串行總線驅(qū)動(dòng)程序(USBD)模塊和較低的主控制器驅(qū)動(dòng)程序(HCD)模塊。HCD負(fù)責(zé)最最底層的處理,USBD模塊實(shí)現(xiàn)較高的USBD函數(shù)接口。USB設(shè)備驅(qū)動(dòng)主要利用 USBD接口函數(shù)和他們的外圍設(shè)備打交道。

USB設(shè)備驅(qū)動(dòng)程序主要和USBD打交道,所以我們必須詳細(xì)的了解USBD提供的函數(shù)。

主要的傳輸函數(shù)有:
AbourtTransfer   IssueControlTransfer
CloseTransfer    IssueInterrupTransfer
GetIsochResult   IssueIsochTransfer
GetTransferStatus  IstransferComplete
IssueBulkTransfer  IssueVendorTransfer

主要的用于打開和關(guān)閉USBD和USB設(shè)備之間的通信通道的函數(shù)有:
AbortPipeTransfers  ClosePipe
IsDefaultPipeHalted  IsPipeHalted
OpenPipe       ResetDefaultPipe
ResetPipe

相應(yīng)的打包函數(shù)接口有:
GetFrameLength   GetFrameNumber   ReleaseFrameLengthControl
SetFrameLength   TakeFrameLengthControl

取得設(shè)置設(shè)備配置函數(shù):
ClearFeature   SetDescriptor
GetDescriptor  SetFeature
GetInterface   SetInterface
GetStatus    SyncFrame

與USB進(jìn)行交互的實(shí)現(xiàn)方法相關(guān)的多任務(wù)函數(shù):
FindInterface         RegisterClientDeviceId
GetDeviceInfo         RegisterClientSettings
GetUSBDVersion         RegisterNotificationRoutine
LoadGenericInterfaceDriver   TranslateStringDescr
OpenClientRegisterKey     UnRegisterNotificationRoutine
常見的Windows CE.NET下USB的設(shè)備驅(qū)動(dòng)程序的編寫有以下幾種方法:

● 流式接口函數(shù)
這種驅(qū)動(dòng)程序主要呈現(xiàn)流式函數(shù)接口,主要輸出XXX_Init,XXX_Deinit,XXX_Open,XXX_Close,XXX_Open,XXX_Close,XXX_Read,XXX_Write,
XXX_Seek, XXX_IOControl,XXX_PowerUp,XXX_PowerDown等流式接口,注意上述的幾個(gè)接口一定都要輸出,另外XXX必須為三個(gè)字符,否則會(huì)出錯(cuò)。但是此類的驅(qū)動(dòng)程序不是通過設(shè)備管理接口來加載的,所以必須手工的調(diào)用RegisterDevice()和 DeregisterDevice()函數(shù)來加載和卸載驅(qū)動(dòng)程序。用戶可以將此類的設(shè)備作為標(biāo)準(zhǔn)的文件來操作,只要調(diào)用相應(yīng)的文件操作就可以和驅(qū)動(dòng)程序打交道。

● 使用現(xiàn)有的Window CE.NET的應(yīng)用程序接口
此類設(shè)備主要是利用Windows CE.NET中已經(jīng)有了現(xiàn)成的函數(shù)接口,例如USB Mass Storage Disk,它主要利用現(xiàn)有的Windows CE.Net中已經(jīng)有的可安裝文件系統(tǒng)接口,呈現(xiàn)給系統(tǒng)可用的文件系統(tǒng),對(duì)于用戶來講,它是透明的,用戶僅僅感覺在操作一個(gè)文件夾。

● 創(chuàng)建指定到特定的USBD的用戶指定的API
這種方法在USBD呈現(xiàn)設(shè)備時(shí)不需要任何限制,主要是特制的提供API給用戶,一般不太常見。


USB設(shè)備驅(qū)動(dòng)程序必須輸出的函數(shù)有:
● USBDeviecAttach
當(dāng)USB設(shè)備連接到計(jì)算機(jī)上時(shí),USBD模塊就會(huì)調(diào)用此函數(shù),這個(gè)函數(shù)主要用于初始化USB設(shè)備,取得USB設(shè)備信息,配置USB設(shè)備,并且申請(qǐng)必需的資源。
● USBInstallDriver
主要用于創(chuàng)建一個(gè)驅(qū)動(dòng)程序加載所需的注冊(cè)表信息,例如讀寫超時(shí),設(shè)備名稱等。
● USBUninstallDriver
主要用于釋放驅(qū)動(dòng)程序所占用的資源,以及刪除USBInstallDriver函數(shù)創(chuàng)建的注冊(cè)表等。
上述的三個(gè)函數(shù)接口是所有的USB驅(qū)動(dòng)程序必須提供的,缺一不可。
另外比較重要的是USB設(shè)備驅(qū)動(dòng)程序的注冊(cè)表配置,一般的USB設(shè)備驅(qū)動(dòng)程序的注冊(cè)表配置在HKEY_LOCAL_MACHINE\\Drivers\\USB \\LoadClients下,每個(gè)驅(qū)動(dòng)程序的子鍵都有Group1_ID\\Group2_ID\\Group3_ID\\DriverName格式,如果注冊(cè)表信息與USB設(shè)備信息符合,USBD就會(huì)加載此驅(qū)動(dòng)程序。否則設(shè)備的子鍵應(yīng)該由供應(yīng)商,設(shè)備類和協(xié)議信息通過下劃線組成。
具體的配置舉個(gè)例子:
例如你有個(gè)PDA設(shè)備,它具有一個(gè)USB接口,它的供應(yīng)廠商ID假設(shè)為0x0888,設(shè)備ID為0x0999,沒有使用特殊的協(xié)議,那么它的加載注冊(cè)表應(yīng)該寫為:
[HKEY_LOCAL_MACHINE\\Drivers\\USB\\LoadClients\\2184_2457\\Default\\Default\\PDA] "DLL"="pdausb.dll"
需要注意的是注冊(cè)表構(gòu)成都是十進(jìn)制數(shù)值來標(biāo)識(shí)的,注意一下十進(jìn)制和十六進(jìn)制的轉(zhuǎn)換。
再舉個(gè)USB鼠標(biāo)的例子,USB鼠標(biāo)是標(biāo)準(zhǔn)的HID設(shè)備,它的協(xié)議為:InterfaceClassCode為3(HID類), InterfaceSubclassCode為1(引導(dǎo)接口類),InterfaceProtocolCode為2(鼠標(biāo)協(xié)議類),所以它的注冊(cè)如下:
[HKEY_LOCAL_MACHINE\\Drivers\\USB\\LoadClients\\Default\\Default\\3_1_2\\USBMouse] "DLL"="usbmouse.dll"

到此為止,我們可以看出,其實(shí)驅(qū)動(dòng)開發(fā)無非做兩件事情,一件是和硬件打交道,另外一件是和操作系統(tǒng)打交道。舉個(gè)簡單的例子,例如:我們需要開發(fā)一個(gè)USB鼠標(biāo)驅(qū)動(dòng)程序,我們就需要了解USB鼠標(biāo)硬件上是怎么發(fā)送數(shù)據(jù)的?操作系統(tǒng)怎么才能得到鼠標(biāo)的控制事件?其實(shí)USB鼠標(biāo)是有一個(gè)中斷PIPE的,用于傳送鼠標(biāo)產(chǎn)生的數(shù)據(jù),Windwos CE.NET中有個(gè)接口函數(shù)叫做mouse_event(),專門用于產(chǎn)生鼠標(biāo)事件,但是它是不關(guān)心具體什么硬件的,甚至我們自己在應(yīng)用程序中調(diào)用這個(gè)函數(shù)都可以實(shí)現(xiàn)模擬鼠標(biāo),對(duì)應(yīng)的有個(gè)keybd_event(),用于產(chǎn)生鍵盤事件,知道了這個(gè)就好辦多了,只要將相應(yīng)的數(shù)據(jù)轉(zhuǎn)換一下,調(diào)用一下 mouse_event()即可

例如我們有個(gè)USB Mouse設(shè)備,設(shè)備信息描述如下:
Device Descriptor:
bcdUSB: 0x0100
bDeviceClass: 0x00
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x08 (8)
idVendor: 0x05E3 (Genesys Logic Inc.)
idProduct: 0x0001
bcdDevice: 0x0101
iManufacturer: 0x00
iProduct: 0x01
iSerialNumber: 0x00
bNumConfigurations: 0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Low
Device Address: 0x02
Open Pipes: 1

Endpoint Descriptor:
bEndpointAddress: 0x81
Transfer Type: Interrupt
wMaxPacketSize: 0x0003 (3)
bInterval: 0x0A

可以看出上述設(shè)備有一個(gè)中斷PIPE,包的最大值為3。可能有人問上述的值怎么得到的,win2k 的DDK中有個(gè)usbview的例程,編譯一下,將你的USB設(shè)備插到PC機(jī)的USB口中,運(yùn)行usbview.exe即可看得相應(yīng)的設(shè)備信息。

有了這些基本信息,就可以編寫USB設(shè)備了,首先聲明一下,下面的代碼取自微軟的USB鼠標(biāo)樣本程序,版權(quán)歸微軟所有,此處僅僅借用來描述一下USB鼠標(biāo)驅(qū)動(dòng)的開發(fā)過程,讀者如需要引用此代碼,需要得到微軟的同意。

首先,必須輸出USBD要求調(diào)用的三個(gè)函數(shù),首先到設(shè)備插入到USB端口時(shí),USBD會(huì)調(diào)用USBDeviceAttach()函數(shù),相應(yīng)的代碼如下:
extern "C" BOOL
USBDeviceAttach(
USB_HANDLE hDevice, // USB設(shè)備句柄
LPCUSB_FUNCS lpUsbFuncs, // USBDI的函數(shù)集合
LPCUSB_INTERFACE lpInterface, // 設(shè)備接口描述信息
LPCWSTR szUniqueDriverId, // 設(shè)備ID描述字符串。
LPBOOL fAcceptControl, // 返回TRUE,標(biāo)識(shí)我們可以控制此設(shè)備, 反之表示不能控制
DWORD dwUnused)
{
*fAcceptControl = FALSE;
// 我們的鼠標(biāo)設(shè)備有特定的描述信息,要檢測(cè)是否是我們的設(shè)備。
if (lpInterface == NULL)
return FALSE;
// 打印相關(guān)的USB設(shè)備接口描述信息。
DEBUGMSG(ZONE_INIT,(TEXT("USBMouse: DeviceAttach, IF %u, #EP:%u, Class:%u, Sub:%u,Prot:%u\\r\\n"), lpInterface->Descriptor.bInterfaceNumber,lpInterface->Descriptor.bNumEndpoints, lpInterface->Descriptor.bInterfaceClass,lpInterface->Descriptor.bInterfaceSubClass,lpInterface->Descriptor.bInterfaceProtocol));
// 初試數(shù)據(jù)USB鼠標(biāo)類,產(chǎn)生一個(gè)接受USB鼠標(biāo)數(shù)據(jù)的線程
CMouse * pMouse = new CMouse(hDevice, lpUsbFuncs, lpInterface);
if (pMouse == NULL)
return FALSE;

if (!pMouse->Initialize())
{
delete pMouse;
return FALSE;
}

// 注冊(cè)一個(gè)監(jiān)控USB設(shè)備事件的回調(diào)函數(shù),用于監(jiān)控USB設(shè)備是否已經(jīng)拔掉。
(*lpUsbFuncs->lpRegisterNotificationRoutine)(hDevice,
USBDeviceNotifications, pMouse);

*fAcceptControl = TRUE;
return TRUE;
}

第二個(gè)函數(shù)是 USBInstallDriver()函數(shù),
一些基本定義如下:
const WCHAR gcszRegisterClientDriverId[] = L"RegisterClientDriverID";
const WCHAR gcszRegisterClientSettings[] = L"RegisterClientSettings";
const WCHAR gcszUnRegisterClientDriverId[] = L"UnRegisterClientDriverID";
const WCHAR gcszUnRegisterClientSettings[] = L"UnRegisterClientSettings";
const WCHAR gcszMouseDriverId[] = L"Generic_Sample_Mouse_Driver";

函數(shù)接口如下:
extern "C" BOOL
USBInstallDriver(
LPCWSTR szDriverLibFile) // @parm [IN] - Contains client driver DLL name
{
BOOL fRet = FALSE;
HINSTANCE hInst = LoadLibrary(L"USBD.DLL");

// 注冊(cè)USB設(shè)備信息
if(hInst)
{
LPREGISTER_CLIENT_DRIVER_ID pRegisterId = (LPREGISTER_CLIENT_DRIVER_ID)
GetProcAddress(hInst, gcszRegisterClientDriverId);

LPREGISTER_CLIENT_SETTINGS pRegisterSettings =
(LPREGISTER_CLIENT_SETTINGS) GetProcAddress(hInst,
gcszRegisterClientSettings);

if(pRegisterId && pRegisterSettings)
{
USB_DRIVER_SETTINGS DriverSettings;

DriverSettings.dwCount = sizeof(DriverSettings);

// 設(shè)置我們的特定的信息。
DriverSettings.dwVendorId = USB_NO_INFO;
DriverSettings.dwProductId = USB_NO_INFO;
DriverSettings.dwReleaseNumber = USB_NO_INFO;

DriverSettings.dwDeviceClass = USB_NO_INFO;
DriverSettings.dwDeviceSubClass = USB_NO_INFO;
DriverSettings.dwDeviceProtocol = USB_NO_INFO;

DriverSettings.dwInterfaceClass = 0x03; // HID
DriverSettings.dwInterfaceSubClass = 0x01; // boot device
DriverSettings.dwInterfaceProtocol = 0x02; // mouse

fRet = (*pRegisterId)(gcszMouseDriverId);

if(fRet)
{


主站蜘蛛池模板: 成人福利视频在 | 一色一性一乱一交一视频 | 美女mm131爽爽爽 | 综合色在线视频 | 国产精品久久久久7777 | 一级免费a | 一级特黄aaa | 女同互慰高潮呻吟免费播放 | 性欧美18一19性猛交 | 91插插插影库永久免费 | 中国偷拍毛茸茸肥老熟妇 | 国产精品v亚洲精品v日韩精品 | 人人爽在线 | 亚洲精品一区二区三区高潮 | 秋霞一级黄色片 | 一区二区视频网站 | 久热这里只有精品视频6 | 欧美激情视频免费 | 黄色网址在线免费看 | 极品美女穴 | 国产精品高潮露脸在线观看 | 依人成人综合网 | 国产亚洲一区在线 | 欧美黄色精品 | 少妇偷乱偷乱视频在线 | 日本少妇激三级做爰在线 | 综合久久婷婷 | 国产精品久久久久7777按摩 | 亚洲精品黄色片 | 青青青国产精品一区二区 | 欧美二区乱c黑人 | 亚洲美女影院 | 中国少妇xxxⅹ性xxxx | 久久久www成人免费精品 | 中国久久| 国产日韩av免费无码一区二区三区 | 亚洲欧洲巨乳清纯 | 日本老妇高潮乱hd | 91黄色免费看 | 老头把女人躁得呻吟 | 伦理欧美| av一区二区三区四区 | 欧美三级影院 | 一级黄色网 | 国产69精品久久久久孕妇大杂乱 | 成人a毛片 | 国产精彩视频在线观看 | 亚洲天天综合网 | 亚洲精品国产精品国自产 | 日韩精品国产精品 | 日本免费成人 | 98堂 最新网名 | 国产女主播白浆在线观看 | 国色天香网www在线观看 | 最近高清中文字幕免费 | 天天撸在线视频 | ktv偷拍视频一区二区 | 99精品人妻无码专区在线视频区 | 亚洲精品国产免费 | 一级片免费网站 | 嫩草精品福利视频在线观看 | 国产一区二区三区精品在线观看 | 四色永久网站在线观看 | 成人视屏在线观看 | 国产aⅴ一区二区三区精华液 | 精品欧美一区二区精品久久久 | 大尺度做爰啪啪高潮床戏 | 国产91丝袜在线播放0 | 欧美成人三级在线视频 | 欧美xxxx在线 | 婷婷综合久久中文字幕蜜桃三电影 | 免费观看a级毛片在线播放 免费观看a级片 | 美女大量吞精在线观看456 | 最全aⅴ番号库 | 国产精品视频免费播放 | 国产福利资源在线 | 久久精品国产亚卅av嘿嘿 | 最新在线视频 | 97久久精品人人做人人爽 | 国产三a级三级日产三级野外 | 久久久精品一区二区三区 | 秋霞av亚洲一区二区三 | 欧美激情视频网址 | 成人小视频免费观看 | 毛毛毛片| 日韩精品一区二区不卡 | 少妇熟女高潮流白浆 | 国产精品av在线 | 欧美 亚洲 国产 另类 | 国产精品 高清 尿 小便 嘘嘘 | xvideos国产精品好深 | 亚洲精品乱码久久久久久日本 | 国产精品一品二区三区四区18 | 日操干| 国产精品乱码久久久久 | 欧州色网| 亚洲 自拍 另类小说综合图区 | 国产精品白浆一区二小说 | 亚洲综合图色40p | 免费黄色一级视频 | 国产午夜性爽视频男人的天堂 | 亚洲va欧美va久久久久久久 | 国产av一区最新精品 | 四虎影视在线 | 久久www免费人成看片好看吗 | 亚洲国产欧美一区二区潘金莲 | www日本三级 | caowo88国产欧美久久 | 成年在线视频 | 国产欧美日韩在线 | 999一区二区三区 | 久久国产精品福利一区二区三区 | 亚洲自拍99 | 乱淫a裸体xxxⅹ | 国内毛片毛片毛片毛片毛片毛片 | 亚洲aⅴ欧洲av国产综合图片 | 免费观看又色又爽又黄的传媒 | av无码精品一区二区三区宅噜噜 | 太粗太长太硬高潮了av | 漂亮瑜伽少妇高潮 | 中国xxxxx性按摩店 | 欧美福利社| 成人1啪啪 | 红桃视频成人传媒 | 97干在线 | 欧美色啪 | 一色综合 | 在线观看的黄色网址 | 国产日韩免费视频 | 亚洲日韩精品一区二区三区无码 | 国产性猛交xx乱老孕妇 | 午夜专区 | 性欧美jzjz2| 网站在线免费网站在线免费观看国产网页 | 自拍毛片 | 波多野结衣一区二区三区免费视频 | 亚洲精品在线观看视频 | 国产999精品久久久 国产999精品久久久久久 | 日韩精品在线观看免费 | a级小视频 | 中文字幕人妻无码专区app | 国产极品久久 | 人人澡澡人人 | 在线免费福利 | 久久精品a亚洲国产v高清不卡 | 琪琪色影音先锋 | 日本国产亚洲 | 性折磨bdsm欧美激情另类 | 免费看国产黄色片 | 久久草av| 欧美日韩一二 | 操操操操操操操操操 | 黄色国产网站 | 国产精品久久高潮呻吟粉嫩av | 国产午夜av| 久久99精品久久久秒播 | 国产精品第一国产精品 | 欧美99精品 | 亚洲欧美在线观看 | 亚洲黄色免费 | 男女做爰猛烈吃奶摸九色 | 国产做a | 国产ts三人妖大战直男 | 久久96国产精品久久99软件 | 国产人妻一区二区三区四区五区六 | 黄色国产一区 | 国产超级va在线观看视频 | 国产午夜亚洲精品羞羞网站 | 久久国产成人午夜av浪潮 | 羞羞网站在线看 | 超碰久操| 国产麻豆网 | 激情五月婷婷在线 | 极品粉嫩鲍鱼视频在线观看 | 久久久艹 | 一级大片黄色 | 92电影网午夜福利 | 国产亚洲精品久 | 超h高h肉h文教室学长男男视频 | 少妇视频在线播放 | 黄色成年网站 | 骚片av蜜桃精品一区 | 欧美aa大片欧美大片观看 | 二区影院 | 最新中文字幕久久 | 国自产拍偷拍精品 | 在线免费色视频 | 山村大伦淫第1部分阅读小说 | 午夜精品一区二区三区免费视频 | 波多野结衣一区二区三区高清 | 合欢视频在线观看 | 国产精品久久久久久久天堂 | 日本午夜免费福利视频 | 精品免费二区三区三区高中清不卡 | 叶子楣裸乳照无奶罩视频 | 久久久综合香蕉尹人综合网 | 成年女人18级毛片毛片免费 | 国产理论一区二区三区 | 亚洲精品观看 | 222aaa| 欧美日韩在线精品一区二区 | 久久国产精品免费一区二区三区 | 国产a级片免费看 | 日本va欧美va欧美va精品 | 少妇婷婷| 国产极品一区二区 | 中文字幕在线精品中文字幕导入 | 天堂久久综合 | 四虎影视4hu4虎成人 | 久久精品中文无码资源站 | 久久久一区二区三区四区 | 少妇浴室精油按摩2 | 在线永久免费观看黄网站 | 国产污污视频 | 国产最露的三级 | 俄罗斯少妇性高清ⅹxx | 欧美一级黄色片 | 精品欧美一区二区久久久 | 欧美性天天 | 白嫩大乳丰满美女白嫩白嫩 | 51精品国自产在线 | 亚洲综合色丁香婷婷六月图片 | 性做久久| 深夜福利网址 | 精品99在线观看 | 欧美一级少妇 | 久久久999成人 | 久久这里只有精品18 | а√ 天堂 在线官网 | 国产美女精品一区二区三区 | 69久久国产露脸精品国产 | 好紧好湿太硬了我太爽了视频 | 精品免费视频一区二区 | 国产精品亚洲一区二区三区喷水 | 女人裸体特黄做爰的视频 | 91啦中文| 欧美色欧美亚洲高清在线观看 | 国产自国产自愉自愉免费24区 | 青青免费视频 | 国产小受呻吟gv视频在线观看 | 少妇人妻邻居 | 国产97色在线 | 免 | 泽村玲子在线中文字幕 | 小辣椒福利视频导航 | 日日躁夜夜躁aaaaxxxx | 国产精品无码一区二区三区在 | 黄色一级视频网站 | 热久久亚洲 | 九九热免费在线视频 | 亚洲成人免费看 | 一交一性一色一伦一区二 | 亚洲成人黄色片 | 亚洲精品综合五月久久小说 | 久久久受www免费人成 | 秋霞网一区 | 久久婷婷国产91天堂综合精品 | 欧美性生活视频免费看 | 日本久久精品一区二区三区 | 成全世界免费高清观看 | 亚洲中文字幕无码一区 | 久久久国产精品久久久 | 图片区 小说区 区 亚洲五月 | 欧美日韩免费一区二区三区 | 91新视频 | 国产一级精品视频 | 天天操狠狠操夜夜操 | 高潮白浆女日韩av免费看 | 一级全黄裸体免费观看视频 | 日韩午夜一区二区在线精品三级伦理 | 免费无码又爽又刺激高潮视频 | 免费人成在线视频无码 | 国产成人精品亚洲777人妖 | 黑人上司好猛我好爽中文字幕 | 91超碰人人 | 国产精品久久久久久妇女6080 | 亚洲精品18在线观看 | 男女无遮挡激情视频 | 欧美日韩免费视频 | 国产露脸精品产三级国产 | 日韩 欧美 动漫 国产 制服 | 青青草手机在线视频 | 日本久久精品少妇高潮日出水 | 中文字幕人成乱码熟女 | 国产精品一区二区三区不卡 | 黄色一级大片在线观看 | 亚洲欧美国产精品18p | 正在播放欧美 | 午夜无码片在线观看影院 | 色老板精品视频在线观看 | 毛茸茸性xxxx毛茸茸毛茸茸 | 亚洲www.| 国产精品久久久久久精 | 国产成人精品日本亚洲专区 | 国产又黄又大又爽 | 黑人玩弄人妻中文在线 | 超碰九七在线 | 日韩精品中文字幕一区二区三区 | 亚洲黄色录像 | 天天操天天添 | 国产性生交大片免费 | 成人在线手机视频 | 亚洲色域网 | 依人成人网 | 久久人人爽人人爽人人片av东京热 | 亚洲乱码一区二区三区三上悠亚 | 在线不卡日本v二区到六区 免费又黄又爽又猛的毛片 特级西西人体444www高清大胆 | 日韩激情综合网 | 欧美性做爰毛片 | 国产青青在线 | 日本大乳奶做爰洗澡三级 | 国产精品igao视频网免费播放 | 久久久久久久国产视频 | 欧美三p | 天天干天天爽天天射 | 国产少妇露脸精品自啪网站 | 欧美疯狂做受xxxx高潮小说 | 狠狠噜天天噜日日噜 | 久久久久久片 | 午夜婷婷丁香 | 欧美精品一二三四区 | 肉色超薄丝袜脚交一区二区蜜av | 国产福利免费在线观看 | 亚洲欧美在线成人 | 婷婷av在线 | 国产成人亚洲欧洲在线 | 亚洲成人第一 | 涩视频在线观看 | 亚洲 变态 欧美 另类 捆绑 | 中文字幕一区在线播放 | 黄色av不卡 | www.国产成人 | 亚洲成av人片一区二区密柚 | 99精品国自产在线 | 午夜免费福利在线观看 | 中国毛片视频 | 国产特级毛片aaaaaa毛片 | 看毛片的网址 | www欧美色图 | 天天躁日日躁狠狠躁欧美老妇小说 | 亚洲一区二区图片 | 妞干网这里只有精品 | 污视频在线播放网站 | 成年午夜无码av片在线观看 | 精品自拍第一页 | 欧美超碰在线 | 肥臀浪妇太爽了快点再快点 | 美女啪啪av | 亚洲va欧美va国产综合先锋 | 黄色aaa| 天堂亚洲 | 日本大乳免费观看久久99 | 末发育娇小性色xxxx | 无码av免费一区二区三区试看 | a天堂资源 | 亚洲中久无码永久在线观看同 | a级港片免费完整在线观看 a级高清毛片 | 色爱综合网| 色网站在线观看 | 国产cd人妖ts在线观看 | 亚洲欧美天堂 | 日韩免费看片网站 | 国产免费一区二区三区香蕉精 | 久久综合伊人中文字幕 | 亚洲欧洲成人 | 黄色a级片在线观看 | 欧美午夜激情影院 | 少妇又紧又色又爽又刺激视频网站 | 精品无码国产av一区二区三区 | 一级黄色免费毛片 | 欧美人与动性xxxxx杂性 | 牛牛视频一区二区三区 | 日韩五码在线 | 一本大道无码日韩精品影视_ | 国产精品久久久久免费 | 少妇紧身牛仔裤裤啪啪 | 理论视频在线观看 | 久久精品aⅴ无码中文字字幕 | 国产成人无码av一区二区在线观看 | 夜夜爽夜夜叫夜夜高潮漏水 | 亚洲我不卡 | 精品无码一区二区三区 | 国产一区二区三区成人欧美日韩在线观看 | 天堂亚洲网 | 日日干夜夜骑 | 91狠狠狠狠狠狠狠狠 | 女优一区二区三区 | 夫妻毛片 | 无码人妻人妻经典 | 国产18毛片 | 无码中文av有码中文a | 在线超碰| 国产精久 | 鲁在线视频 | 欧美国产日韩久久 | 久操热久操| 欧美成人一区二区三区在线观看 | 一女二男3p波多野结衣 | 欧美特一级 | 久草福利网 | 国产精品成人免费视频一区二区 | 欧美在线黄 | 亚洲乱码一区二区 | 欧美精品乱码视频一二专区 | 日韩精品小视频 | 噼里啪啦大全免费观看 | 人禽伦免费交视频播放 | 亚洲精品一区久久久久久 | 亚洲欧美一区二区三区情侣bbw | 丰满少妇aaaaaa爰片毛片 | 爱情岛论坛av首页 | 久久综合一区二区 | 九九热免费精品视频 | 国产在线精品一区 | 国产黄色片免费在线观看 | 国产免费视频在线 | 日本sm/羞辱/调教/捆绑视频 | 色欲狠狠躁天天躁无码中文字幕 | 激情小说一区 | 九九自拍偷拍 | 亚洲精品视频免费在线观看 | 亚洲精品乱码久久久久久日本蜜臀 | 中国国语毛片免费观看视频 | 有码在线| 国内精品免费午夜又爽又色愉情 | 永久免费黄色片 | 一区二区精品在线观看 | 婷婷开心激情综合五月天 | 干一夜综合| 99re66热这里只有精品8 | 天天干中文字幕 | 日本高清免费毛片大全awaaa | 直接看的av网站 | 少妇太爽了在线观看免费 | 久久99精品久久久久久久青青日本 | 国产精品66 | 国产乱码精品一区二区三区中文 | 精品视频区| 精品日产卡一卡二卡麻豆 | 久久久精彩视频 | 欧美交换国产一区内射 | 少妇大叫太大太粗太爽了a片小说 | 成人综合网亚洲伊人 | 久久99热久久99精品 | mdyd—856冲田杏梨在线 | 一级特黄aa大片欧美 | 黄色av一级 | av日韩在线免费观看 | avhd101在线播放高清谜片 | 久久久国产精品人人片 | 久久久久一级 | 国产伦子沙发午休系列资源曝光 | 日韩欧美视频免费观看 | 91精品国产综合久久久蜜臀图片 | 国产中文字幕视频 | 污视频网站在线 | 久久精品综合视频 | 日日操中文字幕 | 一久久久 | 鸥美毛片 | 狠狠色噜噜狠狠狠888米奇视频 | 日本欧美一区 | 黄污视频在线播放 | 国产精品久久久久久婷婷 | av 日韩 人妻 黑人 综合 无码 | 奇米影视7777久久精品 | 成人免费视频软件网站 | 99热精这里只有精品 | www.国产色| 亚洲欧美另类久久久精品 | 久久精品aaaaaa羞羞羞 | 中文字幕最新 | 国产一区二区三区免费观看网站上 | 男女啪祼交视频 | 日韩av在线一区二区三区 | 8×8x8×8人成免费视频 | 欧美日韩精品一区二区三区在线 | 日韩欧美综合视频 | 国产精品久久久一区二区三区 | 国产欧美激情视频 | 国产亚洲福利 | 99国内精品久久久久久久 | 亚洲乱码在线 | 国产成人精品久久亚洲高清不卡 | 97精品伊人久久久大香线蕉 | 国产伦精品一区二区三区照片91 | 免费视频久久 | 色综合久久中文综合网 | 免费在线观看av | 女人大荫蒂毛茸茸视频 | 天堂网成人 | 欧美色婷婷 | 91麻豆精品久久久久蜜臀 | 成人网入口| 精品久久九九 | 国产中文区二暮区2022 | 大桥未久av一区二区三区中文 | 欧美激情一区二区视频 | 四色成人 | 97人妻成人免费视频 | 九九热在线视频观看 | 欧美人与禽猛交乱配 | 特级av片 | av在线一区二区三区四区 | 亚洲一区二区三区国产好的精华液 | 无码av天堂一区二区三区 | 久久国产一区二区三区 | 国产精品-色哟哟 | 国产成人 综合 亚洲欧美 | 久久zyz资源站无码中文动漫 | 国产精品区av | 手机看片99 | 亚洲情在线 | 中文精品久久 | 一区二区三区四区中文字幕 | 亚洲自拍天堂 | 亚洲精品亚洲人成人网 | a级毛片特级毛片 | 国产综合精品一区二区三区 | 国产乱子伦无套一区二区三区 | 黄色软件链接 | 欧美日韩成人免费看片 | 国产成人精品av | 中文字幕免费视频 | 韩国三级中文字幕 | 在线天堂在线 | 少妇又紧又大又色又爽视频 | 少妇高潮惨叫喷水在线观看 | 欧美变态绿帽cuckold | 国内精品久久久久久久日韩 | www91插插插| 91免费视频播放 | 国产日批| 黑人狂躁日本妞videos在哪里 | 一性一乱一乱一爱一频 | 中文不卡av | 久久久精品视频免费看 | 亚洲成人精品在线观看 | 一级全黄少妇性色生活片 | 麻豆理论片 | 午夜免费在线观看 | 国产三级网址 | 欧美性xxxx偷拍 | 中国一级特黄真人毛片免费观看 | 精品国产乱码久久久久久浪潮 | 日本高清www免费视频 | 亚洲第三区 | 2022亚洲无砖无线码天媒 | 日韩精品一区二区在线播放 | 隔壁老王国产在线精品 | 国产免费又爽又刺激在线观看 | 波多野结衣在线观看视频 | 丰满老熟女毛片 | 无码乱人伦一区二区亚洲一 | 亚洲国产一区二区三区在线观看 | 97成人资源| 欧美一级免费 | 18禁免费无码无遮挡不卡网站 | 成熟丰满少妇激情xxxx | 亚洲中又文字幕精品av | 1024av在线| 少妇性生活视频 | 日本无遮挡大尺度床戏网站 | 在线免费观看国产视频 | 67194av| 久久免费播放视频 | 毛茸茸性xxxx毛茸茸毛茸茸 | 亚洲国产成人精品激情在线 | 国模和精品嫩模私拍视频 | 国产亚洲欧美在线专区 | 国产精品丝袜久久久久久消防器材 | 中文字幕一区二区三区av | 欧美日韩久久久 | 久久九九久精品国产 | 亚洲欧美日韩一区在线观看 | 午夜精品久久久久久久蜜桃 | 国产精品亚洲一区二区三区喷水 | 粉嫩av一区二区三区免费看 | 欧美又大粗又爽又黄大片视频 | 蜜桃日本免费看mv免费版 | 国产精品久久777777 | 国产精品入口a级 | 人妖欧美一区二区三区 | 成人影片网址 | 小雪婷性欢爱全文阅读 | 国产色视频网站 | 黑人操日本女人视频 | 日本在线播放视频 | 国产偷自拍 | 中文字幕亚洲无线码 | 97久久人人超碰超碰窝窝 | 亚洲综合社区 | hodv一21134铃原爱蜜莉在线 | av大片在线| 国内少妇情人精品av | 久久一卡二卡三卡四卡 | 强壮公侵犯使我夜夜高潮 | 老司机成人永久免费视频 | 直接看的毛片 | 在线人成免费视频69国产 | 伊人网在线视频 | 国产乱xxxxx978国语对白 | 亚洲免费三区 | 亚洲另类伦春色综合图片 | 亚洲美女激情视频 | 色噜噜成人 | 欧美激情乱人伦 | 久久男人 | 亚洲国产精品成人久久 | 亚洲高清在线观看视频 | 亚洲欧美综合精品久久成人 | 久久精品无码一区二区三区免费 | 中国女人一级片 | 六月色丁 | 日本黄色大片免费 | 午夜综合网 |