directX directInput 键盘抛出 E_accessdenied

Posted

技术标签:

【中文标题】directX directInput 键盘抛出 E_accessdenied【英文标题】:directX directInput Keyboard throws 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 或该行的任何部分都没有错误(或警告)。

对此有任何想法

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

但它不会显示为这些 HRESULT 值之一,而不是“访问代码无效”

以上是关于directX directInput 键盘抛出 E_accessdenied的主要内容,如果未能解决你的问题,请参考以下文章

如何制作小游戏

DirectX 游戏挂钩

管理输入 带 DirectX DirectInput 的鼠标

DirectX DirectInput C# 测量音频输入

为啥我无法使用 DirectInput 获取键盘?

使用 DirectInput 在 C# 中检索键盘状态?