PKEY_AudioDevice_EnableEndpointByDefault
En Windows 7 y versiones posteriores de Windows, el generador de puntos de conexión clasifica los puntos de conexión en factores de forma. Estos factores de forma se basan en el GUID KSNODETYPE de un pin en el filtro de streaming de kernel (KS) al que está conectado el punto de conexión. Cuando el generador de puntos de conexión de audio enumera determinados puntos de conexión, por ejemplo aquellos con tipos de factor de forma como UnknownFormFactor, el generador de puntos de conexión crea estos puntos de conexión como deshabilitados y ocultos. Por lo tanto, debe usar el programa Sonido en Panel de control para habilitar dichos puntos de conexión antes de poder usarlos.
Si quieres invalidar este comportamiento para que el punto de conexión se cree como habilitado o deshabilitado de forma predeterminada, Windows 7 proporciona la clave del Registro PKEY_AudioDevice_EnableEndpointByDefault que te permite hacerlo.
El generador de puntos de conexión crea puntos de conexión con cualquiera de los siguientes valores KSNODETYPE como deshabilitados y ocultos.
Tipo de nodo KS | Factor de forma |
---|---|
KSNODETYPE_ANALOG_CONNECTOR |
UnknownFormFactor |
KSCATEGORY_AUDIO |
UnknownFormFactor |
KSNODETYPE_BIDIRECTIONAL_UNDEFINED |
UnknownFormFactor |
KSNODETYPE_EMBEDDED_UNDEFINED |
UnknownFormFactor |
KSNODETYPE_EQUALIZATION_NOISE |
UnknownFormFactor |
KSNODETYPE_EXTERNAL_UNDEFINED |
UnknownFormFactor |
KSNODETYPE_INPUT_UNDEFINED |
UnknownFormFactor |
KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE |
UnknownFormFactor |
KSNODETYPE_OUTPUT_UNDEFINED |
UnknownFormFactor |
KSNODETYPE_TELEPHONY_UNDEFINED |
UnknownFormFactor |
En Windows 7 y versiones posteriores de Windows, los puntos de conexión con un factor de forma de LineLevel, pero con un KSNODETYPE no igual a KSNODETYPE_LINE_CONNECTOR también se crean como deshabilitados y ocultos. Los siguientes puntos de conexión se dividen en esta categoría.
Tipo de nodo KS | Factor de forma |
---|---|
KSNODETYPE_1394_DA_STREAM |
LineLevel |
KSNODETYPE_1394_DV_STREAM_SOUNDTRACK |
LineLevel |
KSNODETYPE_ANALOG_TAPE |
LineLevel |
KSNODETYPE_CABLE_TUNER_AUDIO |
LineLevel |
KSNODETYPE_CD_PLAYER |
LineLevel |
KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE |
LineLevel |
KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE |
LineLevel |
KSNODETYPE_DSS_AUDIO |
LineLevel |
KSNODETYPE_DVD_AUDIO |
LineLevel |
KSNODETYPE_LEGACY_AUDIO_CONNECTOR |
LineLevel |
KSNODETYPE_MINIDISK |
LineLevel |
KSNODETYPE_MULTITRACK_RECORDER |
LineLevel |
KSNODETYPE_PHONOGRAPH |
LineLevel |
KSNODETYPE_RADIO_RECEIVER |
LineLevel |
KSNODETYPE_RADIO_TRANSMITTER |
LineLevel |
KSNODETYPE_SATELLITE_RECEIVER_AUDIO |
LineLevel |
KSNODETYPE_SYNTHESIZER |
LineLevel |
KSNODETYPE_TV_TUNER_AUDIO |
LineLevel |
KSNODETYPE_VCR_AUDIO |
LineLevel |
KSNODETYPE_VIDEO_DISC_AUDIO |
LineLevel |
El siguiente fragmento de código de archivo INF muestra cómo usar PKEY_AudioDevice_EnableEndpointByDefault para habilitar o deshabilitar un punto de conexión de forma predeterminada.
[Version]
...
Class=MEDIA
ClassGuid={4d36e96c-e325-11ce-bfc1-08002be10318}
...
[USBAudio]
...
[USBAudio.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,"GLOBAL",USBAudio.Interface
...
[USBAudio.Interface]
AddReg=Xyz.AddReg
...
;; AddReg section to set default behavior of endpoint
[Xyz.AddReg]
HKR,"EP\\n",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_GUID%
HKR,"EP\\n",%PKEY_AudioDevice_EnableEndpointByDefault%,0x00010001,EnableEndpointByDefaultMaskValue
...
[Strings]
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
PKEY_AudioEndpoint_Association="{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioDevice_EnableEndpointByDefault="{F3E80BEF-1723-4FF2-BCC4-7F83DC5E46D4},4"
...
En el ejemplo anterior, EnableEndpointByDefaultMaskValue representa un valor de máscara DWORD que es una combinación de una marca enable o disable (FLAG_ENABLE o FLAG_DISABLE) y una marca de flujo de datos (FLOW_MASK_RENDER o FLOW_MASK_CAPTURE).
El siguiente fragmento de código de archivo INF muestra cómo se configura un reproductor de CD para que esté habilitado de forma predeterminada y esté configurado como un dispositivo de entrada (FLOW_MASK_CAPTURE).
[Version]
...
Class=MEDIA
ClassGuid={4d36e96c-e325-11ce-bfc1-08002be10318}
...
[USBAudio]
...
[USBAudio.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,"GLOBAL",USBAudio.Interface
...
[USBAudio.Interface]
AddReg=MDVAD.EPProperties.AddReg
...
;; AddReg section is used to set default behavior of endpoint for CD player.
;; Enable by default for KSNODETYPE_CD_PLAYER
[MDVAD.EPProperties.AddReg]
HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_CD_PLAYER%
HKR,"EP\\0",%PKEY_AudioDevice_EnableEndpointByDefault%,0x00010001,0x00000201
...
[Strings]
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSNODETYPE_CD_PLAYER="{DFF220E3-F70F-11D0-B917-00A0C9223196}"
PKEY_AudioEndpoint_Association="{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioDevice_EnableEndpointByDefault="{F3E80BEF-1723-4FF2-BCC4-7F83DC5E46D4},4"
…
En el ejemplo anterior, la combinación OR bit a bit de FLOW_MASK_CAPTURE y FLAG_ENABLE equivale a la combinación OR bit a bit de 0x00000200 y 0x00000001 con el resultado de 0x00000201. En la tabla siguiente se muestran los valores de las marcas y máscaras que puede usar con PKEY_AudioDevice_EnableEndpointByDefault.
Marca o máscara de punto de conexión | Valor |
---|---|
FLAG_DISABLE |
0x00000000 |
FLAG_ENABLE |
0x00000001 |
FLOW_MASK_CAPTURE |
0x00000200 |
FLOW_MASK_RENDER |
0x00000100 |