directX directInput键盘抛出E_accessdenied

时间:2012-02-24 04:50:36

标签: c++ windows directx

我正在尝试使用DirectInput键盘,我的代码抛出了一个奇怪的错误。 我可以完成创建,设置所有内容,它们都返回S_OK,但是当我尝试运行时

HRESULT hr;
hr = m_pDIKeyboard->GetDeviceState( sizeof(keyBuffer), (LPVOID)&keyBuffer );

hr返回为(十六进制地址)“访问代码无效”,以及当我检查

if(FAILED(hr))

它以E_ACCESSDENIED的形式返回 keyBuffer或该行的任何部分都没有错误(或警告)。

对此的任何想法

1 个答案:

答案 0 :(得分:1)

IDirectInputDevice8::GetDeviceState的文档提供了以下可能的返回值:

  

返回值
  如果方法成功,则返回值为DI_OK。如果方法失败,则返回值可以是以下错误值之一:DIERR_INPUTLOST,DIERR_INVALIDPARAM,DIERR_NOTACQUIRED,DIERR_NOTINITIALIZED,E_PENDING。

您应该检查DIERR_*宏中没有一个与E_ACCESSDENIED重叠。

此外,我见过的一些代码处理E_ACCESSDENIED的方式与DIERR_INPUTLOST相同。您可能想尝试重新Acquire输入并再次进行操作。