;* Name: OEMSETUP.INF
;* Title: S53C885.SYS setup file for Windows NT 4.0
;* Creation Date: March 18, 1997
;*
;* Version History
;* ---------------
;*
;* Date Who? Description
;* -------- ---- -------------------------------------------------------
;#BeginRevision
;* 05/13/97 RAJ Updated to allow install for ALPHA
;* Changed references from Files-Dll and Files-$(Option) to
;* Files-$(!STF_PLATFORM)-xxx.
;* Removed [ProductType] section
;* Added new Alpha file names as A53C885.*, these are renamed
;* to S53C885.* when they are copied to the system disk.
;#EndRevision
;* 04/10/97 RAJ Added capability to install NDIS 3 or NDIS 4 driver.
;#EndRevision
;* 03/24/97 RAJ Fixed install problem when installing with networking. If
;* we were being installed at the same time as networking
;* was being installed, we would fail to load the DLL
;* because we weren't copying the DLL. I removed the
;* conditions from the install-adapterfiles call and
;* changed a parameter to DoAskSource.
;#EndRevision
;* 03/20/97 RAJ Updated to not allow install on NT version prior to 4.0.
;* 03/18/97 RAJ Created.
;* Product version = 1.0 for 1.00.02 release. The product
;* version should only be updated for GCA releases, but
;* needs to be updated even if this file doesn't change.
;#EndRevision
;*
;#BeginDescription
;*
;* This file contains the S53C885.SYS Windows NT 4.0 OEM setup initialization
;* scripts.
;*
;#EndDescription
;*
;*-------------------------------------------------------------------------
;---------------------------------------------------------------------------
; [Identification] is used to identify what type of installation script this
; is. The SETUP.EXE program uses this when searching for setup files.
;
; [PlatformsSupported] identifies what types of bus this installation script
; will possibly have adapters on. If the machine running this script doesn't
; have this type of bus then this script won't be usable.
;
; [LanguagesSupported] identifies which languages we will support for
; installation text and prompts.
;---------------------------------------------------------------------------
[Identification]
OptionType = NetAdapter
[PlatformsSupported]
PCI
[LanguagesSupported]
ENG
;---------------------------------------------------------------------------
; [Options] is used as an identifier throughout this file when it supports
; multiple types of installations. For instance, if we had two adapters
; of different types, the Options field would identify each type of
; installation. When the user chooses the adapter to install from the
; list presented by the network control panel applet, SETUP.EXE uses this
; option to tell us what adapter to install.
;---------------------------------------------------------------------------
[Options]
SYM885
SYM885_NDIS3
[DebugVars]
; Set to 1 to enable debug, 0 to disable debug
!DebugOutputControl = 1
[GeneralConstants]
from = ""
to = ""
KeyNull = ""
MAXIMUM_ALLOWED = 33554432
RegistryErrorIndex = NO_ERROR
KeyProduct = ""
KeyParameters = ""
TRUE = 1
FALSE = 0
NoTitle = 0
OldVersionExisted = $(FALSE)
[FileConstants]
; The following are the version of this driver release and are stored in the
; registry as such.
ProductMajorVersion = "1"
ProductMinorVersion = "0"
; The following values are used for all versions of this driver. We can not
; change these without causing bad side-effects. For instance, changing the
; manufacturer would allow two copies of this software to be installed at
; the same time which would not necessairly be good.
Manufacturer = "SymbiosLogic"
ProductSoftwareName = "S53C885"
UtilityInf = "UTILITY.INF"
subroutineinf = "SUBROUTN.INF"
NetEventDLL = "%SystemRoot%\System32\netevent.dll"
SoftwareType = "driver"
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)
ProductSoftwareImagePath= "\SystemRoot\System32\drivers\"$(Driver$(Option)FileName)
NetRuleSoftwareType = "Sym885Sys ndisDriver Sym885Driver"
NetRuleSoftwareUse = $(SoftwareType)
NetRuleSoftwareBindForm = """Sym885Sys"" yes no container"
NetRuleSoftwareClass = {"Sym885Driver basic"}
NetRuleSoftwareBindable = {"Sym885Driver Sym885Adapter non exclusive 100"}
ProductHardwareName = $(ProductSoftwareName)
NetRuleHardwareType = "Sym885LAN Sym885Adapter"
NetRuleHardwareBindForm = " yes yes container"
NetRuleHardwareClass = {"Sym885Adapter basic"}
ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
;---------------------------------------------------------------------------
; 1. Identify
;
; DESCRIPTION: To verify that this INF deals with the same type of options
; as we are choosing currently.
;
; INPUT: None
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Option Type (COMPUTER ...)
; $($R2): Diskette description
;---------------------------------------------------------------------------
[Identify]
Read-Syms DebugVars
Debug-Output "S53C885:[Identify]"
Read-Syms Identification
Set Status = STATUS_SUCCESSFUL
Set Identifier = $(OptionType)
Set Media = #("Source Media Descriptions", 1, 1)
Debug-Output "S53C885:Identify returns="$(Status)","$(Identifier)","$(Media)
Return $(Status) $(Identifier) $(Media)
;------------------------------------------------------------------------
; 2. ReturnOptions:
;
; DESCRIPTION: To return the option list supported by this INF and the
; localised text list representing the options.
;
;
; INPUT: $($0): Language used. ( ENG | FRN | ... )
; $($1): Platform (ISA | EISA | PCI | ... )
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
; STATUS_NOTSUPPORTED
;
; $($R1): Option List
; $($R2): Option Text List
;------------------------------------------------------------------------
[ReturnOptions]
Read-Syms DebugVars
Debug-Output "S53C885:[ReturnOptions]"
Debug-Output "S53C885: 0=Lang = "$($0)
Debug-Output "S53C885: 1=Platforms = "$($1)
Set Status = STATUS_FAILED
Set OptionList = {}
Set OptionTextList = {}
; Extract a list of supported languages from the [LanguagesSupported]
; section first element.
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
returnoptions = +
Set OptionList = ^(Options, 1)
Set OptionTextList = ^(OptionsText$($0), 1)
Set Status = STATUS_SUCCESSFUL
finish_ReturnOptions = +
Debug-Output "S53C885:ReturnOptions returns="$(Status)","$(OptionList)","$(OptionTextList)
Return $(Status) $(OptionList) $(OptionTextList)
;------------------------------------------------------------------------
;
; 3. InstallOption:
;
; This section is shelled to by main installation processing
; or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION: To copy files representing Options
; To configure the installed option
; To update the registry for the installed option
;
; INPUT: $($0): Language to use
; $($1): OptionID to install
; $($2): SourceDirectory
; $($3): AddCopy (YES | NO)
; $($4): DoCopy (YES | NO)
; $($5): DoConfig (YES | NO)
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
;------------------------------------------------------------------------
[InstallOption]
Read-Syms DebugVars
Debug-Output "S53C885:[InstallOption]"
Debug-Output "S53C885: 0=Language = "$($0)
Debug-Output "S53C885: 1=Option to install = "$($1)
Debug-Output "S53C885: 2=Source directory = "$($2)
Debug-Output "S53C885: 3=AddCopy = "$($3)
Debug-Output "S53C885: 4=DoCopy = "$($4)
Debug-Output "S53C885: 5=DoConfig = "$($5)
Set Status = STATUS_FAILED
Set Option = $($1)
Set SrcDir = $($2)
Set AddCopy = $($3)
Set DoCopy = $($4)
;Set DoConfig = $($5)
Set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) NOT-IN $(LanguageList)
Return STATUS_NOLANGUAGE
endif
; Initialize our symbols for this program. The order below is important as
; some sections use data from previous sections.
Read-Syms FileNames
Read-Syms GeneralConstants
Read-Syms FileConstants
Read-Syms FileConstants$(!STF_LANGUAGE)
Read-Syms DialogConstants$(!STF_LANGUAGE)
Read-Syms DefaultSettings
; NTN_Origination is install when networking is first being installed on the
; system. It is NCPA when networking is already installed and is being run
; from the control panel
Debug-Output "S53C885: NTN_Origination = "$(!NTN_Origination)
ifstr(i) $(!NTN_Origination) == "NCPA"
Set Continue = $(OK)
endif
Detect date
Set-title $(FunctionTitle)
Set to = Begin
Set from = Begin
Set CommonStatus = STATUS_SUCCESSFUL
EndWait ; Display the mouse arrow cursor rather than the hourglass
Begin = +
Debug-Output "S53C885:At Begin"
; We don't allow installation on NT versions our software doesn't support so
; determine the current NT version and exit out if not supported.
;
; SYM885 = NDIS 4 driver = NT 4.0 or later required
; SYM885_NDIS3 = NDIS 3 driver = NT 3.51 or later required
OpenRegKey $(!REG_H_LOCAL) "" +
$(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion" +
$(!REG_KEY_READ) KeyNt
ifstr(i) $(KeyNt) != $(KeyNull)
; If we were able to open the key then get the registry value for the
; current version. Currently I have seen this as 3.1, 3.5, 3.51, and
; 4.0
Set CurrentVersionValue = ""
GetRegValue $(KeyNt) "CurrentVersion" CurrentVersionValue
Debug-Output "S53C885: WinNT CurrentVersion ="$(CurrentVersionValue)
CloseRegKey $(KeyNt)
ifstr(i) $(CurrentVersionValue) == ""
Debug-Output "S53C885: Error obtaining NT version"
set Error = "There was an error accessing the registry"
goto fatal
endif
; The registry data format is a list of 4 items, the 4th item is the
; data. Split the data string into its separate components using the
; '.' as the separator. The resulting list will be like:{"4",".","0"}
; or {"3",".","51"}
Split-String *($(CurrentVersionValue),4) "." MajorNtVersionList
Debug-Output "S53C885: MajorNtVersionList="$(MajorNtVersionList)
Set MajorNtVersion = *($(MajorNtVersionList),1)
Set MinorNtVersion = *($(MajorNtVersionList),3)
Debug-Output "S53C885: MajorNtVersion="$(MajorNtVersion)
Debug-Output "S53C885: MinorNtVersion="$(MinorNtVersion)
ifstr(i) $(Option) == "SYM885"
ifint $(MajorNtVersion) < 4
Debug-Output "S53C885: Version not supported"
set Error = "This driver does not support Windows NT version "*($(CurrentVersionValue),4)
goto fatal
endif
else
ifint $(MajorNtVersion) == 3
ifint $(MinorNtVersion) != 51
Debug-Output "S53C885: Version not supported"
set Error = "This driver does not support Windows NT version "*($(CurrentVersionValue),4)
goto fatal
endif
endif
endif
else
Set RegistryErrorIndex = $(RegLastError)
goto fatalregistry
endif
; Figure out the mode we are to work on and go from there.
ifstr(i) $(!NTN_InstallMode) == deinstall
Set StartLabel = removeadapter
else-ifstr(i) $(!NTN_InstallMode) == Update
Set StartLabel = UpgradeSoftware
else-ifstr(i) $(!NTN_InstallMode) == bind
; Never seen this call and probably should never see it either
Set StartLabel = bindingadapter
else-ifstr(i) $(!NTN_InstallMode) == configure
Set StartLabel = configureadapter
ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
Debug-Output "S53C885: Cannot configure the S53C885 driver software."
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
endif
else
Set StartLabel = installadapter
Set OEM_ABANDON_OPTIONS = {}
Set OEM_ABANDON_SOFTWARE = FALSE
Set OEM_ABANDON_ON = TRUE
endif
Set from = fatal
Set to = fatal
goto $(StartLabel)
;---------------------------------------------------------------------------
; Install the adapter and associated files
;---------------------------------------------------------------------------
installadapter = +
StartWait
Debug-Output "S53C885:At installadapter"
Set-hextodec PciVendorId = 1000 ;4096
Set-hextodec PciDeviceId = 0701 ;1793
; Call the UTILITY.INF GetPCIInformation routine to find our PCI chip.
Debug-Output "S53C885: Looking for 53C885 chip"
Shell $(UtilityInf), GetPCIInformation, $(PciVendorId), $(PciDeviceId)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Debug-Output "S53C885: Return from shell GetPCIInformation="$($R0)
; See if we could not find any cards. If so, setup the error string for the
; nonfatal window, Set from to 'end' to force exit after displaying the
; message, then display the error
ifstr(i) $($R0) == {}
Debug-Output "S53C885:No Symbios Logic cards found"
Set Error = $(CANNOT_FIND_ANY_CARD)
Set CommonStatus = USER_CANCEL
Set from = end
goto nonfatal
endif
Set AdapterList = $($R0)
Set NewAdapterList = {}
Set NumNew = 0
ForListDo $(AdapterList)
Debug-Output "S53C885: Examining adapter="$($)
Set BusNumber = *($($),1)
Set DeviceNumber = *($($),2)
Set FunctionId = *($($),3)
; In order to use the IsNetCardAlreadyInstalled, we must generate a slot
; number in the manner that NT does. The NT slot number is the PCI
; device number in the lower 5 bits and the PCI function id in bits 5..7
; To generate this in this code, we must multiply the slot number by 20h
; which is 32 to generate the value of bits 5..7, then we 'OR' in the
; device number for bits 0..4
Set-mul SlotNumber = $(FunctionId), 32
Set-add SlotNumber = $(SlotNumber), $(DeviceNumber)
; If this adapter is already installed, then don't add it to our list
; of new adapters.
Debug-Output "S53C885: IsNetCardAlreadyInstalled:"$(BusNumber)","$(SlotNumber)","$(GenericAdapterName)","$(ProductHardwareName)
Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNumber), +
$(SlotNumber), $(GenericAdapterName), $(ProductHardwareName)
Debug-Output "S53C885: IsNetCardAlreadyInstalled returned="$($R0)","$($R1)
ifstr(i) $($R0) != "NO_ERROR"
Set Error = $($R0)
goto fatal
endif
ifstr(i) $($R1) == "YES"
Debug-Output "S53C885: Card is already installed"
else
; Increment the adapter count and add this adapter to our new
; adapter list
Set-add NumNew = $(NumNew),1
ifstr(i) $(NewAdapterList) == {}
Set NewAdapterList = {$($)}
else
Set NewAdapterList = >($(NewAdapterList),$($))
endif
endif
EndForListDo
; See if we could not find any new cards. If so, setup the error string for
; the nonfatal window, Set from to 'end' to force exit after displaying the
; message, then display the error
ifint $(NumNew) == 0
Debug-Output "S53C885:No new Symbios Logic cards found"
Set Error = $(CANNOT_FIND_NEW_CARD)
Set CommonStatus = STATUS_USERCANCEL
Set from = end
goto nonfatal
endif
Set AdapterList = $(NewAdapterList)
Debug-Output "S53C885: NumNew="$(NumNew)", AdapterList="$(AdapterList)
; Check to see if the software already exists on this machine. If so, then
; popup a dialog and ask whether or not the user wants to continue. At this
; point, we would be installing the new adapters using the same level of
; software. If the user chooses to continue, we will NOT copy any files but
; will simply setup the registry for the new adapter(s).
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
ifstr(i) $(KeyProduct) != $(KeyNull)
; Close the registry key that we opened and popup the dialog
CloseRegKey $(KeyProduct)
Set KeyProduct = ""
Debug-Output "S53C885: Calling CardExistedDlg"
Shell $(UtilityInf), CardExistedDlg
Debug-Output "S53C885: CardExistedDlg returns 0="$($R0)",1="$($R1)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
; If the user cancelled this operation, we are not in the middle of any
; state so just go to the end marker and return a user cancelled status
ifstr(i) $($R1) != "OK" ;R1 is the button value
Set CommonStatus = STATUS_USERCANCEL
goto end
endif
; If the user wants to continue then set our flag to indicate that we
; don't want to modify or add our software settings again.
Set OldVersionExisted = $(TRUE)
endif
; Our files are in the directory $(SrcDir). If we are installing at the
; same time networking is being installed, then calling DoAskSource would
; cause the user confusion by asking for the NT CD directory first, then
; asking for our directory even though we know where our files are at.
; So instead of asking the user where our files are at, we just use our
; input parameters to [installoption] to find the files.
Debug-Output "S53C885: Installing adapter files from "$(SrcDir)
install "Install-AdapterFiles"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
Debug-Output "S53C885: Unable to install adapter files"
Shell $(UtilityInf), RegistryErrorString, "UNABLE_COPY_FILE"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Set Error = $($R0)
goto fatal
endif
; Skip the configure section and go directly to setup the options for the
; adapter. This is done so that configureadapter can fall through to
; adapteroptions
goto adapteroptions
;---------------------------------------------------------------------------
; The user choose to configure the adapter. Read the current settings from the
; registry then go to the adapteroptions section.
;---------------------------------------------------------------------------
configureadapter = +
StartWait
Debug-Output "S53C885:At configureadapter"
ifstr(i) $(KeyProduct) == $(KeyNull)
Debug-Output "S53C885: Keyproduct==null"
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
ifstr(i) $(KeyProduct) == $(KeyNull)
Debug-Output "S53C885: Cannot find component product key"
Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
goto fatalregistry
endif
endif
; Get the other parameters; they're attached to the service parameters key
Debug-Output "S53C885: Shelling to FindService"
Shell $(UtilityInf), FindService, $(KeyProduct)
Debug-Output "S53C885: FindService returns 0="$($R0)",1="$($R1)",2="$($R2)",3="$($R3)
CloseRegKey $(KeyProduct)
Set KeyProduct = ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
ifstr(i) $($R0) != NO_ERROR
Debug-Output "S53C885: FindService error: "$($R0)
Set RegistryErrorIndex = $($R0)
ifstr(i) $($R1) != $(KeyNull)
CloseRegKey $($R1)
endif
ifstr(i) $($R2) != $(KeyNull)
CloseRegKey $($R2)
endif
goto fatalregistry
endif
; We don't need the services key $($R1), so close it.
CloseRegKey $($R1)
Set KeyParameters = $($R2)
ifstr(i) $(KeyParameters) == $(KeyNull)
Debug-Output "S53C885: Cannot find component service"
Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
goto fatalregistry
endif
; Because we are configuring an existing adapter, set OldVersionExisted and
; read all of the current registry settings.
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)
Debug-Output "S53C885: ValueItem="$(ValueItem)
ifstr(i) $(ValueName) == "BusType"
Set BusType = $(ValueData)
else-ifstr(i) $(ValueName) == "BusNumber"
Set BusNumber = $(ValueData)
else-ifstr(i) $(ValueName) == "DeviceNumber"
Set DeviceNumber = $(ValueData)
else-ifstr(i) $(ValueName) == "FunctionId"
Set FunctionId = $(ValueData)
else-ifstr(i) $(ValueName) == "SlotNumber"
Set SlotNumber = $(ValueData)
else-ifstr(i) $(ValueName) == "ConnectionTypeValue"
Set ConnectionTypeValue = $(ValueData)
else-ifstr(i) $(ValueName) == "ConnectionType"
Set ConnectionType = $(ValueData)
else-ifstr(i) $(ValueName) == "ConnectorType"
Set ConnectorType = $(ValueData)
else-ifstr(i) $(ValueName) == "Speed"
Set Speed = $(ValueData)
else-ifstr(i) $(ValueName) == "Duplex"
Set Duplex = $(ValueData)
else
Debug-Output "S53C885: Unknown registry key="$(ValueName)
endif
EndForListDo
; NOTE: At this point, KeyParameters is still open and will be used at
; skipOptions to write data to the registry.
;---------------------------------------------------------------------------
; The following section will get user input for configuring this adapter.
;---------------------------------------------------------------------------
adapteroptions = +
Debug-Output "S53C885:At adapteroptions"
Set from = adapteroptions
; The following is supposed to make the NCPA program use the help button on
; our dialog automatically invoke help. I haven't been able to get this to
; work however so we handle the help button ourselves.
;
;Test this again RAJ
;Debug-Output "S53C885: Setting help file"
;SetHelpFile $(HelpFileName) 1 11
;Set HelpContext = 1
; Load the DLL so we can show and use the dialog for configuration.
;
; Read the symbols for the dialog. The dialog uses these variables when it
; displays. The 'ui start' command will display the dialog and wait for the
; user to click on OK, Cancel or Help. Then it is up to us to process the
; user message.
LoadLibrary "x" $(!STF_CWDDIR)$(DllFileName) dllHandle
Read-Syms Sym885_Setup$(!STF_LANGUAGE)
Debug-Output "S53C885: ConnectionTypeValue="$(ConnectionTypeValue)
Debug-Output "S53C885: ConnectionType="$(ConnectionType)
;Debug-Output "S53C885: ComboListItemsIn ="$(ComboListItemsIn)
;Debug-Output "S53C885: ComboListItemsOut="$(ComboListItemsOut)
Debug-Output "S53C885: Combo1List ="$(Combo1List)
Debug-Output "S53C885: Combo1Out ="$(Combo1Out)
EndWait
DlgAgain = +
ui start "Inputdlg" $(dllHandle)
Debug-Output "S53C885: Return button ="$(ButtonPressed)
Debug-Output "S53C885: DLGEVENT ="$(DLGEVENT)
Debug-Output "S53C885: Combo1Out ="$(Combo1Out)
; DLGEVENT's
;
; CONTINUE = User hit OK button
; FREEBUTTON1 = User hit HELP button
; BACK = User hit Cancel button
; EXIT = User closed the window without using our buttons
ifstr(i) $(DLGEVENT) == "CONTINUE"
; The user has choosen their settings so extract the values then
; continue with our setup. The string in Combo1Out is the setting
; choosen. Extract that value then extract its numerical value for use
; in this file.
Set ConnectionType = $(Combo1Out)
Set ConnectionTypeValue = *($(ConnectionTypesValues), +
~($(ConnectionTypesNames), $(Combo1Out)))
else-ifstr(i) $(DLGEVENT) == "FREEBUTTON1"
; User asked for help. We start a detached process and bring up the
; dialog again. This allows the user to look through the help text and
; use the dialog at the same time. The parameter list for the start
; command below is as follows:
;
; StartDetachedProcess ExitCode DiskName Reserved ProgramPath Args
;
; NOTE: The dialog is not supposed to disappear from view until
; 'ui pop 1' is executed. So we don't issue the ui pop command when
; doing help because we will be looping back to the dialog.
Debug-Output "S53C885: Action: HELP."
StartDetachedProcess HelpResult "" "" winhlp32.exe $(!STF_WINDOWSSYSPATH)"\"$(HelpFileName)
goto DlgAgain
else
;else-ifstr(i) $(DLGEVENT) == "BACK"
;else-ifstr(i) $(DLGEVENT) == "EXIT"
; If the event was to cancel or exit the operation then we do the same
; as if we don't know anything about the event so we combined BACK,
; EXIT, and all others into this one location.
; Because KeyParameters was left open when we are in configure mode, we
; must close it here.
ifstr(i) $(!NTN_InstallMode) == configure
CloseRegKey $(KeyParameters)
Set KeyParameters = ""
endif
Set CommonStatus = STATUS_USERCANCEL
Debug-Output "S53C885: Action: Cancel,Exit, or Unknown. Bye."
ui pop 1
FreeLibrary $(dllHandle)
goto end
endif
; We only get here if the user hit the continue button. Free the library
; resources then setup our internal variables according to what the user
; has choosen.
ui pop 1
FreeLibrary $(dllHandle)
Set ConnectorType = *($(ConnectionTypeList),$(ConnectionTypeValue))
Set Speed = *($(SpeedList),$(ConnectionTypeValue))
Set Duplex = *($(DuplexList),$(ConnectionTypeValue))
Debug-Output "S53C885: ConnectionTypeValue="$(ConnectionTypeValue)
Debug-Output "S53C885: ConnectionType ="$(ConnectionType)
Debug-Output "S53C885: ConnectorType ="$(ConnectorType)
Debug-Output "S53C885: Speed ="$(Speed)
Debug-Output "S53C885: Duplex ="$(Duplex)
;---------------------------------------------------------------------------
; The following section will write or update parameters in the registry
;---------------------------------------------------------------------------
skipoptions =+
StartWait
Debug-Output "S53C885:At skipoptions"
; If we are in configure mode, we only need to update one adapter, this one.
ifstr(i) $(!NTN_InstallMode) == configure
; "Call" writeparameters which will then "return" to the end label
; At this point, because we are in the configure mode, KeyParameters is
; open as required by writeparameters.
Debug-Output "S53C885: Configuring existing version"
Set writeparametersreturn = end
goto writeparameters
endif
; If an old version did not exist and we are in install mode then add the
; software component to the registry.
;
; NOTE: If we reach this point, then no registry keys or other resources are
; currently open.
Debug-Output "S53C885: OldVersionExisted="$(OldVersionExisted)
ifint $(OldVersionExisted) == $(FALSE)
ifstr(i) $(!NTN_InstallMode) == Install
ifstr(i) $(DoCopy) == "YES"
Debug-Output "S53C885: Install mode, preparing to copy files"
Debug-Output "S53C885: Calling DoAskSource"
Debug-Output "S53C885: !STF_SRCDIR_OVERRIDE="$(!STF_SRCDIR_OVERRIDE)
Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir), YES
Debug-Output "S53C885: DoAskSource returns 0="$($R0)",1="$($R1)",2="$($R2)
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 end
endif
Set SrcDir = $($R1)
endif
StartWait
install "Install-Option"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
Debug-Output "S53C885: Unable to install option files"
Shell $(UtilityInf), RegistryErrorString, "UNABLE_COPY_FILE"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Set Error = $($R0)
goto fatal
endif
endif
; An old version did not exist so we must add the driver to the registry
Debug-Output "S53C885: Calling AddSoftwareComponent"
Shell $(UtilityInf), AddSoftwareComponent, +
$(Manufacturer), +
$(ProductSoftwareName), +
$(ProductSoftwareName), +
$(ProductSoftwareTitle), +
$(STF_CONTEXTINFNAME), +
$(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
$(NetEventDLL)
; In case there is a problem, set our flag telling the abandon routine
; to run.
Set OEM_ABANDON_SOFTWARE = TRUE
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage Key
;
; We close the keys we don't need and we leave KeyProduct and
; SoftNetRulesKey available for use.
Set RegistryErrorIndex = $($R0)
Set KeyProduct = $($R1)
Set SoftNetRulesKey = $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding software components"
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
Set KeyProduct = ""
Set SoftNetRulesKey = ""
goto fatalregistry
endif
; Add the following standard keys to:
; \HKEY_LOCAL_MACHINE\SOFTWARE\$(Manufacturer)\$(ProductSoftwareName)
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, $(KeyProduct), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
Set KeyProduct = ""
Set SoftNetRulesKey = ""
goto ShellCodeError
endif
Set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding value list to keyproduct"
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
Set KeyProduct = ""
Set SoftNetRulesKey = ""
goto fatalregistry
endif
; Add the following standard keys to:
; \HKEY_LOCAL_MACHINE\SOFTWARE\$(Manufacturer)\$(ProductSoftwareName)\NetRules
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, $(SoftNetRulesKey), $(NewValueList)
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
Set KeyProduct = ""
Set SoftNetRulesKey = ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding value list to softnetruleskey"
goto fatalregistry
endif
endif
; We now know our software has been installed as part of the registry. We
; must add information for each instance of our adapter board.
;
; At this point, no registry keys are open.
Debug-Output "S53C885:Adding adapter instances to registry:"$(AdapterList)
ForListDo $(AdapterList)
Set BusNumber = *($($),1)
Set DeviceNumber = *($($),2)
Set FunctionId = *($($),3)
Debug-Output "S53C885: Bus="$(BusNumber)",Device="$(DeviceNumber)",Funct="$(FunctionId)
; In order to use the IsNetCardAlreadyInstalled, we must generate a slot
; number in the manner that NT does. The NT slot number is the PCI
; device number in the lower 5 bits and the PCI function id in bits 5..7
; To generate this in this code, we must multiply the slot number by 20h
; which is 32 to generate the value of bits 5..7, then we 'OR' in the
; device number for bits 0..4
Set-mul SlotNumber = $(FunctionId), 32
Set-add SlotNumber = $(SlotNumber), $(DeviceNumber)
Debug-Output "S53C885: Adding hardware component"
Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName), +
$(STF_CONTEXTINFNAME), $(ProductKeyName)
; $R0 = Registry error code
; $R1 = Key for hardware\netcard\(n)
; $R2 = Key for hardware\netcard\(n)\netrules
; $R3 = Key for service\parameters
; $R4 = Adapter number assigned
; $R5 = Service name for this adapter
Debug-Output "S53C885: Service name="$($R5)
; If we were assigned an adapter number, add this adapter to the list of
; things to delete if we fail to install
ifint $($R4) != -1
Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), +
$(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
Debug-Output "S53C885: OEM_ABANDON_OPTIONS="$(OEM_ABANDON_OPTIONS)
endif
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto ShellCodeError
endif
Set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding hardware component"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto fatalregistry
endif
; Adding HardNetCardKey values
; For any error past this point, we have three registry keys open,
; HardNetCardKey, KeyAdapterRules, and KeyParameters
Debug-Output "S53C885: Adding HardNetCardKey values"
Set HardNetCardKey = $($R1)
Set KeyAdapterRules = $($R2)
Set KeyParameters = $($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)
CloseRegKey $(HardNetCardKey)
Set HardNetCardKey = ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(KeyAdapterRules)
CloseRegKey $(KeyParameters)
Set KeyAdapterRules = ""
Set KeyParameters = ""
goto ShellCodeError
endif
Set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding value list to hardnetcardkey"
CloseRegKey $(KeyAdapterRules)
CloseRegKey $(KeyParameters)
Set KeyAdapterRules = ""
Set KeyParameters = ""
goto fatalregistry
endif
; Adding Adapter rules
; For any error past this point, we have two registry keys open,
; KeyAdapterRules, and KeyParameters
Debug-Output "S53C885: Adding adapter rules"
Set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
Set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
Set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
CloseRegKey $(KeyAdapterRules)
Set KeyAdapterRules = ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(KeyParameters)
Set KeyParameters = ""
goto ShellCodeError
endif
Set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding value list to keyadapterrules"
CloseRegKey $(KeyParameters)
Set KeyParameters = ""
goto fatalregistry
endif
; 'Call' writeparameters by telling it to jump to the first command
; after the goto below. At this point, KeyParameters is open as
; required by writeparameters. writeparameters will close this key for
; us.
Set writeparametersreturn = adapterloopend
goto writeparameters
adapterloopend = +
Debug-Output "S53C885: At adapterloopend"
EndForListDo
EndWait
goto end
;---------------------------------------------------------------------------
; The following section will perform the actual write and will then 'return'
; by performing a jump.
;---------------------------------------------------------------------------
writeparameters = +
; At this point, KeyParameters had better refer to the proper adapter:
Debug-Output "S53C885:At Writeparameters"
Debug-Output "S53C885: KeyParameters="$(KeyParameters)
Shell $(UtilityInf), GetBusTypeNum
Set BusType = $($R1)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(KeyParameters)
Set KeyParameters = ""
goto ShellCodeError
endif
Debug-Output "S53C885: GetBusTypeNum="$(BusType)
; Add our adapter specific keys to the registry
Debug-Output "S53C885: Adding "$(Option)" keys"
Set NewValueList = { +
{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusType)},+
{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
{DeviceNumber,$(NoTitle),$(!REG_VT_DWORD),$(DeviceNumber)},+
{FunctionId,$(NoTitle),$(!REG_VT_DWORD),$(FunctionId)},+
{SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)},+
{ConnectionTypeValue,$(NoTitle),$(!REG_VT_DWORD),$(ConnectionTypeValue)},+
{ConnectionType,$(NoTitle),$(!REG_VT_SZ),$(ConnectionType)},+
{ConnectorType,$(NoTitle),$(!REG_VT_DWORD),$(ConnectorType)},+
{Speed,$(NoTitle),$(!REG_VT_DWORD),$(Speed)},+
{Duplex,$(NoTitle),$(!REG_VT_DWORD),$(Duplex)}}
Debug-Output "S53C885: BusType ="$(BusType)
Debug-Output "S53C885: BusNumber ="$(BusNumber)
Debug-Output "S53C885: DeviceNumber ="$(DeviceNumber)
Debug-Output "S53C885: FunctionId ="$(FunctionId)
Debug-Output "S53C885: SlotNumber ="$(SlotNumber)
;Debug-Output "S53C885: ConnectionTypeValue ="$(ConnectionTypeValue)
;Debug-Output "S53C885: ConnectionType ="$(ConnectionType)
;Debug-Output "S53C885: ConnectorType ="$(ConnectorType)
;Debug-Output "S53C885: Speed ="$(Speed)
;Debug-Output "S53C885: Duplex ="$(Duplex)
Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
CloseRegKey $(KeyParameters)
Set KeyParameters = ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "S53C885: Registry error adding value list to keyparameters"
goto fatalregistry
endif
goto $(writeparametersreturn)
;---------------------------------------------------------------------------
; Adapter binding is not implemented but we keep a label for it just in case
; we get called at this location somehow.
;---------------------------------------------------------------------------
bindingadapter =+
Debug-Output "S53C885:At bindingadapter which is not implemented"
Set Error = "Binding: Sorry, not yet implemented."
goto fatal
;---------------------------------------------------------------------------
; The user wants to remove this adapter installation
;---------------------------------------------------------------------------
removeadapter = +
StartWait
Debug-Output "S53C885:At removeadapter"
ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
; Remove Software Component which also removes the hardware component
Debug-Output "S53C885: Removing software component"
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
; Remove hardware component
Debug-Output "S53C885: Removing hardware component"
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
;---------------------------------------------------------------------------
; The user wants to upgrade the software installed
;---------------------------------------------------------------------------
UpgradeSoftware = +
StartWait
Debug-Output "S53C885:At UpgradeSoftware"
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
ifstr(i) $(KeyProduct) != $(KeyNull)
; Get the current major version to see if we need to do more work or not
GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
Set MVersion = *($(VersionInfo), 4)
Debug-Output "S53C885: Current major version="$(MVersion)
; Update the binaries
Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(KeyProduct)
Set KeyProduct = ""
goto ShellCodeError
endif
Debug-Output "S53C885: System INF filename="$($R0)
set !UG_Filename = $($R0)
install "Install-Update"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
CloseRegKey $(KeyProduct)
Set KeyProduct = ""
Debug-Output "S53C885: Unable to update adapter files"
goto fatal
endif
; Upgrade the version number
SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)}
SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)}
ifint $(MVersion) != $(ProductMajorVersion)
; If the major version number is not the same, this is a major
; upgrade.
Debug-Output "S53C885: Major upgrade"
endif
CloseRegKey $(KeyProduct)
Set KeyProduct = ""
else
; Cannot Open software key, goto ERROR
Debug-Output "S53C885: Can't open the software key, error"
goto fatalregistry
endif
goto end
;---------------------------------------------------------------------------
; Most of the following are the "standard" routines which aren't changed by
; us.
;---------------------------------------------------------------------------
abandon = +
Debug-Output "S53C885:At Abandon"
Debug-Output "S53C885: OEM_ABANDON_OPTIONS="$(OEM_ABANDON_OPTIONS)
ForListDo $(OEM_ABANDON_OPTIONS)
Debug-Output "S53C885: Removing hardware component="$($)
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
Debug-Output "S53C885: OEM_ABANDON_SOFTWARE="$(OEM_ABANDON_SOFTWARE)
ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
Debug-Output "S53C885: Removing software component"
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
nonfatalinfo = +
Debug-Output "S53C885:At nonfatalinfo"
Set CommonStatus = STATUS_USERCANCEL
Set Severity = STATUS
goto nonfatalmsg
nonfatal = +
Debug-Output "S53C885:At nonfatal"
Set Severity = NONFATAL
goto nonfatalmsg
nonfatalmsg = +
Debug-Output "S53C885:At 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
Debug-Output "S53C885: SetupMessage out="$($R1)
ifstr(i) $($R1) == "OK"
goto $(from)
endif
goto end
fatalregistry = +
Debug-Output "S53C885:At fatalregistry"
Shell $(UtilityInf), RegistryErrorString, $(RegistryErrorIndex)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Set Error = $($R0)
goto fatal
fatal = +
Debug-Output "S53C885:At 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 = +
; A Shell command has failed for some reason so display the shell code error
; dialog then exit.
Debug-Output "S53C885:At 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 = +
Debug-Output "S53C885:At setfailed"
Set CommonStatus = STATUS_FAILED
; If OEM_ABANDON_ON == TRUE, then remove the registry entries
ifstr(i) $(OEM_ABANDON_ON) == TRUE
Set OEM_ABANDON_ON = FALSE
goto abandon
endif
goto end
end = +
EndWait
Return $(CommonStatus)
[date]
Now = {} ? $(!LIBHANDLE) GetSystemDate
;---------------------------------------------------------------------------
; The following section are the values used by the device driver in the
; registry. This data must match all ConnectionTypes$(!STF_LANGUAGE) in their
; given order.
;---------------------------------------------------------------------------
[ConnectionTypesList]
2, 1, 1 ;"Automatic", 1
2, 1, 1 ;"MII Auto negotiation", 2
2, 2, 2 ;"MII 10 Mbps, Half Duplex", 3
2, 2, 3 ;"MII 10 Mbps, Full Duplex", 4
2, 3, 2 ;"MII 100 Mbps, Half Duplex", 5
2, 3, 3 ;"MII 100 Mbps, Full Duplex", 6
1, 1, 2 ;"TP-PMD, Half Duplex", 7
1, 1, 3 ;"TP-PMD, Full Duplex", 8
;---------------------------------------------------------------------------
; The following sections define our text strings for each supported language.
;---------------------------------------------------------------------------
[ConnectionTypesENG]
"Automatic", 1
"MII Auto negotiation", 2
"MII 10 Mbps, Half Duplex", 3
"MII 10 Mbps, Full Duplex", 4
"MII 100 Mbps, Half Duplex", 5
"MII 100 Mbps, Full Duplex", 6
"TP-PMD, Half Duplex", 7
"TP-PMD, Full Duplex", 8
[OptionsTextENG]
SYM885 = "NT 4.0 NDIS 4 Symbios Logic 53C885 Fast Ethernet Driver"
SYM885_NDIS3 = "NT 3.51 NDIS 3 Symbios Logic 53C885 Fast Ethernet Driver"
[FileConstantsENG]
ProductSoftwareDescription = "Symbios Logic 53C885 Adapter Driver"
GenericAdapterName = "Symbios Logic 53C885 PCI Ethernet Adapter"
ProductSoftwareTitle = "Symbios Logic 53C885 PCI Ethernet Driver"
FunctionTitle = $(GenericAdapterName)" v"$(ProductVersion)
ProductHardwareSYM885Title = $(GenericAdapterName)
ProductHardwareSYM885Description = $(GenericAdapterName)
ProductHardwareSYM885_NDIS3Title = $(GenericAdapterName)
ProductHardwareSYM885_NDIS3Description = $(GenericAdapterName)
CANNOT_FIND_ANY_CARD = "Network card is not present in the system"
CANNOT_FIND_NEW_CARD = "All Symbios Logic 53C885 adapters have been installed"
; The following are required only when installing our adapter when networking is
; being installed at the same time. These are used by the system when copying
; our .DLL and .HLP files.
ProCaption = "Windows NT Networking Setup"
ProCancel = "Cancel"
ProCancelMsg = "Windows NT is not correctly installed. Are you sure you "+
"want to cancel copying files?"
ProCancelCap = "Setup Message"
ProText1 = "Copying:"
ProText2 = "To:"
[DialogConstantsENG]
Help = "&Help"
Exit = "E&xit"
OK = "&OK"
Continue = "C&ontinue"
Cancel = "C&ancel"
HelpContext = ""
[Sym885_SetupENG]
; DlgTemplate is the name of the dialog which is part of our DLL.
; DlgType is the type of dialog we want to tell setup.exe to process
DlgTemplate = "SYM885_SETUP"
DlgType = "RadioCombination"
; The following are the strings the dialog will display
Sym885_Caption = "S53C885 Ethernet Setup"
SymConnector = "Choose the interface you wish to use"
; ComboXList is the list of text items for the ComboX element
; ComboXOut is the output data for the ComboX element. It is also used to
; Set the default element when creating the dialog.
;
; All ComboXList items are combined into ComboListItemsIn in numerical order
; All ComboXOut items are combined into ComboListItemsOut in numerical order
;
; Combo1 is our connector selection (MII,TP-PMD)
;
; NotifyFields indicates for each combo box if we are to be notified or not
; when the user makes a change.
Combo1Out = $(ConnectionType)
Combo1List = $(ConnectionTypesNames)
ComboListItemsIn = { Combo1List }
ComboListItemsOut = { Combo1Out }
NotifyFields = {NO}
; In order to get our dialog type of RadioCombination to work, we must set
; the following. If we don't, then the combo list is not initialized
; correctly.
Radio1 = ""
CheckBox1 = ""
EditTextIn = ""
EditTextLim = ""
CBOptionsGreyed = {}
;---------------------------------------------------------------------------
; The following section contains the default settings we will use on this
; system
;---------------------------------------------------------------------------
[DefaultSettings]
; Our default connection type is Automatic which translates into MII with
; automatic speed and duplex values.
ConnectionTypesNames = ^(ConnectionTypes$(!STF_LANGUAGE), 1)
ConnectionTypesValues = ^(ConnectionTypes$(!STF_LANGUAGE), 2)
ConnectionTypeList = ^(ConnectionTypesList, 1)
SpeedList = ^(ConnectionTypesList, 2)
DuplexList = ^(ConnectionTypesList, 3)
ConnectionTypeValue = 1
ConnectionType = *($(ConnectionTypesNames), $(ConnectionTypeValue))
ConnectorType = "2" ;MII
Speed = "1" ;AUTO
Duplex = "1" ;AUTO
;---------------------------------------------------------------------------
; The following will install the files needed for configuration
;---------------------------------------------------------------------------
[Install-AdapterFiles]
Debug-Output "S53C885:At Install-AdapterFiles"
; If the help file doesn't exist, it isn't fatal. However, if the DLL file
; doesn't exist we can't complete the install so Set vital accordingly. We
; always want to overwrite the destination directory copy of the DLL because
; the DLL and this .INF file are a matched Set.
;
; NOTE: STF_VITAL doesn't seem to work on Windows NT 4.0.
Set STF_VITAL = "VITAL"
Set STF_OVERWRITE = "ALWAYS"
Debug-Output "S53C885: Add files to copy list"
Debug-Output "S53C885: SrcDir="$(SrcDir)
Debug-Output "S53C885: DestDir="$(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-$(!STF_PLATFORM)-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
Debug-Output "S53C885: Copy files in copy list"
Set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
exit
;---------------------------------------------------------------------------
; The following will install the files for the current option
;---------------------------------------------------------------------------
[Install-Option]
Debug-Output "S53C885:At Install-Option, Option="$(Option)
; If the SYS file doesn't exist, it is fatal, the caller will check to make
; sure we successfully install all of the files for this option.
Set STF_VITAL = 1
Set STF_OVERWRITE = "ALWAYS"
ifstr(i) $(AddCopy) == "YES"
Debug-Output "S53C885: Add files to copy list"
Debug-Output "S53C885: SrcDir="$(SrcDir)
Debug-Output "S53C885: DestDir="$(!STF_WINDOWSSYSPATH)"\drivers"
AddSectionFilesToCopyList Files-$(!STF_PLATFORM)-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
endif
ifstr(i) $(DoCopy) == "YES"
Debug-Output "S53C885: Copy files in copy list"
Set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
endif
Exit
;---------------------------------------------------------------------------
; The following will update the install files
;---------------------------------------------------------------------------
[Install-Update]
Debug-Output "S53C885:At Install-Update, Option="$(Option)
; If the SYS file doesn't exist, it is fatal, the caller will check to make
; sure we successfully install all of the files for this option.
Set STF_VITAL = ""
Set STF_OVERWRITE = "ALWAYS"
ifstr(i) $(AddCopy) == "YES"
Debug-Output "S53C885: Add files to copy list"
Debug-Output "S53C885: SrcDir="$(SrcDir)
Debug-Output "S53C885: DestDir1="$(!STF_WINDOWSSYSPATH)
Debug-Output "S53C885: DestDir2="$(!STF_WINDOWSSYSPATH)"\drivers"
AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-$(!STF_PLATFORM)-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-$(!STF_PLATFORM)-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
endif
ifstr(i) $(DoCopy) == "YES"
Debug-Output "S53C885: Copy files in copy list"
Set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
endif
Exit
;---------------------------------------------------------------------------
; The remaining sections define the files and the file names
;---------------------------------------------------------------------------
;[ProductType]
; STF_PRODUCT = Winnt
; STF_PLATFORM = I386
[FileNames]
DriverSYM885_NDIS3FileName = "S53C8853.sys"
DriverSYM885FileName = "S53C885.sys"
DllFileName = "S53C885.dll"
HelpFileName = "S53C885.hlp"
AlphaDllFileName = "A53C885.dll"
AlphaSYM885_NDIS3FileName = "A53C8853.sys"
AlphaSYM885FileName = "A53C885.sys"
[Source Media Descriptions]
1 = "Windows NT Setup Disk #1"
; Each [Files-xxx] section has the following format:
;
; Disk#, file name (must be 8.3), options
;
; The size option is used to display a progress bar.
[Files-Inf]
1, oemsetup.inf, SIZE=65536, RENAME=$(!UG_Filename)
[Files-Hlp]
1, $(HelpFileName), SIZE=10240
; The following are for Intel x86 platforms
[Files-I386-Dll]
1, $(DllFileName), SIZE=32768
[Files-I386-SYM885]
1, $(DriverSYM885FileName), SIZE=32768
[Files-I386-SYM885_NDIS3]
1, $(DriverSYM885_NDIS3FileName), SIZE=32768
; The following are for ALPHA machine executables
[Files-ALPHA-Dll]
1, $(AlphaDllFileName), SIZE=32768, RENAME=$(DllFileName)
[Files-ALPHA-SYM885]
1, $(AlphaSYM885FileName), SIZE=32768, RENAME=$(DriverSYM885FileName)
[Files-ALPHA-SYM885_NDIS3]
1, $(AlphaSYM885_NDIS3FileName), SIZE=32768, RENAME=$(DriverSYM885_NDIS3FileName)
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.