OEMSETUP.INF Driver File Contents (rtl8139d.zip)

;   Windows NT 40 
;   oemsetup.inf for Rsltek 8139  PCI Fast Ethernet Adapter

[NetClass]						
    OptionType = NetAdapter   ; nic

[PlatformsSupported]
    PCI

[Options]
    8139

[FileConstants]                ; Constants
    UtilityInf                  = "UTILITY.INF"
    subroutineinf               = "SUBROUTN.INF"
    SoftwareType                = "driver"
    Exit_Code                   = 0
    NetEventDLL                 = $(!STF_WINDOWSSYSPATH)"\netevent.dll"  
    IoLogMsgDLL                 = $(!STF_WINDOWSSYSPATH)"\IoLogMsg.dll"
    Manufacturer                = "Rsltek Inc."
    ProductMajorVersion         = "01"
    ProductMinorVersion         = "00"
    ProductVersion              = $(ProductMajorVersion)"."$(ProductMinorVersion)
    ProductSoftwareName         = "8139"
    ProductSoftwareImagePath    = "%SystemRoot%\System32\drivers\SLPNN40.sys"
;   ProductSoftwareImagePath    = $(!STF_WINDOWSSYSPATH)"\drivers\SLPNN40.sys"
    NetRuleSoftwareType         = "Sys ndisDriver Driver"
    NetRuleSoftwareUse          = $(SoftwareType)
    NetRuleSoftwareBindForm     = """8139Sys"" yes no container"
    NetRuleSoftwareClass        = {"Driver basic"}
    NetRuleSoftwareBindable     = {"8139Driver 8139Adapter non exclusive 100"}
    ProductHardwareName         = "8139"
    NetRuleHardwareBindForm     = " yes yes container"

    ProductKeyName              = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
    ParamKeyName                = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"

    FunctionTitle               = "8139  PCI Fast Ethernet Adapter NT40 Setup"
    ProductSoftwareTitle        = "8139  PCI Fast Ethernet Adapter NT40 Driver"
    ProductSoftwareDescription  = "8139  PCI Fast Ethernet Adapter NT40 Driver"

    ProductHardwareSC92031Title   	= "8139  PCI Fast Ethernet Adapter"
    ProductHardwareSC92031Description 	= "8139  PCI Fast Ethernet Adapter"
    NetRuleHardwareSC92031Type    	= "8139Adapter"
    NetRuleHardwareSC92031Class   	= {"8139Adapter basic"}

    NdisMedium802_3             = 1
    AdapterSC92031Type          = 5            ; PCI board

    DeviceID                    = 33081         ; 0x8139 is Device ID

    VendorID                    = 6404         ;0x1904 is  Vendor ID  
  

    SC92031CFID                 = 2168002820    ;0x81391904    

[GeneralConstants]
    from            = ""
    to              = ""
    ExitCodeOk      = 0
    ExitCodeCancel  = 1
    ExitCodeFatal   = 2
    KeyNull         = ""
    MAXIMUM_ALLOWED = 33554432      ; access allowed
    RegistryErrorIndex = NO_ERROR
    KeyProduct      = ""
    KeyParameters   = ""
    TRUE            = 1
    FALSE           = 0
    NoTitle         = 0
    ExitState       = "Active"
    OldVersionExisted 	= $(FALSE)
    NT40VersionConstant = "4.0"
    
    SpdDupxModeIndex           = 0      
    NetworkAddress             = "000000000000"

[date]
    Now = {} ? $(!LIBHANDLE) GetSystemDate                 
;
; The [Identify] section is the first section executed by Setup.     
; It returns information to Setup about the type of drivers that can
; be installed by this .INF file (in our case, network drivers).
;
[Identify]

    read-syms        NetClass                                  ;NetAdapter
    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)                              
    set Media      = #("Source Media Descriptions", 1, 1)      
    Return $(Status) $(Identifier) $(Media)  

;local	$(MyVar)	reference to local variable MyVar
;global	$(!MyVar)	reference to global variable MyVar
;global	$(!G:MyVar)	reference to global variable MyVar
;parent	$(!P:MyVar)	reference to caller's variable MyVar
;									
; If the [Identify] section indicates that the .INF file supports
; the appropriate type of driver, Setup calls the [ReturnOptions]       
; section.  Setup passes a single parameter to this section,
; indicating the language to be used for dialog strings.  This          
; section returns information to the Setup program, listing the
; names of any drivers which can be installed by this .INF file.
; It also returns the text strings for each driver to be used in
; the dialog box asking the user to select the driver to install.
;
[ReturnOptions]
    set Status        = STATUS_FAILED
    set OptionList     = {}
    set OptionTextList = {}
    set LanguageList = ^(LanguagesSupported, 1)        
    Ifcontains(i) $($0) in $(LanguageList)             
    ifstr(i) $($1) == ""                           
        goto returnoptions                       
    endif
        set PlatformList = ^(PlatformsSupported, 1)     
    Ifcontains(i) $($1) in $(PlatformList)
        goto returnoptions
    else
        set Status = STATUS_NOTSUPPORTED              
        goto finish_ReturnOptions
    endif
    else
        set Status = STATUS_NOLANGUAGE
        goto finish_ReturnOptions
    endif
    ;
    ; If we get here, we are successful, so return the option list.
    ;
returnoptions = +
    set OptionList     = ^(Options, 1)                
    set OptionTextList = ^(OptionsText$($0), 1)      
    set Status         = STATUS_SUCCESSFUL
    ;
    ; Exit from this section.
    ;
finish_ReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)   

;
; If the [ReturnOptions] section returns successfully, indicating
; the language is supported, Setup displays a dialog box from which
; the user can select a driver to install.  Setup then calls the
; [InstallOption] section, with the following parameters:
;
;       Language to use
;       OptionID to install
;       SourceDirectory
;       AddCopy  (yes/no)
;       DoCopy   (yes/no)
;       DoConfig (yes/no)
;
; ScrDir seems to always be A:\, even when you later install from
; the oemnad#.inf which is copied to the system32 directory.
;
; AddCopy and DoCopy are valid only when NTN_InstallMode = install. 
; AddCopy is yes if the files should be added to the copy list.    
; DoCopy is yes if CopyFilesInCopyList should be called.      
;
; DoConfig is not used for network cards.                  
;
; This .INF file is automatically copied to the SYSTEM32 directory,
; by WinNT, and renamed so as to have a unique name.
;
[InstallOption]
    ;;;
    ;;; Change "Set !G:DebugOutputControl = 0" to 1 in NCAPSHEL.INF for debug support.
    ;;;
    ;
    ; Read input parameters.                 
    ;
    set Option   = $($1)
    set SrcDir   = $($2)
    set AddCopy  = $($3)
    set DoCopy   = $($4)
    set DoConfig = $($5)                       
    ;
    ; Check if specified language is supported.
    ;
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) NOT-IN $(LanguageList)    
    Return STATUS_NOLANGUAGE
    endif
    ;
    ; Set up local variables and constant values.
    ;
;The Set-subst command is like the set command, except that set-subst replaces escape sequences 
;in the value string with their byte equivalents before storing the variable and value in the symbol table. 
;The following escape sequences are handled: (\n, \r, \t, and \###, where ### is an octal number).
    set-subst LF = "\n"                           
    read-syms GeneralConstants                
    read-syms FileConstants
    read-syms DialogConstants$(!STF_LANGUAGE)   
    ifstr(i) $(!NTN_Origination) == "NCPA"        
    set Continue = "OK"
    endif
    read-syms FileConstants$(!STF_LANGUAGE)       
    ;; read-syms SpdDupxModeDlg$(!STF_LANGUAGE)
    ;; SetHelpFile $(!STF_WINDOWSSYSPATH)"\"$(OptionHelpFile) $(MinHelpId) $(MaxHelpId)
    detect date
    set-title  $(Function$(Option)Title)      
    set to   = Begin       			
    set from = Begin
    set CommonStatus = STATUS_SUCCESSFUL
    EndWait                                      
    ;; ;
    ;; ; Problem was discovered using unattend.txt files for automatic
    ;; ; installation.  It was found that $2 passed into this section does
    ;; ; not have an appropriate value when using unattend.txt.  It was
    ;; ; found that during manual AND unattended installations, the variable
    ;; ; STF_SRCDIR_OVERRIDE did contain an appropriate value.
    ;; ;
    ;; ifstr(i) $(!STF_SRCDIR_OVERRIDE) != ""
    ;;     set SrcDir = $(!STF_SRCDIR_OVERRIDE)
    ;; endif
Begin = +
    ;;
    ;; Get the Version of Windows NT we are installing on.  This will allow us to use the
    ;; PCI Support that will be included in NT v3.51
    ;;
    set CurrentVersionValue = ""
    OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows Nt\CurrentVersion" $(!REG_KEY_READ) KeyNt  
    Ifstr(i) $(KeyNt) != ""
    GetRegValue $(KeyNt) "CurrentVersion" CurrentVersionValue                         
    CloseRegKey $(KeyNt)                                                               
    set TargetVersion = *($(CurrentVersionValue),4)
;       Debug-Output "$(InfFile) $(Option): Current Version:"$(TargetVersion)
    ifstr $(TargetVersion) != $(NT40VersionConstant)   ;; We need v4.0
            set from = end
            set to = end
            goto nonfatalinfo
    Endif
;    Debug-Output "$(InfFile) $(Option): WinNT CurrentVersion ="$(CurrentVersionValue)   

    Endif

    ;
    ; NTN_InstallMode
    ;   install   - this is a primary or original installation, it
    ;               may be an upgrade
    ;   deinstall - this product and its binaries are to be removed
    ;               from the disk
    ;   configure - this product is to be (re-) configured
    ;   bind      - this product's relationships to other products
    ;               have changed and should be reviewed.
    ;
    Ifstr(i) $(!NTN_InstallMode) == deinstall
        set StartLabel = removeadapter
    else-Ifstr(i) $(!NTN_InstallMode) == Update
        set StartLabel = UpgradeSoftware
    else-Ifstr(i) $(!NTN_InstallMode) == bind
        set StartLabel = bindingadapter
    else-Ifstr(i) $(!NTN_InstallMode) == configure
        Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)                                
            Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE       
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
            endif
            set Error = $($R0)         
            set from = end
            set to = end
            goto nonfatalinfo
        else
            set StartLabel = configureadapter
        endif
    else
        set StartLabel = installadapter
        set OEM_ABANDON_OPTIONS = {}
        set OEM_ABANDON_SOFTWARE = FALSE
        set OEM_ABANDON_ON = TRUE
    endif
    ;; ;
    ;; ; HARDWARE_PUT_IN_REGISTRY gets set to true once the hardware
    ;; ; component is installed.  That way if we get an error we know
    ;; ; to uninstall it.  HWList has the path to the hardware that
    ;; ; is needed by RemoveHardwareComponent.
    ;; ;
    ;; ; SOFTWARE_PUT_IN_REGISTRY gets set to true once the software
    ;; ; component is installed.
    ;; ;
    ;; set HARDWARE_PUT_IN_REGISTRY = $(FALSE)
    ;; set HWList = ""
    ;; set SOFTWARE_PUT_IN_REGISTRY = $(FALSE)

    set from = $(fatal)
    set to = $(fatal)
    goto $(StartLabel)

;------------------------------------------------------------------------
; InstallMode = install
; Came here straight from figuring out which platform we are on.
; Option, SrcDir, AddCopy, DoCopy, and DoConfig are valid.
;
installadapter = +

    install "Install-Hlp"

    ;
    ; Get open handle KeyProduct.
    ; Returns an empty string if key does not exist.
    ;
    ; NTN_RegBase appears empty on the installation of the first card.  
    ; KeyProduct will be KeyNull on the installation of the first card.
    ;
    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
        CloseRegKey $(KeyProduct)
        ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "ShellCode error: cannot get an error string."
                goto ShellCodeError
            endif
            goto end
        else        
           set OldVersionExisted = $(FLASE) 
        endif                                                           
    Endif
   Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO        
   Ifint $($ShellCode) != $(!SHELL_CODE_OK)
       Goto ShellCodeError
   Else-Ifstr(i) $($R0) == STATUS_FAILED
       Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
       ifint $($ShellCode) != $(!SHELL_CODE_OK)
           goto ShellCodeError
       endif
       set Error = $($R0)
       Goto fatal
   Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
      Goto successful
   Endif

   Goto installproduct

configureadapter = +

   Ifstr(i) $(KeyProduct) == $(KeyNull)
        OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
        Ifstr $(KeyProduct) == $(KeyNull)
            Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
           Goto fatalregistry
        Endif
    Endif
    Shell $(UtilityInf) FindService, $(KeyProduct)           
    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Goto ShellCodeError
    Endif
    Ifstr(i) $($R0) != NO_ERROR
        Goto fatalregistry
    endif
    set KeyParameters = $($R2)
    CloseRegKey $($R1)
    Ifstr $(KeyParameters) == $(KeyNull)
        set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
        goto fatalregistry
    endif
    set OldVersionExisted = $(TRUE)
    set ValueName = ""
    set ValueData = ""
    set ValueStr  = ""
    set ValueList = {}
    EnumRegValue $(KeyParameters) ValueList
    ForListDo $(ValueList)                               
        set ValueItem = $($)
        set ValueName = *($(ValueItem),1)               
        set ValueData = *($(ValueItem),4)                
        Ifstr(i) $(ValueName) == "SpdDupxModeIndex"
            set SpdDupxModeIndex = $(ValueData)
        else-ifstr(i) $(ValueName) == "NetworkAddress"
            set NetworkAddress = $(ValueData)
        endif
    EndForListDo
    set SpdDupxModeValue = *($(SpdDupxModeList) , ~($(SpdDupxModeValues) ,$(SpdDupxModeIndex)))      

adapteroptions = +
   Debug-Output "$(InfFile) $(Option): Adapteroptions"
   set from = adapteroptions

   read-syms SpdDupxModeDlg$(!STF_LANGUAGE)
   SetHelpFile $(!STF_WINDOWSSYSPATH)"\"$(OptionHelpFile) $(MinHelpId) $(MaxHelpId) $(Help$(Option)Id)
   ui start "InputDlg"

   ifstr(i) $(DLGEVENT) == "CONTINUE"
      set SpdDupxModeIndex = $(Combo1Out)
      ui pop 1
   else-ifstr(i) $(DLGEVENT) == "BACK"
      set CommonStatus = STATUS_USERCANCEL
      ui pop 1
      goto end
   endif

   set SpdDupxModeValue = *($(SpdDupxModeValues), ~($(SpdDupxModeList),$(SpdDupxModeIndex)))

   set EtherID = ""
   ;;;;;;;;;;;;;;;;;;Ether ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       read-syms NetworkAddressDlg$(!STF_LANGUAGE)
       ui start "InputDlg"
       ifstr(i) $(DLGEVENT) == "CONTINUE"                   
                set NetworkAddress = $(EditTextOut)
                ui pop 1
       else-ifstr(i) $(DLGEVENT) == "EXIT"
	      	set CommonStatus = STATUS_USERCANCEL
      		ui pop 1
	      	goto end
       endif

   ifstr(i) $(!NTN_InstallMode) == configure
       goto updateparameters
    endif

installproduct =+
                             
    StartWait
    set AdapterList = $($R1)
    ifint $(OldVersionExisted) == $(FALSE)                                    
        Ifstr(i) $(DoCopy) == "YES"
            Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Goto ShellCodeError
            Else-Ifstr(i) $($R0) == STATUS_FAILED
                Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                    goto ShellCodeError
                endif
                set Error = $($R0)
                Goto fatal
            Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
                Goto successful
            Endif
            Set SrcDir = $($R1)
        Endif

        install "Install-Option"                                      
        ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
            Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
            set Error = $($R0)
            goto fatal
        endif
    endif
    ;
    ; Check to see if the Product Software key exists already in the system service keys
    ; before we try to add the software component.
    ;
    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductHardwareName) $(!REG_KEY_READ) KeyNt
    CloseRegKey $(KeyNt)

    Ifstr(i) $(KeyNt) == ""

        Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
        $(ProductSoftwareName), +
        $(ProductSoftwareName), +
        $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
        $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
        $(NetEventDLL)

        Set OEM_ABANDON_SOFTWARE = TRUE
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
            EndWait
            CloseRegKey $($R1)
            CloseRegKey $($R2)
            CloseRegKey $($R3)
            CloseRegKey $($R4)
            CloseRegKey $($R5)
            goto fatalregistry
        endif
        Set SoftProductKey      = $($R1)
        Set SoftNetRuleKey      = $($R2)
        Set SoftServiceKey      = $($R3)
        Set SoftParameterKey    = $($R4)
        Set SoftLinkageKey      = $($R5)
; add to registry 
        set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
               {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
               {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
               {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
               {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
               {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
               {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
        Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
            EndWait
            CloseRegKey $(SoftProductKey)
            CloseRegKey $(SoftNetRuleKey)
            CloseRegKey $(SoftServiceKey)
            CloseRegKey $(SoftParameterKey)
            CloseRegKey $(SoftLinkageKey)
            goto fatalregistry
        endif
        set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
                {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
                {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
                {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
                {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
                {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
        Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        CloseRegKey $(SoftProductKey)
        CloseRegKey $(SoftNetRuleKey)
        CloseRegKey $(SoftServiceKey)
        CloseRegKey $(SoftParameterKey)
        CloseRegKey $(SoftLinkageKey)
        Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
            EndWait
            goto fatalregistry
        endif
    endif ;; Does Services\SC92031 exist?

            ;;
            ;; NT40 has PCI detection code built in.
            ;;
            ;;set BusInterfaceType = 5
            ;;set BusNumber = 0
            ;; Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardware$(Option)Description) $(BusInterfaceType) $(BusNumber)

            set NTDetected = $(TRUE)

            Debug-Output "$(InfFile) $(Option): VendorID = $(VendorID)"
            Debug-Output "$(InfFile) $(Option): DeviceID = $(DeviceID)"
            Shell $(UtilityInf), GetPCIInformation, $(VendorID) $(DeviceID)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
            ifstr(i) $($R0) == {}
                set Error = $(CANNOT_FIND_ANY_CARD)
                set CommonStatus = USER_CANCEL
                set from = end
                goto nonfatal
            endif
            set AdapterList = $($R0)

    ; "AdapterList" has the list of currently installed adatpers in the system!
    ;
    Debug-Output "$(InfFile) $(Option): Adapterlist = $(AdatperList)"
    ForListDo $(AdapterList)            ; more card?
        Set InstallCard = "YES"
        ifint $(NTDetected) == $(TRUE)
            set DetectedBusNum = *($($),1)
            set DetectedSlotNum = *($($),2)
            Debug-Output "$(InfFile) $(Option): DetectedBusNumber = $(DetectedBusNum)"
            Debug-Output "$(InfFile) $(Option): DetectedSlotNum = $(DetectedSlotNum)"

            Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(DetectedBusNum), +
            $(DetectedSlotNum), $(ProductHardware$(Option)Description), $(ProductHardwareName)

            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
            ifstr $($R0) != "NO_ERROR"
                set Error = $($R0)
                goto fatal
            endif
            ifstr(i) $($R1) == "YES"
                set InstallCard = "NO"  ;; Don't want to re-install, it's there already
            endif
        endif
        ;;
        ;; Are we installing the card?
        ;;
        ifstr(i) $(InstallCard) == "NO"
            Debug-Output "$(InfFile) $(Option): Card Already at $(DetectedBusNum):$(DetectedSlotNum) already installed!"
            set Error = "An adapter at $(DetectedBusNum):$(DetectedSlotNum) is already installed!"
            Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
        else
            Debug-Output "$(InfFile) $(Option): Installing Card at $(DetectedBusNum):$(DetectedSlotNum)!"
            Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
            ifint $($R4) != -1
                Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
            endif
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
            set RegistryErrorIndex = $($R0)
            Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
                EndWait
                CloseRegKey $($R1)
                CloseRegKey $($R2)
                CloseRegKey $($R3)
                goto fatalregistry
            endif

            ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"   ; luke add1 unattend
                Debug-Output "$(InfFile) $(Option): Running in GUI unattended mode"
                ifstr(i) $(!AutoNetInterfaceType) != ""
                    set BusInterfaceType = $(!AutoNetInterfaceType)
                else
                    set BusInterfaceType = 5
                endif
                ifstr(i) $(!AutoNetBusNumber) != ""
                    set BusNumber = $(!AutoNetBusNumber)
                else
                    set BusNumber = 0
                endif
			goto skiplaa1
            endif
	    SetHelpFile $(!STF_WINDOWSSYSPATH)"\"$(OptionHelpFile) $(MinHelpId) $(MaxHelpId) $(Help$(Option)Id)

            set  Cancel   = "&Default"                
            set  Exit =  "&Default"                   

            read-syms SpdDupxModeDlg$(!STF_LANGUAGE)
               ui start "InputDlg"
            ifstr(i) $(DLGEVENT) == "CONTINUE"                  
               set SpdDupxModeIndex = $(Combo1Out)
            else-ifstr(i) $(DLGEVENT) == "BACK"      
               set SpdDupxModeIndex = 0             
            endif
            ui pop 1
            set SpdDupxModeValue = *($(SpdDupxModeValues), ~($(SpdDupxModeList),$(SpdDupxModeIndex)))

            set EtherID = ""
               ;;;;;;;;;;;;;;;;;;Ether ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                   read-syms NetworkAddressDlg$(!STF_LANGUAGE)
                   ui start "InputDlg"
                   ifstr(i) $(DLGEVENT) == "CONTINUE"
                               ;;set EtherID = $(EditTextOut)
                               set NetworkAddress = $(EditTextOut)
                               ui pop 1
                   else-ifstr(i) $(DLGEVENT) == "EXIT"
                           set NetworkAddress = "00000000000000"             
                   endif
			ui pop 1

skiplaa1 =+
            Set HardNetCardKey      = $($R1)
            Set HardNetRuleKey      = $($R2)
            Set HardParameterKey    = $($R3)
            set AdapterNumber = $($R4)
            set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
                    {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
                    {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
                    {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
                    {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
                    {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
            Shell  $(UtilityInf), AddValueList, $(HardNetCardKey), $(NewValueList)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif

                ;
                ; PCI
                ;
                set BusTypeNum = 5
                set BusMaster = "YES"
                set Bus = "PCI"
                ifstr(i) $(Option) == "8139"
                    set CardType = 2
                else
                    set CardType = 0
                endif

            ;;
            ;; If we used the OS to dected the card, then we already know bus and slot information.
            ;;
            ifint $(NTDetected) == $(TRUE)
                set BusNumber = $(DetectedBusNum)
                set SlotNum = $(DetectedSlotNum)
                set BusInterfaceType = $(BusTypeNum)
                ;
                ; Note: we need to record SlotNumber too so that we can use the
                ; "IsNetCardAlreadyInstalled" routine
                ;
                Set NewValueList =  {+
                    {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
                    {Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)}+
                    }

                Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                    goto ShellCodeError
                endif

                Set NewValueList = { {SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)} }
                Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                    goto ShellCodeError
                endif
            else
                Set NewValueList =  {+
                    {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
                    }
                Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                    goto ShellCodeError
                endif
            endif

            Set NewValueList =  {+
                {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
                {CardType,$(NoTitle),$(!REG_VT_DWORD),$(CardType)},+
                {MediaType,$(NoTitle),$(!REG_VT_DWORD),$(NdisMedium802_3)},+
                {AdapterCFID,$(NoTitle),$(!REG_VT_DWORD),$($(Option)CFID)},+
                }

            Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif

            set NewValueList = {{SpdDupxModeIndex,	  $(NoTitle),$(!REG_VT_DWORD),$(SpdDupxModeValue)},+
                                {NetworkAddress,  $(NoTitle),$(!REG_VT_SZ),   $(NetworkAddress)},+
				}

            Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)

            ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"  ; luke add2       Input parameter
                Shell $(UtilityInf),AddDefaultNetCardParameters,$(HardParameterKey)
		    endif
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
               goto ShellCodeError
            endif
            set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
            set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
            set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardware$(Option)Type)},+
                    {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
                    {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardware$(Option)Class)}, +
                    {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}

            Shell  $(UtilityInf), AddValueList, $(HardNetRuleKey), $(NewValueList)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
            CloseRegKey $(HardNetCardKey)
            CloseRegKey $(HardNetRuleKey)
            CloseRegKey $(HardParameterKey)
        endif
    EndForListDo
    EndWait
    goto successful

updateparameters =+
    set HardParameterKey    = $($R3)

    set NewValueList = {{SpdDupxModeIndex,$(NoTitle),$(!REG_VT_DWORD),$(SpdDupxModeValue)},+
                       {NetworkAddress,$(NoTitle),  $(!REG_VT_SZ),   $(NetworkAddress)},+
                        }

    Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)

    ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"  ; luke add2       Input parameter
        Shell $(UtilityInf),AddDefaultNetCardParameters,$(HardParameterKey)
    endif
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
    goto ShellCodeError
    endif
    CloseRegKey $(KeyParameters)
    goto successful

bindingadapter =+
    set Error = "Binding: Sorry, not yet implemented."
    goto fatal

removeadapter = +
    Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
        Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
        $(ProductSoftwareName)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        goto fatalregistry
    endif
    else
    Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
        $(ProductSoftwareName), $(!NTN_RegBase)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        goto fatalregistry
    endif
    endif
    goto end

UpgradeSoftware = +
     OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
     Ifstr $(KeyProduct) != $(KeyNull)
       Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
       ifint $($ShellCode) != $(!SHELL_CODE_OK)
           Debug-Output "ShellCode error"
           goto ShellCodeError
       endif
       set !UG_Filename = $($R0)
       install "Install-Update"
       ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
           goto fatal
       endif
       SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
       SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
       CloseRegKey $(KeyProduct)
     else
       goto fatalregistry
     endif
     goto end

successful = +
    goto end

abandon = +
    ForListDo $(OEM_ABANDON_OPTIONS)
    Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
        $(ProductSoftwareName), $($)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        goto fatalregistry
    endif
    EndForListDo
    Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
    Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
        $(ProductSoftwareName), FALSE
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    set RegistryErrorIndex = $($R0)
    Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        goto fatalregistry
    endif
    endif
    goto end

warning = +
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
    goto ShellCodeError
    endif
    ifstr(i) $($R1) == "OK"
    goto $(to)
    else-ifstr(i) $($R1) == "CANCEL"
    goto $(from)
    else
    goto "end"
    endif

nonfatalinfo = +
    Set CommonStatus = STATUS_USERCANCEL
    Set Severity = STATUS
    goto nonfatalmsg

nonfatal = +
    Set Severity = NONFATAL
    goto nonfatalmsg

nonfatalmsg = +
    ifstr(i) $(Error) == ""
    Set Severity = NONFATAL
    Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    set Error = $($R0)
    endif
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
    goto ShellCodeError
    endif
    ifstr(i) $($R1) == "OK"
    goto $(from)
    else
    goto "RemoveAdapter"
    endif

fatalregistry = +
    Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
    goto ShellCodeError
    endif
    set Error = $($R0)
    goto fatal

fatal = +
    ifstr(i) $(Error) == ""
    Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    set Error = $($R0)
    endif
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
    goto ShellCodeError
    endif
    goto setfailed

ShellCodeError = +
    set DlgType      = "MessageBox"
    set STF_MB_TITLE = $(ShellCodeErrorTitle)
    set STF_MB_TEXT  = $(ShellCodeErrorText)
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1
    ui start "Error Message"
    goto setfailed

setfailed = +
    set CommonStatus = STATUS_FAILED
    ifstr(i) $(OEM_ABANDON_ON) == TRUE
    set OEM_ABANDON_ON = FALSE
    goto abandon
    endif
    goto end

end = +
    goto term

term = +
    Return $(CommonStatus) 

[Install-Option]
    set STF_VITAL = ""
    ifstr(i) $(AddCopy) == "YES"
    AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
    endif
    ifstr(i) $(DoCopy) == "YES"
       set !STF_NCPA_FLUSH_COPYLIST = TRUE
       CopyFilesInCopyList
    endif
    Exit

[Install-Hlp]
   set STF_VITAL = ""
   AddSectionFilesToCopyList Files-Hlp $(SrcDir)  $(!STF_WINDOWSSYSPATH)
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList
   Exit									

[Install-Update]
   set STF_VITAL        = ""
   set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
   AddSectionFilesToCopyList Files-Hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList
   exit

[Source Media Descriptions]
     1 = "8139  PCI Fast Ethernet Adapter OEM NT40 Driver Disk"

[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386

[Files-Inf]
1,      oemsetup.inf,    SIZE=1000,   RENAME=$(!UG_Filename)       

[Files-Hlp]
1, Rsl8139.HLP , SIZE=10000         
;
; Driver files
;
[Files-SC92031]
1, SLPNN40.SYS , SIZE=50000                

[LanguagesSupported]
    ENG
[OptionsTextENG]                                              
    SC92031      = "8139  PCI Fast Ethernet Adapter NT40 Driver"

[FileConstantsENG]
    ProCaption   = "Windows NT Setup"
    ProCancel    = "Cancel"
    ProCancelMsg = "Windows NT Networking is not correctly installed.  "+
                   "Are you sure you want to cancel copying files?"
    ProCancelCap = "Network Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"

SpdDupxModeList  	= ^(SpdDupxModeDlg, 1)         
SpdDupxModeValues 	= ^(SpdDupxModeDlg, 2)

NoList  		= ^(NoChoices, 1)
NoValues 		= ^(NoChoices, 2)
ShellCodeErrorTitle 	= "Error: "$(Function$(Option)Title)
ShellCodeErrorText      = "Shell Code Error."
CANNOT_FIND_ANY_CARD    = "Network card is not present in the system"

[DialogConstantsENG]
Help         = "&Help"   
Exit         = "&Exit"
OK           = "&OK"
;HelpContext = ""
Continue     = "&OK" ;"Con&tinue"
Cancel       = "&Exit"
MinHelpId    = 10
MaxHelpId    = 20
HelpContext = 10
HelpSianNt4Id = 10
OptionHelpFile = $(Option)".hlp"

[SpdDupxModeDlgENG]
DlgText = "Choose the proper Link Speed/Duplex Mode from the list."$(!LF)+
          "  "
Combo1Label = "Speed/Duplex Mode"

DlgTemplate = "ADAP_PROTO_COMBO"
DlgType = "Combination"               
Caption = "Speed/Duplex Mode "($(!NTN_InstallMode))
Combo1List = $(SpdDupxModeList)
Combo1Out  = $(SpdDupxModeValue)
ComboListItemsIn  = {Combo1List}
ComboListItemsOut = {Combo1Out}
EditTextLim = ""
CBOptionsGreyed = {}

[SpdDupxModeDlg]

    SpdDupxMode_0 = "(0)  AUTO(Default)   ", 0
    SpdDupxMode_1 = "(1)  10M  Half Duplex", 1
    SpdDupxMode_2 = "(2)  10M  Full Duplex", 2
    SpdDupxMode_3 = "(3)  100M Half Duplex", 3
    SpdDupxMode_4 = "(4)  100M Full Duplex", 4

[NetworkAddressDlgENG]
Caption        = "Input Network Address"($(!NTN_InstallMode))
DlgText        = "Please input Network Address: "$(!LF)+
                 "For example:"$(!LF)+
                 "        Ethernet ID: 000102030405."$(!LF)$(!LF)+
                 "(Input 000000000000 will use the default ID.)"
Edit1Label     = "Ethernet ID:"
DlgType        = "Edit"
DlgTemplate    = "QUERY_COMPUTER_NAME"
EditTextLim    = 12
EditTextIn     = $(NetworkAddress)
EditFocus      = "ALL"

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: web4, load: 1.48