Original Post
Hi,
I''m messing with DirectX for pretty much the first time now and I can''t figure out why the following bit of code produces an E_NOINTERFACE error:
Everything seems to be valid, but the interface isn''t found.
Thanks for reading,
Crispy
LPDIRECTSOUND3DLISTENER Query3DListenerInterface()
{
HRESULT ErrCode;
DSBUFFERDESC BufferDescriptor;
LPDIRECTSOUNDBUFFER PrimaryBuffer = NULL;
LPDIRECTSOUND3DLISTENER Listener = NULL;
//DirectSound is of type LPDIRECTSOUND8
if(DirectSound == NULL)
return NULL;
ZeroMemory(&BufferDescriptor, sizeof(DSBUFFERDESC));
BufferDescriptor.dwSize = sizeof(DSBUFFERDESC);
BufferDescriptor.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_PRIMARYBUFFER;
if((ErrCode = DirectSound->CreateSoundBuffer(&BufferDescriptor, &PrimaryBuffer, NULL)) != DS_OK)
{
DX8Error("Query3DListenerInterface -> CreateSoundBuffer", ErrCode);
return NULL;
}
//error appears here:
if((ErrCode = PrimaryBuffer->QueryInterface(IID_IDirectSound3DListener, (VOID**)&Listener)) != DS_OK)
{
PrimaryBuffer->Release();
DX8Error("Query3DListenerInterface -> QueryInterface()", ErrCode);
return NULL;
}
PrimaryBuffer->Release();
return Listener;
}