求助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);
}

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

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

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

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

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

m_keyBuffer有正确内容么___