[Version]
Signature   = "$WINDOWS NT$"
Class       = SoftwareComponent
ClassGuid   = {5c4c3332-344d-483c-8739-259e934c9cc8}
Provider    = %Provider%
DriverVer = 07/13/2022,4.8.6.0
CatalogFile = A-VoluteNhApo4Swc.cat

[SourceDisksNames]
222="A-Volute APO Installation Disk",,,

[SourceDisksFiles]
NahimicAPO4.dll=222
NahimicAPO4API.dll=222
NahimicAPO4ExpertAPI.dll=222
NahimicService.exe=222
NahimicService.ini=222
NahimicSvc32.exe=222
NahimicSvc64.exe=222
NahimicAPO3ConfiguratorDaemonModule.dll=222
NahimicAPO4ConfiguratorDaemonModule.dll=222
NahimicPnPAPO4ConfiguratorDaemonModule.dll=222
NhNotifSys.dll=222
NhNotifSys.exe=222

[DestinationDirs]
APO_CopyList       = 11          ; %windir%\system32
Control_CopyList   = 11          ; %windir%\system32
Service_CopyList   = 11          ; %windir%\system32
Service32_CopyList = 10,SysWOW64 ; %windir%\SysWOW64

[SignatureAttributes]
NahimicAPO4.dll=SignatureAttributes.PETrust

[SignatureAttributes.DRM]
DRMLevel=1300

[SignatureAttributes.PETrust]
PETrust=true

[Manufacturer]
%Mfg% = ApoComponents,NTamd64.10.0

[ApoComponents.NTamd64.10.0]
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0002
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0102
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0202
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0302
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0402
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0502
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0602
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0702
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0802
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0902
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0A02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0B02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0C02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0D02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0E02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_0F02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1002
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1102
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1202
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1302
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1402
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1502
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1602
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1702
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1802
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1902
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1A02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1B02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1C02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1D02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1E02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_1F02
%Apo.ComponentDesc% = ApoComponent_Install,SWC\VEN_AVOL&AID_FFFE

[ApoComponent_Install]
CopyFiles = APO_CopyList,Control_CopyList,Service_CopyList,Service32_CopyList
AddReg    = APO_AddReg,APOControl_AddReg,APOExpertControl_AddReg,Cohabitation_AddReg

[Service_Install]
DisplayName   = %SERVICE_FRIENDLY_NAME%
Description   = %SERVICE_DESCRIPTION%
ServiceType   = 0x00000010
StartType     = 2
ErrorControl  = 1
ServiceBinary = """%11%\NahimicService.exe"""

[Service_CopyList]
NahimicService.exe
NahimicService.ini
NahimicSvc64.exe
NahimicAPO3ConfiguratorDaemonModule.dll
NahimicAPO4ConfiguratorDaemonModule.dll
NahimicPnPAPO4ConfiguratorDaemonModule.dll
NhNotifSys.dll
NhNotifSys.exe

[Service32_CopyList]
NahimicSvc32.exe

[ApoComponent_Install.Services]
AddService = NahimicService, 0x00000800, Service_Install
AddService = ,2    ; no function driver

[APO_CopyList]
NahimicAPO4.dll

[Control_CopyList]
NahimicAPO4API.dll
NahimicAPO4ExpertAPI.dll

[APO_AddReg]
; Stream effect APO COM registration
HKCR,CLSID\%FX_STREAM_CLSID%,,,%SFX_FriendlyName%
HKCR,CLSID\%FX_STREAM_CLSID%\InProcServer32,,0x00020000,"%%SystemRoot%%\System32\NahimicAPO4.dll"
HKCR,CLSID\%FX_STREAM_CLSID%\InProcServer32,ThreadingModel,,"Both"

; Mode effect APO COM registration
HKCR,CLSID\%FX_MODE_CLSID%,,,%MFX_FriendlyName%
HKCR,CLSID\%FX_MODE_CLSID%\InProcServer32,,0x00020000,"%%SystemRoot%%\System32\NahimicAPO4.dll"
HKCR,CLSID\%FX_MODE_CLSID%\InProcServer32,ThreadingModel,,"Both"

; Mode capture effect APO COM registration
HKCR,CLSID\%FX_MODE_CAPTURE_CLSID%,,,%MFX_CAPTURE_FriendlyName%
HKCR,CLSID\%FX_MODE_CAPTURE_CLSID%\InProcServer32,,0x00020000,"%%SystemRoot%%\System32\NahimicAPO4.dll"
HKCR,CLSID\%FX_MODE_CAPTURE_CLSID%\InProcServer32,ThreadingModel,,"Both"

; Endpoint effect APO COM registration
HKCR,CLSID\%FX_ENDPOINT_CLSID%,,,%EFX_FriendlyName%
HKCR,CLSID\%FX_ENDPOINT_CLSID%\InProcServer32,,0x00020000,"%%SystemRoot%%\System32\NahimicAPO4.dll"
HKCR,CLSID\%FX_ENDPOINT_CLSID%\InProcServer32,ThreadingModel,,"Both"

; Stream effect APO registration
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "FriendlyName", ,%SFX_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "Copyright", ,%APOCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MajorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MinorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "Flags", 0x00010001, %SFX_APO_FLAG%
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "MaxInstances", 0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_STREAM_CLSID%, "APOInterface0", ,%APO_INTERFACE_SFX%

; Mode effect APO registration
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "FriendlyName", ,%MFX_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "Copyright", ,%APOCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MajorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MinorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "Flags", 0x00010001, %MFX_APO_FLAG%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "MaxInstances", 0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CLSID%, "APOInterface0", ,%APO_INTERFACE_MFX%

; Mode capture effect APO registration
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "FriendlyName", ,%MFX_CAPTURE_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "Copyright", ,%APOCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MajorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MinorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "Flags", 0x00010001, %MFX_CAPTURE_APO_FLAG%
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "MaxInstances", 0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_MODE_CAPTURE_CLSID%, "APOInterface0", ,%APO_INTERFACE_MFX_CAPTURE%

; Endpoint effect APO registration
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "FriendlyName", ,%EFX_FriendlyName%
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "Copyright", ,%APOCopyRight%
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MajorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MinorVersion", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "Flags", 0x00010001, %EFX_APO_FLAG%
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MinInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MaxInputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MinOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MaxOutputConnections", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "MaxInstances", 0x00010001, 0xffffffff
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "NumAPOInterfaces", 0x00010001, 1
HKCR,AudioEngine\AudioProcessingObjects\%FX_ENDPOINT_CLSID%, "APOInterface0", ,%APO_INTERFACE_EFX%

[APOControl_AddReg]
HKCR,CLSID\%CONTROL_CLSID%,,,"NSControl Class"
HKCR,CLSID\%CONTROL_CLSID%\InprocServer32,,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\NahimicAPO4API.dll"
HKCR,CLSID\%CONTROL_CLSID%\InprocServer32,ThreadingModel,,"Both"
HKCR,CLSID\%CONTROL_CLSID%\Programmable,,%FLG_ADDREG_KEYONLY%
HKCR,CLSID\%CONTROL_CLSID%\TypeLib,,,%CONTROL_TYPELIB%
HKCR,CLSID\%CONTROL_CLSID%\Version,,,"1.0"

HKCR,CLSID\%SIMPLE_CONTROL_CLSID%,,,"NSSimpleControl Class"
HKCR,CLSID\%SIMPLE_CONTROL_CLSID%\InprocServer32,,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\NahimicAPO4API.dll"
HKCR,CLSID\%SIMPLE_CONTROL_CLSID%\InprocServer32,ThreadingModel,,"Both"
HKCR,CLSID\%SIMPLE_CONTROL_CLSID%\Programmable,,%FLG_ADDREG_KEYONLY%
HKCR,CLSID\%SIMPLE_CONTROL_CLSID%\TypeLib,,,%SIMPLE_CONTROL_TYPELIB%
HKCR,CLSID\%SIMPLE_CONTROL_CLSID%\Version,,,"1.0"

[APOExpertControl_AddReg]
HKCR,CLSID\%EXPERT_CONTROL_CLSID%,,,"NSControlExpert Class"
HKCR,CLSID\%EXPERT_CONTROL_CLSID%\InprocServer32,,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\NahimicAPO4ExpertAPI.dll"
HKCR,CLSID\%EXPERT_CONTROL_CLSID%\InprocServer32,ThreadingModel,,"Both"
HKCR,CLSID\%EXPERT_CONTROL_CLSID%\Programmable,,%FLG_ADDREG_KEYONLY%
HKCR,CLSID\%EXPERT_CONTROL_CLSID%\TypeLib,,,%EXPERT_CONTROL_TYPELIB%
HKCR,CLSID\%EXPERT_CONTROL_CLSID%\Version,,,"1.0"

[Cohabitation_AddReg]
HKLM,SOFTWARE\Nahimic,ProductCohabitation,%REG_DWORD%,2

[Strings]
Provider          = "A-Volute"
Mfg               = "A-Volute"
Apo.ComponentDesc = "Nahimic APO 4"

FX_STREAM_CLSID   = "{670173E3-78CF-11E5-A837-0800200C9A66}"	
FX_MODE_CLSID     = "{670173E4-78CF-11E5-A837-0800200C9A66}"	
FX_MODE_CAPTURE_CLSID = "{670173F4-78CF-11E5-A837-0800200C9A66}"	
FX_ENDPOINT_CLSID = "{670173E5-78CF-11E5-A837-0800200C9A66}"		

APO_INTERFACE_SFX = "{658A4077-B277-4D14-97E1-0356044D8110}"
APO_INTERFACE_MFX = "{658A4078-B277-4D14-97E1-0356044D8110}"
APO_INTERFACE_MFX_CAPTURE = "{658A4079-B277-4D14-97E1-0356044D8110}"
APO_INTERFACE_EFX = "{658B4080-B277-4d14-97E1-045604CD8110}"

SFX_FriendlyName  = "Nahimic Audio Effects (stream effect)"
MFX_FriendlyName  = "Nahimic Audio Effects (mode effect)"
MFX_CAPTURE_FriendlyName = "Nahimic Audio Effects (mode capture effect)"
EFX_FriendlyName  = "Nahimic Audio Effects (Endpoint effect)"
APOCopyRight      = "(c) A-Volute 2019"

SFX_APO_FLAG  = "0x0000000d"
MFX_APO_FLAG  = "0x0000000f"
MFX_CAPTURE_APO_FLAG  = "0x0000000f"
EFX_APO_FLAG  = "0x0000000f"

CONTROL_CLSID          = "{7e4ef2c1-2862-11e9-b56e-0800200c9a66}"
CONTROL_TYPELIB        = "{74d716f0-2862-11e9-b56e-0800200c9a66}"
SIMPLE_CONTROL_CLSID   = "{b64ac411-2862-11e9-b56e-0800200c9a66}"
SIMPLE_CONTROL_TYPELIB = "{74d716f0-2862-11e9-b56e-0800200c9a66}"
EXPERT_CONTROL_CLSID   = "{cdf28580-2862-11e9-b56e-0800200c9a66}"
EXPERT_CONTROL_TYPELIB = "{c6e2f720-2862-11e9-b56e-0800200c9a66}"

REG_BINARY    = 0x00000001
REG_DWORD     = 0x00010001
REG_MULTI_SZ  = 0x00010000
REG_EXPAND_SZ = 0x00020000

FLG_ADDREG_KEYONLY = 0x00000010

SERVICE_FRIENDLY_NAME = "Nahimic service"
SERVICE_DESCRIPTION   = "Nahimic service"
