精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony HDF HDI基礎能力分析與使用

系統
本文介紹了 HDI 的總體方案,重點介紹了 HDI 的 IPC 模式具體實現方法和驅動框架能力,相信對讀者理解和使用 HDI 有所幫助。

[[423125]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

HDI接口概述

回顧之前的文章,HDF 驅動框架的一個重要功能是為系統提供穩定的統一的硬件接口,這樣才能保證系統服務可以運行在不同硬件上而不需要額外的適配工作,HDI(Hardware Device Interfaces)正是為了實現該目的而設計。

OpenHarmony HDF HDI基礎能力分析與使用-鴻蒙HarmonyOS技術社區

HDI 是對硬件功能的較高層次抽象接口,各類外設完成 HDI 接口定義后便只會在 HDI 的兼容性規則下進行變更,從而保證接口的穩定性。具體的驅動實現不需要再重復定義 HDI 接口,只需要按需實現即可接入系統功能。

在不同量級的 OpenHarmony 系統上,HDI 存在兩種部署形態,IPC 模式和直通模式。

OpenHarmony HDF HDI基礎能力分析與使用-鴻蒙HarmonyOS技術社區

在輕量級 OpenHarmony 系統上,出于減小系統性能負載考慮,HDI 實現為用戶態共享庫,由系統服務直接加載 HDI 實現到自己進程中函數調用使用。HDI 實現封裝具體的用戶態內核態交互過程,當需要訪問驅動程序時使用 IO Service 請求將消息通過 system call 方式調用到內核驅動實現。

在標準 OpenHarmony 系統上,HDI 以獨立服務進程方式部署,系統服務只加載 HDI 客戶端實現到自己進程中,實際業務運行在獨立進程中,客戶端通過 IPC 與服務端交互,便于架構解耦、權限管理。

HDI接口實現

直通模式為函數實現方式,無論調用還是實現都不需要其他組件支持即可實現,這里將重點分析 IPC 模式的實現。

HDI發布

OpenHarmony HDF HDI基礎能力分析與使用-鴻蒙HarmonyOS技術社區

HDI IPC 模式基于 OpenHarmony 系統通信框架的通用模型,但是因為驅動很多時候涉及到底層操作和多系統遷移的場景而使用C語言編寫,所以驅動框架還提供了 HDI 服務的 C 語言實現的基礎組件,C++ 實現則主要使用系統通信框架組件。

HDI 服務發布基于 UHDF(用戶態 HDF 驅動框架)實現,通用的服務發布實現如下。

1. 實現驅動入口

  1. int SampleDriverBind(struct HdfDeviceObject *deviceObject) 
  2.     HDF_LOGE("SampleDriverBind enter!"); 
  3.     static struct IDeviceIoService testService = { 
  4.         .Dispatch = SampleServiceDispatch, // 服務回調接口 
  5.     }; 
  6.     deviceObject->service = &testService; 
  7.     return HDF_SUCCESS; 
  8.   
  9. int SampleDriverInit(struct HdfDeviceObject *deviceObject) 
  10.     HDF_LOGE("SampleDriverInit enter"); 
  11.   
  12.     return HDF_SUCCESS; 
  13.   
  14. void SampleDriverRelease(struct HdfDeviceObject *deviceObject) 
  15.     HDF_LOGE("SampleDriverRelease enter"); 
  16.     return
  17.   
  18. struct HdfDriverEntry g_sampleDriverEntry = { 
  19.     .moduleVersion = 1, 
  20.     .moduleName = "sample_driver"
  21.     .Bind = SampleDriverBind, 
  22.     .Init = SampleDriverInit, 
  23.     .Release = SampleDriverRelease, 
  24. }; 
  25.  
  26. HDF_INIT(g_sampleDriverEntry); 

 首先要添加一個 UHDF 驅動用于發布 IoService 服務,IoService 設備服務即為 HDI 服務實體。實現方式與 KHDF 驅動一致。

2. 實現服務響應接口

  1. int32_t SampleServiceOnRemoteRequest(struct HdfDeviceIoClient *client, int cmdId, 
  2.     struct HdfSBuf *data, struct HdfSBuf *reply) 
  3.     switch (cmdId) { 
  4.         case SAMPLE_SERVICE_PING: 
  5.             return SampleServiceStubPing(client, data, reply); 
  6.         … … 
  7.         default
  8.             HDF_LOGE("SampleServiceDispatch: not support cmd %d", cmdId); 
  9.             return HDF_ERR_INVALID_PARAM; 
  10.     } 
  11. static int32_t SampleServiceDispatch(struct HdfDeviceIoClient *client, int cmdId, 
  12.     struct HdfSBuf *data, struct HdfSBuf *reply) 
  13.     return SampleServiceOnRemoteRequest(client, cmdId, data, reply); 

當收到 HDI 調用時,服務響應接口"SampleServiceDispatch"將會被調用。

  • client 調用者對象,在用戶態驅動中暫時未支持
  • cmdId 調用命令字,用于區分調用的 API
  • data 調用入參序列化對象,在 IPC 調用場景為 parcel 對象的 C 語言封裝,入參需要使用序列化接口從 data 對象中獲取后再使用
  • reply 調用出參對象,需要返回給調用的信息寫入該序列化對象

如果 C++ 實現客戶端可以使用下面接口將 sbuf 對象轉換為 parcel 對象后操作:

  1. int32_t SbufToParcel(struct HdfSBuf *sbuf, OHOS::MessageParcel **parcel); 

3. UHDF 驅動配置

  1. platform :: host { 
  2.     hostName = "sample_host"
  3.     priority = 50; 
  4.     sample_device :: device { 
  5.         device0 :: deviceNode { 
  6.             policy = 2; 
  7.             priority = 100; 
  8.             moduleName = "libsample_driver.z.so"
  9.             serviceName = "sample_driver_service"
  10.         } 
  11.     } 

參數說明:

  • host 一個 host 節點即為一個獨立進程,如果需要獨立進程,新增屬于自己的 host 節點
  • policy 服務發布策略,HDI 服務設置為 2
  • moduleName 驅動實現庫名
  • serviceName 服務名稱,請保持全局唯一性

因為 HDI 服務 C 和 C++ 實現使用的 IPC 組件不一樣,面向對象實現也不一致,所以在具體實現上存在一些差異。

HDI基礎組件

UHDF 框架為了支持 HDI 實現,提供了以下基礎組件(僅用于 C 語言 HDI 實現):

SBuf

SBuf 是同時支持 KHDF 和 UHDF 驅動 IoService 消息序列化的工具對象。在 UHDF IPC 通信場景中,SBuf 可以與系統 IPC 框架序列化對象 MessageParcel 對象(僅支持 C++ )相互轉換,從而實現 C 和 C++ 實現的 IPC 互通。

常用 API 如下:

  1. struct HdfSBuf; 
  2. struct HdfSbufImpl; 
  3. struct HdfRemoteService; 
  4.  
  5. /** 
  6.  * @brief HdfSBuf類型定義。 
  7.  * 
  8.  * @since 1.0 
  9.  */ 
  10. enum HdfSbufType { 
  11.     SBUF_RAW = 0,   /* 用于用戶態內核態通信的sbuf類型 */ 
  12.     SBUF_IPC,       /* 用于跨進程通信的sbuf類型 */ 
  13.     SBUF_IPC_HW,    /* 用于擴展的預留類型 */ 
  14.     SBUF_TYPE_MAX,  /* sbuf類型最大值 */ 
  15. }; 
OpenHarmony HDF HDI基礎能力分析與使用-鴻蒙HarmonyOS技術社區

上述接口均有對應的寫入接口,不再一一列舉,可查閱官網API參考文檔。

RemoteService

RemoteService 對象和系統 IPC 框架中的 IRemoteObject 對象(僅支持 C++)對應并可以相互轉換,表示一個 IPC 對象。相關 API 說明:

  1. // 消息分發器,用于服務端響應調用或者在客戶端發起調用 
  2. struct HdfRemoteDispatcher { 
  3.     int (*Dispatch)(struct HdfRemoteService *, int, struct HdfSBuf *, struct HdfSBuf *); 
  4. }; 
  5.  
  6. // RemoteService 死亡回調對象 
  7. struct HdfDeathRecipient { 
  8.     void (*OnRemoteDied)(struct HdfDeathRecipient *, struct HdfRemoteService *); 
  9. }; 
  10.  
  11. struct HdfRemoteService { 
  12.     struct HdfObject object_; 
  13.     struct HdfObject *target; 
  14.     struct HdfRemoteDispatcher *dispatcher; 
  15.     bool isHw; 
  16. }; 
  17. // 以自定義的消息分發器實例化一個RemoteService 
  18. struct HdfRemoteService *HdfRemoteServiceObtain( 
  19.     struct HdfObject *object, struct HdfRemoteDispatcher *dispatcher); 
  20.  
  21. // 回收RemoteService對象 
  22. void HdfRemoteServiceRecycle(struct HdfRemoteService *service); 
  23.  
  24. // 添加RemoteService的死亡通知,如果對應RemoteService的進程異常退出,HdfDeathRecipient的回調接口將被調用 
  25. void HdfRemoteServiceAddDeathRecipient(struct HdfRemoteService *service, struct HdfDeathRecipient *recipient); 

 基于 RemoteService 實現一個服務端的示例:

  1. int SampleServiceStubDispatch( 
  2.     struct HdfRemoteService* service, int code, struct HdfSBuf *data, struct HdfSBuf *reply) 
  3.     // IPC 調用響應接口 
  4.     int ret = HDF_FAILURE; 
  5.     switch (code) { 
  6.         case SAMPLE_IF_0: { 
  7.             // do something 
  8.             break; 
  9.         } 
  10.         default: { 
  11.             ret = HDF_ERR_INVALID_PARAM; 
  12.         } 
  13.     } 
  14.     return ret; 
  15. bool SampleStubConstruct() 
  16.     // 構造消息分發器,實現消息處理回調 
  17.     static struct HdfRemoteDispatcher dispatcher = { 
  18.         .Dispatch = SampleServiceStubDispatch 
  19. }; 
  20. // 實例化RemoteService 
  21.     inst->remote = HdfRemoteServiceObtain((struct HdfObject *)inst, &dispatcher); 
  22.     if (inst->remote == NULL) { 
  23.         HDF_LOGE("Device service manager failed to obtain remote service"); 
  24.         return false
  25. … … 

直接基于 RemoteService 實現服務端只適用于需要實現匿名 IPC 服務的情況,基于 UHDF 發布 HDI 服務只需要實現 Driver 綁定的 IoService 即可。

RemoteService 客戶端對象只能從 SBuf HdfSBufReadRemoteService 接口獲取。

HDI實現

OpenHarmony HDF HDI基礎能力分析與使用-鴻蒙HarmonyOS技術社區
  • Driver 為 HDI 服務的驅動入口實現
  • IoService 為 HDI 服務的服務入口實現,IoService 的 Dispatch 方法中調用 ServiceStub 中的真正服務響應接口(OnRemoteRequest)
  • ServiceStub 為服務端實現對象,主要處理與 IPC 相關的業務邏輯,在這里完成參數反序列化后調用真正的 Service 實現接口,即 ServiceImpl 接口
  • ServiceImpl 為 HDI 接口的真正實現,這里不關注 IPC 過程,只實現函數接口。
  • 驅動框架提供了實現的樣例代碼,可參考 gitee driver 代碼倉。

HDI接口調用

HDI驅動框架HDI接口

HDI 服務管理功能由驅動框架 DeviceManager 實現,所以驅動框架提供了 HDI 服務管理相關 HDI 接口。

C++實現:

  1. namespace OHOS { 
  2. namespace HDI { 
  3. namespace ServiceManager { 
  4. namespace V1_0 { 
  5.  
  6. struct IServiceManager : public IRemoteBroker { 
  7. public
  8.     DECLARE_INTERFACE_DESCRIPTOR(u"HDI.IServiceManager.V1_0"); 
  9.     // get()靜態方法用于獲取IServiceManager對象實例 
  10.     static ::OHOS::sptr<IServiceManager> Get(); 
  11.     // GetService()接口是真正提供的HDI接口,用于查詢并獲取其他HDI服務的客戶端對象 
  12.     virtual ::OHOS::sptr<IRemoteObject> GetService(const char* serviceName) = 0; 
  13. }; 
  14. } // namespace V1_0 
  15. } // namespace ServiceManager 
  16. } // namespace HDI 
  17. } // namespace OHOS 

C 實現:

  1. #ifdef __cplusplus 
  2. extern "C" { 
  3. #endif /* __cplusplus */ 
  4.  
  5. struct HDIServiceManager { 
  6.     struct HdfRemoteService *remote; 
  7.  
  8.     struct HdfRemoteService *(*GetService)(struct HDIServiceManager *self, const char* serviceName); 
  9. }; 
  10.  
  11. struct HDIServiceManager *HDIServiceManagerGet(void); 
  12. void HDIServiceManagerRelease(struct HDIServiceManager *servmgr); 
  13.  
  14. #ifdef __cplusplus 
  15. #endif /* __cplusplus */ 

C 語言因為缺少原生的面向對象支持,這里我們采用 OOC 的實現,函數方法 HDIServiceManagerGet/Release 用于 HDIServiceManager 對象的實例化和釋放,HDI 接口關聯在接口對象內部成員中,與 C++實現類似。

HDI客戶端實現

OpenHarmony HDF HDI基礎能力分析與使用-鴻蒙HarmonyOS技術社區

HDI 客戶端同時支持 C 和 C++ 實現,實現方法較為簡單,只需 realize HDI 接口類即可。提供 C++ 實現基于系統 IPC 子系統的統一模型,C 語言基于 RemoteService 和 SBuf 組件實現,但是有一些公共的約定:

客戶端提供接口對象,接口與對象綁定且必須與 HDI 一致

提供服務接口對象的實例化和釋放接口。

客戶端實現 IPC 過程,只為調用者暴露函數化接口。

HDI接口調用

HDI 客戶端接口已經提供了服務獲取接口,調用者調用服務獲取接口后再調用服務對象方法即可完成 HDI 調用。

這里以服務管理 HDI 接口為例:

C++接口調用:

  1. #include <iservmgr_hdi.h> 
  2.  
  3. void GetTestService() 
  4.      
  5.     auto servmgr = IServiceManager::Get(); 
  6.     if (servmgr == nullptr) { 
  7.     HDF_LOGE("failed to get IServiceManager"); 
  8.     return
  9.   } 
  10.  
  11.     auto sampleService = servmgr->GetService(TEST_SERVICE_NAME); 
  12.   if (sampleService == nullptr) { 
  13.     HDF_LOGE("failed to get TEST_SERVICE"); 
  14.     return
  15.   } 
  16.     // do something 

C 接口調用:

  1. #include <servmgr_hdi.h> 
  2.  
  3. void GetTestService() 
  4.      
  5.     struct HDIServiceManager *servmgr = HDIServiceManagerGet(); 
  6.     if (servmgr == nullptr) { 
  7.     HDF_LOGE("failed to get IServiceManager"); 
  8.     return
  9.   } 
  10.  
  11.     struct HdfRemoteService *sampleService = servmgr->GetService(servmgr, TEST_SERVICE_NAME); 
  12.   if (sampleService == nullptr) { 
  13.     HDF_LOGE("failed to get TEST_SERVICE"); 
  14.     return
  15.   } 
  16.     // do something 

 總結

本文介紹了 HDI 的總體方案,重點介紹了 HDI 的 IPC 模式具體實現方法和驅動框架能力,相信對讀者理解和使用 HDI 有所幫助。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-09-10 15:12:04

鴻蒙HarmonyOS應用

2021-09-08 15:09:29

鴻蒙HarmonyOS應用

2022-03-24 15:00:09

Harmony編解碼鴻蒙

2023-09-06 15:35:14

2023-09-14 15:49:42

PWM鴻蒙

2021-09-07 15:48:28

鴻蒙HarmonyOS應用

2022-04-20 20:28:40

HDF 驅動框架鴻蒙操作系統

2023-09-13 15:33:57

I2C鴻蒙

2023-08-17 15:01:08

ArkUI布局渲染

2022-09-05 15:18:23

HDF單鏈表嵌入式系統

2023-03-20 16:05:49

HDF傳感器驅動開發

2022-06-02 14:27:05

UI框架JS

2023-10-27 06:33:14

鴻蒙開發套件

2022-10-17 14:29:24

鴻蒙應用開發

2022-03-18 15:29:02

Harmony鴻蒙架構

2022-05-16 11:50:45

HDF驅動框架

2022-01-26 15:07:04

bytrace工具OpenHarmon
點贊
收藏

51CTO技術棧公眾號

欧美人体视频xxxxx| 亚欧视频在线观看| 久久久久亚洲精品中文字幕| 一区二区三区四区在线播放| 精品国产一区二区三区免费| 伊人久久国产精品| 亚洲二区免费| 中文字幕最新精品| 中文在线永久免费观看| 78精品国产综合久久香蕉| 一个色在线综合| 日韩中文一区二区三区| www香蕉视频| 日韩成人av影视| 国内精品久久久| 国产wwwwxxxx| 亚洲自拍电影| 欧美成人官网二区| 黄色三级视频在线| sis001亚洲原创区| 国产精品久久久久久久久久免费看 | 日本福利一区二区| 精品免费久久久久久久| 国产黄在线看| 99久久久久久99| 国产91精品露脸国语对白| 欧美sm美女调教| 在线观看免费污视频| 亚洲美女尤物影院| 午夜欧美2019年伦理| 欧洲美女和动交zoz0z| 国产特黄在线| 久久久精品欧美丰满| 国产精品国产亚洲精品看不卡15| 在线观看中文字幕码| 久久久精品性| 欧美中文在线免费| wwwxxx亚洲| 亚洲精品免费观看| 欧美激情视频三区| 国产免费无码一区二区视频| 欧美xxxxx视频| 中文字幕日韩精品在线| 97人妻精品一区二区免费| 欧美久久精品| 欧美精品一区二区三区四区 | 成人在线观看毛片| 成人影欧美片| 亚洲精品国久久99热| 7777在线视频| 制服丝袜在线播放| 一区二区三区久久| 丁香六月激情网| 丁香花在线影院| 午夜国产精品一区| 免费成人午夜视频| 日韩欧美一中文字暮专区| 午夜视频在线观看一区| 国产97在线 | 亚洲| www.精品| 欧美中文字幕不卡| 九九热精品在线播放| 欧美美女福利视频| 欧美一卡二卡三卡| 午夜视频在线观看国产| 青青久久av| 国产亚洲成av人片在线观看桃| 国产三级av在线播放| 糖心vlog免费在线观看| 电影一区二区| 3d动漫精品啪啪一区二区竹菊| 亚洲高清视频免费| 一区中文字幕| 亚洲激情在线观看视频免费| 深爱五月激情网| 色综合久久网| 欧美激情亚洲视频| 欧产日产国产69| 久国产精品韩国三级视频| 99re资源| 黄色在线免费观看大全| 亚洲视频一区二区在线| 99在线免费视频观看| 中文在线аv在线| 欧美日韩精品一区二区天天拍小说 | 欧美tk—视频vk| 亚洲色成人网站www永久四虎| 日韩一区自拍| 久久久视频免费观看| 亚洲av无码不卡| 国产乱子轮精品视频| 久久av一区二区| 日本美女高清在线观看免费| 亚洲综合免费观看高清完整版在线 | 日韩免费电影一区二区| h片在线免费观看| 欧美午夜激情在线| 麻豆网站免费观看| 国产成人手机高清在线观看网站| 另类美女黄大片| 丁香社区五月天| 国产精品538一区二区在线| 蜜桃网站成人| 污网站在线免费看| 欧美性高清videossexo| jjzzjjzz欧美69巨大| 日韩久久电影| 1769国产精品| 性生活黄色大片| 国产精品久久久久桃色tv| 日韩中文字幕免费| 影音先锋亚洲视频| а√天堂8资源在线| 欧美精品视频www在线观看| 欧美色图亚洲激情| 国产精品s色| 国产一区私人高清影院| 欧美新色视频| 午夜精品福利一区二区蜜股av | 国产精品88久久久久久妇女| 中文在线аv在线| 欧美sm极限捆绑bd| 午夜免费激情视频| 精品一区二区三区在线观看 | 99自拍视频在线观看| 欧美伊人精品成人久久综合97| 国产香蕉精品视频| 一区二区影院| 国产欧美 在线欧美| 九色在线视频蝌蚪| 一本一道久久a久久精品| 国产av一区二区三区传媒| 亚洲精品电影| 亚洲精品女av网站| www在线视频| 这里只有精品免费| 欧美色视频一区二区三区在线观看| 久久五月激情| 日韩资源av在线| sis001欧美| 一区二区在线免费视频| 精品免费囯产一区二区三区 | 成人免费无遮挡| 日韩精品视频在线免费观看| 日本亚洲欧美在线| av成人免费在线| 少妇高潮毛片色欲ava片| 国产精品调教| 97视频免费看| 视频国产在线观看| 一本一道久久a久久精品综合蜜臀| 精品人妻一区二区三区香蕉| 国产精品毛片一区二区三区| 精品欧美日韩在线| 欧美xoxoxo| 中文字幕日韩免费视频| 国产999精品久久久影片官网| 亚欧视频在线观看| 99久久久久免费精品国产| 国产精品后入内射日本在线观看| 豆花视频一区二区| 57pao国产精品一区| 女人天堂在线| 精品视频全国免费看| 三级影片在线观看| 国产精品18久久久久久久久久久久| 欧美一级中文字幕| 精品人人人人| 国产精品福利在线观看| 日本精品在线| 欧美精品一区二区在线播放| 国产美女激情视频| 国产精品久久久久久亚洲伦| 91在线第一页| 99亚洲视频| 日韩国产精品一区二区| 97色婷婷成人综合在线观看| 欧美国产日本高清在线 | 国产成人愉拍精品久久 | 成年人av电影| 91在线精品一区二区三区| 十八禁视频网站在线观看| 欧美高清视频手机在在线| 97碰碰视频| 中文av在线全新| 久久艹在线视频| 手机福利在线| 日韩视频一区二区在线观看| 豆国产97在线 | 亚洲| 久久久精品天堂| 日韩欧美中文在线视频| 久久久精品午夜少妇| 色婷婷777777仙踪林| 色老板在线视频一区二区| 91精品久久久久久久久久久久久 | 午夜视黄欧洲亚洲| 国产三级精品三级观看| 99精品偷自拍| 91欧美一区二区三区| 久久美女性网| 69精品丰满人妻无码视频a片| 亚洲永久精品唐人导航网址| 91综合免费在线| 欧美色片在线观看| 欧美激情精品久久久久久变态| 国产福利小视频在线观看| 日韩午夜在线影院| 国产情侣呻吟对白高潮| 精品美女视频在线观看免费软件| 亚洲一区二区视频| 91ts人妖另类精品系列| 久久先锋影音av| 91传媒理伦片在线观看| 久久国产日韩欧美精品| 37pao成人国产永久免费视频| 欧美福利网址| 在线看视频不卡| 久久最新网址| 久久婷婷人人澡人人喊人人爽| 欧美.com| 成人精品一区二区三区| 日韩网站中文字幕| 51ⅴ精品国产91久久久久久| 久草在线视频福利| 久久国产精品久久久久久| 天堂中文а√在线| 综合国产在线观看| 1024免费在线视频| 原创国产精品91| 国产在线小视频| 国产丝袜高跟一区| 天天干天天色天天| 亚洲精品电影在线观看| 刘亦菲久久免费一区二区| 日韩三级视频中文字幕| 国产又爽又黄免费软件| 欧美日韩免费观看一区三区| 中文字幕欧美人妻精品| 欧美优质美女网站| 中文在线最新版天堂| 欧美日韩精品是欧美日韩精品| 毛片视频网站在线观看| 精品日本高清在线播放| 日韩一区二区视频在线| 色综合久久久网| 男人天堂视频网| 在线观看91精品国产入口| 波多野结衣理论片| 欧美日韩免费不卡视频一区二区三区| 中文字幕乱码视频| 91精品欧美久久久久久动漫| 99产精品成人啪免费网站| 日韩欧美一区二区免费| 精品人妻少妇嫩草av无码专区| 日韩美女天天操| 日本wwwxxxx| 亚洲区中文字幕| jizz在线观看中文| 久久久999国产| 青青草原国产在线| 欧美性受xxxx白人性爽| 欧美二三四区| 国产精品中文在线| 国产精品一区二区三区www| 91丝袜脚交足在线播放| 红杏aⅴ成人免费视频| 美女主播视频一区| 日本一区二区三区视频| 日本精品免费视频| 亚洲精品少妇| 黄色片视频在线| 亚洲黄色在线观看视频| 福利视频导航一区| 制服丝袜在线一区| 欧美一区二区视频在线观看| 男人天堂手机在线观看| 国产亚洲欧美aaaa| 宅男在线观看免费高清网站| 555www成人网| 亚洲黑人在线| 国产一区二区在线网站| 日韩av有码| 又大又硬又爽免费视频| 日韩国产精品久久久久久亚洲| 国产一级免费大片| 久久嫩草精品久久久精品一| 亚洲 欧美 国产 另类| 性做久久久久久| 影音先锋国产在线| 亚洲第一天堂无码专区| 国产在线观看黄| 欧美高清第一页| 国产成人77亚洲精品www| 国产不卡一区二区在线观看| 国产亚洲电影| 日本久久久网站| 蜜臀av性久久久久蜜臀aⅴ四虎 | 综合久久伊人| 久久婷婷人人澡人人喊人人爽| 国产精品毛片久久| 国产免费成人在线| 国产成人久久精品77777最新版本| jizz欧美性20| 亚洲国产aⅴ成人精品无吗| 在线视频免费观看一区| 亚洲跨种族黑人xxx| 免费男女羞羞的视频网站在线观看| 国产精品h片在线播放| 大伊香蕉精品在线品播放| 精品久久免费观看| 日日夜夜免费精品视频| 国产+高潮+白浆+无码| 亚洲欧洲综合另类在线| 人妻中文字幕一区二区三区| 亚洲精品999| 色呦呦在线播放| 成人激情在线播放| 不卡中文一二三区| 超碰网在线观看| 97se亚洲国产综合自在线 | 在线看不卡av| 视频国产在线观看| 91精品国产自产91精品| 成人动漫视频| 青青在线免费观看| 国产精品原创巨作av| 午夜成人亚洲理伦片在线观看| 日韩人在线观看| 日韩大胆视频| 26uuu日韩精品一区二区| 国内自拍欧美| 福利视频一二区| 成人免费观看视频| 久久免费视频99| 欧美sm美女调教| 美女网站视频在线| 97超碰人人看人人| 欧美久久一级| 97久久久免费福利网址| 深夜国产在线播放| 99影视tv| 亚洲成人原创| 国产精品无码专区| 精品日韩视频在线观看| 视频在线观看你懂的| 日韩av手机在线看| 精品国产aⅴ| 手机看片一级片| 一区视频在线播放| 国产片高清在线观看| 精品视频9999| av日韩在线播放| 黄色大片中文字幕| 97超碰欧美中文字幕| 欧美国产成人精品一区二区三区| 亚洲欧美日韩天堂| 超薄肉色丝袜脚交一区二区| 亚洲精品免费在线看| 久88久久88久久久| 免费人成年激情视频在线观看| 日韩美女主播在线视频一区二区三区 | 成人在线播放网址| 91在线码无精品| 中文字幕欧美在线观看| 久久综合亚洲社区| 中文字幕一区二区三区日韩精品| 激情伊人五月天| 国产欧美日韩三级| 99久久精品国产一区二区成人| 欧美黑人巨大xxx极品| 日韩av资源网| 天天操,天天操| 久久综合色一本| 精品国产免费观看| 亚洲欧美在线一区| 日日夜夜亚洲精品| 国产aaa免费视频| 国产亚洲综合在线| 国产老女人乱淫免费| 国产做受高潮69| 欧美熟乱15p| 91人人澡人人爽| 在线中文字幕一区| 中文在线免费| 日韩欧美一区二区三区四区五区| 久草中文综合在线| 天天干天天干天天操| 久久久成人的性感天堂| 免费看成人人体视频| 自拍偷拍一区二区三区四区| 亚洲va韩国va欧美va精品| 福利视频在线导航| 国产精品永久入口久久久| 免费在线观看精品| 一区二区三区视频免费看| 最近中文字幕日韩精品| 清纯唯美亚洲经典中文字幕| 99re6在线观看| 色综合亚洲欧洲| 欧美极品少妇videossex|