home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 August
/
VPR9708B.ISO
/
DRIVER
/
DEC
/
DE450260
/
OEMSETNT.INF
< prev
next >
Wrap
INI File
|
1996-12-27
|
42KB
|
1,210 lines
; 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)