;Copyright (c) 2012 AnotherTec All rights Reserved
;
;Module Name:
;   t2cx1drv.inf
;
;Abstract:
;    INF file for installing T2C USB Device Driver

[Version]
CatalogFile=t2cx1drv.cat
CatalogFile.ntamd64=t2cx1drv64.cat
Signature="$CHICAGO$"
Class=MEDIA
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
provider=%ProviderName%
;;The following line is used only when the INF comes with the Windows system
;;IHV needs to comment out the following line for their OEM redistributed disk.
;;LayoutFile=layout.inf, layout1.inf, layout2.inf
DriverVer=05/31/2016,1.0.1.3

;You must specify which platform is supported by each SourceDisksNames section
;Valid platform identifiers include .x86, .ia64, .alpha, .axp64
[SourceDisksNames]
222=%DiskDescription%,,,

;You must also specify which platform is supported by each SourceDisksFiles section
;Valid platform identifiers include .x86, .ia64, .alpha, .axp64
[SourceDisksFiles]
t2cx1wdm.sys=222
t2cx1drv.inf=222
t2cx1asio.dll=222
t2cx1ctl.exe=222

[SourceDisksFiles.amd64]
t2cx1wdm64.sys=222
t2cx1drv.inf=222
t2cx1asio.dll=222
t2cx1asio64.dll=222
t2cx1ctl.exe=222

[Manufacturer]
%MfgName%=Jogerse,NTAMD64

;; Excluding drivers from the "Add New Hardware" list.
[ControlFlags]
ExcludeFromSelect = *

[Jogerse]
%T2CX1DRV.DeviceDesc%=T2CX1DRV, USB\VID_22E1&PID_B001
[Jogerse.NTAMD64]
%T2CX1DRV.DeviceDesc%=T2CX1DRV64, USB\VID_22E1&PID_B001

[DestinationDirs]
T2CX1DRV.CopyList=10,system32\drivers
T2CX1DRV64.CopyList=10,system32\drivers
T2CX1DRV.App.CopyList=10,system32
T2CX1DRV64.App.CopyList=10,system32
T2CX1DRV64.Wow.CopyList = 10, SysWow64

[T2CX1DRV]
;;This inf is intended for use by IHV. So, it's going to be used as from OEM distributed disk
;;This is why AlsoInstall got used instead if Needs & Include
AlsoInstall=KS.Registration(ks.inf), WDMAUDIO.Registration(wdmaudio.inf)
CopyFiles=T2CX1DRV.CopyList,T2CX1DRV.App.CopyList
AddReg=T2CX1DRV.AddReg,T2CX1DRV.App.AddReg

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

[T2CX1DRV.CopyList]
t2cx1wdm.sys

[T2CX1DRV.App.CopyList]
t2cx1asio.dll
t2cx1ctl.exe

[T2CX1DRV.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
;AddInterface=%KSCATEGORY_REALTIME%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,T2CX1DRV.Interface.Topology

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi

[T2CX1DRV.NT.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
;AddInterface=%KSCATEGORY_REALTIME%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,T2CX1DRV.Interface.Topology

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi

[T2CX1DRV.Interface.Wave]
AddReg=T2CX1DRV.I.Wave.AddReg

[T2CX1DRV.I.Wave.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%T2CX1DRV.Wave.szPname%

[T2CX1DRV.Interface.Topology]
AddReg=T2CX1DRV.I.Topology.AddReg

[T2CX1DRV.I.Topology.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%T2CX1DRV.Topology.szPname%

[T2CX1DRV.Interface.Midi]
AddReg=T2CX1DRV.I.Midi.AddReg

[T2CX1DRV.I.Midi.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
HKR,,FriendlyName,,%T2CX1DRV.Midi.szPname%

[T2CX1DRV.AddReg]
HKR,,AssociatedFilters,,"wdmaud,swmidi,redbook"
HKR,,Driver,,t2cx1wdm.sys
HKR,,NTMPDriver,,"t2cx1wdm.sys,sbemul.sys"

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,,%T2CX1DRV.DeviceDesc%
HKR,Drivers\midi\wdmaud.drv, Description,,%T2CX1DRV.DeviceDesc%
HKR,Drivers\mixer\wdmaud.drv,Description,,%T2CX1DRV.DeviceDesc%

[T2CX1DRV.App.AddReg]
HKLM,SOFTWARE\ASIO\%ASIO_DRIVER_NAME%,CLSID,,%ASIO_DRIVER_GUID%
HKCR,CLSID\%ASIO_DRIVER_GUID%,,,%ASIO_DRIVER_NAME%
HKCR,CLSID\%ASIO_DRIVER_GUID%\InProcServer32,,,"%10%\system32\t2cx1asio.dll"
HKCR,CLSID\%ASIO_DRIVER_GUID%\InProcServer32,ThreadingModel,,"Apartment"

[T2CX1DRV.Services]
AddService = %T2CX1DRV.Service%, 0x00000002, T2CX1DRV_Service_Inst

[T2CX1DRV.NT.Services]
AddService = %T2CX1DRV.Service%, 0x00000002, T2CX1DRV_Service_Inst

[T2CX1DRV_Service_Inst]
DisplayName   = %T2CX1DRV.SvcDesc%
ServiceType   = 1                  ; SERVICE_KERNEL_DRIVER
StartType     = 3                  ; SERVICE_DEMAND_START
ErrorControl  = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\system32\drivers\t2cx1wdm.sys

;==================================================================
; amd64 platform

[T2CX1DRV64]
;;This inf is intended for use by IHV. So, it's going to be used as from OEM distributed disk
;;This is why AlsoInstall got used instead if Needs & Include
AlsoInstall=KS.Registration(ks.inf), WDMAUDIO.Registration(wdmaudio.inf)
CopyFiles=T2CX1DRV64.CopyList, T2CX1DRV64.App.CopyList, T2CX1DRV64.Wow.CopyList
AddReg=T2CX1DRV64.AddReg, T2CX1DRV64.App.AddReg

[T2CX1DRV64.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration,WDMAUDIO.Registration
CopyFiles=T2CX1DRV64.CopyList, T2CX1DRV64.App.CopyList, T2CX1DRV64.Wow.CopyList
AddReg=T2CX1DRV64.AddReg, T2CX1DRV64.App.AddReg

[T2CX1DRV64.CopyList]
t2cx1wdm64.sys

[T2CX1DRV64.App.CopyList]
t2cx1asio64.dll
t2cx1ctl.exe

[T2CX1DRV64.Wow.CopyList]
t2cx1asio.dll

[T2CX1DRV64.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
;AddInterface=%KSCATEGORY_REALTIME%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,T2CX1DRV.Interface.Topology

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi

[T2CX1DRV64.NT.Interfaces]
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
;AddInterface=%KSCATEGORY_REALTIME%,%KSNAME_Wave%,T2CX1DRV.Interface.Wave
AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Topology%,T2CX1DRV.Interface.Topology

AddInterface=%KSCATEGORY_AUDIO%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_RENDER%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi
AddInterface=%KSCATEGORY_CAPTURE%,%KSNAME_Midi%,T2CX1DRV.Interface.Midi

[T2CX1DRV64.AddReg]
HKR,,AssociatedFilters,,"wdmaud,swmidi,redbook"
HKR,,Driver,,t2cx1wdm64.sys
HKR,,NTMPDriver,,"t2cx1wdm64.sys,sbemul.sys"

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,,%T2CX1DRV.DeviceDesc%
HKR,Drivers\midi\wdmaud.drv, Description,,%T2CX1DRV.DeviceDesc%
HKR,Drivers\mixer\wdmaud.drv,Description,,%T2CX1DRV.DeviceDesc%

[T2CX1DRV64.App.AddReg]
; 64BIT ASIO
HKLM,SOFTWARE\ASIO\%ASIO_DRIVER_NAME%,CLSID,,%ASIO_DRIVER_GUID%
HKCR,CLSID\%ASIO_DRIVER_GUID%,,,%ASIO_DRIVER_NAME%
HKCR,CLSID\%ASIO_DRIVER_GUID%\InProcServer32,,,"%10%\system32\t2cx1asio64.dll"
HKCR,CLSID\%ASIO_DRIVER_GUID%\InProcServer32,ThreadingModel,,"Apartment"

; WOW64 ASIO
HKLM,SOFTWARE\Wow6432Node\ASIO\%ASIO_DRIVER_NAME%,CLSID,,%ASIO_DRIVER_GUID%
HKCR,Wow6432Node\CLSID\%ASIO_DRIVER_GUID%,,,%ASIO_DRIVER_NAME%
HKCR,Wow6432Node\CLSID\%ASIO_DRIVER_GUID%\InProcServer32,,,"%10%\system32\t2cx1asio.dll"
HKCR,Wow6432Node\CLSID\%ASIO_DRIVER_GUID%\InProcServer32,ThreadingModel,,"Apartment"

[T2CX1DRV64.Services]
AddService = %T2CX1DRV.Service%, 0x00000002, T2CX1DRV64_Service_Inst

[T2CX1DRV64.NT.Services]
AddService = %T2CX1DRV.Service%, 0x00000002, T2CX1DRV64_Service_Inst

[T2CX1DRV64_Service_Inst]
DisplayName   = %T2CX1DRV.SvcDesc%
ServiceType   = 1                  ; SERVICE_KERNEL_DRIVER
StartType     = 3                  ; SERVICE_DEMAND_START
ErrorControl  = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\system32\drivers\t2cx1wdm64.sys


[Strings]
ProviderName="T2C Audio"
MfgName="T2C Audio"
DiskDescription="T2C USB 2.0 HS Driver Disk"
T2CX1DRV.DeviceDesc="T2C USB 2.0 HS Driver"

T2CX1DRV.Wave.szPname="T2C USB Device Audio"
T2CX1DRV.Topology.szPname="T2C USB Device Mixer"
T2CX1DRV.Midi.szPname ="T2C USB Device Midi"

MediaCategories="SYSTEM\CurrentControlSet\Control\MediaCategories"

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}"

KSNAME_Wave="Wave"
KSNAME_Topology="Topology"
KSNAME_Midi="Midi"

T2CX1DRV.Service = "T2CX1DRV"
T2CX1DRV.SvcDesc = "Service for T2C USB 2.0 HS Driver (WDM)"

ASIO_DRIVER_GUID         ="{837470CC-78F3-4140-9096-0A55F2035116}"
ASIO_DRIVER_NAME         ="ASIO 2.2- T2C USB Device"
