pan_yz
2015-04-11 13:59
采纳率: 100%
浏览 6.5k

求助0xC0000005: 读取位置 0x00000004 时发生访问冲突错误

void DInputClass::GetInput()
{
HRESULT hr = m_KeyboardDevice->GetDeviceState(sizeof(m_keyBuffer), (void**)&m_keyBuffer); //在这里提示错误了
//获取键盘输入消息
if(hr)
{
m_KeyboardDevice->Acquire();

m_KeyboardDevice->GetDeviceState( sizeof(m_keyBuffer),(LPVOID)m_keyBuffer );
}

hr = m_MouseDevice->GetDeviceState(sizeof(DIMOUSESTATE), (void**)&m_MouseState); 
//获取鼠标输入消息
if(hr)
{
    m_MouseDevice->Acquire();
    m_MouseDevice->GetDeviceState( sizeof(DIMOUSESTATE), (void**)&m_MouseState);
}

}
请问出了什么问题?在其他的程序可以跑。。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • oyljerry 2015-04-11 15:05
    已采纳

    m_keyboarddevice估计不是正确的指针,你没有正确获取到。

    点赞 评论
  • devmiao 2015-04-11 15:05

    检查下,对象没有初始化正确分配内存

    点赞 评论
  • lx624909677 2015-04-11 16:07

    按F5来运行程序,看看断在哪儿了,看下堆栈调用窗口和内存检测区域,应该是空指针之类的错误

    点赞 评论
  • 蒋晟 2015-04-11 22:12

    应该用if(SUCCEEDED(hr))
    你这个if里面代码现在在HRESULT包含错误值的时候才会执行,在值是正确而且为S_OK的时候反而不执行。

    点赞 评论
  • 奔跑的香蕉 2015-04-13 01:41

    m_keyBuffer有正确内容么___

    点赞 评论

相关推荐 更多相似问题