Почему QueryInterface возвращает ошибку ???

Тема в разделе "WASM.RESEARCH", создана пользователем Rustem, 9 фев 2006.

  1. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Приветствую!!!



    Хочу получить адреса интерфейсов IDirect3D, IDirect3DDevice7 при помощи QueryInterface

    первый получаю успешно, а со вторым проблемы HRESULT не равен 0.



    код таков:

    lea eax, pID3D

    push eax ;[out]ppvObj

    push offset IID_Direct3D ;[in] IID_IDIRECT

    push pI

    mov eax, pI

    mov eax, [eax]

    call dword ptr [eax + 0] ;QueryInterface



    , где pI - указатель который вернула Direct3DCreate



    Если вызвать этот же код с IID_DIRECT3DDEVICE ,то возвращается ошибка...



    PS Может есть другой способ получения интерфейсов
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Другой способ как раз описан в доке:



    After retrieving a pointer to the IDirect3D7 interface, you can create a rendering device by calling the IDirect3D7::CreateDevice method. The CreateDevice method accepts the globally unique identifier (GUID) of the desired device, the address of the IDirectDrawSurface7 interface for the surface that the device will render to, and the address of a variable that the method will set to an IDirect3DDevice7 interface pointer if the device object is created successfully.