OEMSETNT.INF Driver File Contents (45kit260.zip)

; OEMSETUP FILE FOR EtherWORKS TURBO PCI 10 Adapters
; WNT V3.51 and V4.0 - DE450.SYS V1.10
;
;     Platform type : ALPHA, Ix86, MIPs, PPC
;     Supported Adapters: DE450
;
; Digital Equipment Corporation, Maynard, Mass.
;
; The information in this software is subject to change without 
; notice and should not be construed as a commitment by Digital 
; Equipment Corporation.
;
; Usage:
; 
;     This file is the installation/configuration/deinstallation
;     procedure of the driver for Windows NT (DE450).  It can be
;     called from Windows setup directly, or via the Windows NT
;     Networks Control Program Applet (NCPA) from inside the
;     Windows Control Panel.
;
;    set !DebugOutputControl = 1  ; Turn On Debugging for Install testing 
;         Debug-Output " Turn on Debugger... "

;******************
;* IDENTIFICATION *
;******************
[Identification]
    OptionType = NetAdapter

;***********************
;* PLATFORMS SUPPORTED *
;***********************
[PlatformsSupported]
    ISA
    EISA
    "Jazz-Internal Bus"
    PCI

;****************************************
;* OPTIONS - Order IS be important here *
;*  Must match order in OptionsTextENG  *
;****************************************
[Options]
    DE450

;***************************
;* CONNECTION TYPE CHOICES *
;***************************
[MediaChoicesDE450]
    Media_0 = "AutoSense", 0
    Media_1 = "TP", 1
    Media_2 = "BNC", 2
    Media_3 = "AUI", 3
    Media_4 = "TP-Full Duplex", 4

;******************************
;* TRANSMIT THRESHOLD CHOICES *
;******************************
[TXThresholdChoicesDE450]
    TXThreshold_0 = "72", 0
    TXThreshold_1 = "96", 1
    TXThreshold_2 = "128", 2
    TXThreshold_3 = "160", 3

;****************************
;* DEFINITIONS USED IN CODE *
;****************************
[FileConstants]
UtilityInf      = "UTILITY.INF"
subroutineinf   = "SUBROUTN.INF"
SoftwareType    = "driver"
NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
Manufacturer    = "DigitalEquipmentCorporation"
ProductMajorVersion     = "1"
ProductMinorVersion     = "05"           
ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)

VendorID = 4113  ;; 1011 (DEC)

;
; Software Specific Information Below.
;
ProductSoftwareName        = "DE450_"          ; current driver name
ProductSoftwareTitle       = "DEC DE450 Adapter Driver"
ProductSoftwareImagePath   = "%SystemRoot%\System32\drivers\DE450.sys"
NetRuleSoftwareType        = "DE450Sys ndisDriver DE450Driver"
NetRuleSoftwareUse         = $(SoftwareType)
NetRuleSoftwareBindForm    = """DE450Sys"" yes no container"
NetRuleSoftwareClass       = {"DE450Driver basic"}
NetRuleSoftwareSWBindable  = {"DE450Driver DE450Adapter non exclusive 100"}

OptionHelpFile = "DE450.HLP"
ProductHardwareName = "DE450_"

PCIAdapterType  = 5

PCIBusType  = 5

;
; Hardware Specific Information Below.
;
; Note that in the HardwareParam Lists, ConnectionType is not present.
; ConnectionType is queried by a dialog box, and entered into the
; registry with that information.  MapRegisters is also determined
; elsewhere, as are BusNumber, FunctionNumber, and DeviceType.
;
; Also note that only parameters with CONSTANT values can be here.
; If you try to use a variable in one of these lists, it will not
; work the way you expect!
;

; DE450 Information

ProductHardwareDE450Title   = "DEC DE450 EtherWORKS Turbo PCI 10 Adapter"
NetRuleHardwareDE450Type    = "DE450 DE450Adapter"
NetRuleHardwareDE450Class   = {"DE450Adapter basic"}
HelpDE450Id = 1
DE450CFID = 1314833

DE450HardwareParamList = {{BusType,$(NoTitle),$(!REG_VT_DWORD),$(PCIBusType)},+
			  {MediaType,$(NoTitle),$(!REG_VT_DWORD),1}}


NetRuleHardwareBindForm = " yes yes container"
ProductKeyName    = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
DE450ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(DE450ProductSoftwareName)"\CurrentVersion"
VersionKeyName    = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion"

[GeneralConstants]
KeyNull           = ""
MAXIMUM_ALLOWED   = 33554432
KeyProduct        = ""
KeyParameters     = ""
TRUE              = 1
FALSE             = 0
NoTitle           = 0

[date]
    Now = {} ? $(!LIBHANDLE) GetSystemDate

;********************
;* IDENTIFY SECTION *
;********************
;
; 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 Identification
    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)
    set SourceMedia      = #("Source Media Descriptions", 1, 1)
    Return $(Status) $(Identifier) $(SourceMedia)

;**************************
;* RETURN OPTIONS SECTION *
;**************************
;
; 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]
    ;
    ; Initialize variables to failure state.
    ;
    set Status        = STATUS_FAILED
    set OptionList     = {}
    set OptionTextList = {}
    
    ;
    ; See if our language list supports the language specified.
    ;
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) not-in $(LanguageList)
	set Status = STATUS_NOLANGUAGE
	goto finish_ReturnOptions
    endif
    
    ;
    ; If a second parameter was passed in, see if it is a supported
    ; platform.
    ;
    ifstr(i) $($1) != ""
	set PlatformList = ^(PlatformsSupported, 1)
	Ifcontains(i) $($1) not-in $(PlatformList)
	    set Status = STATUS_NOTSUPPORTED
	    goto finish_ReturnOptions
	endif
    endif
    
    ;
    ; If we get here, we are successful, so return the option list.
    ;
    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL
    
    ;
    ; Exit from this section.
    ;
finish_ReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)

;*************************
;* INSTALLOPTION SECTION *
;*************************
;
; 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 (DE450)
;       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]

    ;set !DebugOutputControl = 1  ; Turn On Debugging for Install testing 
    Debug-Output "oemsetup for "$(ProductHardwareName)" V"$(ProductVersion)" ..."
    
    ;
    ; 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.
    ;
    set-subst LF = "\n"
    read-syms GeneralConstants
    read-syms FileConstants
    read-syms DialogConstants$(!STF_LANGUAGE)
    read-syms FileConstants$(!STF_LANGUAGE)
    read-syms FileDependentDlg$(!STF_LANGUAGE)
    SetHelpFile $(!STF_WINDOWSSYSPATH)"\"$(OptionHelpFile) $(MinHelpId) $(MaxHelpId)
    detect date
    set-title  $(Function$(Option)Title)
    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

    ;
    ; 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
	set StartLabel = configureadapter
    else
	set StartLabel = installadapter
    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)
    
    ;-------------------------------------------------------------------
    ; Get the NT version (3.50 or ...)
    ;-------------------------------------------------------------------
    ;
    OpenRegKey $(!REG_H_LOCAL) "" $(VersionKeyName) $(MAXIMUM_ALLOWED) KeyVersion
    GetRegValue $(KeyVersion),"CurrentVersion",VersionStruct
    CloseRegKey $(KeyVersion)
    Set NTVersion = *($(VersionStruct),4)
    Ifstr(i) $(NTVersion) == "3.50"
	set $R0 = "Windows NT 3.50 not supported on this distribution."
	goto fatal
    endif
    ;
    ; Go to the appropriate section for this installation mode.
    ;
    Debug-Output "StartLabel "$(StartLabel)
    goto $(StartLabel)

;------------------------------------------------------------------------
; InstallMode = install
; Came here straight from figuring out which platform we are on.
; Option, SrcDir, AddCopy, DoCopy, and DoConfig are valid.
;
installadapter = +
    
    ;
    ; Set up default for Map Registers
    ;
    Set NumMapRegisters = 8
    
    ;-------------------------------------------------------------------
    ; Determine the platform and set the correct driver/help paths.
    ;-------------------------------------------------------------------
    ;
    set Help_Directory = "WINNT"
    Ifstr $(!STF_PLATFORM) == "Alpha"
	set Source_Directory = "WINNT\ALPHA"
    else-ifstr $(!STF_PLATFORM) == "Mips"
	set Source_Directory = "WINNT\MIPS"
    else-ifstr $(!STF_PLATFORM) == "I386"
	set Source_Directory = "WINNT\INTEL"
    else-ifstr $(!STF_PLATFORM) == "ppc"
	set Source_Directory = "WINNT\PPC"
    else
	set $R0 = "This platform is not recognized and not supported by this distribution."
	goto fatal
    endif
    
    ;-------------------------------------------------------------------
    ; Check to see if a different version of this driver was installed.
    ;-------------------------------------------------------------------
SWCheckThisProductKeyName = +
    ;
    ; 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
    
    ;
    ; We cannot assume that the adapter has never been installed before.
    ; The spec says we must check for older versions of the software 
    ;   (NTN_RegBase = ProductKeyName) and tell the user to use update.
    ;   However, NT does not do update properly, so tell user
    ;   to remove and re-install in this situation.
    ; The spec says we should warn about already finding this hardware 
    ;   installed.  We'll do that and allow the option of continuing.
    ;
    Ifstr $(KeyProduct) != $(KeyNull)
	;-------------------------------------------------------------------
	; Software exists - do some checking
	;-------------------------------------------------------------------
	; If key already exists, get software version info.
	;
	GetRegValue $(KeyProduct) MajorVersion OldMajorVersionList
	GetRegValue $(KeyProduct) MinorVersion OldMinorVersionList
	CloseRegKey $(KeyProduct)
	set OldMajorVersion = *($(OldMajorVersionList),4)
	set OldMinorVersion = *($(OldMinorVersionList),4)
	;
	; If the old version is the same as ours, no problem.
	; If not the same, fatal error.
	;
	ifstr(i) $(OldMajorVersion) != $(ProductMajorVersion)
	    goto SWversionMismatch
	endif
	ifstr(i) $(OldMinorVersion) != $(ProductMinorVersion)
	    goto SWversionMismatch
	endif
	goto SWversionOK

SWversionMismatch = +
	set $R0 = $(Option)".SYS V"$(OldMajorVersion)"."$(OldMinorVersion)+
	    "already exists on the system.  Please use the remove button for all DE450 and re-install."
	goto fatal         

SWversionOK = +
    Else
	;-------------------------------------------------------------------
	; Add software info to the registry
	;-------------------------------------------------------------------
	; This is a new software component - need to add version, descr, ...
	;
	StartWait
	;
	; If we are not installing from floppy, NT will detect that the
	; floppy is not present and ask for one.
	;
	; Copy the driver and help file.
	; If this is being installed from the oemnad#.inf on the
	; hard disk, NT will look for the disk in the floppy drive,
	; not find it, and prompt the user to install it.
	;
	ifstr(i) $(AddCopy) == "YES"
	    install "Install-AddList"
	    ;
	    ; Only do the copy if the add was successful.
	    ; Note: do NOT use !STF_INSTALL_OUTCOME, it doesn't work!
	    ;
	    ifstr(i) $(STF_INSTALL_OUTCOME) == STF_SUCCESS
		ifstr $(DoCopy) == "YES"
		    install "Install-CopyList"
		endif
	    endif
	endif
	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
	    set $R0 = "Could not copy driver and help files."
	    goto fatal
	endif

	;
	; AddSoftwareComponent adds all the registry information 
	; neccessary for a new software component.  This involves
	; creating the SOFTWARE area and the SERVICE area. Returns:
	;       R1      key for SOFTWARE\Manufacturer\Product\Version
	;       R2      key for SOFTWARE\..\NetRules
	;       R3      key handle for SERVICES key
	;       R4      "Parameters" key handle for Services area
	;       R5      "Linkage" key handle for Services area
	;
	Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), +
	    $(ProductSoftwareName), +
	    $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
	    $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
	    $(NetEventDLL)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	Set SOFTWARE_PUT_IN_REGISTRY = $(TRUE)
	Set SoftProductKey      = $($R1)
	Set SoftNetRuleKey      = $($R2)
	Set SoftServiceKey      = $($R3)
	Set SoftParameterKey    = $($R4)
	Set SoftLinkageKey      = $($R5)
	ifstr(i) $($R0) != "NO_ERROR"
	    set $R0 = "Error adding software component.  Reboot and try again."
	    goto SWAddComplete
	endif
	;
	; Create a value list for this entry.
	; Each entry in ValueList is a list containing:
	;           ValueName
	;           Index (must be zero)
	;           ValueType
	;           ValueData
	;
	; Put this value list in SOFTWARE\Manufacturer\Product\Version
	;
	set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
		{MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)},+
		{MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(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 SWAddComplete
	endif
	ifstr(i) $($R0) != "NO_ERROR"
	    set $R0 = "Error adding software version info."
	    goto SWAddComplete
	endif
	;
	; Set up value list for SOFTWARE\..\NetRules and write it.
	;
	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),$(NetRuleSoftwareSWBindable)}, +
		{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
	Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
	ifstr(i) $($R0) != "NO_ERROR"
	    set $R0 = "Error adding software netrules."
	endif

SWAddComplete = +
	CloseRegKey $(SoftProductKey)
	CloseRegKey $(SoftNetRuleKey)
	CloseRegKey $(SoftServiceKey)
	CloseRegKey $(SoftParameterKey)
	CloseRegKey $(SoftLinkageKey)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	ifstr(i) $($R0) != "NO_ERROR"
	    goto fatal
	endif
    endif  ; end installation of SW component, if this is a new component
    
    ;-----------------------------------------------------------------------
    ; Get the list of cards to install.
    ;-----------------------------------------------------------------------
    ; Use GetPCIInformation to get list of PCI cards with this device ID.
    ;
    ;
    ; **** Get Adapter List for the 21041 chip ****
    ;
    ; Shift CFID to get device ID for 21041
    ;
    
    set-div DeviceID = $(DE450CFID) 65336
    
    ;
    ; GetPCIInformation returns AdapterList entry in R0
    ;   - the list contains all cards of that option CFID, 
    ;   with their BusNum and DeviceNum.
    ; Note that R0 does NOT contain "NO_ERROR" as with most utility calls.
    ;
    
    Shell $(UtilityInf), GetPCIInformation, $(VendorID) $(DeviceID)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    set AdapterList = $($R0)    
	
    ifstr(i) $(AdapterList) == {}
	set $R0 = $(Option)" network card is not present in the system."
	goto fatal
    endif
	
    ;-----------------------------------------------------------------------
    ; Put the hardware information in the registry
    ;-----------------------------------------------------------------------
    ; After installing one, keep going until the adapterlist is empty.
    ;
    ; Note it is illegal to use a "goto" inside the ForListDo
    ; that jumps to somewhere outside the ForListDo.
    ;
    set DropThroughForListDo = $(FALSE)
    ForListDo $(AdapterList)
	Set HW_KEYS_OPEN = $(FALSE)
	ifint $(DropThroughForListDo) == $(FALSE)
	    ;
	    ; Set up BusNum, DeviceNum, and FuncNum.
	    ;
	    set BusNum = *($($),1)
	    set DeviceNum = *($($),2)
	    set FuncNum = *($($),3)
		
	    Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNum), +
		$(DeviceNum), $(ProductHardware$(Option)Description), +
		$(ProductHardwareName) "YES"
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ForListDropThrough
	    else-ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error in determining if netcard is already installed."    
		goto ForListDropThrough
	    else-ifstr(i) $($R1) == "YES"   ;already installed,
		goto ThisForIterationDone   ;  so skip it and try next
	    endif

	    ;
	    ; Get the value for ConnectionType, returned in ConnectionValue.
	    ; Note that this parameter does not apply to DE425 - its 
	    ; ConnectionValue is determined in the EISA setup.
	    ;
	    ;Ifstr(i) $(Option) != "DE425"
	    ;    SetHelpFile $(!STF_WINDOWSSYSPATH)"\"$(OptionHelpFile) $(MinHelpId) $(MaxHelpId) $(Help$(Option)Id)
	    ;    ui start "InputDlg"
	    ;    ui pop 1
	    ;    ifstr(i) $(DLGEVENT) != "CONTINUE"
	    ;        set CommonStatus = STATUS_USERCANCEL
	    ;        goto ForListDropThrough
	    ;    else
	    ;        set ConnectionListOut = $(Combo1Out)
	    ;        set ConnectionValue = *($(ConnectionValues), ~($(ConnectionList),$(ConnectionListOut)))
	    ;        ifstr(i) $(ConnectionValue) == ""
	    ;            set ConnectionValue = *($(ConnectionValues), 1)
	    ;        endif
	    ;    endif    
	    ;endif
	    ;*** temp below
	    set ParamMedia = 0
	    set ParamTX_Threshold = 2

	    ;
	    ; Install one iteration of the hardware in the registry.
	    ;
	    ; Note that $(STF_CONTEXTINFNAME) translates to oemnad#.inf
	    ;          $(!STF_CONTEXTINFNAME) translates to NCPASHEL.INF        
	    ;
	    Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName), + 
			$(STF_CONTEXTINFNAME), $(ProductKeyName)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ForListDropThrough
	    endif
	    ifint $($R4) == -1
		set $R0 = "Error getting "$(Option)" adapter number."
		goto ForListDropThrough
	    endif
	    Set HW_KEYS_OPEN = $(TRUE)
	    Set HARDWARE_PUT_IN_REGISTRY = $(TRUE)
	    Set HWList = >($(HWList), +
		$(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
	    Set HardNetCardKey      = $($R1)
	    Set HardNetRuleKey      = $($R2)
	    Set HardParameterKey    = $($R3)
	    Set AdapterNumber       = $($R4)
	    ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error adding hardware to registry."
		goto ForListDropThrough
	    endif
    
	    ;
	    ; Set up and write general card information to registry.
	    ;
	    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 ForListDropThrough
	    endif
	    ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error adding general hardware info to registry."
		goto ForListDropThrough
	    endif

	    ;
	    ; Set up and write hardware parameters to registry.
	    ; Write:
	    ;   Media, TX_Threshold
	    ;   Hardware parameters defined as constants
	    ;   BusNumber, SlotNumber, FunctionNumber
	    ;
	    set NewValueList = {{Media,$(NoTitle),$(!REG_VT_DWORD),$(ParamMedia)},+
		{TX_Threshold,$(NoTitle),$(!REG_VT_DWORD),$(ParamTX_Threshold)}}
	    Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ForListDropThrough
	    endif
	    ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error adding programmable parameters to registry."
		goto ForListDropThrough
	    endif
	    Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $($(Option)HardwareParamList)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ForListDropThrough
	    endif
	    ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error adding hardware parameters to registry."
		goto ForListDropThrough
	    endif

	    set NewValueList = {{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNum)},+
				{SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(DeviceNum)},+
				{FunctionNumber,$(NoTitle),$(!REG_VT_DWORD),$(FunctionNum)}}
	    
	    Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ForListDropThrough
	    endif
	    ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error adding bus/slot/function numbers to registry."
		goto ForListDropThrough
	    endif
    
	    ;
	    ; Set up and write hardware net rules.
	    ;
	    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 ForListDropThrough
	    endif
	    ifstr(i) $($R0) != "NO_ERROR"
		set $R0 = "Error adding hardware net rules to registry."
		goto ForListDropThrough
	    endif
	    
	    goto ThisForIterationDone
	
	endif           ; end of "If DropThroughForList is false ..."

ForListDropThrough = +
	set DropThroughForListDo = $(TRUE)
ThisForIterationDone = +
	ifint $(HW_KEYS_OPEN) == $(TRUE)
	    CloseRegKey $(HardNetCardKey)
	    CloseRegKey $(HardNetRuleKey)
	    CloseRegKey $(HardParameterKey)
	endif

    EndForListDo
	
    CloseRegKey $(KeyProduct)
    
    ;
    ; There are a number of ways to exit the above ForListDo.
    ;   1. ShellCodeError - fatal, just go process the error 
    ;                   SHOULD NEVER HAPPEN
    ;   2. Error Condition - fatal, error message in R0
    ;                   SHOULD NEVER HAPPEN
    ;   3. Hardware not in registry
    ;           a. user cancelled, remove software if just installed
    ;                   THIS MAY HAPPEN
    ;           b. all adapters previously installed
    ;                   THIS MAY HAPPEN
    ;   4. Success - just continue
    ;                   THIS MAY HAPPEN
    ;
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    ifstr(i) $($R0) != "NO_ERROR"
	goto fatal
    endif
    ifstr(i) $(HARDWARE_PUT_IN_REGISTRY) == $(FALSE)
	ifstr(i) $(CommonStatus) == "STATUS_USERCANCEL"
	    goto AbandonComponentsInRegistry
	endif
	set $R0 = "All "$(Option)" adapters already installed."
	goto fatal
    endif
    
    EndWait
    goto end
    


;------------------------------------------------------------------------
; InstallMode = configure
; Came here straight from figuring out which platform we are on.
; Option, SrcDir, AddCopy, DoCopy, and DoConfig are valid.
;
; The whole purpose of this to to reconfigure ConnectionType.
;
;   Get a registry key (KeyProduct).
;   Get the hardware parameter key (KeyParameters).
;   Find the ConnectionType parameter location.
;   Put up the dialog box to get the new ConnectionType.
;   Write the new ConnectionType to the registry.
;
configureadapter = +
    ;
    ; Can't configure if it wasn't previously installed!
    ;
    Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	set $R0 = "Cannot configure "$(Option)" - product not in registry"
	goto fatal
    endif
    
    ;
    ; Open the registry key to this product.
    ;
    OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) == $(KeyNull)
	Set $R0 = "Cannot find "$(ProductSoftwareName)" Service for "$(Option)
	Goto fatal
    Endif
    
    ;
    ; FindService returns:  R0  RegistryErrorIndex
    ;                       R1  KeyThisService
    ;                       R2  KeyParameters
    ;
    Shell $(UtilityInf) FindService, $(KeyProduct)
    CloseRegKey $(KeyProduct)
    Ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Goto ShellCodeError
    Endif
    ifstr(i) $($R0) != "NO_ERROR"
	Goto fatal
    endif
    CloseRegKey $($R1)

    set KeyParameters = $($R2)
    Ifstr $(KeyParameters) == $(KeyNull)
	set $R0 = "Cannot find service for "$(Option)
	goto fatal
    endif
    
    ;
    ; Read the parameters from the registry which are changeable from
    ; the dialog box
    ;

    EnumRegValue $(KeyParameters) ValueList
    ForListDo $(ValueList)
	set ValueItem = $($)
	set ValueName = *($(ValueItem),1)
	set ValueData = *($(ValueItem),4)
	Ifstr(i) $(ValueName) == "Media"
		set MediaValue = $(ValueData)
	else-Ifstr(i) $(ValueName) == "TX_Threshold"
		set TXThresholdValue = $(ValueData)
	endif
    EndForListDo

    ;
    ; Initialize the variables we need to feed into the dialog
    ;

    set Combo1Out = *(^(MediaChoices$(Option),1),~(^(MediaChoices$(Option),2),$(MediaValue)))
    set Combo2Out = *(^(TXThresholdChoices$(Option),1),~(^(TXThresholdChoices$(Option),2),$(TXThresholdValue)))
    
    read-syms FileDependentDlg$(!STF_LANGUAGE)

    ;
    ; Load the library containing the DLL
    ;
    
    LoadLibrary "Disk 1" $(!STF_WINDOWSSYSPATH)"\"$(DialogDllName) hLib
    
    ;
    ; Display the dialog box and free the library after completion
    ;

    ui start "InputDlg" $(hLib)
    ui pop 1
    FreeLibrary $(hLib)

    ifstr(i) $(DLGEVENT) != "CONTINUE"
	set CommonStatus = STATUS_USERCANCEL
	CloseRegKey $(KeyParameters)
	goto end
    endif

    ;
    ; Determine the values set in the dialog
    ;

    set MediaValue = *(^(MediaChoices$(Option),2),~(^(MediaChoices$(Option),1),$(Combo1Out)))
    set ThresholdValue = *(^(TXThresholdChoices$(Option),2),~(^(TXThresholdChoices$(Option),1),$(Combo2Out)))
    
    ;
    ; Write the new values to the registry
    ;

    set NewValueList = {{Media,$(NoTitle),$(!REG_VT_DWORD),$(MediaValue)},+
			{TX_Threshold,$(NoTitle),$(!REG_VT_DWORD),$(TXThresholdValue)}}

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

;------------------------------------------------------------------------
; Binding adapter not supported.
; Option, SrcDir, AddCopy, DoCopy, and DoConfig are valid.
;
bindingadapter =+
    set $R0 = "Binding: not implemented."
    goto fatal

;------------------------------------------------------------------------
; Remove adapter.
; Option, SrcDir, AddCopy, DoCopy, and DoConfig are valid.
;
; All references to the adapter are to be deleted from the registry.
; Does NOT delete files.
;
;       If ProductKeyName is the registry base,
;         remove the software component.
;       Otherwise, remove the hardware component.
;       
; If it is the hardware component that is being removed, the NTN_RegBase
; will be: SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\#
; where # will the be DE450_# of the card to be removed.  If the # is 1,
; while you are off doing RemoveHardwareComponent, RemoveSoftwareComponent
; will be called before control is returned to this .INF file.
;
; In theory, RemoveSoftwareComponent should never be called by this
; .INF file because it is done automatically when #1 is removed.
;
removeadapter = +
    Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	ifstr(i) $($R0) != "NO_ERROR"
	    set $R0 = "Error removing software component."
	    goto fatal
	endif
    else
	Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), $(!NTN_RegBase)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	ifstr(i) $($R0) != "NO_ERROR"
	    set $R0 = "Error removing hardware component."
	    goto fatal
	endif
    endif
    goto end

;------------------------------------------------------------------------
; Upgrade software.
; Came here straight from figuring out which platform we are on.
; Option, SrcDir, AddCopy, DoCopy, and DoConfig are valid.
;
; If product exists in registry, copy help file and drivers.
;
; If this is implemented, also have to make sure all installed cards
; are supported by this .INF file (see [Options]).  Then need to update
; hardware parameters of the options.
;
UpgradeSoftware = +
    ;-------------------------------------------------------------------
    ; Get the NT version (3.50 or ...)
    ;-------------------------------------------------------------------
    OpenRegKey $(!REG_H_LOCAL) "" $(VersionKeyName) $(MAXIMUM_ALLOWED) KeyVersion
    GetRegValue $(KeyVersion),"CurrentVersion",VersionStruct
    CloseRegKey $(KeyVersion)
    Set NTVersion = *($(VersionStruct),4)
    Ifstr(i) $(NTVersion) == "3.50"
	set $R0 = "Windows NT 3.50 not supported on this distribution."
	goto fatal
    endif
    ;-------------------------------------------------------------------
    ; Determine the platform and set the correct driver/help paths.
    ;-------------------------------------------------------------------
    set Help_Directory = "WINNT"
    Ifstr $(!STF_PLATFORM) == "Alpha"
	set Source_Directory = "WINNT\ALPHA"
    else-ifstr $(!STF_PLATFORM) == "Mips"
	set Source_Directory = "WINNT\MIPS"
    else-ifstr $(!STF_PLATFORM) == "I386"
	set Source_Directory = "WINNT\INTEL"
    else-ifstr $(!STF_PLATFORM) == "ppc"
	set Source_Directory = "WINNT\PPC"
    else
	set $R0 = "This platform is not recognized and not supported by this distribution."
	goto fatal
    endif
    ;---------------------------------------------------------------
    ; Make sure product exists in the registry
    ;---------------------------------------------------------------
    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
	;---------------------------------
	; Get the name of the INF file
	;---------------------------------
	Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "ShellCode error"
	    goto ShellCodeError
	endif
	set !UG_Filename = $($R0)
	;---------------------------------
	; Copy the files if newer
	;---------------------------------
	install "Install-Update"
	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
	    goto fatal
	endif
	;-----------------------------
	; Update the Version Number
	;-----------------------------
	SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
	SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
	CloseRegKey $(KeyProduct)
    else
	set $R0 = "Upgrade not supported for the installed driver version."
	goto fatal
    endif
    goto end

;------------------------------------------------------------------------
; Shell Code Error.
;
ShellCodeError = +
    set $R0 = "SHELL_CODE_ERROR"
    goto fatal

;------------------------------------------------------------------------
; Fatal.
;
; Message to be displayed is in R0.
;
fatal = +
    ;
    ; Set up status failed indicator.
    ;
    set CommonStatus = STATUS_FAILED
    
    ;
    ; Print the fatal error message, contained in $R0.
    ;
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $($R0)
    goto AbandonComponentsInRegistry

;------------------------------------------------------------------------
; AbandonComponentsInRegistry.
;
; No message to be displayed.
;
AbandonComponentsInRegistry = +
    Ifint $(HARDWARE_PUT_IN_REGISTRY) == $(TRUE)
	;
	; Remove hardware components listed in HWList. 
	; Since we only allow installation of one component, there will
	; be only one component to remove.  RemoveHardwareComponent will 
	; automatically remove the software component if this is the only
	; hardware component, so we don't need to worry about removing
	; the software component from here.
	;
	Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), $(HWList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto AbandonError
	endif
	ifstr(i) $($R0) != "NO_ERROR"
	    goto AbandonError
	endif
    
    else-Ifstr(i) $(SOFTWARE_PUT_IN_REGISTRY) == $(TRUE)
	;
	; If SOFTWARE_PUT_IN_REGISTRY is true, remove software component.
	; We only need to do this if the hardware component was not removed.
	;
	Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), $(FALSE)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto AbandonError
	endif
	ifstr(i) $($R0) != "NO_ERROR"
	    goto AbandonError
	endif
    endif        
    goto end

AbandonError = +
    set $R0 = "Couldn't remove registry components.  Registry may be corrupt."
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $($R0)
    goto end

;------------------------------------------------------------------------
; End.
;
end = +
    Return $(CommonStatus)


;***********************
;* INSTALL SUBROUTINES *
;***********************
[Install-AddList]
    set !STF_VITAL = 1
    AddSectionFilesToCopyList Files-Sys $(SrcDir)$(Source_Directory) $(!STF_WINDOWSSYSPATH)\drivers
    AddSectionFilesToCopyList Files-Hlp $(SrcDir)$(Help_Directory) $(!STF_WINDOWSSYSPATH)
    AddSectionFIlesToCopyList Files-Dll $(SrcDir)$(Source_Directory) $(!STF_WINDOWSSYSPATH)
    Exit

[Install-Update]
    set STF_VITAL        = ""
    set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
    AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
    AddSectionFilesToCopyList Files-Sys $(SrcDir)$(Source_Directory) $(!STF_WINDOWSSYSPATH)\drivers
    AddSectionFilesToCopyList Files-Hlp $(SrcDir)$(Help_Directory) $(!STF_WINDOWSSYSPATH)
    AddSectionFIlesToCopyList Files-Dll $(SrcDir)$(Source_Directory) $(!STF_WINDOWSSYSPATH)
    set !STF_NCPA_FLUSH_COPYLIST = TRUE
    CopyFilesInCopyList
    Exit

[Install-CopyList]
    set !STF_VITAL = 1
    set !STF_NCPA_FLUSH_COPYLIST = $(TRUE)
    CopyFilesInCopyList
    Exit

;*****************************
;* SOURCE MEDIA DESCRIPTIONS *
;*****************************
;
; This section is required.  Format is as follows:
;   LineKey = (DiskDescription, TAGFILE = TagFileName)
;
;   LineKey         An integer (1-999) that identifies the line for 
;                   later use. Must be consecutive, starting with 1.
;
;   DiskDescription Disk name string prompting the user to insert
;                   the disk.
;
;   TagFileName     Specifies the name of the file whose presence
;                   on the disk indicates to Setup that the correct
;                   disk has been inserted.  Whitespace must 
;                   surround the "=".
;
[Source Media Descriptions]
    1  = "Digital DE450 Driver", TAGFILE = DISK1

;
; Info needed for AddSectionFilesToCopyList
;       Format: DiskID, FileName, Option
;
; DiskID is an integer defined in Source Media Descriptions
; 

[Files-Hlp]
1,DE450.HL_,   SIZE=999, DECOMPRESS, RENAME=DE450.HLP

[Files-Sys]
1,DE450.SY_ ,  SIZE=40000, DECOMPRESS, RENAME=DE450.SYS

[Files-Dll]
1,DE450.DL_ , SIZE=2000, DECOMPRESS, RENAME=DE450.DLL

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

;***************
;* DEFINITIONS *
;***************
[LanguagesSupported]
    ENG

[OptionsTextENG]
    DE450  = "DEC DE450 EtherWORKS Turbo PCI 10"

[FileConstantsENG]
DialogDllName = "de450.dll"
ProductSoftwareDescription = "DEC DE450 Driver"

FunctionDE450Title = "DEC DE450 Adapter Setup"
ProductHardwareDE450Description = "DEC DE450 EtherWORKS Turbo PCI 10 Adapter"

ConnectionList  = ^(ConnectionChoices$(Option), 1)
ConnectionValues = ^(ConnectionChoices$(Option), 2)
NoList  = ^(NoChoices, 1)
NoValues = ^(NoChoices, 2)


;**************************
;* DIALOG BOX INFORMATION *
;**************************
[DialogConstantsENG]
Help        = "&Help"
Exit        = "Cancel"
OK          = "OK"
Continue    = "Continue"
Cancel      = "Cancel"

[FileDependentDlgENG]
DlgTemplate = "DE450"
DlgType = "RadioCombination"
Caption = $(Function$(Option)Title)
Combo1 = "Media Type"
Combo2 = "Transmit Threshold"
NotifyFields = {"NO","NO"}
Combo1List = ^(MediaChoices$(Option),1)
Combo2List = ^(TXThresholdChoices$(Option),1)
ComboListItemsIn  = {Combo1List,Combo2List}
ComboListItemsOut = {Combo1Out,Combo2Out}
EditTextLim = {"",""}
EditTextIn = {"",""}
MinHelpId = 1
MaxHelpId = 10
HelpContext = $(Help$(Option)Id)
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: web5, load: 1.49