C++ directX directInput键盘抛出E_访问被拒绝
我正在尝试使用DirectInput键盘,我的代码抛出了一个奇怪的错误。 我可以完成所有的创建和设置,它们都返回S_OK,但是当我尝试运行时C++ directX directInput键盘抛出E_访问被拒绝,c++,windows,directx,C++,Windows,Directx,我正在尝试使用DirectInput键盘,我的代码抛出了一个奇怪的错误。 我可以完成所有的创建和设置,它们都返回S_OK,但是当我尝试运行时 HRESULT hr; hr = m_pDIKeyboard->GetDeviceState( sizeof(keyBuffer), (LPVOID)&keyBuffer ); hr返回为(十六进制地址)“访问代码无效”,当我检查 if(FAILED(hr)) 它以E_ACCESSDENIED的形式返回 keyBuffer或行的任何部分都
HRESULT hr;
hr = m_pDIKeyboard->GetDeviceState( sizeof(keyBuffer), (LPVOID)&keyBuffer );
hr返回为(十六进制地址)“访问代码无效”,当我检查
if(FAILED(hr))
它以E_ACCESSDENIED的形式返回
keyBuffer或行的任何部分都没有错误(或警告)
有关此问题的任何想法,请参阅文档,给出以下可能的返回值:
返回值如果该方法成功,则返回值为DI_OK。如果方法失败,返回值可以是以下错误值之一:DIERR\u INPUTLOST、DIERR\u INVALIDPARAM、DIERR\u NOTACQUIRED、DIERR\u NOTINITIALIZED、E\u PENDING 您应该检查
DIERR.*
宏是否与E\u ACCESSDENIED
重叠
此外,我看到的一些代码处理E\u ACCESSDENIED
的方式与DIERR\u INPUTLOST
相同。您可能希望尝试重新获取输入,然后再试一次。的文档提供以下可能的返回值:
返回值如果该方法成功,则返回值为DI_OK。如果方法失败,返回值可以是以下错误值之一:DIERR\u INPUTLOST、DIERR\u INVALIDPARAM、DIERR\u NOTACQUIRED、DIERR\u NOTINITIALIZED、E\u PENDING 您应该检查
DIERR.*
宏是否与E\u ACCESSDENIED
重叠
此外,我看到的一些代码处理
E\u ACCESSDENIED
的方式与DIERR\u INPUTLOST
相同。您可能希望尝试重新获取输入,然后再试一次。但它不会显示为这些HRESULT值之一,而不是“访问代码无效”,而是显示为这些HRESULT值之一,而不是“访问代码无效”