; This inf file provides the general structure for using a ; single INF file to install different printing drivers on ; Windows 2000, Windows 9x, Windows XP and Windows Server 2003. ; ; It includes specific INF constructs to demonstrate: ; Platform extensions, including consistent usage ; Installation on multiple platforms from one INF file ; Installation of different local language versions of binaries ; ; Limitation - Windows 9x does not recognize or handle localized ; [Strings.LanguageID] sections, and so the localization ; techniques exemplified in this INF file cannot be used ; on Windows 9x. See the readme file (MultiOS.htm) accompanying ; sample for suggestions for Windows 9x handling. ; The installation sections for Windows 9x present in this sample ; are included for llustrative purposes only. ; ; Copyright 2003 Microsoft Corporation [Version] Signature="$CHICAGO$" ;Use "$CHICAGO$" for 9x - NT-based platforms recognize this too Class=Printing ClassGUID={4D36E979-E325-11CE-BFC1-08002BE10318} Provider=%VendorName% CatalogFile=MultiOS.cat ;Single Catalog file for all OS versions - Windows 9x/ME, Windows 2000, ;Windows XP and Windows Server 2003 - and all locales supported by this INF file DriverVer=07/01/2001, 1.0.0.0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Manufacturer and Models Sections ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [Manufacturer] ;Use decorations and platform extensions to differentiate between different platforms %WhoMakesIt% = Company, NT.5.1 ;Models section for installation on Win9x and Windows 2000 [Company] %Device.Description% = DriverInstall, OEM_Company_NameABC_640A, ABC_Printer ;Models section for installation on Windows XP, Windows Server 2003 (all platforms) [Company.NT.5.1] %DeviceXP.Description% = DriverInstallXP, OEM_Company_NameABC_640A, ABC_UniDrv5_Printer ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ControlFlags Section ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [ControlFlags] ExcludeFromSelect = * ; Don't display Plug & Play capable devices in the Add Hardware UI ; (See the DDK reference "INF ControlFlags Section" for more details) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;DDInstall and Related Sections for Windows 9x ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [DriverInstall] DriverVer=7/1/2001, 1.0 ;Windows 98 doesn't recognize DriverVer in the [Version] ;section, so include it here in the [DDInstall] section AddReg = Win9xAddReg, CommonAddReg CopyFiles = Win9xCopyFiles [Win9xAddReg] ;add appropriate registry entries for device installation on Windows 9x here [Win9xCopyFiles] Win9xDriverFile.vxd Win9xDriverDll.dll ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;DDInstall and Related Sections for Windows 2000 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [DriverInstall.NTx86] ;Same DDInstall name as for Win9x, with the addition of the .NTx86 ;platform extension AddReg = Win2KAddReg, CommonAddReg CopyFiles = Win2KCopyDriver, Win2KCopyDlls Include = =NTPRINT.INF Needs = TTFSUB.OEM,UNIDRV.OEM [Win2KAddReg] ;add appropriate registry entries for device installation on ;Windows 2000 here ;Use two CopyFiles sections, to differentiate between destinations ;for the files [Win2KCopyDriver] Win2kDriver.GPD [Win2KCopyDlls] Win2kDriverGUI.dll Win2kDriverPlugIn.dll [DriverInstall.NTx86.Services] AddService = Win2KDriverFile, %SPSVCINST_ASSOCSERVICE%, Win2KServiceInstallSection ;Use driver binary name for service name ;Use Include and Needs entries as needed ;Include = ;Needs = [Win2KServiceInstallSection] DisplayName = Win2KDriverFile ;Display name is not visible in UI, so use same name ;as service name ServiceType = %SERVICE_KERNEL_DRIVER% ;kernel-mode driver StartType = %SERVICE_DEMAND_START% ;that will be started as needed ErrorControl = %SERVICE_ERROR_IGNORE% ;proceed with system startup if driver load fails ServiceBinary = %12%\Win2KDriverFile.sys ;binary for this service, installed into the ;\Windows\system32\drivers directory ;binary name should be listed in the CopyFiles section AddReg = Win2KServiceAddReg ;Registry entries for this service [Win2KServiceAddReg] ;add appropriate registry entries for service installation ;on Windows 2000 here ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;DDInstall and Related Sections for Windows XP, ;Windows Server 2003 x86 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [DriverInstallXP.NTx86] ;Platform extension .NTx86 used for specific installation on x86 systems AddReg = WinXPx86AddReg, CommonAddReg, CommonXPAddReg CopyFiles = WinXPCopyDriver, WinXPCopyDlls Include = NTPRINT.INF Needs = TTFSUB.OEM,UNIDRV.OEM [WinXPx86AddReg] ;add appropriate registry entries for device installation on Windows XP x86 here [DriverInstallXP.NTx86.Services] AddService = WinXPDriverFile, %SPSVCINST_ASSOCSERVICE%, WinXPServiceInstallSection ;Use driver binary name for service name ;Use common service installation section for both x86 and ia64 ;Use Include and Needs entries as needed ;Include = ;Needs = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;DDInstall and Related Sections for Windows XP, ;Windows Server 2003 ia64 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [DriverInstallXP.NTia64] ;Platform extension .NTia64 used for specific installation on ia64 systems AddReg = WinXPia64AddReg, CommonAddReg, CommonXPAddReg CopyFiles = WinXPCopyDriver, WinXPCopyDlls Include = NTPRINT.INF Needs = TTFSUB.OEM,UNIDRV.OEM [WinXPia64AddReg] ;add appropriate registry entries for device installation on Windows XP ia64 here [DriverInstallXP.NTia64.Services] AddService = WinXPDriverFile, %SPSVCINST_ASSOCSERVICE%, WinXPServiceInstallSection ;Use driver binary name for service name ;Use common service installation section for both x86 and ia64 ;Use Include and Needs entries as needed ;Include = ;Needs = ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Common Sections for installing on both platforms (x86 and ia64) for Windows XP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [CommonXPAddReg] ;add appropriate registry entries for device installation on all Windows XP platforms here ;Use two CopyFiles sections, to differentiate between destinations for the files [WinXPCopyDriver] WinXPDriver.GPD [WinXPCopyDlls] WinXPDriverGUI.dll WinXPDriverPlugIn.dll ;Common service install section for both x86 and ia64 [WinXPServiceInstallSection] DisplayName = WinXPDriverFile ;Display name is not visible in UI, so use same name ;as service name ServiceType = %SERVICE_KERNEL_DRIVER% ;kernel-mode driver StartType = %SERVICE_DEMAND_START% ;that will be started as needed ErrorControl = %SERVICE_ERROR_IGNORE% ;proceed with system startup if driver load fails ServiceBinary = %12%\WinXPDriverFile.sys ;binary for this service, installed into the ;\Windows\system32\drivers directory ;binary name should be listed in the CopyFiles section AddReg = WinXPServiceAddReg ;Registry entries for this service [WinXPServiceAddReg] ;add appropriate registry entries for service installation on Windows XP (both x86 and ia64) here ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Common Registry Section for installing on all supported platforms ; - Windows 9x/ME, Windows 2000, Windows XP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [CommonAddReg] ;add appropriate registry entries for device installation on all Windows platforms here ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Source Media Information Sections ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [DestinationDirs] ;Setting DefaultDestDir isn't required, but it is advisable DefaultDestDir = 12 ;12 is %windir%\system32\drivers for NT-based systems, ; %windir%\system\IoSubsys for Windows 9x/Me Win9xCopyFiles = 11 Win2KCopyDriver = 12 Win2KCopyDlls = 11 WinXPCopyDriver = 12 WinXPCopyDlls = 11 [SourceDisksNames] 1 = %MediaDescription% [SourceDisksFiles] ;Specify different paths for different platforms, OS versions and local languages. ;Note that these paths are relative to the root of the source media as specificied ;in the [SourceDisksNames] sections. In this sample, that root of the source medaia ;is not specified and is assumed to be the root of the physical media. Win9xDriverFile.vxd = 1, Win9x Win9xDriverDll.dll = 1, Win9x Win2KDriver.GPD = 1, Win2K\%LocalLanguage% Win2KDriverGUI.dll = 1, Win2K\%LocalLanguage% Win2KDriverPlugIn.dll = 1, Win2K\%LocalLanguage% Win2KDriver.GPD = 1, Win2K\%LocalLanguage% WinXPDriverGUI.dll = 1, WinXP\%LocalLanguage%\x86 WinXPDriverPlugIn.dll = 1, WinXP\%LocalLanguage%\x86 [SourceDisksFiles.ia64] Win2KDriver.GPD = 1, Win2K\%LocalLanguage% WinXPDriverGUI.dll = 1, WinXP\%LocalLanguage%\ia64 WinXPDriverPlugIn.dll = 1, WinXP\%LocalLanguage%\ia64 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Strings Sections ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Base strings section for use on US English language systems ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [Strings] ;List common, non-localizable strings first ;Also list useful constants SPSVCINST_ASSOCSERVICE = 0x00000002 ;Assign this service as the driver for the device installed by this INF file SERVICE_KERNEL_DRIVER = 0x00000001 ;Kernel-mode driver service (NT-based platforms) SERVICE_DEMAND_START = 0x3 ;Driver will be started on demand. Services for most driver ;should be SERVICE_DEMAND_START SERVICE_ERROR_IGNORE = 0x0 ;proceed with system startup if driver fails to load or initialize ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; US localizable strings section ; ; Separate the localizable strings from the non-localizable strings above ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; VendorName = "Vendor Name" ;Vendor who developed this INF file WhoMakesIt = "Manufacturer Name" ;Manufacturer of the device and the drivers ;Device descriptions: Device.Description = "123 Device for Windows 2000/9x" DeviceXP.Description = "123 Device For Windows XP" ;Media related strings MediaDescription = "Description for Vendor provided media" LocalLanguage = "usa" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;French strings section to be used on French language systems ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [Strings.040c] ;Substitute French translations for English language strings below, as appropriate. ;List common, non-localizable strings first ;Also list useful constants SPSVCINST_ASSOCSERVICE = 0x00000002 ;Assign this service as the driver for the device installed by this INF file SERVICE_KERNEL_DRIVER = 0x00000001 ;Kernel-mode driver service (NT-based platforms) SERVICE_DEMAND_START = 0x3 ;Driver will be started on demand. Services for most driver ;should be SERVICE_DEMAND_START SERVICE_ERROR_IGNORE = 0x0 ;proceed with system startup if driver fails to load or initialize ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; French localizable strings Sections ; ; Separate the localizable strings from the non-localizable strings above ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Substitute French translations for English language text below, as appropriate. VendorName = "Vendor Name" ;Vendor who developed this INF file WhoMakesIt = "Manufacturer Name" ;Manufacturer of the device and the drivers ;Device descriptions: Device.Description = "123 Device for Windows 2000/9x" DeviceXP.Description = "123 Device For Windows XP" ;Media related strings MediaDescription = "Description for Vendor provided media" LocalLanguage = "fre" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;German strings section to be used on German language systems ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [Strings.0407] ;List common, non-localizable strings first ;Also list useful constants SPSVCINST_ASSOCSERVICE = 0x00000002 ;Assign this service as the driver for the device installed by this INF file SERVICE_KERNEL_DRIVER = 0x00000001 ;Kernel-mode driver service (NT-based platforms) SERVICE_DEMAND_START = 0x3 ;Driver will be started on demand. Services for most driver ;should be SERVICE_DEMAND_START SERVICE_ERROR_IGNORE = 0x0 ;proceed with system startup if driver fails to load or initialize ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; German localizable strings Sections ; ; Separate the localizable strings from the non-localizable strings above ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Substitute German translations for English language text below, as appropriate. VendorName = "Vendor Name" ;Vendor who developed this INF file WhoMakesIt = "Manufacturer Name" ;Manufacturer of the device and the drivers ;Device descriptions: Device.Description = "123 Device for Windows 2000/9x" DeviceXP.Description = "123 Device For Windows XP" ;Media related strings MediaDescription = "Description for Vendor provided media" LocalLanguage = "ger"