Как я могу использовать полученный указатель интерфейса Com для доступа к интерфейсу?

Мне удалось решить начальную проблему в предыдущем вопросе, и я получаю указатель на интерфейс обратно. Похоже, что мне просто нужно было отправить переменную IntPtr в качестве параметра ref и использовать его.

Это оставляет меня с еще одной проблемой, на которую я еще не нашел четкого ответа. Теперь, когда у меня есть значение указателя, как я могу использовать его для перехода к реальному интерфейсу? Я определил интерфейс C # для доступа к COM:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace CoreAudioApi.Interfaces
{
[Guid("7FB7B48F-531D-44A2-BCB3-5AD5A134B3DC"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

public interface IAudioVolumeLevel : IPerChannelDbLevel { }
}

Это соответствует интерфейсу COM и как мои другие интерфейсы настроены. Пример C ++, с которым я работаю, отправляет указатель, определенный из интерфейса:

IAudioVolumeLevel* pIaudioVolumeLevel;
getMicrophoneBoostVolumeLevel(defaultDevice, &pIaudioVolumeLevel);

По возвращении настройки громкости для этой конкретной части можно проверить и установить:

pIaudioVolumeLevel->GetLevelRange(0, &fMinDb, &fMaxDb, &fStepDb);
pIaudioVolumeLevel->GetLevel(0, &pfCurrentDb);
pIaudioVolumeLevel->SetLevel(0, pfCurrentDb, NULL);

Предполагая, что я получаю правильное значение в возвращенном указателе, как мне теперь установить уровень через C #?

Спасибо

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector