我正在尝试使用DirectInput键盘,我的代码抛出了一个奇怪的错误。 我可以完成创建,设置所有内容,它们都返回S_OK,但是当我尝试运行时
HRESULT hr;
hr = m_pDIKeyboard->GetDeviceState( sizeof(keyBuffer), (LPVOID)&keyBuffer );
hr返回为(十六进制地址)“访问代码无效”,以及当我检查
时if(FAILED(hr))
它以E_ACCESSDENIED的形式返回 keyBuffer或该行的任何部分都没有错误(或警告)。
对此的任何想法
答案 0 :(得分:1)
IDirectInputDevice8::GetDeviceState
的文档提供了以下可能的返回值:
返回值
如果方法成功,则返回值为DI_OK。如果方法失败,则返回值可以是以下错误值之一:DIERR_INPUTLOST,DIERR_INVALIDPARAM,DIERR_NOTACQUIRED,DIERR_NOTINITIALIZED,E_PENDING。
您应该检查DIERR_*
宏中没有一个与E_ACCESSDENIED
重叠。
此外,我见过的一些代码处理E_ACCESSDENIED
的方式与DIERR_INPUTLOST
相同。您可能想尝试重新Acquire
输入并再次进行操作。