; Copyright (C) 1995-2010 Matrox Graphics Inc.

[Version]
Signature = "$Windows NT$"
DriverVer=09/10/2013, 1.7.0.2
Class = System
ClassGuid = {4D36E97D-E325-11CE-BFC1-08002BE10318}
Provider = %MxEFF.InfCreatorName%
CatalogFile.ntx86   = MxEFF.cat
CatalogFile.ntamd64 = MxEFF64.cat

[SourceDisksNames]

[SourceDisksNames.x86]
1 = %MxEFF.SourceDiskName%,MSerX.cab

[SourceDisksNames.amd64]
1 = %MxEFF.SourceDiskName%,MSerX64.cab

[SourceDisksFiles.AMD64]
MxEFUF64.sys = 1
MxEFLF64.sys = 1

[SourceDisksFiles.X86]
MxEFUF32.sys = 1
MxEFLF32.sys = 1

[SourceDisksFiles]
;%MxEFF.This.Inf.File% = 1

[DestinationDirs]
DefaultDestDir                                      = 12            ; %SystemRoot%\system32\drivers
MxEFUF.InstallInfo.KernelDrivers.NTAMD64.CopyFiles  = 12            ; %SystemRoot%\system32\drivers
MxEFUF.InstallInfo.KernelDrivers.NTX86.CopyFiles    = 12            ; %SystemRoot%\system32\drivers
MxEFLF.InstallInfo.KernelDrivers.NTAMD64.CopyFiles  = 12            ; %SystemRoot%\system32\drivers
MxEFLF.InstallInfo.KernelDrivers.NTX86.CopyFiles    = 12            ; %SystemRoot%\system32\drivers

[DefaultInstall.NT]

[MxEFUF.InstallInfo.KernelDrivers.NTAMD64.CopyFiles]
MxEFUF64.sys,,,0x00000004

[MxEFUF.InstallInfo.KernelDrivers.NTX86.CopyFiles]
MxEFUF32.sys,,,0x00000004

[MxEFLF.InstallInfo.KernelDrivers.NTAMD64.CopyFiles]
MxEFLF64.sys,,,0x00000004

[MxEFLF.InstallInfo.KernelDrivers.NTX86.CopyFiles]
MxEFLF32.sys,,,0x00000004

[MxEFUF.InstallInfo.NTAMD64.AddService]
DisplayName     = %MxEFUF.RegistryServiceDescription%
ServiceType     = %SERVICE_KERNEL_DRIVER%
StartType       = %SERVICE_DEMAND_START%
ErrorControl    = %SERVICE_ERROR_NORMAL%
ServiceBinary   = %12%\MxEFUF64.sys

[MxEFUF.InstallInfo.NTX86.AddService]
DisplayName     = %MxEFUF.RegistryServiceDescription%
ServiceType     = %SERVICE_KERNEL_DRIVER%
StartType       = %SERVICE_DEMAND_START%
ErrorControl    = %SERVICE_ERROR_NORMAL%
ServiceBinary   = %12%\MxEFUF32.sys

[MxEFLF.InstallInfo.NTAMD64.AddService]
DisplayName     = %MxEFLF.RegistryServiceDescription%
ServiceType     = %SERVICE_KERNEL_DRIVER%
StartType       = %SERVICE_DEMAND_START%
ErrorControl    = %SERVICE_ERROR_NORMAL%
ServiceBinary   = %12%\MxEFLF64.sys

[MxEFLF.InstallInfo.NTX86.AddService]
DisplayName     = %MxEFLF.RegistryServiceDescription%
ServiceType     = %SERVICE_KERNEL_DRIVER%
StartType       = %SERVICE_DEMAND_START%
ErrorControl    = %SERVICE_ERROR_NORMAL%
ServiceBinary   = %12%\MxEFLF32.sys

[MxEFF.InstallInfo.UpperFilter.NT.HW.AddReg]
HKR,, "UpperFilters", %FLG_ADDREG_TYPE_APPEND_MULTI_SZ%, %MxEFUF.RegistryServiceName%

[MxEFF.InstallInfo.LowerFilter.NT.HW.AddReg]
HKR,, "LowerFilters", %FLG_ADDREG_TYPE_APPEND_MULTI_SZ%, %MxEFLF.RegistryServiceName%

;Needed for the installation by the setup
[InstallInfo.UpperFilter.SupportedDevices]
*

[InstallInfo.UpperFilter.External.SupportedDevices]
%MxEFF.CMUSD0102.HardwareId%
%MxEFF.CMUCD0102.HardwareId%

[InstallInfo.UpperFilter.NTAMD64]
CopyFiles = MxEFUF.InstallInfo.KernelDrivers.NTAMD64.CopyFiles
AddReg    = MxEFF.InstallInfo.UpperFilter.NT.HW.AddReg

[InstallInfo.UpperFilter.NTX86]
CopyFiles = MxEFUF.InstallInfo.KernelDrivers.NTX86.CopyFiles
AddReg    = MxEFF.InstallInfo.UpperFilter.NT.HW.AddReg

[InstallInfo.UpperFilter.NTAMD64.Services]
AddService = %MxEFUF.RegistryServiceName%, %ADDSERVICEFLAG_FILTER_DRIVER%, MxEFUF.InstallInfo.NTAMD64.AddService

[InstallInfo.UpperFilter.NTX86.Services]
AddService = %MxEFUF.RegistryServiceName%, %ADDSERVICEFLAG_FILTER_DRIVER%, MxEFUF.InstallInfo.NTX86.AddService

[InstallInfo.LowerFilter.SupportedDevices]
%MxEFF.RHNec0035.HardwareId%
%MxEFF.RHUli5237.HardwareId%
%MxEFF.RHNec00E0.HardwareId%
%MxEFF.RHUli5239.HardwareId%

[InstallInfo.LowerFilter.External.SupportedDevices]
%MxEFF.CMUCD0102.HardwareId%

[InstallInfo.LowerFilter.NTAMD64]
CopyFiles = MxEFLF.InstallInfo.KernelDrivers.NTAMD64.CopyFiles
AddReg    = MxEFF.InstallInfo.LowerFilter.NT.HW.AddReg

[InstallInfo.LowerFilter.NTX86]
CopyFiles = MxEFLF.InstallInfo.KernelDrivers.NTX86.CopyFiles
AddReg    = MxEFF.InstallInfo.LowerFilter.NT.HW.AddReg

[InstallInfo.LowerFilter.NTAMD64.Services]
AddService = %MxEFLF.RegistryServiceName%, %ADDSERVICEFLAG_FILTER_DRIVER%, MxEFLF.InstallInfo.NTAMD64.AddService

[InstallInfo.LowerFilter.NTX86.Services]
AddService = %MxEFLF.RegistryServiceName%, %ADDSERVICEFLAG_FILTER_DRIVER%, MxEFLF.InstallInfo.NTX86.AddService

; Needed for the Uninstaller
[UnInstallInfo.UpperFilter.ServiceName]
%MxEFUF.RegistryServiceName%

[UnInstallInfo.UpperFilter.Registry.Full]
DelReg  = DelReg.UpperFilter.Full

[UnInstallInfo.UpperFilter.Registry.Partial]
DelReg  = DelReg.UpperFilter.Partial

[DelReg.UpperFilter.Full]
HKR,, "UpperFilters"

[DelReg.UpperFilter.Partial]
HKR,, "UpperFilters", %FLG_DELREG_MULTI_SZ_DELSTRING%, %MxEFUF.RegistryServiceName%

[UnInstallInfo.LowerFilter.ServiceName]
%MxEFLF.RegistryServiceName%

[UnInstallInfo.LowerFilter.Registry.Full]
DelReg  = DelReg.LowerFilter.Full

[UnInstallInfo.LowerFilter.Registry.Partial]
DelReg  = DelReg.LowerFilter.Partial

[DelReg.LowerFilter.Full]
HKR,, "LowerFilters"

[DelReg.LowerFilter.Partial]
HKR,, "LowerFilters", %FLG_DELREG_MULTI_SZ_DELSTRING%, %MxEFLF.RegistryServiceName%

[Strings]
MxEFF.InfCreatorName                    = "Matrox Graphics Inc."
MxEFF.DeviceManufacturerName            = "Matrox Graphics Inc."
MxEFF.SourceDiskName                    = "Matrox Extio Function Filter Driver Disk"
MxEFUF.RegistryServiceName              = "MxEFUF"
MxEFUF.RegistryServiceDescription       = "Matrox Extio Upper Function Filter"
MxEFLF.RegistryServiceName              = "MxEFLF"
MxEFLF.RegistryServiceDescription       = "Matrox Extio Lower Function Filter"
;MxEFF.This.Inf.File                     = "MxEFF.inf"
MxEFF.PlxPex8508.Description            = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.PlxPex8508.HardwareId             = "PCI\VEN_10B5&DEV_8508&CC_060400"
MxEFF.PlxMtx0002.Description            = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.PlxMtx0002.HardwareId             = "PCI\VEN_102B&DEV_0002&CC_060400"
MxEFF.PlxPex8608.Description            = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.PlxPex8608.HardwareId             = "PCI\VEN_10B5&DEV_8608&CC_060400"
MxEFF.PlxPex8609.Description            = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.PlxPex8609.HardwareId             = "PCI\VEN_10B5&DEV_8609&CC_060400"
MxEFF.PlxPex8614.Description            = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.PlxPex8614.HardwareId             = "PCI\VEN_10B5&DEV_8614&CC_060400"
MxEFF.TiXio2000.Description             = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.TiXio2000.HardwareId              = "PCI\VEN_104C&DEV_8231&CC_060400"
MxEFF.TiXio2001.Description             = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.TiXio2001.HardwareId              = "PCI\VEN_104C&DEV_8240&CC_060400"
MxEFF.Ti823E.Description                = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.Ti823E.HardwareId                 = "PCI\VEN_104C&DEV_823E&SUBSYS_0010102B"
MxEFF.StdP2PB.Description               = "PCI standard PCI-to-PCI bridge (Matrox Filtered)"
MxEFF.StdP2PB.HardwareId                = "PCI\CC_0604"
MxEFF.Nec0035.Description               = "NEC PCI to USB Open Host Controller (Matrox Filtered)"
MxEFF.Nec0035.102B.HardwareId           = "PCI\VEN_1033&DEV_0035&SUBSYS_0035102B"
MxEFF.Nec0035.1033.HardwareId           = "PCI\VEN_1033&DEV_0035&SUBSYS_00351033" ; "PCI\VEN_1033&DEV_0035&CC_0C0310"
MxEFF.Uli5237.Description               = "ULi PCI to USB Open Host Controller (Matrox Filtered)"
MxEFF.Uli5237.HardwareId                = "PCI\VEN_10B9&DEV_5237&CC_0C0310"
MxEFF.Nec00E0.Description               = "Standard Enhanced PCI to USB Host Controller (Matrox Filtered)"
MxEFF.Nec00E0.102B.HardwareId           = "PCI\VEN_1033&DEV_00E0&SUBSYS_00E0102B"
MxEFF.Nec00E0.1033.HardwareId           = "PCI\VEN_1033&DEV_00E0&SUBSYS_00E01033" ; "PCI\VEN_1033&DEV_00E0&CC_0C0320"
MxEFF.Uli5239.Description               = "ULi USB 2.0 Enhanced Host Controller (Matrox Filtered)"
MxEFF.Uli5239.HardwareId                = "PCI\VEN_10B9&DEV_5239&CC_0C0320"
MxEFF.Ti823F.Description                = "Texas Instruments OHCI Compliant IEEE 1394 Host Controller (Matrox Filtered)"
MxEFF.Ti823F.HardwareId                 = "PCI\VEN_104C&DEV_823F&SUBSYS_0010102B" ; "PCI\VEN_104C&DEV_823F&CC_0C0010"
MxEFF.Uli5253.Description               = "ULi OHCI Compliant IEEE 1394 Host Controller (Matrox Filtered)"
MxEFF.Uli5253.HardwareId                = "PCI\VEN_10B9&DEV_5253&CC_0C0010"
MxEFF.RH.Description                    = "USB Root Hub (Matrox Filtered)"
MxEFF.RHNec0035.HardwareId              = "USB\ROOT_HUB&VID1033&PID0035"
MxEFF.RHUli5237.HardwareId              = "USB\ROOT_HUB&VID10B9&PID5237"
MxEFF.RHNec00E0.HardwareId              = "USB\ROOT_HUB20&VID1033&PID00E0"
MxEFF.RHUli5239.HardwareId              = "USB\ROOT_HUB20&VID10B9&PID5239"
MxEFF.CMUSD0102.Description             = "USB Sound Device (Matrox Filtered)"
MxEFF.CMUSD0102.HardwareId              = "USB\VID_0D8C&PID_0102&MI_00"
MxEFF.CMUCD0102.Description             = "USB Composite Device (Matrox Filtered)"
MxEFF.CMUCD0102.HardwareId              = "USB\VID_0D8C&PID_0102"
;MxEFF.MCT0055.Description              = "USB Keyboard Device (Matrox Filtered)"
;MxEFF.MCT0055.HardwareId               = "HID\VID_04D8&PID_0055"

ADDSERVICEFLAG_FUNCTION_DRIVER  = "0x00000002"  ; %SPSVCINST_ASSOCSERVICE%
ADDSERVICEFLAG_FILTER_DRIVER    = " "           ; %SPSVCINST_NO_FLAGS%

; The following macros are defined in setupapi.h
;
; Flags for SetupInstallServicesFromInfSection(Ex).
;
SPSVCINST_NO_FLAGS              = "0x00000000"  ; There is no such a value in setupapi.h
SPSVCINST_ASSOCSERVICE          = "0x00000002"  ; PnP function driver or legacy driver. Do not use for filter driver.
;
;
; Flags for AddReg section lines in INF.
; Format of the AddReg line:
;
; <RegRootString>,<SubKey>,<ValueName>,<ValueType>,<Value>...
;
; Flags for value <ValueType> in the AddReg section:
;
FLG_ADDREG_NOCLOBBER            = "0x00000002"
FLG_ADDREG_DELVAL               = "0x00000004"
FLG_ADDREG_APPEND               = "0x00000008" ; Currently supported only for REG_MULTI_SZ values.
FLG_ADDREG_KEYONLY              = "0x00000010" ; Just create the key, ignore value
FLG_ADDREG_OVERWRITEONLY        = "0x00000020" ; Set only if value already exists
FLG_ADDREG_64BITKEY             = "0x00001000" ; Make this change in the 64 bit registry.
FLG_ADDREG_KEYONLY_COMMON       = "0x00002000" ; Same as FLG_ADDREG_KEYONLY but also works for DELREG
FLG_ADDREG_32BITKEY             = "0x00004000" ; Make this change in the 32 bit registry.
FLG_ADDREG_DELREG_BIT           = "0x00008000" ; If set, interpret as DELREG
;
FLG_ADDREG_TYPE_SZ              = "0x00000000"
FLG_ADDREG_BINVALUETYPE         = "0x00000001"
FLG_ADDREG_TYPE_MULTI_SZ        = "0x00010000"
FLG_ADDREG_TYPE_APPEND_MULTI_SZ = "0x00010008"
FLG_ADDREG_TYPE_EXPAND_SZ       = "0x00020000"
FLG_ADDREG_TYPE_DWORD           = "0x00010001"
FLG_DELREG_MULTI_SZ_DELSTRING   = "0x00018002"
;
; End of macro definitions from setupapi.h

; The following macros are defined in ntddk.h
;
; Service Types (Bit Mask)
;
SERVICE_KERNEL_DRIVER           = "0x00000001"
SERVICE_FILE_SYSTEM_DRIVER      = "0x00000002"
SERVICE_ADAPTER                 = "0x00000004"
SERVICE_RECOGNIZER_DRIVER       = "0x00000008"
SERVICE_WIN32_OWN_PROCESS       = "0x00000010"
SERVICE_WIN32_SHARE_PROCESS     = "0x00000020"
SERVICE_INTERACTIVE_PROCESS     = "0x00000100"
;
; Start Type
;
SERVICE_BOOT_START              = "0x00000000"
SERVICE_SYSTEM_START            = "0x00000001"
SERVICE_AUTO_START              = "0x00000002"
SERVICE_DEMAND_START            = "0x00000003"
SERVICE_DISABLED                = "0x00000004"
;
; Error control type
;
SERVICE_ERROR_IGNORE            = "0x00000000"
SERVICE_ERROR_NORMAL            = "0x00000001"
SERVICE_ERROR_SEVERE            = "0x00000002"
SERVICE_ERROR_CRITICAL          = "0x00000003"
;
; End of macro definitions from ntddk.h

