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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

DirectInput:poll轮询理解

發(fā)布時(shí)間:2025/3/21 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DirectInput:poll轮询理解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DirectInput中,在Acquire之后就已經(jīng)獲取了設(shè)備控制,為什么還要多一步poll輪詢呢?而且輪詢和Acquire的先后順序又是什么呢?對此一直不理解的我,查了MSDN,終于明白了這個(gè)輪詢的意思。MSDN原文如下:

  

 同樣,翻譯如下:

  從在一個(gè)DirectInput 設(shè)備上被輪詢的設(shè)備中獲取數(shù)據(jù)。如果這個(gè)設(shè)備沒有請求輪詢,則調(diào)用這個(gè)方法沒有效果。如果一個(gè)請求輪詢的設(shè)備未被定期輪詢,那么不會從這個(gè)設(shè)備上接收到新的數(shù)據(jù)。調(diào)用這個(gè)方法導(dǎo)致DirectInput去更新設(shè)備狀態(tài),產(chǎn)生輸入事件(如果緩沖區(qū)數(shù)據(jù)可用),并且設(shè)置通知事件(如果通知可用)。

返回值

  如果這個(gè)方法成功,返回值是DI_OK,如果設(shè)備沒有要求輪詢,返回DI_NOEFFECT。如果調(diào)用失敗,返回值會是以下錯(cuò)誤值之一:DIERR_INPUTLOST, DIERR_NOTACQUIRED, DIERR_NOTINITIALIZED.

注意:

  在一個(gè)設(shè)備數(shù)據(jù)能夠被輪詢之前,它的數(shù)據(jù)格式必須通過使用IDirectInputDevice8::SetDataFormat或IDirectInputDevice8:SetActionMap方法設(shè)置,并且設(shè)備必須被通過使用IDirectInputDevice8 接口方法被獲取。

?

  另外說一下輪詢在操作系統(tǒng)中的作用:大致來講,就是cpu通過訪問外設(shè),詢問外設(shè)是否有輪詢請求(例如數(shù)據(jù)需要更新),如果需要,就將外設(shè)的最新更新過的狀態(tài)保存到系統(tǒng)自己的緩沖區(qū)中。而我們則需要通過IDirectInputDevice8::GetDeviceState方法來告訴操作系統(tǒng)將保存外設(shè)最新狀態(tài)的系統(tǒng)緩沖區(qū)的數(shù)據(jù)復(fù)制到自己傳入的緩沖區(qū)中。

  那么到這里其實(shí)就顯的很明白了。順序上肯定是需要先Acquire再Poll的,原因就是MSDN上注意(Remarks)中所說的,在設(shè)備數(shù)據(jù)被輪詢之前,必須先獲取(acquire)。

轉(zhuǎn)載于:https://www.cnblogs.com/FWFC/p/8985026.html

總結(jié)

以上是生活随笔為你收集整理的DirectInput:poll轮询理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。