;-----------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with. The different
; possible types are:
;
; COMPUTER, VIDEO, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;-----------------------------------------------------------------------
[Identification]
OptionType = VIDEO
;-----------------------------------------------------------------------
; LANGUAGES SUPPORTED
; -------------------
;
; The languages supported by the OEM INF, For every language supported
; we need to have a separate text section for every displayable text
; section.
;
;-----------------------------------------------------------------------
[LanguagesSupported]
ENG
;-----------------------------------------------------------------------
; OPTION LIST
; -----------
; This section lists the OEM Option key names. These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
;-----------------------------------------------------------------------
;
; Option list order: Option = Miniport driver, BitsPerPel, XResolution, YResolution, VRefresh, Interlaced
;
; If you don't want to create a VRefresh or Interlaced value under the service
; parameters then use the value ""
;
[Options]
"3Dlabs GLINT 640x480x8x60" = glint, 8, 640, 480 , 60 , 0
"3Dlabs GLINT 640x480x8x75" = glint, 8, 640, 480 , 75 , 0
"3Dlabs GLINT 800x600x8x60" = glint, 8, 800, 600 , 60 , 0
"3Dlabs GLINT 800x600x8x75" = glint, 8, 800, 600 , 75 , 0
"3Dlabs GLINT 640x480x12x60" = glint, 12, 640, 480 , 60 , 0
"3Dlabs GLINT 640x480x12x75" = glint, 12, 640, 480 , 75 , 0
"3Dlabs GLINT 800x600x12x60" = glint, 12, 800, 600 , 60 , 0
"3Dlabs GLINT 800x600x12x75" = glint, 12, 800, 600 , 75 , 0
"3Dlabs GLINT 1024x768x12x60" = glint, 12, 1024, 768 , 60 , 0
"3Dlabs GLINT 1024x768x12x75" = glint, 12, 1024, 768 , 75 , 0
"3Dlabs GLINT 1152x870x12x60" = glint, 12, 1152, 870 , 60 , 0
"3Dlabs GLINT 1152x870x12x75" = glint, 12, 1152, 870 , 75 , 0
"3Dlabs GLINT 800x600x15x60" = glint, 15, 800, 600 , 60 , 0
"3Dlabs GLINT 800x600x15x75" = glint, 15, 800, 600 , 75 , 0
"3Dlabs GLINT 1024x768x15x60" = glint, 15, 1024, 768 , 60 , 0
"3Dlabs GLINT 1024x768x15x75" = glint, 15, 1024, 768 , 75 , 0
"3Dlabs GLINT 1152x870x15x60" = glint, 15, 1152, 870 , 60 , 0
"3Dlabs GLINT 1152x870x15x75" = glint, 15, 1152, 870 , 75 , 0
"3Dlabs GLINT 800x600x32x60" = glint, 32, 800, 600 , 60 , 0
"3Dlabs GLINT 800x600x32x75" = glint, 32, 800, 600 , 75 , 0
"3Dlabs GLINT 1024x768x32x60" = glint, 32, 1024, 768 , 60 , 0
"3Dlabs GLINT 1024x768x32x75" = glint, 32, 1024, 768 , 75 , 0
"3Dlabs GLINT 1152x870x32x60" = glint, 32, 1152, 870 , 60 , 0
"3Dlabs GLINT 1152x870x32x75" = glint, 32, 1152, 870 , 75 , 0
;
; This maps detected options into the options we support
;
; Format: DetectedOption = MappedOption
;
[MapOfOptions]
"VGA" = "VGA"
"COMPAQ AVGA" = "VGA"
"COMPAQ AGB" = "VGA"
"8514 MONITOR UNKNOWN" = "VGA"
"8514 VGA MONITOR" = "VGA"
"8514 8503 MONO" = "VGA"
"8514 8514 GAD" = "VGA"
"GENOA VGA" = "VGA"
"VIDEO7 VGA DRAM" = "VIDEO7 VGA VRAM 640x480x4"
"VIDEO7 VGA VRAM" = "VIDEO7 VGA VRAM 640x480x4"
"TRIDENT VGA" = "VGA"
"TRIDENT VGA 9100" = "VGA"
"PARADISE VGA" = "VGA"
"PARADISE VGA PROM" = "VGA"
"PARADISE VGA CHIP 1F" = "VGA"
"ATI VGA" = "VGA"
"ATI VGA WONDDER3" = "VGA"
"TSENGLAB VGA ET3000" = "VGA"
"TSENGLAB VGA ET4000" = "TSENGLAB VGA ET4000 640x480x4x60"
"CIRRUS VGA" = "VGA"
"CIRRUS VGA 610-620 REVC" = "VGA"
"XGA" = "XGA 640x480x8"
"DELL DGX" = "DELL DGX 640x480x8"
"S3 VGA" = "S3 VGA 640x480x8"
"PRODESIGNER II" = "TSENGLAB VGA ET4000 640x480x4x60"
;
; Order of the information:
;
; Port driver = Type, Group, ErrorControl, Tag, InstalledDisplay, VgaCompatible( 0/1 ), EventMessageFile, TypesSupported
;
[MiniportDrivers]
glint = !SERVICE_KERNEL_DRIVER, Video, !SERVICE_ERROR_NORMAL, 11, {glint}, 0 , "%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\glint.sys" , 7
;
; Order of the information
;
; Display driver = OpenGL client driver
;
[OpenGLDrivers]
glint = glint
;
; Order of the information
;
; Display driver = Perfmon DLL
;
[DispayPerfmon]
glint = glint
;
; Order of the information
;
; Display driver = GLINT Applet CPL
;
[GlintApplet]
glint = glint
;-----------------------------------------------------------------------
; OPTION TEXT SECTION
; -------------------
; These are text strings used to identify the option to the user. There
; are separate sections for each language supported. The format of the
; section name is "OptionsText" concatenated with the Language represented
; by the section.
;
;-----------------------------------------------------------------------
[OptionsTextENG]
"3Dlabs GLINT 640x480x8x60" = "3Dlabs GLINT 640x480, 8bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 640x480x8x75" = "3Dlabs GLINT 640x480, 8bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 800x600x8x60" = "3Dlabs GLINT 800x600, 8bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 800x600x8x75" = "3Dlabs GLINT 800x600, 8bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 640x480x12x60" = "3Dlabs GLINT 640x480, 12bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 640x480x12x75" = "3Dlabs GLINT 640x480, 12bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 800x600x12x60" = "3Dlabs GLINT 800x600, 12bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 800x600x12x75" = "3Dlabs GLINT 800x600, 12bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 1024x768x12x60" = "3Dlabs GLINT 1024x768, 12bpp, 60Hz, 1 Double Buffered Window"
"3Dlabs GLINT 1024x768x12x75" = "3Dlabs GLINT 1024x768, 12bpp, 75Hz, 1 Double Buffered Window"
"3Dlabs GLINT 1152x870x12x60" = "3Dlabs GLINT 1152x870, 12bpp, 60Hz, 1 Double Buffered Window"
"3Dlabs GLINT 1152x870x12x75" = "3Dlabs GLINT 1152x870, 12bpp, 75Hz, 1 Double Buffered Window"
"3Dlabs GLINT 800x600x15x60" = "3Dlabs GLINT 800x600, 15bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 800x600x15x75" = "3Dlabs GLINT 800x600, 15bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 1024x768x15x60" = "3Dlabs GLINT 1024x768, 15bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 1024x768x15x75" = "3Dlabs GLINT 1024x768, 15bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 1152x870x15x60" = "3Dlabs GLINT 1152x870, 15bpp, 60Hz, Double Buffered"
"3Dlabs GLINT 1152x870x15x75" = "3Dlabs GLINT 1152x870, 15bpp, 75Hz, Double Buffered"
"3Dlabs GLINT 800x600x32x60" = "3Dlabs GLINT 800x600, TRUE Color, 60Hz, Double Buffered"
"3Dlabs GLINT 800x600x32x75" = "3Dlabs GLINT 800x600, TRUE Color, 75Hz, Double Buffered"
"3Dlabs GLINT 1024x768x32x60" = "3Dlabs GLINT 1024x768, TRUE Color, 60Hz, Single Buffered"
"3Dlabs GLINT 1024x768x32x75" = "3Dlabs GLINT 1024x768, TRUE Color, 75Hz, Single Buffered"
"3Dlabs GLINT 1152x870x32x60" = "3Dlabs GLINT 1152x870, TRUE Color, 60Hz, Single Buffered"
"3Dlabs GLINT 1152x870x32x75" = "3Dlabs GLINT 1152x870, TRUE Color, 75Hz, Single Buffered"
;---------------------------------------------------------------------------
; 1. Identify
;
; DESCRIPTION: To verify that this INF deals with the same type of options
; as we are choosing currently.
;
; INPUT: None
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Option Type (COMPUTER ...)
; $($R2): Diskette description
;---------------------------------------------------------------------------
[Identify]
;
;
read-syms Identification
set Status = STATUS_SUCCESSFUL
set Identifier = $(OptionType)
set Media = #("Source Media Descriptions", 1, 1)
Return $(Status) $(Identifier) $(Media)
;------------------------------------------------------------------------
; 2. ReturnOptions:
;
; DESCRIPTION: To return the option list supported by this INF and the
; localised text list representing the options.
;
;
; INPUT: $($0): Language used. ( ENG | FRN | ... )
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
;
; $($R1): Option List
; $($R2): Option Text List
;------------------------------------------------------------------------
[ReturnOptions]
;
;
set Status = STATUS_FAILED
set OptionList = {}
set OptionTextList = {}
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) in $(LanguageList)
goto returnoptions
else
set Status = STATUS_NOLANGUAGE
goto finish_ReturnOptions
endif
;
; form a list of all the options and another of the text representing
;
returnoptions = +
set OptionList = ^(Options, 0)
set OptionTextList = ^(OptionsText$($0), 1)
set Status = STATUS_SUCCESSFUL
finish_ReturnOptions = +
Return $(Status) $(OptionList) $(OptionTextList)
;---------------------------------------------------------------------------
; MapToSupportedOption
;
; DESCRIPTION: To map a hardware detected option to the NT Supported
; option which represents it.
;
; INPUT: $($0): Option
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Mapped Option
;
;---------------------------------------------------------------------------
[MapToSupportedOption]
;
set Status = STATUS_FAILED
set MappedOption = $($0)
;
; If the option is one we can support using one of our standard options
; then map it to the standard option else map it to the default option
; which is VGA.
;
set OptionList = ^(MapOfOptions, 0)
ifcontains $($0) in $(OptionList)
set MappedOption = #(MapOfOptions, $($0), 1)
else
set MappedOption = "VGA"
endif
set Status = STATUS_SUCCESSFUL
Return $(Status) $(MappedOption)
[ServicesEntry]
CurrentEntry = "" ? $(!LIBHANDLE) GetDevicemapValue Video \Device\Video0
;
; InstallOption:
;
; FUNCTION: To copy files representing Options
; To configure the installed option
; To update the registry for the installed option
;
; INPUT: $($0): Language to use
; $($1): OptionID to install
; $($2): SourceDirectory
; $($3): AddCopy (YES | NO)
; $($4): DoCopy (YES | NO)
; $($5): DoConfig (YES | NO)
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
[InstallOption]
;
; Set default values for
;
set Status = STATUS_FAILED
set DrivesToFree = {}
;
; extract parameters
;
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) in $(LanguageList)
else
set Status = STATUS_NOLANGUAGE
goto finish_InstallOption
endif
read-syms Strings$($0)
;
; check to see if Option is supported.
;
set OptionList = ^(Options, 0)
ifcontains $(Option) in $(OptionList)
else
goto finish_InstallOption
endif
set OptionList = ""
;
; Option has been defined already
;
set MiniportDriver = #(Options, $(Option), 1)
set BitsPerPel = #(Options, $(Option), 2)
set XResolution = #(Options, $(Option), 3)
set YResolution = #(Options, $(Option), 4)
set VRefresh = #(Options, $(Option), 5)
set Interlaced = #(Options, $(Option), 6)
set Type = $(#(MiniportDrivers, $(MiniportDriver), 1))
set Group = #(MiniportDrivers, $(MiniportDriver), 2)
set ErrorControl = $(#(MiniportDrivers, $(MiniportDriver), 3))
set Tag = #(MiniportDrivers, $(MiniportDriver), 4)
set InstalledDisplays = #(MiniportDrivers, $(MiniportDriver), 5)
set VgaCompatible = #(MiniportDrivers, $(MiniportDriver), 6)
set EventMessageFile = #(MiniportDrivers, $(MiniportDriver), 7)
set TypesSupported = #(MiniportDrivers, $(MiniportDriver), 8)
set OpenGLDriverList = ^(OpenGLDrivers, 0)
set PerfmonDriverList = ^(DispayPerfmon, 0)
set GlintAppletList = ^(GlintApplet, 0)
read-syms ServicesEntry
detect ServicesEntry
installtheoption = +
;
; Code to add files to copy list
;
ifstr(i) $(AddCopy) == "YES"
set DoActualCopy = NO
set FileToCheck = #(Files-DisplayMiniportDrivers, $(MiniportDriver), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
goto addfiles
endif
ForListDo $(InstalledDisplays)
set FileToCheck = #(Files-DisplayDLLs, $($), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
endif
set FileToCheck = #(Files-DisplayOpenGLDrivers, $($), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
endif
set FileToCheck = #(Files-DisplayPerfmonDLL, $($), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
endif
set FileToCheck = #(Files-GlintAppletCPL, $($), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
endif
EndForListDo
addfiles = +
ifstr(i) $(DoActualCopy) == NO
shell "subroutn.inf" DriversExist $($0) $(String1)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "VIDEO.INF: shelling DriversExist failed"
goto finish_InstallOption
endif
ifstr(i) $($R0) == STATUS_CURRENT
else-ifstr(i) $($R0) == STATUS_NEW
set DoActualCopy = YES
else-ifstr(i) $($R0) == STATUS_USERCANCEL
Debug-Output "VIDEO.INF: User cancelled video installation"
goto finish_InstallOption
else
Debug-Output "VIDEO.INF: Error reported in DriversExist routine in SUBROUTN.INF"
goto finish_InstallOption
endif
endif
ifstr(i) $(DoActualCopy) == YES
shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "VIDEO.INF: shelling DoAskSourceEx failed"
goto finish_InstallOption
endif
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set SrcDir = $($R1)
ifstr(i) $($R2) != ""
set DrivesToFree = >($(DrivesToFree), $($R2))
endif
else
Debug-Output "VIDEO.INF: User cancelled asking source."
goto finish_InstallOption
endif
install Install-AddCopyOption
ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
Debug-Output "VIDEO.INF: Adding video files to copy list failed"
goto finish_InstallOption
endif
else
set DoCopy = NO
endif
endif
ifstr(i) $(DoCopy) == "YES"
read-syms ProgressCopy$($0)
install Install-DoCopyOption
ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
Debug-Output "Copying files failed"
goto finish_InstallOption
else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
set Status = STATUS_USERCANCEL
goto finish_InstallOption
endif
endif
ifstr(i) $(DoConfig) == "YES"
;
; first run a privilege check on modifying the setup node
;
shell "registry.inf" CheckSetupModify
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto finish_InstallOption
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
goto finish_InstallOption
endif
;
; first make a new video entry, the entry is created automatically
; enabled
;
set ServiceNode = $(MiniportDriver)
set ServiceBinary = %SystemRoot%\System32\drivers\#(Files-DisplayMiniportDrivers, $(MiniportDriver), 2)
set ServicesValues = { +
{Type, 0, $(!REG_VT_DWORD), $(Type) }, +
{Start, 0, $(!REG_VT_DWORD), $(!SERVICE_SYSTEM_START) }, +
{Group, 0, $(!REG_VT_SZ), $(Group) }, +
{ErrorControl, 0, $(!REG_VT_DWORD), $(ErrorControl) }, +
{Tag, 0, $(!REG_VT_DWORD), $(Tag) }, +
{BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary) } +
}
set ParametersValues = { +
{InstalledDisplayDrivers, 0, $(!REG_VT_MULTI_SZ), $(InstalledDisplays) }, +
{VgaCompatible, 0, $(!REG_VT_DWORD), $(VgaCompatible) }, +
{DefaultSettings.BitsPerPel, 0, $(!REG_VT_DWORD), $(BitsPerPel) }, +
{DefaultSettings.XResolution, 0, $(!REG_VT_DWORD), $(XResolution) }, +
{DefaultSettings.YResolution, 0, $(!REG_VT_DWORD), $(YResolution) }, +
{DefaultSettings.VRefresh, 0, $(!REG_VT_DWORD), $(VRefresh) }, +
{DefaultSettings.Interlaced, 0, $(!REG_VT_DWORD), $(Interlaced) }, +
{DoubleBuffer.NumberOfBuffers, 0, $(!REG_VT_DWORD), 2 }, +
{ExportSingleBufferedModes, 0, $(!REG_VT_DWORD), 0 }, +
{GlintClockSpeed, 0, $(!REG_VT_DWORD), 0 }, +
{PermediaClockSpeed, 0, $(!REG_VT_DWORD), 60 }, +
{GlintDMA.SizeOfBuffer, 0, $(!REG_VT_DWORD), 65536 }, +
{GlintDMA.NumberOfBuffers, 0, $(!REG_VT_DWORD), 8 }, +
{GlintDMA.NumberOfSubBuffers, 0, $(!REG_VT_DWORD), 5 }, +
{GlintDMA.LatencyTimer, 0, $(!REG_VT_DWORD), 255 }, +
{GlintTiming.Use2ClockMemoryCtl, 0, $(!REG_VT_DWORD), 1 }, +
{GlintTiming.LBMemoryCtl, 0, $(!REG_VT_DWORD), 0 }, +
{GlintTiming.LBMemoryCtlMask, 0, $(!REG_VT_DWORD), 0 }, +
{GlintTiming.FBMemoryCtl, 0, $(!REG_VT_DWORD), 0 }, +
{GlintTiming.FBMemoryCtlMask, 0, $(!REG_VT_DWORD), 0 }, +
{GlintTiming.FBModeSel, 0, $(!REG_VT_DWORD), 0 }, +
{GlintTiming.FBModeSelMask, 0, $(!REG_VT_DWORD), 0 }, +
{LocalBuffer.NoDynamicSizing, 0, $(!REG_VT_DWORD), 1 }, +
{3DInterfaceBuffer.SizeLongs, 0, $(!REG_VT_DWORD), 8192 }, +
{3DExtensions.SupportGDIsingle, 0, $(!REG_VT_DWORD), 1 }, +
{3DExtensions.SupportGDIdouble, 0, $(!REG_VT_DWORD), 1 }, +
{OpenGL.DisableMipMaps, 0, $(!REG_VT_DWORD), 1 }, +
{OpenGL.PerspectiveCorrection, 0, $(!REG_VT_DWORD), 1 }, +
{DoubleBuffer.MultiColorSpace, 0, $(!REG_VT_DWORD), 0 } +
{UseBiosAddresses, 0, $(!REG_VT_DWORD), 0 } +
}
set DeviceValues = { }
set EventLogValues = { +
{EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
{TypesSupported, 0, $(!REG_VT_DWORD), $(TypesSupported) } +
}
set NullValues = { }
;
; Setup Device nodes for up to 4 adapters. Device0 is where we
; put all the parameters we're interested in. This is
; historical rather than desirable. Don't change it now or we
; will confuse people.
;
shell "registry.inf" MakeServicesEntry $(ServiceNode) +
$(ServicesValues) +
$(NullValues) +
$(DeviceValues) +
$(NullValues) +
Device1
shell "registry.inf" MakeServicesEntry $(ServiceNode) +
$(ServicesValues) +
$(NullValues) +
$(DeviceValues) +
$(NullValues) +
Device2
shell "registry.inf" MakeServicesEntry $(ServiceNode) +
$(ServicesValues) +
$(NullValues) +
$(DeviceValues) +
$(NullValues) +
Device3
shell "registry.inf" MakeServicesEntry $(ServiceNode) +
$(ServicesValues) +
$(ParametersValues) +
$(DeviceValues) +
$(EventLogValues) +
Device0
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
goto finish_InstallOption
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "MakeServicesEntry failed for video"
goto finish_InstallOption
endif
;
; set up the resoltion entries
;
set TimingsKeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)} +
}
set TimingsKeyValues = { }
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(TimingsKeyPath) $(TimingsKeyValues)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Couldn't execute CreateKey in registry.inf"
goto finish_InstallOption
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "CreateKey failed for TIMINGS"
goto finish_InstallOption
endif
set Timings640480KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)}, +
{"640,480", 0, $(MaskAllAccess)} +
}
set Timings800600KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)}, +
{"800,600", 0, $(MaskAllAccess)} +
}
set Timings1024768KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)}, +
{"1024,768", 0, $(MaskAllAccess)} +
}
set Timings1152870KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)}, +
{"1152,870", 0, $(MaskAllAccess)} +
}
set Timings12801024KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)}, +
{"1280,1024", 0, $(MaskAllAccess)} +
}
set Timings16001200KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{CurrentControlSet, 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{$(ServiceNode), 0, $(MaskAllAccess)}, +
{TIMINGS, 0, $(MaskAllAccess)}, +
{"1600,1200", 0, $(MaskAllAccess)} +
}
set Timings640480Values = { +
{ 60, 0, $(!REG_VT_BIN), { 100 0 2 12 6 0 13 2 12 1 32 0 } }, +
{ 72, 0, $(!REG_VT_BIN), { 104 0 3 5 16 0 8 2 10 3 27 0 } } +
{ 75, 0, $(!REG_VT_BIN), { 104 0 3 5 16 0 8 2 10 3 27 0 } } +
{ 85, 0, $(!REG_VT_BIN), { 104 0 7 7 10 0 253 1 1 3 16 0 } } +
}
set Timings800600Values = { +
{ 60, 0, $(!REG_VT_BIN), { 132 0 5 16 11 1 116 2 1 4 23 1 } }, +
{ 75, 0, $(!REG_VT_BIN), { 132 0 2 10 20 1 113 2 1 3 21 1 } } +
{ 85, 0, $(!REG_VT_BIN), { 131 0 4 8 19 1 119 2 1 3 21 1 } } +
}
set Timings1024768Values = { +
{ 60, 0, $(!REG_VT_BIN), { 168 0 3 17 20 1 38 3 4 6 28 1 } }, +
{ 75, 0, $(!REG_VT_BIN), { 164 0 2 12 22 1 32 3 1 3 28 1 } } +
{ 85, 0, $(!REG_VT_BIN), { 172 0 6 12 26 1 40 3 1 3 36 1 } } +
}
set Timings1152870Values = { +
{ 60, 0, $(!REG_VT_BIN), { 200 0 8 16 32 1 138 3 1 3 32 1 } }, +
{ 75, 0, $(!REG_VT_BIN), { 200 0 8 16 32 1 138 3 1 3 32 1 } } +
{ 85, 0, $(!REG_VT_BIN), { 197 0 8 16 29 1 145 3 1 3 39 1 } } +
}
set Timings12801024Values = { +
{ 60, 0, $(!REG_VT_BIN), { 211 0 6 14 31 1 42 4 1 3 38 1 } }, +
{ 75, 0, $(!REG_VT_BIN), { 211 0 2 18 31 1 42 4 1 3 38 1 } } +
{ 85, 0, $(!REG_VT_BIN), { 216 0 6 20 30 1 48 4 1 3 44 1 } } +
}
set Timings16001200Values = { +
{ 60, 0, $(!REG_VT_BIN), { 14 1 8 24 38 1 226 4 1 3 46 1 } }, +
{ 75, 0, $(!REG_VT_BIN), { 14 1 8 24 38 1 226 4 1 3 46 1 } } +
{ 85, 0, $(!REG_VT_BIN), { 14 1 8 24 38 1 226 4 1 3 46 1 } } +
}
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(Timings640480KeyPath) $(Timings640480Values)
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(Timings800600KeyPath) $(Timings800600Values)
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(Timings1024768KeyPath) $(Timings1024768Values)
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(Timings1152870KeyPath) $(Timings1152870Values)
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(Timings12801024KeyPath) $(Timings12801024Values)
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(Timings16001200KeyPath) $(Timings16001200Values)
;
; setup OpenGL info in the registry
;
set KeyPath = { +
{SOFTWARE, 0, $(MaskAllAccess)}, +
{Microsoft, 0, $(MaskAllAccess)}, +
{"Windows NT", 0, $(MaskAllAccess)}, +
{CurrentVersion, 0, $(MaskAllAccess)}, +
{OpenGLDrivers, 0, $(MaskAllAccess)} +
}
set KeyValue = { +
{"3DLabs GLINT driver", 0, $(!REG_VT_SZ), 3DOGLDRV } +
}
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValue)
Debug-Output "just did an OGL section"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Couldn't execute CreateKey in registry.inf"
goto finish_InstallOption
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "CreateKey failed for OGLDrivers"
goto finish_InstallOption
endif
Debug-Output "VIDEO.INF: success installing an ogl entry"
set KeyPath = { +
{SYSTEM, 0, $(MaskAllAccess)}, +
{$(!STF_CONTROLSET), 0, $(MaskAllAccess)}, +
{Services, 0, $(MaskAllAccess)}, +
{glint, 0, $(MaskAllAccess)}, +
{Performance, 0, $(MaskAllAccess)} +
}
set PerformanceValues = { +
{Open, 0, $(!REG_VT_SZ), "OpenGlintPerformanceData" }, +
{Close, 0, $(!REG_VT_SZ), "CloseGlintPerformanceData" }, +
{Collect, 0, $(!REG_VT_SZ), "CollectGlintPerformanceData" }, +
{Library, 0, $(!REG_VT_SZ), "glntctrs.dll" } +
}
shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(PerformanceValues)
Debug-Output "just did a perfmon section"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Couldn't execute CreateKey in registry.inf"
goto finish_InstallOption
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "CreateKey failed for glint perfmon"
goto finish_InstallOption
endif
Debug-Output "VIDEO.INF: success installing a perfmon entry"
;
;
; then disable the previous video entry
;
ifstr(i) $(CurrentEntry) != $(MiniportDriver)
ifstr(i) $(CurrentEntry) != VGA
ifstr(i) $(CurrentEntry) != ""
shell "registry.inf" ModifyServicesEntry $(CurrentEntry) $(!SERVICE_DISABLED)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Couldn't find DisableServicesEntry in registry.inf"
goto errorconfig
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "DisableServices entry failed"
endif
endif
endif
endif
goto configdone
errorconfig = +
ifstr(i) $(CurrentEntry) != $(MiniportDriver)
shell "registry.inf" ModifyServicesEntry $(MiniportDriver) $(!SERVICE_DISABLED)
ifstr(i) $(CurrentEntry) != ""
shell "registry.inf" ModifyServicesEntry $(CurrentEntry) $(!SERVICE_SYSTEM_START)
endif
endif
goto finish_InstallOption
configdone = +
endif
set Status = STATUS_SUCCESSFUL
finish_InstallOption = +
ForListDo $(DrivesToFree)
LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
EndForListDo
Return $(Status)
[Install-AddCopyOption]
set STF_VITAL = ""
;
; Add the files to the copy list
;
AddSectionKeyFileToCopyList Files-DisplayMiniportDrivers +
$(MiniportDriver) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers
ForListDo $(InstalledDisplays)
AddSectionKeyFileToCopyList Files-DisplayDLLs +
$($) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)
AddSectionKeyFileToCopyList Files-DisplayOpenGLDrivers +
$($) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)
AddSectionKeyFileToCopyList Files-DisplayPerfmonDLL +
$($) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)
AddSectionKeyFileToCopyList Files-GlintAppletCPL +
$($) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)
EndForListDo
exit
[Install-DoCopyOption]
;
; Copy files in the copy list
;
CopyFilesInCopyList
exit
;**************************************************************************
; PROGRESS GUAGE VARIABLES
;**************************************************************************
[ProgressCopyENG]
ProCaption = "Windows NT Setup"
ProCancel = "Cancel"
ProCancelMsg = "Windows NT is not correcly installed. Are you sure you want "+
"to cancel copying files?"
ProCancelCap = "Setup Message"
ProText1 = "Copying:"
ProText2 = "To:"
[StringsENG]
String1 = "Display"
String2 = "Please enter the full path to the OEM Display "+
"driver files. Then choose Continue."
;-----------------------------------------------------------------------
; SOURCE MEDIA DESCRIPTIONS
; -------------------------
; The OEM should list all the diskette labels here. The source media
; description is used during copy to prompt the user for a diskette
; if the source is diskettes.
;
; Use 1 = "Diskette 1 Label" , TAGFILE = disk1
; 2 = "Diskette 2 Label" , TAGFILE = disk2
; ...
;-----------------------------------------------------------------------
;--------------------------------------------------------------------
; THE SECTIONS BELOW SHOULD BE AUTOMATICALLY GENERATED BY THE EXCEL
; SPREAD SHEETS
;--------------------------------------------------------------------
[Source Media Descriptions]
1 = "OEM DISK (VIDEO)" , TAGFILE = disk1
[Files-DisplayOpenGLDrivers]
glint = 1,3DOGLDRV.DLL, SIZE=999
[Files-DisplayPerfmonDLL]
glint = 1,glntctrs.DLL, SIZE=999
[Files-GlintAppletCPL]
glint = 1,glint.cpl, SIZE=999
[Files-DisplayDLLs]
glint = 1,glint.dll , SIZE=999
[Files-DisplayMiniportDrivers]
glint = 1,glint.sys , SIZE=999
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.