[Version]
Signature   = "$Windows NT$"
Class       = MEDIA
Provider    = %ProviderName%
ClassGUID   = {4d36e96c-e325-11ce-bfc1-08002be10318}
DriverVer = 02/21/2024,15.10.18.372
CatalogFile = aicocovmic.cat
PnpLockDown = 1

[SourceDisksNames]
222="AICOCO Virtual MIC Driver Disk","",222

[SourceDisksFiles]
aicocovmic.sys=222

[SignatureAttributes]
aicocovmic.sys=SignatureAttributes.DRM

[SignatureAttributes.DRM]
DRMLevel=1300

[SignatureAttributes.PETrust]
PETrust=true

[Manufacturer]
%MfgName%=AICOCO_VMIC,NTamd64

[AICOCO_VMIC.NTamd64]
%AICOCO_VMIC_SA.DeviceDesc%=AICOCO_VMIC_SA, ROOT\AICOCO_VMIC

[DestinationDirs]
AICOCO_VMIC_SA.CopyList=13 ; 13=Package's DriverStore directory

;======================================================
; AICOCO_VMIC_SA
;======================================================
[AICOCO_VMIC_SA.CopyList]
aicocovmic.sys

[AICOCO_VMIC_SA.AddReg]
HKR,,AssociatedFilters,,"wdmaud,swmidi,redbook"
HKR,,Driver,,aicocovmic.sys

HKR,PowerSettings,SingleComponentMultiFxStates,3,1,0,0,0  ; Turn on multi Fx support.
HKR,PowerSettings,ConservationIdleTime,3,3,0,0,0          ; 3 seconds for idle power management when on battery
HKR,PowerSettings,PerformanceIdleTime,3,3,0,0,0           ; 3 seconds for idle power management when on AC power
HKR,PowerSettings,IdlePowerState,3,3,0,0,0                ; go to D3 for idle power management

HKR,Drivers,SubClasses,,"wave,midi,mixer"

HKR,Drivers\wave\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\midi\wdmaud.drv,Driver,,wdmaud.drv
HKR,Drivers\mixer\wdmaud.drv,Driver,,wdmaud.drv

HKR,Drivers\wave\wdmaud.drv,Description,,%AICOCO_VMIC_SA.DeviceDesc%
HKR,Drivers\mixer\wdmaud.drv,Description,,%AICOCO_VMIC_SA.DeviceDesc%

HKR,%MEDIA_CATEGORIES%\%MicInCustomNameGUID%,Name,,%MicInCustomName%
;======================================================
; capture interfaces: mic in (external: headphone)
;======================================================
[AICOCO_VMIC.I.WaveMicIn]
AddReg=AICOCO_VMIC.I.WaveMicIn.AddReg
[AICOCO_VMIC.I.WaveMicIn.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%AICOCO_VMIC.WaveMicIn.szPname%

[AICOCO_VMIC.I.TopologyMicIn]
AddReg=AICOCO_VMIC.I.TopologyMicIn.AddReg

[AICOCO_VMIC.I.TopologyMicIn.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%AICOCO_VMIC.TopologyMicIn.szPname%

; The following lines opt-in to pull mode.
HKR,EP\0,%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,EP\0,%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; AICOCO_VMIC_SA
;======================================================
[AICOCO_VMIC_SA.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
CopyFiles=AICOCO_VMIC_SA.CopyList
AddReg=AICOCO_VMIC_SA.AddReg

[AICOCO_VMIC_SA.NT.Interfaces]
;
; Interfaces for microphone (external: headphone) capture endpoint 
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicIn%, AICOCO_VMIC.I.WaveMicIn
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicIn%, AICOCO_VMIC.I.WaveMicIn
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicIn%, AICOCO_VMIC.I.WaveMicIn
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicIn%, AICOCO_VMIC.I.TopologyMicIn
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicIn%, AICOCO_VMIC.I.TopologyMicIn


[AICOCO_VMIC_SA.NT.Services]
AddService=AICOCO_VMIC,0x00000002,AICOCO_VMIC_Service_Inst

[AICOCO_VMIC_Service_Inst]
DisplayName=%AICOCO_VMIC.SvcDesc%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%13%\aicocovmic.sys

[AICOCO_VMIC_SA.NT.HW]
AddReg = AUDIOHW.AddReg

[AUDIOHW.AddReg]
; FILE_DEVICE_SOUND
HKR,,DeviceType,0x10001,0x0000001D
; SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RWX_RES_RWX
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGWGX;;;WD)(A;;GRGWGX;;;RC)"


;======================================================
; WDF
;======================================================
[AICOCO_VMIC_SA.NT.Wdf]
KmdfService = AICOCO_VMIC_SA, AICOCO_VMIC_SA_WdfSect
[AICOCO_VMIC_SA_WdfSect]
KmdfLibraryVersion = 1.15

;======================================================
; COMMON
;======================================================
[Strings]

;Non-localizable
KSNAME_WaveMicIn="WaveMicIn"
KSNAME_TopologyMicIn="TopologyMicIn"

Proxy.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_REALTIME ="{EB115FFC-10C8-4964-831D-6DCB02E6F23F}"
KSCATEGORY_TOPOLOGY = "{DDA54A40-1E4C-11D1-A050-405705C10000}"

KSNODETYPE_ANY   = "{00000000-0000-0000-0000-000000000000}"

PKEY_AudioEndpoint_Association               = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioEndpoint_Supports_EventDriven_Mode = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},7"

MEDIA_CATEGORIES = "MediaCategories"
MicInCustomNameGUID = {D48DEB09-FD1C-4D1E-B821-9064D49AE96F}
MicInCustomName= "Aicoco Audio"

;Localizable

ProviderName = "Aicoco Co., Ltd."
MfgName      = "Aicoco Co., Ltd."
MsCopyRight  = "Aicoco Co., Ltd. Copyright"

AICOCO_VMIC_SA.DeviceDesc="Aicoco Camera Audio"
AICOCO_VMIC.SvcDesc="Aicoco Camera Audio Driver"

;; friendly names
AICOCO_VMIC.WaveMicIn.szPname="Aicoco Wave Microphone Headphone"
AICOCO_VMIC.TopologyMicIn.szPname="Aicoco Topology Microphone Headphone"
