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