Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QueryInterface() & IDirectSoundCaptureBuffer8, Всегда возвращает E_NOINTERFACE 
V
    Опции темы
Aeore
  Дата 8.2.2011, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Проблема состоит в том, что QueryInterface() в конце данного кода всегда возвращает E_NOINTERFACE. В чем может быть проблема ? Вроде как портирую вполне рабочий код на C++, у какого таких проблем не наблюдается. Что я делаю не так?

   
Код

    m_DSCapture: IDirectSoundCapture;
    m_DSCaptureBuffer: IDirectSoundCaptureBuffer;
    m_DSCaptureBuffer8: IDirectSoundCaptureBuffer8;
    m_DSCaptureBufferDesc: DSCBUFFERDESC;
    m_CaptureWaveFmt: TWaveFormatEx;


    ds_result := DirectSoundCaptureCreate(PEnumeratedDevice(m_CaptureDeviceList[n_CaptureDevice])^.DeviceGUID, m_DSCapture, nil);
    if ds_result <> DS_OK then begin
      CloseCapture;
      Exit(ds_result);
    end;

    m_CaptureWaveFmt.wFormatTag := WAVE_FORMAT_PCM;
    m_CaptureWaveFmt.nChannels := 1;
    m_CaptureWaveFmt.wBitsPerSample := 16;
    m_CaptureWaveFmt.nSamplesPerSec := 48000;
    m_CaptureWaveFmt.nBlockAlign := m_CaptureWaveFmt.nChannels * (m_CaptureWaveFmt.wBitsPerSample shr 3);
    m_CaptureWaveFmt.nAvgBytesPerSec := m_CaptureWaveFmt.nSamplesPerSec * m_CaptureWaveFmt.nBlockAlign;
    m_CaptureWaveFmt.cbSize := 0;

    m_DSCaptureBufferDesc.dwSize := SizeOF(DSCBUFFERDESC);
    //m_DSCaptureBufferDesc.dwFlags := DSBCAPS_CTRLPOSITIONNOTIFY;
    m_DSCaptureBufferDesc.dwFlags := 0;
    m_DSCaptureBufferDesc.dwBufferBytes := ...;
    m_DSCaptureBufferDesc.dwReserved := 0;
    m_DSCaptureBufferDesc.lpwfxFormat := @m_CaptureWaveFmt;
    m_DSCaptureBufferDesc.dwFXCount := 0;
    m_DSCaptureBufferDesc.lpDSCFXDesc := nil;

    ds_result := m_DSCapture.CreateCaptureBuffer(m_DSCaptureBufferDesc, m_DSCaptureBuffer, nil);
    if ds_result <> DS_OK then begin
      CloseCapture;
      Exit(ds_result);
    end;

    ds_result := m_DSCaptureBuffer.QueryInterface(IID_IDirectSoundCaptureBuffer8, m_DSCaptureBuffer8);
    if ds_result <> DS_OK then begin
      CloseCapture;
      Exit(ds_result);
    end;


PM MAIL ICQ   Вверх
cat512
Дата 9.2.2011, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 438
Регистрация: 20.3.2007

Репутация: 1
Всего: 15



Ну во первых, было бы не плохо посмотреть портируемый код!
Е_NOINTERFACE, говорит о том что запрашиваемый интерфейс не поддерживается.
Для получение более точной инфы, надо "промаскировать" возвр. значение функц. (H_RESULT). 

Всё поняино!
Цитата

The IDirectSoundCaptureBuffer8 interface is supported only on buffers created by an object of class CLSID_DirectSoundCapture8. If the IDirectSoundCapture8 interface was obtained from DirectSoundCaptureCreate8, IDirectSoundCaptureBuffer8 is supported. If IDirectSoundCapture8 was obtained from the earlier DirectSoundCaptureCreate function, only IDirectSoundCaptureBuffer is supported.

Создавать объект надо функцией DirectSoundCaptureCreate8!

Это сообщение отредактировал(а) cat512 - 9.2.2011, 03:02
PM MAIL   Вверх
Aeore
Дата 9.2.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Э-хее... Действительно, ты прав! Спасибо, видать я совсем заработался smile Закрываю вопрос.

PS: Жаль постов у меня мало -- не могу тебе "+" поставить..:(
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0662 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.