Добрые люди, помогите! Уже и не знаю на что думать... ----------------------------------------------- ... GUID_SYSKEYBOARD GUID <6F1D2B61h, 0D5A0h, 11CFh, <0BFh, 0C7h, 44h, 45h, 53h, 54h, 00h, 00h>> ... PUSH 0 CALL ADDR_GetModuleHandleA MOV WINDOW_CLASS.hInstance, EAX ... ;load DINPUT.DLL INVOKE LoadLibraryA, OFFSET DLL_DINPUT MOV DLL_HANDLE_DINPUT, EAX ;DINPUT.DLL ;get DirectInputCreateA address INVOKE GetProcAddress, DLL_HANDLE_DINPUT, OFFSET NAME_DirectInputCreateA MOV ADDR_DirectInputCreateA, EAX ;get DIRECTINPUT8A interface PUSH 0 PUSH OFFSET POINTER_INTERFACE_DIRECTINPUT8A PUSH 0800h ;DIRECTINPUT_VERSION PUSH WINDOW_CLASS.hInstance CALL ADDR_DirectInputCreateA ;get IDIRECTINPUTDEVICE8A interface PUSH 0 PUSH OFFSET POINTER_INTERFACE_DIRECTINPUTDEVICE8A PUSH OFFSET GUID_SYSKEYBOARD MOV EAX, POINTER_INTERFACE_DIRECTINPUT8A PUSH EAX /MOV EAX, [EAX] error \CALL DWORD PTR [EAX + INTERFACE_DIRECTINPUT8A.CreateDevice] ----------------------------------------------- При инициализации DirectInput возникает ошибка. При успешном выполнении функции ADDR_DirectInputCreateA - EAX должен быть равен нулю...
3DManiac Вот содержание этого IID: IID_IDirectInput8 GUID < 0BF798030h, 0483Ah, 04DA2h, <0AAh, 099h, 05Dh, 064h, 0EDh, 036h, 097h, 000h > >
Leat Так он же не DirectInput8Create пытался использовать. В dsound тоже нельзя получить инстанцию 8го DirectSound через стандартный конструктор и приходится юзать новый.
Quantum У него же написано: ";get DIRECTINPUT8A interface " И вообще не пойму, зачем использовать старые интерфейсы. Пора уже D3D10 осваивать, и всё что к нему прилагается.
Leat Это же комментарий. Для совместимости. В идеале нужно юзать новый интерфейс, если он есть, а в противном случае подгружать старый.
Скажи, друг - почему такая заморочка? Эти функции глючные: DirectInputCreateA DirectInputCreateW DirectInputCreate в чем причина их фиктивности? Значит надо так использовать? IID_IDirectInput8 GUID < 0BF798030h, 0483Ah, 04DA2h, <0AAh, 099h, 05Dh, 064h, 0EDh, 036h, 097h, 000h > > PUSH 0 PUSH OFFSET POINTER_INTERFACE_DIRECTINPUT8A PUSH OFFSET IID_IDirectInput8 PUSH 0800h ;DIRECTINPUT_VERSION PUSH WINDOW_CLASS.hInstance CALL ADDR_DirectInput8Create ?
3DManiac Видимо, они умеют создавать только 7й IDirectInput, а для 8го и 9го нужно юзать новую dll: http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/direc tx9_c_Summer_04/directx/input/ref/functs/directinput8create.asp
3DManiac D3D10 для Vista. А всё, что к нему прилагается, оталось прежним. Только какие-то примочки появились для DInput и DSound. DShow вообще в отдельный SDK засунули (и может, уже давно), типа: "он больше не рекомендуется для игр".