Поделиться через


Элемент управления томом декодера

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Приложения управляют громкость звука через интерфейс IBasicAudio. Обработчик интерфейса IBasicAudio предоставляется для KSProxy. Для декодирования для обработки команд тома из KSProxy необходимо добавить несколько разделов реестра в скрипт установки и поддерживать набор свойств KSPROPSETID_Wave.

Создайте несколько новых разделов реестра для драйвера:

HKLM\SYSTEM\
  CurrentControlSet\Control
    DeviceClasses
      (decoder guid, eg 2721AE....)
        (Pnp id, eg ##?#VDGENDEV#...)
          #GLOBAL
            Device Parameters
              CLSID      REG_SZ   {17CCA...}
                FriendlyName   REG_SZ   WDM DVD Driver
                  Interfaces <--- create this key
                  {b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d} // Create this key.
    MediaInterfaces
      {b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d} // Create this key.
        (default)  REG_SZ   'KsProxy IBasicAudio handler' // Set this value.
        IID        REG_SZ   56 a8 68 b3 0a d4 11 ce b0 3a 00 20 af 0b a7 70 
                            // Create this key.

Для реализации управления томом драйвер также должен поддерживать KSPROPSETID_Wave, а также KsProperty.Id = KSPROPERTY_WAVE_VOLUME. Это свойство передается драйверу через методы IKsPropertySet::Get и IKsPropertySet::Set. Поля LeftAttenuation и RightAttentuation указывают тома левых или правых динамиков в виде линейных значений от 0x0000 до 0xffff.

интерфейсы и спецификации декодировщика