OEMSETUP.INF Driver File Contents (dsv1000.zip)

;-----------------------------------------------------------------------
; 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

How To Update Drivers Manually

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.

server: ftp, load: 1.54