《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > ISA數(shù)據(jù)采集卡的WDM驅(qū)動(dòng)程序?qū)崿F(xiàn)

ISA數(shù)據(jù)采集卡的WDM驅(qū)動(dòng)程序?qū)崿F(xiàn)

2008-11-18
作者:張 龍

  摘? 要: ISA設(shè)備在WINDOWS新的驅(qū)動(dòng)程序模型WDM(WINDOWS DRIVER MODEL)中沒(méi)有獲得很好的支持,使用WDM實(shí)現(xiàn)需要一些特殊處理。主要討論老式ISA設(shè)備的WDM驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)。

  關(guān)鍵詞: Windows驅(qū)動(dòng)程序模型(WDM)? 工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)? 數(shù)據(jù)采集

?

  WDM作為微軟為WINDOWS 2000及以后版本準(zhǔn)備的新驅(qū)動(dòng)模型,它可以在WINDOWS 98及以后的操作系統(tǒng)上共享。這種具有跨平臺(tái)性的設(shè)備驅(qū)動(dòng)模型可以大大簡(jiǎn)化驅(qū)動(dòng)程序的開(kāi)發(fā)工作。WDM支持PNP(即插即用),為用戶的PNP設(shè)備驅(qū)動(dòng)完成了大量的底層工作。這也使得WDM對(duì)各種老設(shè)備,特別是那些不具有即插即用特性硬件的支持明顯不足。在科研和工控中,最常用的數(shù)據(jù)采集卡通常都是基于PC總線的不能為PNP提供硬件支持的ISA設(shè)備。為這類硬件編寫非WDM驅(qū)動(dòng)程序只能局部支持PNP特性,而且需要做大量額外的工作如:必須檢測(cè)硬件,為硬件創(chuàng)建設(shè)備對(duì)象(用于代表硬件),配置并初始化硬件使其正常工作,這些工作非常復(fù)雜。利用WDM可以避免這些麻煩。

1 WDM的結(jié)構(gòu)

  WDM實(shí)際上是一個(gè)編寫驅(qū)動(dòng)程序的規(guī)范。其驅(qū)動(dòng)程序結(jié)構(gòu)的特點(diǎn)和WINDOWS程序設(shè)計(jì)的消息驅(qū)動(dòng)機(jī)制很相像,采用IRP驅(qū)動(dòng)機(jī)制。WINDOWS 98和WINDOWS 2000處理IRP的方式一樣,本質(zhì)卻完全不同。

  WINDOWS 2000主要由I/O" title="I/O">I/O管理器" title="管理器">管理器來(lái)管理驅(qū)動(dòng)程序的行為,管理的方法就是給驅(qū)動(dòng)程序發(fā)送各種IRP,同時(shí)I/O管理器還負(fù)責(zé)傳遞這個(gè)設(shè)備的用戶請(qǐng)求給驅(qū)動(dòng)程序。驅(qū)動(dòng)程序不能直接操作硬件設(shè)備,而是通過(guò)一個(gè)叫做HAL(硬件設(shè)備抽象層)的層來(lái)訪問(wèn)底層設(shè)備。HAL完成對(duì)各種硬件差異的屏蔽。Windows 98內(nèi)核與Windows 2000內(nèi)核有很大的差別。Windows 98操作系統(tǒng)內(nèi)核稱為虛擬機(jī)管理器(VMM)。虛擬設(shè)備驅(qū)動(dòng)程序" title="設(shè)備驅(qū)動(dòng)程序">設(shè)備驅(qū)動(dòng)程序(VxD)則使設(shè)備虛擬化,從而與虛擬機(jī)管理器形成虛擬機(jī)。Windows 9x的內(nèi)核不支持IRP,它通過(guò)模擬的方法支持WDM和IRP。Windows 98包含了NTKERN.VXD (VMM32.VXD)系統(tǒng)模塊,該模塊含有大量Windows NT內(nèi)核支持函數(shù)的Windows實(shí)現(xiàn)。NTKERN.VXD使用與Windows 2000相同的方式創(chuàng)建IRP并發(fā)送IRP到WDM驅(qū)動(dòng)程序。也就是說(shuō),Windows 98是使用VxD技術(shù)實(shí)現(xiàn)WDM的。盡管Windows 98和Windows 2000的內(nèi)核完全不同,但是WDM的結(jié)構(gòu)在Windows 98和2000下可以認(rèn)為是完全相同的。

  WDM驅(qū)動(dòng)程序面對(duì)的主要內(nèi)容是一系列內(nèi)核驅(qū)動(dòng)對(duì)象。這些對(duì)象包括驅(qū)動(dòng)對(duì)象、設(shè)備對(duì)象,還有一系列的資源抽象對(duì)象如中斷對(duì)象、適配器對(duì)象(處理DMA操作)、內(nèi)核模式派發(fā)器對(duì)象、控制器對(duì)象、推遲過(guò)程對(duì)象、定時(shí)器對(duì)象、設(shè)備隊(duì)列對(duì)象、回調(diào)對(duì)象等。其中驅(qū)動(dòng)對(duì)象由I/O管理器負(fù)責(zé)創(chuàng)建和管理。設(shè)備對(duì)象代表用戶需要操作的物理或者是邏輯設(shè)備。設(shè)備對(duì)象負(fù)責(zé)管理自己設(shè)備所需要的各種資源對(duì)象。這些資源對(duì)象有的代表真正的物理設(shè)備如中斷對(duì)象、適配器對(duì)象、定時(shí)器對(duì)象;有的對(duì)象則是邏輯對(duì)象,它們是操作系統(tǒng)實(shí)現(xiàn)自己的特性所必需的,如推遲過(guò)程調(diào)用就是與操作系統(tǒng)的搶占式多任務(wù)的實(shí)現(xiàn)有關(guān)。WDM驅(qū)動(dòng)程序利用IRP和這些對(duì)象完成硬件設(shè)備的抽象化,并對(duì)應(yīng)用程序提供統(tǒng)一操作接口。這就是所謂的WDM規(guī)范。

WDM驅(qū)動(dòng)程序的結(jié)構(gòu)很簡(jiǎn)單。它的主體是一個(gè)入口函數(shù)DriverEntry。DriverEntry的第一個(gè)參數(shù)是指針,指向一個(gè)剛被初始化的驅(qū)動(dòng)程序?qū)ο?該對(duì)象代表驅(qū)動(dòng)程序。WDM驅(qū)動(dòng)程序的DriverEntry例程" title="例程">例程完成對(duì)這個(gè)對(duì)象的初始化并返回。WDM驅(qū)動(dòng)程序的DriverEntry例程的主要工作是把各種函數(shù)指針填入驅(qū)動(dòng)程序?qū)ο蟆_@些指針為操作系統(tǒng)指明了驅(qū)動(dòng)程序容器中各種子例程的位置。它包括下面這些指針成員:

  ·DriverUnload 指向驅(qū)動(dòng)程序的清除例程。I/O管理器會(huì)在卸載驅(qū)動(dòng)程序前調(diào)用該例程。通常WDM驅(qū)動(dòng)程序的DriverEntry例程一般不分配任何資源,所以DriverUnload例程也沒(méi)有什么清除工作要做。

  ·DriverExtension->AddDevice 指向驅(qū)動(dòng)程序的AddDevice函數(shù)。AddDevice函數(shù)是WDM驅(qū)動(dòng)程序的一個(gè)特殊函數(shù),PNP管理器為每個(gè)設(shè)備實(shí)例調(diào)用該函數(shù)。它創(chuàng)建一個(gè)設(shè)備對(duì)象并把它連接到該驅(qū)動(dòng)程序的設(shè)備堆棧中。在這個(gè)函數(shù)里,設(shè)備對(duì)象被創(chuàng)建,設(shè)備需要的中斷、DMA等資源被掛接到這個(gè)設(shè)備對(duì)象上,相應(yīng)地處理函數(shù),如中斷服務(wù)例程等也被指定。

  ·DriverStartIo,如果驅(qū)動(dòng)程序使用標(biāo)準(zhǔn)的串行IRP,則必須使用這個(gè)函數(shù),使它指向驅(qū)動(dòng)程序的StartIo例程。

  ·MajorFunction是一個(gè)指針數(shù)組,它主要處理各種用戶的I/O請(qǐng)求IRP。默認(rèn)情況下,用戶的所有I/O請(qǐng)求都會(huì)由I/O管理器返回失敗。驅(qū)動(dòng)程序?yàn)橐幚淼腎RP指定相應(yīng)的派遣函數(shù)。

  此外,還有一些重要的例程如用于處理中斷操作的中斷服務(wù)例程,為了提高系統(tǒng)中斷處理效率的中斷服務(wù)推遲調(diào)用例程等。

  驅(qū)動(dòng)程序的其余部分就是前面所指定的那些例程的實(shí)現(xiàn)。

2 為ISA設(shè)備分配資源

  雖然WDM驅(qū)動(dòng)程序可以簡(jiǎn)化很多工作,但是給ISA設(shè)備編寫WDM驅(qū)動(dòng)程序也有困難。這個(gè)困難是ISA設(shè)備所需資源的分配問(wèn)題。根據(jù)PNP的規(guī)范,支持PNP的設(shè)備如PCI總線設(shè)備有相應(yīng)的寄存器標(biāo)識(shí)自己和自己可以接受的資源,如中斷、端口范圍、內(nèi)存范圍等,并且有相應(yīng)的邏輯支持配置資源。這使得操作系統(tǒng)啟動(dòng)過(guò)程中可以動(dòng)態(tài)地規(guī)劃和調(diào)整各個(gè)設(shè)備的資源而不需要用戶的干預(yù)。為了使ISA設(shè)備具有這種PNP的特性,可以通過(guò)PNP管理器和INF文件完成ISA設(shè)備的自動(dòng)資源分配。PNP管理器(PNP MANAGER)依賴INF文件完成PNP管理。INF文件為設(shè)備、設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)的安裝過(guò)程提供信息(包括PNP MANAGER)。為了兼容非PNP設(shè)備,INF文件支持幾個(gè)命令為設(shè)備分配資源。這些信息被提供給PNP管理器,并且被PNP管理器用來(lái)與系統(tǒng)其它部分協(xié)商以完成非PNP設(shè)備的自動(dòng)資源分配。LOGCONFIG為設(shè)備制定一個(gè)可選的資源設(shè)定。還有相關(guān)的IRQCONFIG、IOCONFIG、DMACONFIG、MEMCONFIG子命令,它們?yōu)樵O(shè)備指定具體的可選資源。語(yǔ)法如下:

????[]

  ConfigPriority=

  [DMAConfig=]

  [IOConfig=]

  [IRQConfig=]

  [MemConfig=]

  其中CONFIGPRIOITY命令指定這個(gè)LOGCONFIG項(xiàng)的優(yōu)先級(jí)。其余子命令表示設(shè)備選用的硬件資源。下面是一個(gè)例子:

????[CX2590.Install]

  ……;其它命令

  LogConfig=CX2590_DMA;指定配置項(xiàng)的名稱

  [CX2590_DMA]??? ????? ???  ??????? ;配置項(xiàng)的名稱

  ConfigPriority=NORMAL        ?;配置的優(yōu)先級(jí)

  IOConfig=4@300-3ff%3ff(3ff::)   ;指定IO范圍

  IRQConfig=4,5,9,10,11??????????? ;指定可選的中斷

  DMAConfig=0,1,2,3???????????????? ;指定可選的DMA

  在INF文件中加入LOGCONFIG命令可以解決ISA總線設(shè)備資源的自動(dòng)分配問(wèn)題,就可以為ISA總線設(shè)備編寫WDM驅(qū)動(dòng)程序。

3 一個(gè)ISA設(shè)備WDM驅(qū)動(dòng)程序的實(shí)現(xiàn)

  使用Numega公司的開(kāi)發(fā)工具DriverStudio 2.01可以大大地簡(jiǎn)化驅(qū)動(dòng)程序的開(kāi)發(fā)過(guò)程。DriverStudio開(kāi)發(fā)通用內(nèi)核模式的開(kāi)發(fā)包是DriverWorks,DriverWorks是一個(gè)面向?qū)ο蟮墓ぞ甙K庋b了比較底層的繁復(fù)操作,提供給開(kāi)發(fā)者一個(gè)簡(jiǎn)潔的界面。同時(shí),DriverWorks和Visual C++有很好的接口:DriverWorks專門為Visual C++提供了一個(gè)專門開(kāi)發(fā)WDM驅(qū)動(dòng)程序的WIZARD。在WIZARD指導(dǎo)下,開(kāi)發(fā)者可以很容易地生成一個(gè)驅(qū)動(dòng)程序的框架。開(kāi)發(fā)者要作的工作就是根據(jù)特定硬件編寫相應(yīng)的代碼。

  WIZARD生成的框架不僅包括設(shè)定設(shè)備的資源如中斷、IO端口范圍、內(nèi)存范圍;還包括自動(dòng)生成驅(qū)動(dòng)程序與應(yīng)用程序的接口命令及處理這些命令的處理函數(shù),生成標(biāo)準(zhǔn)驅(qū)動(dòng)程序的標(biāo)準(zhǔn)驅(qū)動(dòng)程序例程;包括DriverEntry驅(qū)動(dòng)程序入口例程、UnLoad卸載例程、Dispach標(biāo)準(zhǔn)派發(fā)器例程、StartIO標(biāo)準(zhǔn)I/O傳輸例程、中斷處理例程等。對(duì)于WDM驅(qū)動(dòng)程序,包括生成驅(qū)動(dòng)程序接口(WDM專有),設(shè)備的符號(hào)連接,I/O傳輸方式以及WDM電源管理和處理PNP請(qǐng)求的IRP處理子程序。WIZARD完成后的代碼主要包括兩類,一類是驅(qū)動(dòng)對(duì)象,它構(gòu)成了一個(gè)驅(qū)動(dòng)程序的框架;另一類是驅(qū)動(dòng)程序的設(shè)備對(duì)象。驅(qū)動(dòng)程序?qū)ο筘?fù)責(zé)創(chuàng)建并管理驅(qū)動(dòng)程序設(shè)備對(duì)象。設(shè)備對(duì)象負(fù)責(zé)管理硬件的各種資源如I/O、IRQ、DMA。它還負(fù)責(zé)處理各種IRP的例程。設(shè)備對(duì)象是系統(tǒng)所有I/O操作的基石,一個(gè)驅(qū)動(dòng)程序必須有一個(gè)或一個(gè)以上的設(shè)備對(duì)象才真正有意義。驅(qū)動(dòng)對(duì)象和設(shè)備對(duì)象的關(guān)系很象WINDOWS系統(tǒng)中進(jìn)程和線程的關(guān)系:進(jìn)程是可執(zhí)行代碼(就是線程)的框架。如果說(shuō)驅(qū)動(dòng)對(duì)象是WINDOWS中的進(jìn)程,那么設(shè)備對(duì)象就像進(jìn)程中的線程,它們完成實(shí)際的I/O操作。設(shè)備對(duì)象使用保護(hù)成員變量來(lái)管理設(shè)備的資源,使用成員函數(shù)來(lái)處理各種IRP請(qǐng)求,并由這些函數(shù)完成實(shí)際的I/O操作。

  筆者開(kāi)發(fā)的高速旋轉(zhuǎn)機(jī)械監(jiān)控與故障診斷系統(tǒng)" title="故障診斷系統(tǒng)">故障診斷系統(tǒng)采用的是北京大恒公司的具有FIFO(隊(duì)列形式實(shí)現(xiàn)的緩存)的8路數(shù)據(jù)采集卡AC 1810。它的特點(diǎn)是由硬件自動(dòng)完成采樣操作:當(dāng)FIFO半滿的時(shí)候,系統(tǒng)產(chǎn)生中斷通知用戶取走數(shù)據(jù);同時(shí),硬件繼續(xù)自動(dòng)采樣FIFO的另一半。驅(qū)動(dòng)程序的主要工作包括設(shè)計(jì)I/O讀操作和中斷服務(wù)操作。下面是WIZARD生成的驅(qū)動(dòng)對(duì)象和設(shè)備對(duì)象的定義(只取主要部分):

  // 驅(qū)動(dòng)對(duì)象

  class AC_1810 : public KDriver

  {

  SAFE_DESTRUCTORS

  public:

  virtual NTSTATUS

  DriverEntry(PUNICODE_STRING

  RegistryPath);

  // 驅(qū)動(dòng)程序的入口函數(shù)

  virtual NTSTATUS

  AddDevice(PDEVICE_OBJECT Pdo);

  // 完成設(shè)備對(duì)象和驅(qū)動(dòng)對(duì)象的連接

  ……

  };

  // 設(shè)備對(duì)象

  class AC_1810Device : public KPnpDevice

  {

  // Constructors

  public:

  AC_1810Device(PDEVICE_OBJECT Pdo,

  ULONG Unit); // 構(gòu)造函數(shù)完成資源配置

  ……

  public:

  BOOLEAN Isr_Irq(void);?? // IRQ中斷服務(wù)例程

  virtual NTSTATUS Create(KIrp I);???????????

  // 標(biāo)準(zhǔn)IRP處理函數(shù)

  virtual NTSTATUS Close(KIrp I);???????????????????

  // COMMENT_ONLY

  virtual NTSTATUS Read(KIrp I);????????????????????

  // COMMENT_ONLY

  virtual VOID StartIo(KIrp I);?????????????????????????

  // 開(kāi)始I/O傳輸

  VOID CancelQueuedIrp(KIrp I);?????????????

  // 判斷傳輸IRP是否被取消

  VOID Invalidate(void);??????????????????????????????????

  // 釋放資源例程

  virtual NTSTATUS DefaultPnp(KIrp I); ??

  // 處理默認(rèn)的PNP操作

  virtual NTSTATUS DefaultPower(KIrp I); ?????

  // 管理電源

  void SerialRead(KIrp I); ????????????????????????

  // 完成實(shí)際的I/O操作

  NTSTATUS IOCTL_SETUP_Handler(KIrp I);

  //采樣參數(shù)設(shè)定

  NTSTATUS IOCTL_REW_Handler(KIrp I);?

  // 開(kāi)始/停止采樣

  ……

  protected:

  KIoRange???????????????????? m_IoPortRange0;?

  // 管理I/O資源

  KInterrupt??????????????????? m_Irq;???????????????

  // 管理中斷資源

  ……

  };

  在實(shí)際操作過(guò)程中,采用中斷讀數(shù)的方法。在驅(qū)動(dòng)程序中設(shè)置了兩個(gè)緩沖區(qū),一個(gè)前臺(tái)緩沖區(qū),一個(gè)后臺(tái)緩沖區(qū)(用作后備緩沖區(qū)),系統(tǒng)總是先使用前臺(tái)緩沖區(qū)。當(dāng)前臺(tái)緩沖區(qū)已滿而仍然未被讀出,系統(tǒng)觸發(fā)中斷時(shí),此時(shí)使用后臺(tái)緩沖區(qū)。讀數(shù)的方法很簡(jiǎn)單,系統(tǒng)先讀前臺(tái)緩沖區(qū)的數(shù)據(jù),只有當(dāng)前臺(tái)緩沖區(qū)未滿而后臺(tái)緩沖區(qū)滿的時(shí)候才讀后臺(tái)緩沖區(qū)。這樣可以保證采樣數(shù)據(jù)序列的時(shí)間順序。

  具體實(shí)現(xiàn)如下:

  // ISR例程,完成數(shù)據(jù)從FIFO中讀出

  BOOLEAN AC_1810Device::Isr_Irq(void)

  {

  // 是否觸發(fā)中斷?未觸發(fā)則返回,判斷兩個(gè)緩沖區(qū)情況,都滿則返回

  ……

  // 前臺(tái)緩沖區(qū)未滿,使用前臺(tái)緩沖區(qū)

  if(m_pBuffer->numused < MAX_READ_BUF )?? {

  ????????????? for( int i = 0;i < BLOCK_SIZE; i++){

  ???????????????????? m_pBuffer->buff[m_pBuffer->numused+i]

????  ??????????????????????? =READ_FIFO;

  ????????????? }

  m_pBuffer->numused += BLOCK_SIZE;

  }

  else

  // 完成其它情況的判斷

  ……

  return TRUE; // 中斷成功返回

  }

  當(dāng)應(yīng)用程序使用標(biāo)準(zhǔn)Win32 API對(duì)設(shè)備進(jìn)行讀操作的時(shí)候,I/O管理器通知驅(qū)動(dòng)程序并觸發(fā)對(duì)Read函數(shù)的調(diào)用。對(duì)于通常的串行設(shè)備,在Read函數(shù)的最后排隊(duì)IRP請(qǐng)求,此時(shí)系統(tǒng)就可以觸發(fā)StartIO例程,并且保證這個(gè)過(guò)程是串行處理的。

  // 讀例程,處理IRP_MJ_READ

  NTSTATUS AC_1810Device::Read(KIrp I)

  {

  // 檢查輸入的合法性

  ?????? if ( I.ReadSize()< BLOCK_SIZE ) {

????  ????????? // 不合法返回錯(cuò)誤代碼

????????  ????? I.Information() = 0;

????????????  ? return I.PnpComplete(this,

?????????????   STATUS_INVALID_PARAMETER);

  }

  // 讀0字節(jié),永遠(yuǎn)成功

  if (I.ReadSize() == 0){

????  ????????? I.Information() = 0;

????????  ????? return

????????????  ? I.PnpComplete(this, STATUS_SUCCESS);

??????   }

  // 排隊(duì)這個(gè)IRP觸發(fā)StartIO,完成數(shù)據(jù)傳輸

  return QueueIrp(I, LinkTo(CancelQueuedIrp));

  }

  // StartIo例程,完成I/O操作

  VOID AC_1810Device::StartIo(KIrp I)

  {

  // 檢測(cè)這個(gè)IRP是否被取消

?????? if (!I.TestAndSetCancelRoutine(LinkTo(CancelQueuedIrp),NULL,CurrentIrp()) )

????????????? {

????????????? return; // 取消則返回

????????????? }

????????????? switch (I.MajorFunction()){

????????????? case IRP_MJ_READ:

????????????? //這個(gè)函數(shù)按邏輯完成讀操作

???????????????????? SerialRead(I);

???????????????????? break;

???????????????????? ……

????????????? // 開(kāi)始處理下一個(gè)IRP

????????????? PnpNextIrp(I);

????????????? break;

  }

  }

  ISA卡的WDM驅(qū)動(dòng)程序的主體部分就完成了。它具有PNP功能,可以方便地安裝卸載。在中斷到來(lái)的時(shí)候,系統(tǒng)使用兩個(gè)緩沖區(qū)完成數(shù)據(jù)的傳輸,可以避免數(shù)據(jù)丟失。

  以上驅(qū)動(dòng)程序是使用Numega公司的DriverStudio2.01版,結(jié)合Visual C++ 6.0,Microsoft Windows 2000 sp1 DDK開(kāi)發(fā)調(diào)試通過(guò),并且成功地應(yīng)用到實(shí)驗(yàn)室開(kāi)發(fā)的高速旋轉(zhuǎn)機(jī)械實(shí)時(shí)狀態(tài)監(jiān)控與故障診斷系統(tǒng)中,該系統(tǒng)界面友好高度可靠。同時(shí)由于加入了PNP的支持,使得該系統(tǒng)的硬件安裝卸載非常簡(jiǎn)便。這種技術(shù)可取代傳統(tǒng)的以DOS為核心的工業(yè)用監(jiān)控與故障診斷系統(tǒng),具有廣闊的應(yīng)用前景。

?

參考文獻(xiàn)

1 Microsoft. Microsoft Winodows 98 DDK Document,1998

2 Microsoft. Microsoft Winodows 2000(build 1295) sp1 DDK Document, 2001

3 Walter Oney,Forrest Foltz. Programming the Microsoft?Windows Driver Model[M] Microsoft Press,1999

4 Art Baker, 科欣翻譯組.Windows NT設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)指南[M]. 北京:機(jī)械工業(yè)出版社,1997

5 Numega. Numega DriverStudio 2.01 DriverWorks Help,2001

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 又爽又黄无遮挡高潮视频网站 | 欧美 日韩 一区二区三区 | 欧美黄色录像片 | 最新色视频 | 久久久久午夜 | 成人爱爱网站 | 国产绳艺sm调教室论坛 | 人人妻人人澡人人爽人人精品 | 中文字幕天堂av | 亚洲一级爽片 | 精品麻豆剧传媒av国产九九九 | 国产不卡视频一区二区三区 | 国产精品亚洲欧美大片在线看 | 精品乱码一区内射人妻无码 | 国产v亚洲v天堂a无码 | 三及毛片 | 这里只有精品视频在线观看 | 日日夜夜爱 | 一区二区三区高清视频一 | 欧美无玛 | 欧美在线色 | 久久精品久久久久久久久久久久久 | 成人在线天堂 | 麻豆入口 | 日韩特黄特色大片免费视频 | 日韩精品aaa | 色情一区二区三区免费看 | 欧美亚洲一区 | 欧美大黑bbbbbbbbb在线 | 日本舌吻大尺度呻吟视频 | 日韩欧美一中文字暮专区 | 上司的丰满人妻中文字幕 | 国产精品爽爽 | 91福利视频网站 | 97人妻成人免费视频 | 亚洲剧情av | 国产精品久久久久一区二区三区 | 激情五月av久久久久久久 | 成年人黄色毛片 | 中文亚洲成a人片在线观看 99久久婷婷国产综合精品青草免费 | 久青草无码视频在线播放 | 国产精品videossex国产高清 | 麻豆精品乱码一二三区别蜜臀在线 | 国产精品亚洲日韩欧美色窝窝色欲 | a级欧美 | 日韩av无码中文无码电影 | www夜插内射视频网站 | 国产精品久久久久久久久岛 | 一级片少妇 | 三级特黄视频 | 久久久天堂国产精品女人 | 性欧美18—19sex性高清 | 真实人妻互换毛片视频 | 日韩免费av片| 亚洲婷婷网 | 四色激情| 暖暖视频日本在线观看免费hd | 日韩不卡手机视频在线观看 | 蜜桃视频成人在线观看 | 91久久久久久亚洲精品禁果 | 粉嫩av一区二区三区在线观看 | 欧美xxxx×黑人性爽 | 欧美双性人妖o0 | 日韩一区二区三区精品视频 | 国产裸体舞一区二区三区 | 国产美女视频91 | 亚洲视频一区二区 | 国语对白乱妇激情视频 | 午夜黄色一级片 | 国产99久久久 | 久久www视频| 中文字幕乱码av | 精品白嫩bbwbbwbbw韩国 | 国产综合区 | 国产尤物精品自在拍视频首页 | 精品久久久久久久人人人人传媒 | 人妻少妇av无码一区二区 | 亚洲毛片儿 | 无码人妻丰满熟妇奶水区码 | 全部免费毛片在线播放一个 | 欧美做受xxxxxⅹ性视频 | 中文字幕日日夜夜 | 国产自偷自偷免费一区 | 欧美大肥婆大肥bbbbb | 泰国性xxx视频 | 精品天堂| 国偷自产中文字幕亚洲手机在线 | 亚洲国产精品无码观看久久 | 精品产国自在拍 | 亚洲精品第一国产综合野草社区 | 亚洲一区二区免费在线观看 | 亚洲视频福利 | 日本裸体丰满少妇一丝不丝 | 国产欧美精品aaaaa久久 | 成人在线手机视频 | 爱情岛亚洲首页论坛小巨 | 亚洲蜜桃精久久久久久久 | 亚洲一区二区三区在线播放 | 成人性做爰片免费视频 | 日日夜夜艹 | 欧美 日韩 国产 亚洲 色 | 顶级尤物极品女神福利视频 | 亚洲色图清纯唯美 | 色欧美亚洲| 欧美日韩在线视频一区二区三区 | 看污片网站 | 国产成人日韩 | 伊人久久在线 | 午夜精品久久久久久久爽 | 一级做a爰片久久毛片潮喷动漫 | 乌克兰少妇xxxx做受野外 | 国产精品免费入口 | 国产1区在线 | 两性色午夜免费视频 | 亚洲经典一区二区三区 | 国产高清免费av | 国产www网站 | 天天摸天天舔 | 亚洲男人av香蕉爽爽爽爽 | 午夜少妇一级福利 | 91丨porny丨蝌蚪新疆 | 日本高清在线一区二区三区 | 丰满少妇一级 | 亚洲一二区视频 | 欧美黄色大片网站 | 欧洲亚洲一区二区三区四区五区 | 天天插夜夜操 | 麻豆av一区二区天美传媒 | 粉嫩小泬无遮挡久久久久久 | 国产精品久久久久久久岛一牛影视 | 扒开双腿被两个男人玩弄视频 | 天天干在线播放 | 欧美精品成人在线 | 中文一区二区在线观看 | 成人伊人精品色xxxx视频 | 一二三国产精品 | 亚洲欧洲美洲精品一区二区三区 | pt美日韩欧pt网 | 国产女人视频 | 亚洲成av人在线观看网址 | 国产成人免费视频精品含羞草妖精 | 日韩欧美大片在线观看 | 在线 | 一区二区三区四区 | 天天干天天操天天爽 | 欧美深夜福利视频 | 国产精品无码a∨麻豆 | 国产精品日韩精品欧美精品 | 在线亚洲午夜片av大片 | 久久婷婷五月综合97色一本一本 | a级a级高清免费美日a级大片 | 国产高潮刺激叫喊视频 | 在线国产91 | 日本少妇影院 | 欧美中文一区 | 国产又粗又爽又黄 | 大岛优香中文av在线字幕 | 欧美性生交xxxxx久久久 | 国产在线观看免费视频今夜 | 国产成人av综合色 | 欧洲美女粗暴牲交免费观看 | 成人无码视频在线观看网站 | 岛国av资源 | 亚洲天天在线 | 户外露出一区二区三区 | 国产一级片在线播放 | lutu成人福利在线观看 | 成人网站免费大全日韩国产 | 欧洲丰满少妇做爰 | 久热精品在线视频 | av东方在线 | 国产清纯白嫩初高生在线观看性色 | 亚洲日本色 | www亚洲最大aⅴ成人天堂 | 欧美一级片 | 日本一区二区免费在线观看 | 国产精品51麻豆cm传媒 | 久久97超碰 | 免费人成再在线观看网站 | 成码无人av片在线观看网站 | 久久久久久欧美精品se一二三四 | www.在线观看麻豆 | аⅴ资源中文在线天堂 | 亚洲熟妇色xxxxx亚洲 | 大香焦久久 | 日本少妇在线观看 | 一曲二曲三曲在线观看中文字幕动漫 | 中文字幕色站 | 亚洲尹人 | 日韩欧美三级在线 | 国产伦精品一区二区三区免.费 | 欧美色视频在线 | 欧美三级不卡在线观看 | 蜜桃国精产品二三三区视频 | 少妇的肉体k8经典 | 国产麻豆一区二区三区 | 久草视频污 | 狠狠躁日日躁夜夜躁2022麻豆 | 日韩在线中文字幕视频 | 最新av片 | 欧美日韩激情在线一区二区三区 | 97网站| 伊人久久大香线焦av综合影院 | 少妇大叫太大太粗太爽了 | 蜜臀av免费一区二区三区久久乐 | 她也色在线观看 | 成 人 网 站国产免费观看 | 女性向h片在线观看 | 国产精品视频看看 | 中文字幕在线观看不卡 | 成人性做爰aaa片免费看曹查理 | 日日干日日色 | 俺也来俺也去俺也射 | 乱人伦xxxx国语对白 | 爱情岛论坛成人永久网站在线观看 | 国产精品偷伦视频免费手机播放 | 免费在线黄 | 国内自拍小视频 | 人人看超碰 | 色婷婷av一区二区三区丝袜美腿 | 东北女人啪啪对白 | 日本午夜在线 | 久久蜜桃av一区二区天堂 | 午夜视频国产 | 最近最好的中文字幕2019免费 | 人妻少妇无码精品视频区 | 国精产品一区一区三区有限公司 | 日韩精品视频一区二区三区 | 亚洲精品一区二区三区大桥未久 | 欧美一区1区三区3区公司 | 日本特级黄色大片 | 欧美 日韩 国产 成人 在线 | 五月丁香六月综合av | 欧亚日韩精品一区二区在线 | 亚洲国产成人欧美激情 | 日本丰满白嫩大屁股ass | 又黄又爽又色的免费网站 | 成人高潮片免费网站 | 伊人网欧美 | 日本大尺度吃奶做爰久久久绯色 | 日韩专区第一页 | 日韩资源在线 | 校园春色亚洲激情 | 亚洲 精品 综合 精品 自拍 | 午夜影院一区 | 亚洲成人网页 | 综合一区av | 免费观看性行为视频的网站 | 伊人激情视频 | 国产黄网站 | 久久国产香蕉 | 777色婷婷视频二三区 | 亚洲免费视频一区二区三区 | 在线中文字幕av | 川上奈美侵犯中文字幕在线 | 日韩在线播放视频 | 国产成人精品综合在线观看 | 男女啪啪软件 | 亚洲一区二区高潮无套美女 | 成人av在线网址 | 涩五月婷婷 | 成年人在线免费观看网站 | 中文字幕精品亚洲无线码一区应用 | 91久久久www播放日本观看 | 我要看免费毛片 | 国内毛片毛片毛片毛片毛片 | 午夜日韩在线 | 国产精品国产三级国产aⅴ 国产精品国产三级国产aⅴ9色 | 嫩呦国产一区二区三区av | 久久久久久久久国产精品 | japanesexxx乱女另类 | 国产精品久久久久精女同 | 青青在线视频观看 | 巨大乳の超乳を揉んで乳巨在线播放 | 538国产视频 | 久久国产精品成人影院 | 久久久成人精品 | 久久久久久亚洲精品无码 | 久久性色欲av免费精品观看 | 欧美一区二区三区成人片在线 | 日本最大色倩网站www | 99精品免费久久久久久久久日本 | 日韩黄色大片 | 欧美性做爰毛片 | 国产xxx69麻豆国语对白 | 91精品国产美女在线观看 | 日日夜夜天天综合 | 日韩综合第一页 | 成人一级片视频 | 日本少妇白嫩猛烈进入免费视频 | 日本网站在线免费观看 | 日本人的性生活视频 | 免费三片在线观看网站v888 | 欧美老妇xxx | 亚洲欧美成人精品香蕉网 | www精品美女久久久tv | 亚洲精品乱码久久久久久国产主播 | 国产欧美一区二区三区网站 | 国产色视频播放网站www | 夫妻性生活自拍 | www啪啪| 久久一级免费视频 | 久久www免费人成_网站 | 无码人妻丰满熟妇啪啪欧美 | 国产av久久久久精东av | 成人女同av免费观看 | 国产人久久人人人人爽 | 水蜜桃无码视频在线观看 | 日韩 欧美 中文字幕 制服 | 欧洲熟妇色xxxxx视频 | 高清乱码毛片入口 | 色妞色综合久久夜夜 | 少妇全黄性生交片 | 天堂网av手机版 | 久久久久久久黄色 | 免费观看一级视频 | 在线亚洲人成电影网站色www | 国产午夜禁区精品视频 | 福利在线看| 人妻被按摩到潮喷中文字幕 | 欧产日产国产精品乱噜噜 | 五月天丁香综合久久国产 | 一级日批片 | 主播粉嫩国产在线精品 | 亚洲女同av| 精品国产一区二区三区四区阿崩 | 中文字幕 亚洲一区 | 一级黄色美女视频 | 男女做羞羞在线观看 | 在线视频夫妻内射 | 国产精品特级毛片一区二区三区 | 色无极影院亚洲 | 久久久久久伊人 | 伊人精品成人久久综合软件 | 亚洲欧美日本韩国 | 农村人伦偷精品视频a人人澡 | 久久亚洲国产成人精品无码区 | 国产一区二区免费在线 | 中文字幕第100页 | 麻豆国产丝袜白领秘书在线观看 | 东方影院av久久久久久 | 欧美肥婆性猛交xxxⅹ | 强开乳罩摸双乳吃奶羞羞www | 亚洲 欧美 精品 | 人妻一本久道久久综合久久鬼色 | 色婷婷av一区二区三区之一色屋 | 亚洲欧美综合精品另类天天更新 | 亚洲黄色一级网站 | 国产欧美一区二区视频 | 国产91在线播放精品91 | 国产精品嫩草影院桃色 | 久久无码av中文出轨人妻 | 天天躁日日躁狠狠躁一区 | 亚洲一区二区三区久久久 | 无码av中文一区二区三区 | 久热精品视频在线 | 黑人做爰xxxⅹ性少妇69 | 丁香花小说手机在线观看免费 | 中文字幕91视频 | 中文字幕在线日本 | 亚洲乱码国产乱码精品精98午夜 | av怡红院一区二区三区 | 偷偷操网站 | 国产又黄又猛又粗又爽的a片动漫 | 7m视频成人精品分类 | 国产97色 | 99热手机在线观看 | 影音先锋啪啪看片资源 | 国产精品福利久久久 | 激情五月五月婷婷 | 亚洲美女操 | 怡红院a∨人人爰人人爽 | 国产精品嫩草影院ccm | 天天天色| 性久久久久久久久久 | 亚洲乱码国产乱码精品精在线网站 | 日韩高清国产一区在线 | 国产免费一级 | 国产视频资源在线观看 | 国产一区二区免费在线 | 亚洲一区二区三区黄色 | www.久久爽| 在线观看不卡一区 | 69视频网站 | 性色在线视频 | 久久精品96入口 | 婷婷激情四射 | 日本黄又爽又大高潮毛片 | 日韩av手机在线免费观看 | 成人a级大片 | 毛片无遮挡 | 91精品国产日韩91久久久久久 | 日韩欧美xxxx | 久久中文字幕在线 | av首页在线观看 | 日韩av手机在线播放 | 最新国产视频 | 日韩欧美一区视频 | 亚洲日韩乱码久久久久久 | 久久日韩乱码一二三四区别 | 99成人免费视频 | 爆操欧美 | 成人在线视频网址 | 日韩精品毛片无码一区到三区 | 91视频毛片| 性欧美牲交xxxxx视频 | 久久欧美高清二区三区 | 亚洲免费永久精品 | 50一60岁老妇女毛片 | 国产精品99久久久久久武松影视 | 美日韩毛片| ww欧美黄色 | 在线射| 国产又粗又硬又大爽黄老大爷视频 | 亚洲欧美自偷自拍 | 久久久久久久久久久久久久国产 | 午夜精品一区二区三区在线 | 中文字幕+乱码+中文乱码www | 伊人网在线视频 | 欧美在线看 | 一区二区三区视频免费 | 少妇伦子伦精品无吗在线观看 | 欧美一本| 欧美xxxx在线| 91超碰在线观看 | 国产痴汉av久久精品 | 亚洲v无码一区二区三区四区观看 | 亚洲va久久久噜噜噜久久天堂 | 一级片黄色| 30岁少妇又紧又嫩 | 日韩高清久久 | 欧美日韩一级视频 | 国产精品乱码一区二区视频 | 国内精品小视频 | 日韩在线导航 | wwww黄色片 | 亚洲啪啪aⅴ一区二区三区9色 | 欧美成人ⅴideosxxxxx | 2019中文字幕网站 | 在线免费黄色网址 | www.美色吧.com| 亚洲熟妇色xxxxx欧美老妇 | 亚洲综合网址 | 国产偷久久一区精品69 | 免费国产一区二区 | 国产麻豆成人精品av | 亚洲精品一区二区三区丝袜 | 欧美三级午夜理伦三级 | 青青青国产免费线在 | 成人免费xxxxx在线视频 | 国产免费高清视频1l.com.com.com少 | 欧美黑人性暴力猛交喷水 | 欧美成人图区 | 久久狼人亚洲精品一区 | 成年男女免费视频网站 | 人人综合亚洲无线码另类 | 哺乳期喷奶水丰满少妇 | 亚洲色大成网站www永久 | 无码免费中文字幕视频 | 亚a∨国av综av涩涩涩 | 亚洲精品免费观看 | 国产sm鞭打调教女m视频 | 深夜福利网址 | www中文字幕综合码 ww成人 | 日韩精品一区二区三区视频 | 午夜激情一区二区 | 九色视频丨porny丨丝袜 | 午夜免费无码福利视频 | 国产 日韩 欧美 中文 在线播放 | 亚洲精品aⅴ| 欧美性猛交xxxx免费看蜜桃 | 少妇做爰α片免费视频网站 | www.成人免费 | 免费在线观看av片 | 亚洲精品~无码抽插 | 天堂av资源在线 | 久久不卡日韩美女 | 国产成人无码精品亚洲 | 久久国产精品99久久人人澡 | 国产乱码av | 波多野结衣亚洲一区二区 | 色老汉av一区二区三区 | 久久久久久久极品内射 | 国产亚洲成av人在线观看导航 | 超碰一区二区三区 | 菠萝蜜视频在线观看入口 | 日韩av无码免费播放 | 亚洲黄色短视频 | 图片区偷拍区小说区 | 日韩av麻豆 | 五月天婷婷亚洲 | 成年人看的黄色片 | 国产日韩91 | 精国产品一区二区三区a片 日韩av在线观看免费 | 久久精品一区二 | 久久久久久久久久av | 奶大交一乱一乱一视一频 | 午夜精品福利视频 | 噜噜视频| 在线观看黄色的网站 | 日韩一级片在线 | 污污网站在线看 | 色哟哟免费 | 嫩草一区二区 | 无码午夜人妻一区二区不卡视频 | 播放灌醉水嫩大学生国内精品 | 在线观看av的网站 | 久久久三级 | 粉嫩久久久久久久极品 | 国产福利精品一区二区 | 久久精品国产精品国产一区 | 在线免费观看视频黄 | 国产在线精品一区二区 | 日本大片在线看黄a∨免费 国产欧美性成人精品午夜 婷婷国产成人精品视频 | 国内精品久久久久影院日本资源 | www.天天干| 亚洲日本中文字幕乱码在线电影 | www夜插内射视频网站 | 精品国产乱码久久久久久三级人 | 欧美va天堂 | 麻豆av在线 | 99久久国产综合精品女不卡 | 精品无码久久久久久久久 | 52avavjizz亚洲精品 | 国产污污网站 | caoporon成人超碰公开网站 | 国产成人无码av一区二区在线观看 | av一级二级| 中文字幕一区二区三区乱码图片 | 国产又黄又粗又猛又爽视频 | 亚洲精品a区 | 91久久视频| 欧美日韩免费做爰大片人 | 一级久久久久久久 | 成人动漫视频在线 | 亚洲国产精品麻豆 | 成人激情视频在线 | 中文字幕一区三级久久日本 | 香蕉视频久久久 | 久草一级| 无码人妻毛片丰满熟妇区毛片 | 三上悠亚ssⅰn939无码播放 | 亚洲 日韩 欧美 成人 在线观看 | 2017天天干| 日韩成人性视频 | 亚洲国产精品久久人人爱 | 婷婷伊人久久大香线蕉av | 国产精品久久久久久吹潮 | 亚洲乱亚洲乱妇无码 | 亚洲欧美在线观看 | 91亚洲精品国偷拍自产 | 国产又色又爽又刺激在线播放 | 欧美精品成人一区二区三区四区 | 国产乱码精品1区2区3区 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 少妇一区二区三区 | 欧美福利片在线观看 | 欧美牲交a欧美在线 | 极品美女娇喘呻吟热舞 | 色婷婷www | а√中文在线8 | 免费人成再在线观看网站 | 欧美 亚洲 另类 偷偷 自拍 | 国产另类ts人妖一区二区 | 人人妻人人澡人人爽不卡视频 | 护士奶头又白又大又好摸视频 | www.av视频在线观看 | 久久精国产 | 男人天堂社区 | 少妇太爽了在线观看 | 国产 日韩 欧美 制服丝袜 | 碰碰久久 | 午夜片在线 | 国产91丝袜在线18 | heyzo北岛玲在线播放 | 国产性一乱一性一伧一色 | 欧美乱妇高清无乱码免费 | 香蕉a | 国产高清小视频 | 国产a做爰全过程片 | 一区精品二区国产 | 在线观看麻豆视频 | 亚洲人交配视频 | 日本中文字幕在线 | 免费毛片基地 | 久久艹逼| 色偷偷偷在线视频播放 | 日本丰满熟妇hd | 欧美色图俺去了 | 中文日韩一区二区 | 日韩欧美国产一区二区三区 | 偷窥少妇高潮呻吟av久久免费 | 久久人人97超碰a片精品 | 国产在线观看a | 床戏高潮呻吟声片段 | 一边吃奶一边摸下边激情说说 | 特级毛片爽www免费版 | 久久久久久97免费精品一级小说 | 在线成年人视频 | 日本裸体xx少妇18在线 | 自拍av在线 | 97精品国产一区二区三区 | kk视频在线视频 | 国产精品无码mv在线观看 | 日本亲与子乱人妻hd | 久久国产午夜精品理论片推荐 | 内射国产内射夫妻免费频道 | 久久天天躁狠狠躁夜夜97 | 91久久久www播放日本观看 | 无码人妻h动漫 | 一个人在线免费观看www视频 | 性视频网站免费 | 综合亚洲欧美 | 狠狠色噜噜狠狠狠8888米奇 | 竹菊影视欧美日韩一区二区三区四区五区 | 91在线视频播放 |