[wdmaudiodev] Re: APO not registered for endpoint by Inf file

  • From: "Matthew van Eerde" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "Matthew.van.Eerde" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 26 Aug 2019 15:17:47 +0000

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:
---

 Section start 2019/08/26 10:05:25.703
     dvi: {Build Driver List} 10:05:25.818
     dvi:      Searching for hardware ID(s):
     dvi:           usb\vid_0b0e&pid_0300&rev_0300&mi_00
     dvi:           usb\vid_0b0e&pid_0300&mi_00
     dvi:      Searching for compatible ID(s):
     dvi:           usb\class_01&subclass_01&prot_00
     dvi:           usb\class_01&subclass_01
     dvi:           usb\class_01
     dvi:      Created Driver Node:
     dvi:           HardwareID   - USB\CLASS_01
     dvi:           InfName      -
C:\WINDOWS\System32\DriverStore\FileRepository\wdma_usb.inf_amd64_24878b5de6e6eaa8\wdma_usb.inf
     dvi:           DevDesc      - USB Audio Device
     dvi:           Section      - USBAudio
     dvi:           Rank         - 0x00ff2002
     dvi:           Signer Score - INBOX
     dvi:           DrvDate      - 09/14/2018
     dvi:           Version      - 10.0.17763.1
     dvi:      Created Driver Node:
     dvi:           HardwareID   - USB\VID_0B0E&PID_0300&MI_00
     dvi:           InfName      -
C:\WINDOWS\System32\DriverStore\FileRepository\usbaudio_customapo.inf_amd64_4c52613bc39db3c8\usbaudio_customapo.inf
     dvi:           DevDesc      - USB headphones with custom processing
     dvi:           Section      - TestAudio.SysFx
     dvi:           Rank         - 0x80ff0001
     dvi:           Signer Score - Not digitally signed
     dvi:           DrvDate      - 08/23/2019
     dvi:           Version      - 100.0.0.1

     dvi: {Build Driver List - exit(0x00000000)} 10:05:25.870
     dvi: {DIF_SELECTBESTCOMPATDRV} 10:05:25.870
     dvi:      Using exported function 'MediaClassInstaller' in module
'C:\WINDOWS\system32\mmci.dll'.
     dvi:      Class installer == mmci.dll,MediaClassInstaller
     dvi:      Class installer: Enter 10:05:25.894
     dvi:      Class installer: Exit
     dvi:      Default installer: Enter 10:05:25.895
     dvi:           {Select Best Driver}
     dvi:                Class GUID of device changed to:
{4d36e96c-e325-11ce-bfc1-08002be10318}.
     dvi:                {DIF_DESTROYPRIVATEDATA} 10:05:25.896
     dvi:                     Class installer: Enter 10:05:25.896
     dvi:                     Class installer: Exit
     dvi:                     Default installer: Enter 10:05:25.897
     dvi:                     Default installer: Exit
     dvi:                {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)}
10:05:25.897
     dvi:                Selected Driver:
     dvi:                     Description - USB Audio Device
     dvi:                     InfFile     -
c:\windows\system32\driverstore\filerepository\wdma_usb.inf_amd64_24878b5de6e6eaa8\wdma_usb.inf
     dvi:                     Section     - USBAudio
     dvi:           {Select Best Driver - exit(0x00000000)}
---

Thanks in advance,
regards,
Artem
******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.wdmaudiodev.com%2F&amp;data=02%7C01%7CMatthew.van.Eerde%40microsoft.com%7Cd40bc035d1844c8dafcb08d729f95c94%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637024023291407342&amp;sdata=mZlgV%2F5ZHrXkehurdSD5QfbORHyYSAztfJIB4WJmWrQ%3D&amp;reserved=0

Other related posts: