Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Windows Vista, Windows Server 2008 и более поздних версиях Windows подсистема звука поддерживает понятие устройства конечной точки звука, например динамики, наушники, микрофоны и cd-проигрыватели. Эта концепция звуковых конечных точек помогает создавать удобные для пользователей звуковые приложения, имеющие пользовательские интерфейсы, ссылающиеся на устройства конечных точек, которые пользователи напрямую управляют. Эти конечные точки имеют понятные имена, такие как "динамики", "наушники", "микрофон" и "CD-проигрыватель", которые приложения могут отображать в пользовательских интерфейсах. Дополнительные сведения об устройствах конечных точек см. в разделе "Устройства аудио конечных точек".
Подсистема звука моделирует устройство Plug and Play (PnP) на звуковом адаптере в качестве фильтра KS. Потоки данных входят и выходят из фильтра через штифты KS. Защелка моста — это пин KS, через него аудио устройство конечной точки подключается к фильтру KS. Дополнительные сведения о штифтах для бриджа см. в разделе «Аудиофильтровые графы».
Звуковая подсистема получает сведения об аудио устройства конечной точки, проверяя свойства контакта моста, к которому подключается устройство конечной точки. Одним из таких свойств является свойство категории пунктов (KSPROPERTY_PIN_CATEGORY).
Для каждого фильтра KS драйвер адаптера предоставляет таблицу PCPIN_DESCRIPTOR структур, описывающих свойства контактов KS, находящихся на фильтре. GUID категории пин-кода хранится в элементе KsPinDescriptor.Category структуры PCPIN_DESCRIPTOR. Для штыря моста значение GUID категории штыря указывает тип конечной точки, которая подключается к штырю моста. Например, GUID категории пинов KSNODETYPE_MICROPHONE указывает, что мостовой пин подключается к микрофону, GUID KSNODETYPE_SPEAKER указывает, что мостовой пин подключается к динамикам и т. д. Идентификаторы GUID KSNODETYPE_XXX заданы в файле заголовка Ksmedia.h.
Кроме того , PCPIN_DESCRIPTOR содержит GUID, который можно использовать для идентификации пин-кода по уникальному имени. Этот GUID пин-кода хранится в элементе KsPinDescriptor.Name структуры PCPIN_DESCRIPTOR. Имя GUID используется свойством (KSPROPERTY_PIN_NAME) для связывания удобочитаемого имени, найденного в реестре, с пином.
Подсистема звука вызывает свойство KSPROPERTY_PIN_NAME для связывания понятного имени с конечной точкой звука. KS обрабатывает этот запрос, сначала находит строку юникода в реестре, описывающую GUID KsPinDescriptor.Name. Если KS не находит запись, он выполняет поиск в реестре строки юникода, описывающей GUID KsPinDescriptor.Category .
Начиная с обновления Windows 10 2018 года, версия 1809, при поиске в реестре KS сначала ищет запись в ключе программного обеспечения устройства. Это создается INF-файлом через раздел AddReg, на который ссылается раздел [Models] в INF-файле драйвера устройства. Раздел AddReg создает эти записи с помощью ключа HKR\MediaCategories. Это позволяет разработчику драйверов создавать уникальные для устройства дружественные имена как для GUID имен, так и для GUID категорий, независимо от того, уникальны ли они для устройства или нет.
Если запись не установлена в программном ключе устройства или драйвер работает в операционной системе версии ранее Windows 10 1809, KS проверяет раздел реестра MediaCategories. Второй ключ рассматривается как глобальное пространство имен. Начиная с Windows 10 версии 1809 это пространство зарезервировано для глобальных определений и не должно изменяться новыми драйверами. Изменение записей под этим ключом не будет поддерживаться в будущем выпуске ОС.
Звуковые устройства, предоставляющие контакты со стандартными категориями GUID, должны включать встроенные драйверы KS.INF или KSCAPTUR.INF для регистрации имен в INF вашего устройства. Эти INFs для входящих сообщений содержат определения дружественных имен по умолчанию для предопределенных GUID категорий, которые драйвер может захотеть заполнить. Это те же GUID, найденные в элементе KsPinDescriptor.Category структуры PCPIN_DESCRIPTOR. Например, запись GUID категории KSNODETYPE_MICROPHONE имеет соответствующее понятное имя "микрофон", а запись GUID категории KSNODETYPE_SPEAKER имеет соответствующее понятное имя "динамики", и т. д.
GUID и понятные имена для идентификаторов категории и имен хранятся в реестре. Для каждой пары GUID-name в реестре строка GUID используется в качестве подключа в разделе "Категории мультимедиа". Под ключом GUID понятное имя строкового значения Юникода в переменной Name.
Если ни одна из дружественных имен и категорий контактов, определенных звуковой подсистемой, должным образом не описывает ваше устройство, вы можете определить собственную категорию контактов и имена GUID и связать с ними дружественные имена в INF. Чтобы убедиться, что GUID пин-категории является уникальным, используйте служебную программу, например Uuidgen.exe для создания GUID. Затем измените INF-файл, который устанавливает аудиоадаптер, чтобы записать GUID категории пинов и удобочитаемое имя в реестр. В следующем примере кода показан фрагмент INF-файла, который добавляет два идентификатора GUID категории пин-кода и соответствующие понятные имена в реестр:
[Manufacturer]
MyOEMName=Unicorn,NTamd64
[Unicorn.NTamd64]
MyDeviceName=MyDevice,Root\MyDevice
[MyDevice.NT]
Include=ks.inf, kscaptur.inf
Needs=KS.Registration, KSCAPTUR.Registration.NT
CopyFiles=MyDevice.CopyFiles
AddReg=PinNameRegistration
...
[PinNameRegistration]
HKR,%MediaCategories%\%GUID.MyNewEndpointCategory%,Name,,%Name.MyNewEndpointCategory%
HKR,%MediaCategories%\%GUID.MyNewEndpointName%,Name,,%Name.MyNewEndpointName%
...
[Strings]
MyOEMName="Unicorns Inc."
MyDeviceName="Sparkly Unicorn"
MediaCategories="MediaCategories"
GUID.MyNewEndpointCategory="{B72FBD1A-4634-4240-B207-0E6B52F3701C}"
GUID.MyNewEndpoint_2="{71DD3A5D-E303-49A0-ACEE-908634AA9520}"
Name.MyNewEndpointCategory="Unicorn"
Name.MyNewEndpointName="Fred the Unicorn"
Обе строки GUID были созданы Uuidgen.exe.
Приложения могут получить доступ к свойствам устройства аудио конечной точки с помощью интерфейса IPropertyStore устройства. Интерфейс использует ключи свойств, определенные в файлах заголовков Functiondiscoverykeys_devpkey.h и Mmdeviceapi.h, чтобы определить свойства. Приложение может использовать ключ свойства PKEY_Device_FriendlyName для получения понятного имени устройства конечной точки. Для пользовательских интерфейсов с ограниченным пространством можно получить более короткую версию понятного имени с помощью ключа свойства PKEY_Device_DeviceDesc . Дополнительные сведения об этих ключах свойств см. в разделе IMMDevice::OpenPropertyStore.
Экземпляр интерфейса IPropertyStore поддерживает постоянное хранилище свойств для устройства аудио конечной точки. Хранилище свойств копирует начальное значение ключа свойства PKEY_Device_DeviceDesc из удобочитаемой строки имени, связанной с GUID категории выводов KS в реестре. Приложения могут считывать значение свойства PKEY_Device_DeviceDesc (строку имени) из хранилища свойств, но они не могут изменить значение. Однако пользователи могут изменить имя с помощью панели управления мультимедиа Windows, Mmsys.cpl. Например, в Windows Vista можно выполнить следующие действия, чтобы изменить имя устройства конечной точки отрисовки:
Чтобы запустить Mmsys.cpl, откройте окно командной строки и введите следующую команду:
mmsys.cpl(Кроме того, можно запустить Mmsys.cpl, щелкнув правой кнопкой мыши значок говорящего в области уведомлений, расположенную в правой части панели задач и щелкнув "Воспроизведение устройств".
Щелкните имя устройства отрисовки и нажмите кнопку "Свойства".
В окне "Свойства" перейдите на вкладку "Общие ". Понятное имя должно отображаться в текстовом поле в верхней части листа свойств. Вы можете изменить понятное имя, а затем сохранить изменения, нажав кнопку "ОК".
Описанные выше действия изменяют понятное имя, хранящееся в хранилище свойств для устройства конечной точки аудио. Эти шаги не влияют на дружественные имена, связанные с другими устройствами конечной точки аудио, которые относятся к той же категории пинов KS. Они также не влияют на любой компонент, который может непосредственно запрашивать имя у KS.