;
; -----------------------------------------------------------------------
; OEMSETUP FILE FOR 3Com PCI 10/100Mb Bus-Master adpaters.
; 3Com Corp.
; -----------------------------------------------------------------------
;
; OS: Windows NT Version 3.5
; Platform type: Intel x86
;
; Supported adapters:
; -------------------
; 3Com Fast Etherlink Bus-master Adapter PCI/EISA (3C595, 3C597)
; 3Com Etherlink III Bus-master Adapter PCI/EISA (3C590, 3C592)
;
; Usage:
;
;   This file is used for the installation/configuration/deinstallation
;   procedure of Fast Etherlink/Etherlink III drivers for Windows NT. 
;
; Current Version: %VER 1.0e
;
; History:
;	v1.0  {JSB}: Initial Version 
;   v1.0a {JSB}: Minor tweeks 
;	v1.0b {JSB}: Changed to use EL59x.sys instead fo EL59x.sys
;				   Removed some of the keywords not needed for the defaults! (BusMaster=YES)
;
;	v1.0c {JSB}: Added in support for V2 PCI (EL590) to the Inf file
;   v1.0d {jsb}: Added el59x.sys as a place to look for messages for the Audit log.
;	v1.0e {jsb}: Changed Configure error message too: "Cannot configure the software component"
;
;------------------------------------------------------------------------
;

[Identification]
	OptionType = NetAdapter

[PlatformsSupported]
	ISA
	EISA
	"Jazz-Internal Bus"
	PCI

[Options]
	3C595	; PCI 10/100Mb Fast Etherlink 
;	3C597	; EISA 10/100Mb Fast Etherlink
	3C590	; PCI 10Mb Etherlink III
;	3C592	; EISA 10Mb Etherlink III 

[FileConstants]
	UtilityInf      		  = "UTILITY.INF"
	subroutineinf   		  = "SUBROUTN.INF"
	SoftwareType    		  = "driver"
	Exit_Code       		  = 0
	NetEventDLL     		  = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\drivers\el59x.sys"
	IoLogMsgDLL     		  = "%SystemRoot%\System32\IoLogMsg.dll"

	Manufacturer    		  = "3Com"
	ProductMajorVersion       = "1"
	ProductMinorVersion       = "0"
	ProductVersion  		  = $(ProductMajorVersion)"."$(ProductMinorVersion)
	ProductSoftwareName       = "El59x"
	ProductSoftwareImagePath  = "\SystemRoot\System32\drivers\el59x.sys"
	NetRuleSoftwareType    	  = "El59xSys ndisDriver El59xDriver"
	NetRuleSoftwareUse     	  = $(SoftwareType)
	NetRuleSoftwareBindForm	  = """El59xSys"" yes no container"
	NetRuleSoftwareClass   	  = {"El59xDriver basic"}
	NetRuleSoftwareBindable	  = {"El59xDriver El59xAdapter non exclusive 100"}
	ProductHardwareName    	  = "El59x"
	NetRuleHardwareBindForm	  = " yes yes container"

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

	FunctionTitle   				 = "3Com Fast Etherlink/Etherlink III Adapter Card Setup"
	ProductSoftwareDescription   	 = "3Com Fast Etherlink/Etherlink III Adapter Driver"
	ProductSoftwareTitle   			 = "3Com Fast Etherlink/Etherlink III Adapter Driver"

	ProductHardware3C595Title	   	 = "3Com Fast Etherlink PCI 10/100BASE-T Adapter (3C595)"
	ProductHardware3C595Description	 = "3Com Fast EtherLink PCI 10/100BASE-T Adapter (3C595)"
	NetRuleHardware3C595Type    	 = "El59x El59xAdapter"
	NetRuleHardware3C595Class   	 = {"El59xAdapter basic"}

	;ProductHardware3C597Title	   	 = "3Com Fast EtherLink EISA 10/100BASE-T Adapter (3C597)"
	;ProductHardware3C597Description = "3Com Fast EtherLink EISA 10/100BASE-T Adapter (3C597)"
	;NetRuleHardware3C597Type    	 = "El59x El59xAdapter"
	;NetRuleHardware3C597Class   	 = {"El59xAdapter basic"}

	ProductHardware3C590Title	     = "3Com Etherlink III PCI Bus-Master Adapter (3C590)"
	ProductHardware3C590Description = "3Com Etherlink III PCI Bus-Master Adapter (3C590)" 
	NetRuleHardware3C590Type    	 = "El59x El59xAdapter"
	NetRuleHardware3C590Class   	 = {"El59xAdapter basic"}

	;ProductHardware3C592Title	     = "3Com Etherlink III EISA Bus-Master Adapter (3C592)" 
	;ProductHardware3C592Description = "3Com Etherlink III EISA Bus-Master Adapter (3C592)" 
	;NetRuleHardware3C592Type    	 = "El59x El59xAdapter"
	;NetRuleHardware3C592Class   	 = {"El59xAdapter basic"}

	Adapter3C595Type  				 = 5  ;; PCI board
	;Adapter3C597Type  				 = 2  ;; EISA board
	Adapter3C590Type  				 = 5  ;; PCI board
	;Adapter3C592Type  				 = 2  ;; EISA board


[GeneralConstants]
	from      = ""
	to        = ""
	ExitCodeOk     = 0
	ExitCodeCancel = 1				  
	ExitCodeFatal  = 2
	KeyNull         = ""
	MAXIMUM_ALLOWED   = 33554432
	RegistryErrorIndex = NO_ERROR
	KeyProduct      = ""
	KeyParameters   = ""
	TRUE            = 1
	FALSE           = 0
	NoTitle            = 0
	ExitState   = "Active"
	OldVersionExisted = $(FALSE)
	DriverPath      = $(!STF_NTPATH)\drivers

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

[Identify]
    read-syms Identification
    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)
    set Media      = #("Source Media Descriptions", 1, 1)
    Return $(Status) $(Identifier) $(Media)

[ReturnOptions]
    set Status        = STATUS_FAILED
    set OptionList     = {}
    set OptionTextList = {}
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
	ifstr(i) $($1) == ""
	   goto returnoptions
	endif
	set PlatformList = ^(PlatformsSupported, 1)
	Ifcontains(i) $($1) in $(PlatformList)
	   goto returnoptions
	else
	   set Status = STATUS_NOTSUPPORTED
	   goto finish_ReturnOptions
	endif
    else
	set Status = STATUS_NOLANGUAGE
	goto finish_ReturnOptions
    endif

returnoptions = +
    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL

finish_ReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)

[InstallOption]
	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
	set-subst LF = "\n"
	read-syms GeneralConstants
	read-syms FileConstants
;	set NetRuleSoftwareBindable = $($R1)
	read-syms DialogConstants$(!STF_LANGUAGE)
	ifstr(i) $(!NTN_Origination) == "NCPA"
	set Continue = "OK"
	endif
	read-syms FileConstants$(!STF_LANGUAGE)
	detect date
	set-title  $(Function$(Option)Title)
	set to   = Begin
	set from = Begin
	set CommonStatus = STATUS_SUCCESSFUL
	EndWait

Begin = +
	Ifstr(i) $(!NTN_InstallMode) == deinstall
	set StartLabel = removeadapter
	else-Ifstr(i) $(!NTN_InstallMode) == Update
	set StartLabel = UpgradeSoftware
	else-Ifstr(i) $(!NTN_InstallMode) == bind
	set StartLabel = bindingadapter
	else-Ifstr(i) $(!NTN_InstallMode) == configure
	;;        set CommonStatus = STATUS_REBOOT
	  Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
	       Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
	       ifint $($ShellCode) != $(!SHELL_CODE_OK)
		     goto ShellCodeError
	       endif
	       set Error = $($R0)
	       set from = end
	       set to = end
	       goto nonfatalinfo
	  else
	       set StartLabel = configureadapter
	  endif
	else
	set StartLabel = installadapter
	set OEM_ABANDON_OPTIONS = {}
	set OEM_ABANDON_SOFTWARE = FALSE
	set OEM_ABANDON_ON = TRUE
	endif

    Debug-Output "oemsetup.inf: =================================================="
    Debug-Output "oemsetup.inf: STF_CWDIR is: "$(!STF_CWDIR)
    Debug-Output "oemsetup.inf: STF_LANGUAGE is: "$(!STF_LANGUAGE)
    Debug-Output "oemsetup.inf: Option is: "$(Option)
    Debug-Output "oemsetup.inf: !STF_NCDETECT  is: "$(!STF_NCDETECT)
    Debug-Output "oemsetup.inf: !STF_NCOPTION  is: "$(!STF_NCOPTION)
    Debug-Output "oemsetup.inf: !STF_NCDETCARD is: "$(!STF_NCDETCARD)
    Debug-Output "oemsetup.inf: !STF_NCDETINFO is: "$(!STF_NCDETINFO)
    Debug-Output "oemsetup.inf: =================================================="

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

installadapter = +
	Debug-Output "$(InfFile) $(Option): Installadapter"
	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
	Ifstr $(KeyProduct) != $(KeyNull)
		CloseRegKey $(KeyProduct)
		ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
		   Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
		       $(ProductVersion)
		   ifint $($ShellCode) != $(!SHELL_CODE_OK)
	   	Debug-Output "ShellCode error: cannot get an error string."
		       goto ShellCodeError
		   endif
		   goto end
		else
		   Shell $(UtilityInf), CardExistedDlg
		   ifint $($ShellCode) != $(!SHELL_CODE_OK)
	     Debug-Output "ShellCode error: cannot get an error string."
		       goto ShellCodeError
		   endif
		   ifstr(i) $($R1) != "OK"
		       set CommonStatus = STATUS_USERCANCEL
		       goto end
		   endif
		   set OldVersionExisted = $(TRUE)
		endif
	Endif
	Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
	Ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Goto ShellCodeError
	Else-Ifstr(i) $($R0) == STATUS_FAILED
	Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	set Error = $($R0)
		Goto fatal
	Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
	   Goto successful
	Endif
	Set SrcDir = $($R1)
;;*** 
;; HACKHACK - Will copy when we have a help file!
;;     
;;	install "Install-Hlp"
;;
	Goto adapteroptions    

configureadapter = +
	Debug-Output "$(InfFile) $(Option): Configureadapter"

    set Error = "Cannot configure the software component"
    goto fatal
;
;
;	Ifstr(i) $(KeyProduct) == $(KeyNull)
;	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
;		Ifstr $(KeyProduct) == $(KeyNull)
;	    Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
;		   Goto fatalregistry
;		Endif
;	Endif
;	Shell $(UtilityInf) FindService, $(KeyProduct)
;	Ifint $($ShellCode) != $(!SHELL_CODE_OK)
;		Goto ShellCodeError
;	Endif
;	Ifstr(i) $($R0) != NO_ERROR
;		Goto fatalregistry
;	endif
;	set KeyParameters = $($R2)
;	CloseRegKey $($R1)
;	Ifstr $(KeyParameters) == $(KeyNull)
;		set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
;		goto fatalregistry
;	endif
;	set OldVersionExisted = $(TRUE)
;	set ValueName = ""
;	set ValueData = ""
;	set ValueStr  = ""
;	set ValueList = {}
;	EnumRegValue $(KeyParameters) ValueList
;    ForListDo $(ValueList)
;        set ValueItem = $($)
;        set ValueName = *($(ValueItem),1)
;        set ValueData = *($(ValueItem),4)
;        Ifstr(i) $(ValueName) == "IoBaseAddress"
;            set IOBaseAddrValue = $(ValueData)
;;;************************************************************************************************ 
;;; Specific to WinNT v3.5 and above..
;        else-ifstr(i) $(ValueName) == "BusType"
;            set BusInterfaceType = $(ValueData)
;        else-ifstr(i) $(ValueName) == "BusNumber"
;            set BusNumber = $(ValueData)
;;		else-ifstr(i) $(ValueName) == "ConnectionType"
;;		    set ConnectionIndex = $(ValueData)
;;		endif
;;;************************************************************************************************ 
;        endif
;    EndForListDo

adapteroptions = +
	Debug-Output "$(InfFile) $(Option): Adapteroptions"
	set from = adapteroptions
;	read-syms FileDependentDlg$(!STF_LANGUAGE)
;	SetHelpFile $(!STF_WINDOWSSYSPATH)"\"$(OptionHelpFile) $(MinHelpId) $(MaxHelpId) $(Help$(Option)Id)
;	ui start "InputDlg"
;	ifstr(i) $(DLGEVENT) == "CONTINUE"
;	   set ConnectionIndex = $(Combo1Out)
;	   ui pop 1
;	else-ifstr(i) $(DLGEVENT) == "BACK"
;	   set CommonStatus = STATUS_USERCANCEL
;	   ui pop 1
;	   goto end
;	else
;	   ui pop 1
;	   goto end
;	endif
;
;	set ConnectionValue = *($(ConnectionValues), ~($(ConnectionList),$(ConnectionIndex)))
	ifstr(i) $(!NTN_InstallMode) == configure
	   goto updateparameters
	endif

installproduct =+
	Debug-Output "$(InfFile) $(Option): installproduct"
    StartWait 
    set AdapterList = $($R1)
    ifint $(OldVersionExisted) == $(FALSE)
	Ifstr(i) $(DoCopy) == "YES"
	   Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
	   Ifint $($ShellCode) != $(!SHELL_CODE_OK)
	       Goto ShellCodeError
	   Else-Ifstr(i) $($R0) == STATUS_FAILED
	       Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
	       ifint $($ShellCode) != $(!SHELL_CODE_OK)
		  goto ShellCodeError
	       endif
	       set Error = $($R0)
	       Goto fatal
	   Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
	       Goto successful
	   Endif
	   Set SrcDir = $($R1)
	Endif
	install "Install-Option"
	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
	   Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
	   ifint $($ShellCode) != $(!SHELL_CODE_OK)
	       goto ShellCodeError
	   endif
	   set Error = $($R0)
	   goto fatal
	endif
	Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
	    $(ProductSoftwareName), +
	    $(ProductSoftwareName), +
	    $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
	    $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
	    $(NetEventDLL)
	Set OEM_ABANDON_SOFTWARE = TRUE
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
	    EndWait
	    CloseRegKey $($R1)
	    CloseRegKey $($R2)
	    CloseRegKey $($R3)
	    CloseRegKey $($R4)
	    CloseRegKey $($R5)
	    goto fatalregistry
	endif
	Set SoftProductKey      = $($R1)
	Set SoftNetRuleKey      = $($R2)
	Set SoftServiceKey      = $($R3)
	Set SoftParameterKey    = $($R4)
	Set SoftLinkageKey      = $($R5)
	set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
			   {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
			   {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
			   {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
			   {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
			   {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
			   {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
	    EndWait
	    CloseRegKey $(SoftProductKey)
	    CloseRegKey $(SoftNetRuleKey)
	    CloseRegKey $(SoftServiceKey)
	    CloseRegKey $(SoftParameterKey)
	    CloseRegKey $(SoftLinkageKey)
	    goto fatalregistry
	endif
	set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
			    {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
			    {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
			    {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
			    {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
			    {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
	Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)
	CloseRegKey $(SoftProductKey)
	CloseRegKey $(SoftNetRuleKey)
	CloseRegKey $(SoftServiceKey)
	CloseRegKey $(SoftParameterKey)
	CloseRegKey $(SoftLinkageKey)
	Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
	    EndWait
	    goto fatalregistry
	endif
    endif

	Debug-Output "$(InfFile) $(Option): Adapterlist = $(AdatperList)"
	ForListDo $(AdapterList)
	set BusNum = *($($),1)
		Debug-Output "$(InfFile) $(Option): BusNumber = $(BusNum)"
		Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
		ifint $($R4) != -1
			Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
		endif
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		set RegistryErrorIndex = $($R0)
		Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
			EndWait
			CloseRegKey $($R1)
			CloseRegKey $($R2)
			CloseRegKey $($R3)
			goto fatalregistry
		endif
		Set HardNetCardKey      = $($R1)
		Set HardNetRuleKey      = $($R2)
		Set HardParameterKey    = $($R3)
		set AdapterNumber = $($R4)
		set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
				    {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
				    {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
				    {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
				    {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
				    {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
		Shell  $(UtilityInf), AddValueList, $(HardNetCardKey), $(NewValueList)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
;;      Shell $(UtilityInf), GetBusTypeNum
;;      set BusTypeNum = $($R1)
;;      ifint $($ShellCode) != $(!SHELL_CODE_OK)
;;              goto ShellCodeError
;;      endif                            

		set BusTypeNum = 5		;
;;	    set SlotNum = ffffffff 	; Autoselect for now.
	    set SlotNum = -1	 	; Autoselect for now.
		set NTBusNumber = 0		;
	    set PCIBusNumber = 0   	; 
	    set BusMaster = "YES"  	; 
	    set Bus = "PCI"			;
		set CardType = 0	   	;
;here	    
		Set NewValueList =	{+
					{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
				        {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+   
					;;{BusNo,$(NoTitle),$(!REG_VT_DWORD),$(PCIBusNumber)},+
					{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(NTBusNumber)},+
					;;{BusMaster,$(NoTitle),$(!REG_VT_SZ),$(BusMaster)},+
					;;{Bus,$(NoTitle),$(!REG_VT_SZ),$(Bus)},+
					{CardType,$(NoTitle),$(!REG_VT_DWORD),$(CardType)},+
					;;{Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)}+
					}

		Debug-Output "$(InfFile) $(Option): HardwareRuleKey = $(NewValueList)"
		Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif

;;		set NewValueList = {{ConnectionType,$(NoTitle),$(!REG_VT_DWORD),$(ConnectionValue)}}
;;		Shell  $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
;;		ifint $($ShellCode) != $(!SHELL_CODE_OK)
;;		      goto ShellCodeError
;;		endif
	
		set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
		set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
		set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardware$(Option)Type)},+
				    {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
				    {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardware$(Option)Class)}, +
				    {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
                    
                    
		Debug-Output "$(InfFile) $(Option): HardwareRuleKey = $(NewValueList)"
		Shell  $(UtilityInf), AddValueList, $(HardNetRuleKey), $(NewValueList)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		CloseRegKey $(HardNetCardKey)
		CloseRegKey $(HardNetRuleKey)
		CloseRegKey $(HardParameterKey)
		
    EndForListDo
    EndWait
    goto successful

updateparameters =+
	Debug-Output "$(InfFile) $(Option): Updateparameters"
    set HardParameterKey    = $($R3)
    ;;
    ;; Make changes to the reg. for the given instance of the adapter!
    ;;
    ;; HACKHACK - These are here until we get the detection DLL.
    ;; 
	set BusTypeNum = 5		;
    set SlotNum = -1		; Autoselect for now.
	set NTBusNumber = 0		;
    set PCIBusNumber = 0   	; 
    set BusMaster = "YES"  	; 
    set Bus = "PCI"			;
	set CardType = 0	   	;
;here    
    Set NewValueList =	{+
					{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
 					{MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+   
					;;{BusNo,$(NoTitle),$(!REG_VT_DWORD),$(PCIBusNumber)},+
					{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(NTBusNumber)},+
					;;{BusMaster,$(NoTitle),$(!REG_VT_SZ),$(BusMaster)},+
					;;{Bus,$(NoTitle),$(!REG_VT_SZ),$(Bus)},+
					{CardType,$(NoTitle),$(!REG_VT_DWORD),$(CardType)},+
					;;{Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)}+
					}

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

bindingadapter =+
	Debug-Output "$(InfFile) $(Option): bindingadapter"
    set Error = "Binding: Sorry, not yet implemented."
    goto fatal

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

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

successful = +
	Debug-Output "$(InfFile) $(Option): Successful"
    goto end

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

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

nonfatalinfo = +
	Debug-Output "$(InfFile) $(Option): nonfatalinfo"
    Set CommonStatus = STATUS_USERCANCEL
    Set Severity = STATUS
    goto nonfatalmsg

nonfatal = +
	Debug-Output "$(InfFile) $(Option): nonfatal"
    Set Severity = NONFATAL
    goto nonfatalmsg

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

fatalregistry = +
	Debug-Output "$(InfFile) $(Option): fatalregistry"
    Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
    endif
    set Error = $($R0)
    goto fatal

fatal = +
	Debug-Output "$(InfFile) $(Option): 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 = +
	Debug-Output "$(InfFile) $(Option): 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 "$(InfFile) $(Option): Setfailed"
    set CommonStatus = STATUS_FAILED
    ifstr(i) $(OEM_ABANDON_ON) == TRUE
	set OEM_ABANDON_ON = FALSE
	goto abandon
    endif
    goto end

end = +
    goto term

term = +
    Return $(CommonStatus)
    
[Install-Option]
    set STF_VITAL = ""
    ifstr(i) $(AddCopy) == "YES"
	AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
    endif
    ifstr(i) $(DoCopy) == "YES"
       set !STF_NCPA_FLUSH_COPYLIST = TRUE
       CopyFilesInCopyList
    endif
    Exit
    
[Install-Hlp]
   set STF_VITAL = ""
   AddSectionFilesToCopyList Files-Hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList
   Exit
   
[Install-Update]
   set STF_VITAL        = ""
   set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
   AddSectionFilesToCopyList Files-Hlp $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   CopyFilesInCopyList
   exit

[Source Media Descriptions]
    1  = "Windows NT Setup Disk #1"  
    2  = "3Com Etherdisk for Fast Etherlink/Etherlink III"

[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386

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

[Files-Hlp]
2,3C59x..hlp , SIZE=88888

;
; Driver files
;
[Files-3C595]
2,EL59x.SYS , SIZE=88888
[Files-3C597]
2,EL59x.SYS , SIZE=88888
[Files-3C590]
2,EL59x.SYS , SIZE=88888
[Files-3C592]
2,EL59x.SYS , SIZE=88888

[LanguagesSupported]
    ENG

[OptionsTextENG]
    3C595	= "3Com Fast EtherLink PCI 10/100BASE-T Adapter (3C595)"
;    3C597	= "3Com Fast EtherLink EISA 10/100BASE-T Adapter (3C597)"
    3C590	= "3Com EtherLink III PCI Bus-Master Adapter (3C590)"
;    3C592	= "3Com EtherLink III PCI Bus-Master Adapter (3C592)"

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

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

[DialogConstantsENG]
Help        = "&Help"
Exit        = "Cancel"
OK          = "OK"
HelpContext = ""
Continue    = "Continue"
Cancel      = "Cancel"

;[FileDependentDlgENG]
;	Combo1Label = "&Connection Type:"
;	Combo1List = $(ConnectionList)
;	Combo1Out  = $(ConnectionValue)
;	ComboListItemsIn  = {Combo1List}
;	ComboListItemsOut = {Combo1Out}
;	DlgTemplate = "ADAP_PROTO_COMBO" 
;	DlgType = "Combination"
;	Caption = $(Function$(Option)Title)
;	EditTextLim = ""
;	CBOptionsGreyed = {}
;	MinHelpId = 10
;	MaxHelpId = 1050 
;	HelpContext = $(Help$(Option)Id)

;[FileDependentDlgENG]
;GroupLabel = "Optimization:"
;Radio1 = "&Minimize Memory Used"
;Radio2 = "&Balance"
;Radio3 = "M&aximize Throughput && Connections"
;DlgType = "Radio"
;DlgTemplate = "ST"
;Caption = $(FunctionTitle)
;OptionsGreyed = {}
;HelpContext = $(!IDH_DB_OEMNXPNB_INS)

