2012-02-24 2 views
1

Я пытаюсь работать с клавиатурой DirectInput, и мой код бросает странную ошибку. Я могу пройти через создание и настройка всего и все они возвращают S_OK, но когда я пытаюсь запуститьdirectX directInput Keyboard throws E_accessdenied

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

час возвращается в виде (шестнадцатеричный адрес) «код доступа неверен», и когда я делаю чек на

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. Возможно, вы захотите попытаться ввести входной сигнал и снова нажать.

+0

, но тогда он не будет отображаться как один из значений HRESULT, а не «код доступа недействителен» – gardian06

+1

Повторное приобретение - отличный намек! Он решил мою проблему здесь – Vinzenz

Смежные вопросы