我正在尝试使用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
输入,然后再去。