【问题标题】:directX directInput Keyboard throws E_accessdenieddirectX directInput 键盘抛出 E_accessdenied
【发布时间】:2012-02-24 04:50:35
【问题描述】:

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

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

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

if(FAILED(hr))

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

对此有任何想法

【问题讨论】:

    标签: c++ windows directx


    【解决方案1】:

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

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

    您应该检查没有任何DIERR_* 宏与E_ACCESSDENIED 重叠。

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

    【讨论】:

    • 但它不会显示为这些 HRESULT 值之一,而不是“访问代码无效”
    猜你喜欢
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多