directX directInput键盘引发E_accessdenied

我正在尝试使用DirectInput键盘,而我的代码正在抛出一个奇怪的错误。 我可以通过创build和设置的一切,他们都返回S_OK,但是当我尝试运行

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

小时回来作为(hex地址)“访问代码是无效的”,当我做一个检查

 if(FAILED(hr)) 

它会以E_ACCESSDENIED的forms返回,keyBuffer或行的任何部分都没有错误(或有关该事件的警告)。

对此有任何想法

IDirectInputDevice8::GetDeviceState的文档给出了以下可能的返回值:

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

您应该检查DIERR_*宏是否与E_ACCESSDENIED重叠。

此外,我见过的一些代码以与DIERR_INPUTLOST相同的方式处理E_ACCESSDENIED 。 你可能想要尝试重新Acquire输入,然后再去。