The USB Audio 1.0 class driver is being chosen instead of your driver, so your
.inf registry sections are not being applied. Try test-signing your driver and
turning on test signing on your test machine.
dvi: Section - TestAudio.SysFx
dvi: Rank - 0x80ff0001
dvi: Signer Score - Not digitally signed
…
dvi: Selected Driver:
dvi: Description - USB Audio Device
dvi: InfFile -
c:\windows\system32\driverstore\filerepository\wdma_usb.inf_amd64_24878b5de6e6eaa8\wdma_usb.inf
________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> on
behalf of Artem <smirnoff.artem@xxxxxxxxx>
Sent: Monday, August 26, 2019 12:44:40 AM
To: wdmaudiodev@xxxxxxxxxxxxx <wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] APO not registered for endpoint by Inf file
Hi!
I made a custom APO and trying to get it loaded along with standard
USB audio device, in my case it is Jabra headset
(USB\VID_0B0E&PID_0300&MI_00).
I can manually populate the registry, restart audio and get APO
loaded, but struggling to do the same with Inf file (official way).
Testsigning is ON, audio protected DG is OFF, OS is Windows 10 x64.
Any help is greatly appreciated! Here is my Inf file, probably I'm
doing something wrong here:
---
[Version]
Signature="$Windows NT$"
Class=MEDIA
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
provider=%ProviderName%
DriverVer=08/23/2019,100.0.0.1
CatalogFile = CustomAPO.cat
[SourceDisksNames]
222=%DiskDescription%,,,
[SourceDisksFiles]
CustomAPO.dll=222
[DestinationDirs]
; %windir%\system32
SfxFx.CopyList=11
[Manufacturer]
%MfgName%=MfgModelSection,NTAMD64
[MfgModelSection.NTAMD64]
%TestHeadphones.DeviceDesc%=TestAudio.SysFx,USB\VID_0B0E&PID_0300&MI_00
[TestAudio.SysFx]
Include = ks.inf, wdmaudio.inf, wdma_usb.inf
Needs = KS.Registration, WDMAUDIO.Registration, USBAudioOEM.CopyFiles,
USBAudioOEM.AddReg
CopyFiles = SfxFx.CopyList
AddReg = SfxFx.COM.AddReg
[TestAudio.SysFx.HW]
;wdma_usb.inf doesn't have a .HW section
[TestAudio.SysFx.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,"GLOBAL",TestAudio.SysFx.PrimaryHeadphonesWave
AddInterface=%KSCATEGORY_RENDER%,"GLOBAL",TestAudio.SysFx.PrimaryHeadphonesWave
AddInterface=%KSCATEGORY_AUDIO%,"GLOBAL",TestAudio.SysFx.PrimaryHeadphonesTopo
AddInterface=%KSCATEGORY_TOPOLOGY%,"GLOBAL",TestAudio.SysFx.PrimaryHeadphonesTopo
[TestAudio.SysFx.PrimaryHeadphonesWave]
AddReg=TestAudio.SysFx.PrimaryHeadphonesWave.AddReg
[TestAudio.SysFx.PrimaryHeadphonesWave.AddReg]
HKR,,FriendlyName,,%PrimarySpeakersWaveDeviceName%
HKR,,CLSID,,%Proxy.CLSID%
[TestAudio.SysFx.PrimaryHeadphonesTopo]
AddReg=TestAudio.PrimaryHeadphonesTopo.AddReg,SysFx.AddReg
[TestAudio.PrimaryHeadphonesTopo.AddReg]
HKR,,FriendlyName,,%PrimarySpeakersTopoDeviceName%
HKR,,CLSID,,%Proxy.CLSID%
; This pin category should be the same as of USB audio device inserted
;HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_SPEAKER%
HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_COMMUNICATION_SPEAKER%
[TestAudio.SysFx.Services]
Include = wdma_usb.inf
Needs = USBAudio.NT.Services
[SfxFx.COM.AddReg]
; APO COM registration
HKCR,CLSID\%CUSTOM_APO_CLSID%,,,%SYSFX_FriendlyName%
HKCR,CLSID\%CUSTOM_APO_CLSID%\InProcServer32,,,%11%\CustomAPO.dll
HKCR,CLSID\%CUSTOM_APO_CLSID%\InProcServer32,ThreadingModel,,"Both"
[SysFx.AddReg]
;; wdma_usb.inf does it
HKR,"EP\\0",%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,"FX\\0",%PKEY_ItemNameDisplay%,,%SYSFX_FriendlyName%
;; Note: We have to associate with a specific node type here (ie. not
;; use KSNODETYPE_ANY) or else the MSFX entries in wdma_usb.inf will
;; override our entries here.
;HKR,"FX\\0",%PKEY_SYSFX_Association%,,%KSNODETYPE_SPEAKER%
HKR,"FX\\0",%PKEY_SYSFX_Association%,,%KSNODETYPE_COMMUNICATION_SPEAKER%
HKR,"FX\\0",%PKEY_SYSFX_EndpointEffectClsid%,,%CUSTOM_APO_CLSID%
HKR,"FX\\0",%PKEY_EFX_ProcessingModes_Supported_For_Streaming%,0x00010000,%AUDIO_SIGNALPROCESSINGMODE_DEFAULT%
[SfxFx.CopyList]
CustomAPO.dll,,,0x0100
[Strings]
ProviderName="Custom provider"
MfgName="Custom mfg"
DiskDescription="Custom Installation Media"
TestHeadphones.DeviceDesc = "USB headphones with custom processing"
PrimarySpeakersWaveDeviceName ="USB headset"
PrimarySpeakersTopoDeviceName ="USB headset topo"
PKEY_SYSFX_Association = "{D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},0"
PKEY_ItemNameDisplay = "{B725F130-47EF-101A-A5F1-02608C9EEBAC},10"
PKEY_SYSFX_StreamEffectClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},5"
PKEY_SYSFX_ModeEffectClsid = "{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},6"
PKEY_SYSFX_EndpointEffectClsid = "{d04e05a6-594b-4fb6-a80d-01af5eed7d1d},7"
PKEY_SFX_ProcessingModes_Supported_For_Streaming="{D3993A3F-99C2-4402-B5EC-A92A0367664B},5"
PKEY_MFX_ProcessingModes_Supported_For_Streaming="{D3993A3F-99C2-4402-B5EC-A92A0367664B},6"
PKEY_EFX_ProcessingModes_Supported_For_Streaming="{D3993A3F-99C2-4402-B5EC-A92A0367664B},7"
AUDIO_SIGNALPROCESSINGMODE_DEFAULT = "{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}"
CUSTOM_APO_CLSID= "{6325E3DA-92DE-443D-829D-83F855137411}"
SYSFX_FriendlyName = "Custom processing"
PKEY_AudioEndpoint_Association = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
Proxy.CLSID = "{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
KSNODETYPE_ANY = "{00000000-0000-0000-0000-000000000000}"
KSCATEGORY_AUDIO = "{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSCATEGORY_RENDER = "{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_REALTIME = "{EB115FFC-10C8-4964-831D-6DCB02E6F23F}"
KSCATEGORY_TOPOLOGY = "{DDA54A40-1E4C-11D1-A050-405705C10000}"
KSNODETYPE_SPEAKER = "{DFF21CE1-F70F-11D0-B917-00A0C9223196}"
KSNODETYPE_HEADPHONES = "{DFF21CE2-F70F-11D0-B917-00A0C9223196}"
KSNODETYPE_COMMUNICATION_SPEAKER = "{DFF21CE6-F70F-11D0-B917-00A0C9223196}"
---
And setupapi log:
---
dvi: {Build Driver List} 10:05:25.818Section start 2019/08/26 10:05:25.703