OEMSETUP.INF Driver File Contents (3com_3cr990b97_Network_Win_x64_x86.exe)

[IntstallOptions]
 Install_3NIC_Diag = "NO"
 Install_Shortcuts = "NO"
 Install_Installer = "NO"
 Enable_TrayIcon   = "NO"

[Identification]
 OptionType = NetAdapter

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

[Options]
 3C99x1

[DriverFilenameConstantsNDIS3]
 NetEventDLL = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\drivers\EL99Xnd3.sys"
 ProductSoftwareImagePath = "%SystemRoot%\System32\drivers\EL99Xnd3.sys"
 ProductSoftwareUpgradePath = "\SystemRoot\System32\drivers\EL99Xnd3.sys"

[DriverFilenameConstantsNDIS4]
 NetEventDLL = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\drivers\EL99Xnd4.sys"
 ProductSoftwareImagePath = "%SystemRoot%\System32\drivers\EL99Xnd4.sys"
 ProductSoftwareUpgradePath = "\SystemRoot\System32\drivers\EL99Xnd4.sys"


[FileConstants]

UtilityInf = "UTILITY.INF"
subroutineinf = "SUBROUTN.INF"
SoftwareType = "driver"
Exit_Code = 0
IoLogMsgDLL = "%SystemRoot%\System32\IoLogMsg.dll"
TrayIconExe = "TCAUDIAG.EXE"
NetworkCardsKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"
Manufacturer = "3Com"
ProductMajorVersion = "1"
ProductMinorVersion = "0"
ProductReview = "1"
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)
ProductSoftwareName = "EL99X"
NetRuleSoftwareType = "EL99XSys ndisDriver EL99XDriver"
NetRuleSoftwareUse = $(SoftwareType)
NetRuleSoftwareBindForm = """EL99XSys"" yes no container"
NetRuleSoftwareClass = {"EL99XDriver basic"}
NetRuleSoftwareBindable = {"EL99XDriver EL99XAdapter non exclusive 100"}
ProductHardware = "EL99X"
ProductHardwareName = "EL99X"
NetRuleHardwareBindForm = " yes yes container"
DIAGCARDTYPE = "TCAUM99X"

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

FunctionTitle = "3Com 3C99X Adapter Card Setup"
ProductSoftwareDescription = "3Com 3C99X Adapter Driver"
ProductSoftwareTitle = "3Com 3C99X Adapter Driver"
3CNUMBER = "3C99X"

GROUP_NAME = "3Com 3C990/3CR990 Family"
NetRuleHardwareType = "EL99X EL99XAdapter"
NetRuleHardwareClass = {"EL99XAdapter basic"}

ProductHardware39170Title 		= "3Com 10/100 PCI NIC w/3XP (3CR990-TX-95)" ; (9902)
ProductHardware39170Description 	= "3Com 10/100 PCI NIC w/3XP (3CR990-TX-95)" ; (9902)

ProductHardware39171Title 		= "3Com 10/100 PCI NIC w/3XP (3CR990-TX-97)" ; (9903)
ProductHardware39171Description 	= "3Com 10/100 PCI NIC w/3XP (3CR990-TX-97)" ; (9903)

ProductHardware39172_1000Title 		= "3Com 10/100 Secure NIC (3CR990B-97)" ; (9904 SubSys 1000)
ProductHardware39172_1000Description 	= "3Com 10/100 Secure NIC (3CR990B-97)" ; (9904 SubSys 1000)

ProductHardware39172_1102Title 		= "3Com 100 Secure Fiber NIC (3CR990B-FX-97)" ; (9904 SubSys 1102)
ProductHardware39172_1102Description 	= "3Com 100 Secure Fiber NIC (3CR990B-FX-97)" ; (9904 SubSys 1102)

ProductHardware39172_2000Title 		= "3Com 10/100 Secure Server NIC (3CR990B-97)" ; (9904 SubSys 2000)
ProductHardware39172_2000Description 	= "3Com 10/100 Secure Server NIC (3CR990B-97)" ; (9904 SubSys 2000)

ProductHardware39173_1102Title		= "3Com 100 Secure Fiber NIC (3CR990-FX-97)" ; (9905 Subsys 1102)
ProductHardware39173_1102Description	= "3Com 100 Secure Fiber NIC (3CR990-FX-97)" ; (9905 Subsys 1102)

ProductHardware39176Title 		= "3Com 10/100 PCI Server NIC w/3XP (3CR990SVR95)" ; (9908)
ProductHardware39176Description 	= "3Com 10/100 PCI Server NIC w/3XP (3CR990SVR95)" ; (9908)

ProductHardware39177Title 		= "3Com 10/100 PCI Server NIC w/3XP (3CR990SVR97)" ; (9909)
ProductHardware39177Description 	= "3Com 10/100 PCI Server NIC w/3XP (3CR990SVR97)" ; (9909)



AdapterType = 5
CFIDList = {39170, 39171, 39172, 39173, 39176, 39177, 39178}

TrayIconExe = TCAUDIAG
InstallerExe = TCAUDIAG
NT4_CFG = NT4_CFG
DiagExe = tcaudiag
UnInstallerEXE = UN3C99xA



[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
NT350VersionConstant = "3.50"
NT310VersionConstant = "3.10"
NT400VersionConstant = "(4.0)"
INF_PROCESSER = "I386"
DIAGCARDTYPE = "TCAUM99x"


enum					= "enum"
int					= "int"
long					= "long"

disable					= "DISABLE"
enable					= "ENABLE"
disable_value				= "DISABLE"
enable_value				= "ENABLE"
basic					= "BASIC"
enhanced				= "ENHANCED"
media_select      			= "Media Select"
media_auto        			= "Auto-Negotiate"
media_10_full     			= "10 Mbps, Full-Duplex"
media_10_half     			= "10 Mbps, Half-Duplex"
media_100_full   			= "100 Mbps, Full-Duplex"
media_100_half    			= "100 Mbps, Half-Duplex"
media_default     			= "HardwareDefault"
flow_control				= "Flow Control"
rom_boot				= "HardwareDefault"
self_healing				= "Self Healing"
num_tx_entries				= "Descriptors: Transmit"
num_rx_entries				= "Descriptors: Receive"
ipsec_offload				= "Offload: IPSec"
tcpseg_offload				= "Offload: TCP Segmentation"
checksum_offload			= "Offload: IP Checksum"
vlan_offload				= "Offload: 802.1p"
GenTxThreshold				= "Transmit broadcast limiting"


[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)





[DiagRegistry]

OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE" $(!REG_KEY_WRITE) SOFTKEY
OpenRegKey $(SOFTKEY) "" "3Com" $(!REG_KEY_WRITE) COMKEY
ifstr $(COMKEY) == ""
	CreateRegKey $(SOFTKEY) {"3Com", 0, GenericClass} "" $(!REG_KEY_WRITE) "" COMKEY
endif

;;;;;;;; Write Diag key in \EL99X so that the uninstaller can check when there is no card left.
ifstr $(COMKEY) != ""
	OpenRegKey $(COMKEY) "" "EL99X" $(!REG_KEY_WRITE) 3CSFTWRKEY
;;;;;;;; By the time DiagRestry section is called, the software key EL99X should be there
	ifstr $(3CSFTWRKEY) != ""
		SetRegValue $(3CSFTWRKEY) {"TCAUDIAG", 0, $(!REG_VT_SZ), "TCAUM99X"}
;;;;;;; For 90x compatibity, 90x card removal won't delete diag when 99x is still there
		SetRegValue $(3CSFTWRKEY) {"3CUNINSTALL", 0, $(!REG_VT_SZ), "3C90X"}
		CloseRegKey $(3CSFTWRKEY)
	endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


OpenRegKey $(COMKEY) "" "TCAUDIAG" $(!REG_KEY_WRITE) TCAUDIAGKEY
ifstr $(TCAUDIAGKEY) == ""
	CreateRegKey $(COMKEY) {"TCAUDIAG", 0, GenericClass} "" $(!REG_KEY_WRITE) "" TCAUDIAGKEY
endif

OpenRegKey $(TCAUDIAGKEY) "" "TCAUM99X" $(!REG_KEY_WRITE) TCAUM99XKEY
ifstr $(TCAUM99XKEY) == ""
	CreateRegKey $(TCAUDIAGKEY) {"TCAUM99X", 0, GenericClass} "" $(!REG_KEY_WRITE) "" TCAUM99XKEY
endif

SetRegValue $(TCAUM99XKEY) {"DriverNames", 0, $(!REG_VT_SZ), "SYSTEM\EL99XND3.SYS;SYSTEM\EL99XND4.SYS"}

OpenRegKey $(TCAUM99XKEY) "" "Extensions" $(!REG_KEY_WRITE) ExtensionsKEY
ifstr $(ExtensionsKEY) == ""
	CreateRegKey $(TCAUM99XKEY) {"Extensions", 0, GenericClass} "" $(!REG_KEY_WRITE) "" ExtensionsKEY
endif


CloseRegKey $(SOFTKEY)
CloseRegKey $(COMKEY)
CloseRegKey $(TCAUDIAGKEY)
CloseRegKey $(TCAUM99XKEY)

return





[InstallOption]

 set CurrLang = $($0)
 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 IntstallOptions
 read-syms GeneralConstants
 read-syms FileConstants
 read-syms DialogConstants$(!STF_LANGUAGE)

 ifstr(i) $(!NTN_Origination) == "NCPA"
 	set Continue = "OK"
 endif

 read-syms FileConstants$(!STF_LANGUAGE)
 detect date
 set-title $(FunctionTitle)
 set to = Begin
 set from = Begin
 set CommonStatus = STATUS_SUCCESSFUL
 EndWait

Begin = +


 set CurrentVersionValue = ""
 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows Nt\CurrentVersion" $(!REG_KEY_READ) KeyNt

 Ifstr(i) $(KeyNt) != ""
 	GetRegValue $(KeyNt) "CurrentVersion" CurrentVersionValue
 	Debug-Output "$(InfFile) : WinNT CurrentVersion ="$(CurrentVersionValue)
 	CloseRegKey $(KeyNt)
 Endif

 ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)
 	set NDIS_VER = NDIS4
 else
 	set NDIS_VER = NDIS3
 endif

 read-syms DriverFilenameConstants$(NDIS_VER)

 ifstr(i) (*($(CurrentVersionValue),4)) == $(NT310VersionConstant)
 	Debug-Output "$(InfFile) : Configureadapter"
 	set Error = "Windows NT v3.10 is not support by this product"
 	goto fatal
 endif

 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
 	ifstr $(!STF_PLATFORM) == $(INF_PROCESSER)


;*------------------------- Kiefer Modification ----------------------------------------------------
		
		ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)
			OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG\TCAUM99X" $(!REG_KEY_READ) TCAUDIAGKEY
 			ifstr $(TCAUDIAGKEY) != ""	
				; UN-Block the spawning of TD-Diags upon the "Properties" event in the NCP
				StartDetachedProcess ExitCode "Windows Directory" "" $(DiagExe).EXE
			else
				OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(!REG_KEY_ALL_ACCESS) NICKey
   				Ifstr(i) $(NICKey) != "" ; key exists
     					GetRegValue $(NICKey) "ServiceName" ServiceNameList
		     			;Determine the Service Name and put in var NICServiceName 
    					set NICServiceName = *($(ServiceNameList), 4)
				endif
				CloseRegKey $(NICKey)

				;"Windows Directory" being the system32 dir
				RunProgram ExitCode "Windows Directory" "" $(NT4_CFG).EXE -ServiceName_$(NICServiceName)

				;  RunProgram ExitCode "Windows Directory" "" $(InstallerExe).EXE
 				set CommonStatus = STATUS_USERCANCEL
 				goto end
 			endif
			CloseRegKey $(TCAUDIAGKEY)
			set CommonStatus = STATUS_USERCANCEL
			goto end
	
		else
			set StartLabel = configureadapter
		endif
;*--------------------------Kiefer Modification end ----------------------------------------------------


	else-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 "$(InfFile) : =================================================="
 Debug-Output "$(InfFile) : STF_CWDIR is: "$(!STF_CWDIR)
 Debug-Output "$(InfFile) : STF_SRCDIR is: "$(!STF_SRCDIR)
 Debug-Output "$(InfFile) : STF_LANGUAGE is: "$(!STF_LANGUAGE)
 Debug-Output "$(InfFile) : Option is: "$(Option)
 Debug-Output "$(InfFile) : !STF_NCN_InstallMode is:"$(!NTN_InstallMode)
 Debug-Output "$(InfFile) : !STF_NCDETECT is: "$(!STF_NCDETECT)
 Debug-Output "$(InfFile) : !STF_NCOPTION is: "$(!STF_NCOPTION)
 Debug-Output "$(InfFile) : !STF_NCDETCARD is: "$(!STF_NCDETCARD)
 Debug-Output "$(InfFile) : !STF_NCDETINFO is: "$(!STF_NCDETINFO)
 Debug-Output "$(InfFile) : !STF_GUI_UNATTENDED is: "$(!STF_GUI_UNATTENDED)
 Debug-Output "$(InfFile) : !STF_BusType is $(!STF_BUSTYPE)"
 Debug-Output "$(InfFile) : !STF_BusTypeList is $(!STF_BUSTYPELIST)"
 Debug-Output "$(InfFile) : =================================================="

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

installadapter = +

 Debug-Output "$(InfFile) : Installadapter"
 OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(!REG_KEY_READ) KeyProduct

Ifstr $(KeyProduct) != $(KeyNull)
 	CloseRegKey $(KeyProduct)

 	ifstr(i) !(NTN_RegBase) == $(ProductKeyName)

 		ifint $($ShellCode) != $(!SHELL_CODE_OK)
 			Debug-Output "ShellCode error: cannot get an error string."
 			goto ShellCodeError
 		endif

 		goto end
 	else

 		set OldVersionExisted = $(TRUE)
	endif
Endif

 Goto adapteroptions



configureadapter = +

 Debug-Output "$(InfFile) : Configureadapter"
 set Error = "Cannot configure the software component"
 goto fatal



adapteroptions = +

 Debug-Output "$(InfFile) : Adapteroptions"
 set from = adapteroptions

 ifstr(i) $(!NTN_InstallMode) == configure
 	goto updateparameters
 endif



installproduct =+

install "Install-OTHER"
install "Install-NDIS4"

 Debug-Output "$(InfFile) : installproduct"
 StartWait
 set AdapterList = $($R1)
 OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductHardwareName) $(!REG_KEY_READ) KeyNt
 CloseRegKey $(KeyNt)

 Ifstr(i) $(KeyNt) == ""
 	Debug-Output "$(InfFile) : AddSoftwareComponent"
 	Debug-Output "$(InfFile) : --> $(Manufacturer)"
 	Debug-Output "$(InfFile) : --> $(ProductSoftwareName)"
 	Debug-Output "$(InfFile) : --> $(ProductSoftwareTitle)"
 	Debug-Output "$(InfFile) : --> $(STF_CONTEXTINFNAME)"
 	Debug-Output "$(InfFile) : --> $(ProductSoftwareImagePath)"
 	Debug-Output "$(InfFile) : --> $(NetEventDLL)"

 	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)},+
 	 {Review,$(NoTitle),$(!REG_VT_DWORD),$(ProductReview)},+
 	 {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
 	 {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
 	 ;{EDVersion,$(NoTitle),$(!REG_VT_SZ),$(EtherDiskVersion)}

	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)


	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


	Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
 		EndWait
	 	goto fatalregistry
	endif

 endif

 Debug-Output "$(InfFile) : About to look for 3Com PCI Cards"


 set TargetVersion = *($(CurrentVersionValue),4)
 Debug-Output "$(InfFile) : Current Version:"$(TargetVersion)

 ifstr $(TargetVersion) == $(NT350VersionConstant)
 	Debug-Output "Running on WindowsNT 3.50"
	 set Version350 = $(TRUE)
 else
 	Debug-Output "Running on WindowsNT 3.51 or higher"
 	set Version350 = $(FALSE)
 endif

 ifint $(Version350) == $(TRUE)
 	Debug-Output "Running on WindowsNT v3.50, Not using PCI Detection!!!"

 	ifstr $(!STF_GUI_UNATTENDED) == "YES"
 		Debug-Output "$(InfFile) : Running in GUI unattended mode"

 		ifstr(i) $(!AutoNetInterfaceType) != ""
 			set BusInterfaceType = $(!AutoNetInterfaceType)
 		else
			 set BusInterfaceType = 5
		endif

 		ifstr(i) $(!AutoNetBusNumber) != ""
			set BusNumber = $(!AutoNetBusNumber)
		else
			set BusNumber = 0
		endif

		set NTDetected = $(FALSE)
		set AdapterList = {{$(Option),0, XXXXX}}
		Debug-Output "$(InfFile) : BusInterfaceType = $(BusInterfaceType)"
		Debug-Output "$(InfFile) : BusNumber = $(BusNumber)"
	else
		Debug-Output "$(InfFile) : Running 3.50 Bus Dialog"
		set BusInterfaceType = 5
		set BusNumber = 0
		set NTDetected = $(FALSE)
		Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardwareXXXXXDescription) $(BusInterfaceType) $(BusNumber)

		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error."
			goto ShellCodeError
		endif

		set BusInterfaceType = $($R1)
		set BusNumber = $($R2)
		set AdapterList = {{$(Option),0, XXXXX}}
		Debug-Output "$(InfFile) : BusInterfaceType = $(BusInterfaceType)"
		Debug-Output "$(InfFile) : BusNumber = $(BusNumber)"
	endif
else
	Debug-Output "$(InfFile) : Running 3.51 or higher using PCI Dectection"
 	set NTDetected = $(TRUE)
	set Vendor = 4279
	set CFIDList = $(CFIDList)
	Debug-Output "$(InfFile) : VendorID = $(Vendor)"
	Debug-Output "$(InfFile) : CFIDList = $(CFIDList)"
	set AdapterList = {}

	ForListDo $(CFIDList)
		set-div CFID = $($) 1
		set DeviceID = $($)
		Shell $(UtilityInf), GetPCIInformation, $(Vendor) $(CFID)

		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif

		ForListDo $($R0)
			set AdapterList = >($(AdapterList), {*($($),1), *($($),2), $(DeviceID)})
		EndForListDo
	EndForListDo

	ifstr(i) $(AdapterList) == {}
		set Error = $(CANNOT_FIND_ANY_CARD)
		set CommonStatus = USER_CANCEL
		set from = end
		goto nonfatal
	endif

endif


set ToInstallList = {}
Debug-Output "$(InfFile) : Adapterlist = $(AdatperList)"

ForListDo $(AdapterList)

	ifint $(NTDetected) == $(TRUE)
		set DetectedBusNum = *($($),1)
		set DetectedSlotNum = *($($),2)
		set DeviceID = *($($),3)


		; 1.) Call Executable to populate the reg key "SOFTWARE\3Com\PCI_DATA" with the PCI data the current instance of the NIC
		RunProgram ExitCode  "" "" $(SrcDir)PCI_DATA.EXE /$(DetectedBusNum) /$(DetectedSlotNum) 


		; 2.) Check open key for the data of interest. *** DeviceID, SubSystemID, SubVendorID, and VendorID are present
		
		OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\PCI_DATA" $(!REG_KEY_ALL_ACCESS) PCI_DATA_KEY 

		GetRegValue $(PCI_DATA_KEY) "DeviceID" Array_DeviceID
		GetRegValue $(PCI_DATA_KEY) "VendorID" Array_VendorID
		GetRegValue $(PCI_DATA_KEY) "SubSystemID" Array_SubSystemID
		GetRegValue $(PCI_DATA_KEY) "SubVendorID" Array_SubVendorID

		Set Value_DeviceID 	= *($(Array_DeviceID),4)
		Set Value_VendorID 	= *($(Array_VendorID),4)
		Set Value_SubSystemID 	= *($(Array_SubSystemID),4)
		Set Value_SubVendorID 	= *($(Array_SubVendorID),4)

		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected DeviceID is ("$(Value_DeviceID)")"
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected VendorID is ("$(Value_VendorID)")"
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubSystemID is ("$(Value_SubSystemID)")"
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubVendorID is ("$(Value_SubVendorID)")"

		; 3.)	Stepthrough logic to determine card type

		; 3Com Product
		ifstr(i) $(Value_VendorID) == "10B7"


		; 3C9904 ****************************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Detected_SubSystemID) != "1000"
				ifstr(i) $(Value_SubSystemID) != "2000"
					set DeviceID = 39172
				endif
			endif
		endif

		; 3C9904 Server / CLient

		; 3C9904 (Client) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Value_SubSystemID) == "1000"
				set DeviceID = 39172_1000
			endif
		endif

		; 3C9904 (Secure) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Value_SubSystemID) == "1102"
				set DeviceID = 39172_1102
			endif
		endif

		; 3C9904 (Server) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Value_SubSystemID) == "2000"
				set DeviceID = 39172_2000
			endif
		endif


		; 3C9905 Fiber ****************************************************************
		ifstr(i) $(Value_DeviceID) == "9905"
			ifstr(i) $(Detected_SubSystemID) != "1102"
				ifstr(i) $(Value_SubSystemID) != "2102"
					set DeviceID = 39173
				endif
			endif
		endif

		; 3C9905 Fiber Server / Client

		; 3C9905 (Fiber Client) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9905"
			ifstr(i) $(Value_SubSystemID) == "1102"
				set DeviceID = 39173_1102
			endif
		endif

		; 3C9905 (Fiber Server) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9905"
			ifstr(i) $(Value_SubSystemID) == "2102"
				set DeviceID = 39173_2102
			endif
		endif
	
	endif


	CloseRegKey $(PCI_DATA_KEY)
	


		Debug-Output "$(InfFile) : DetectedBusNumber = $(DetectedBusNum)"
		Debug-Output "$(InfFile) : DetectedSlotNum = $(DetectedSlotNum)"

		Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(DetectedBusNum), +
		 $(DetectedSlotNum), $(ProductHardware$(DeviceID)Description), $(ProductHardwareName)

		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif

		ifstr $($R0) != "NO_ERROR"
			set Error = $($R0)
			goto fatal
		endif

		ifstr(i) $($R1) != "YES"
			set ToInstallList = >($(ToInstallList), $($))
		endif
	endif
EndForListDo


ifstr(i) $(ToInstallList) == {}
	set Error = $(CANNOT_FIND_ANY_UNINSTALLED_CARD)
	set from = end
	set CommonStatus = USER_CANCEL
	goto nonfatal
endif

ForListDo $(ToInstallList)
	set DetectedBusNum = *($($),1)
	set DetectedSlotNum = *($($),2)
	set DeviceID = *($($),3)



		; 1.) Call Executable to populate the reg key "SOFTWARE\3Com\PCI_DATA" with the PCI data the current instance of the NIC
		RunProgram ExitCode  "" "" $(SrcDir)PCI_DATA.EXE /$(DetectedBusNum) /$(DetectedSlotNum) 


		; 2.) Check open key for the data of interest. *** DeviceID, SubSystemID, SubVendorID, and VendorID are present
		
		OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\PCI_DATA" $(!REG_KEY_ALL_ACCESS) PCI_DATA_KEY 

		GetRegValue $(PCI_DATA_KEY) "DeviceID" Array_DeviceID
		GetRegValue $(PCI_DATA_KEY) "VendorID" Array_VendorID
		GetRegValue $(PCI_DATA_KEY) "SubSystemID" Array_SubSystemID
		GetRegValue $(PCI_DATA_KEY) "SubVendorID" Array_SubVendorID

		Set Value_DeviceID 	= *($(Array_DeviceID),4)
		Set Value_VendorID 	= *($(Array_VendorID),4)
		Set Value_SubSystemID 	= *($(Array_SubSystemID),4)
		Set Value_SubVendorID 	= *($(Array_SubVendorID),4)

		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected DeviceID is ("$(Value_DeviceID)")"
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected VendorID is ("$(Value_VendorID)")"
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubSystemID is ("$(Value_SubSystemID)")"
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubVendorID is ("$(Value_SubVendorID)")"

		; 3.)	Stepthrough logic to determine card type



		; 3Com Product
		ifstr(i) $(Value_VendorID) == "10B7"


		; 3C9904 ****************************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Detected_SubSystemID) != "1000"
				ifstr(i) $(Value_SubSystemID) != "2000"
					set DeviceID = 39172
				endif
			endif
		endif

		; 3C9904 Server / CLient

		; 3C9904 (Client) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Value_SubSystemID) == "1000"
				set DeviceID = 39172_1000
			endif
		endif

		; 3C9904 (Secure) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Value_SubSystemID) == "1102"
				set DeviceID = 39172_1102
			endif
		endif

		; 3C9904 (Server) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9904"
			ifstr(i) $(Value_SubSystemID) == "2000"
				set DeviceID = 39172_2000
			endif
		endif


		; 3C9905 Fiber ****************************************************************
		ifstr(i) $(Value_DeviceID) == "9905"
			ifstr(i) $(Detected_SubSystemID) != "1102"
				ifstr(i) $(Value_SubSystemID) != "2102"
					set DeviceID = 39173
				endif
			endif
		endif

		; 3C9905 Fiber Server / Client

		; 3C9905 (Fiber Client) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9905"
			ifstr(i) $(Value_SubSystemID) == "1102"
				set DeviceID = 39173_1102
			endif
		endif

		; 3C9905 (Fiber Server) ********************************************************
		ifstr(i) $(Value_DeviceID) == "9905"
			ifstr(i) $(Value_SubSystemID) == "2102"
				set DeviceID = 39173_2102
			endif
		endif
	
	endif



	CloseRegKey $(PCI_DATA_KEY)
	

	Debug-Output "$(InfFile) : DetectedBusNumber = $(DetectedBusNum)"
	Debug-Output "$(InfFile) : DetectedSlotNum = $(DetectedSlotNum)"
	Debug-Output "$(InfFile) : Installing Card at $(DetectedBusNum):$(DetectedSlotNum)!"
	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$(DeviceID)Title)},+
	 {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(DeviceID)Description)},+
	 {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
	 {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
	 {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
	 ;{EDVersion,$(NoTitle),$(!REG_VT_SZ),$(EtherDiskVersion)}
	Shell $(UtilityInf), AddValueList, $(HardNetCardKey), $(NewValueList)

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	set BusTypeNum = 5

	ifstr(i) $(DeviceID) == "36944"
		set CardType = 0
	else-ifstr(i) $(DeviceID) == "36945"
		set CardType = 0
	else-ifstr(i) $(DeviceID) == "36949"
		set CardType = 0
	else
		set CardType = 2
	endif


	ifint $(NTDetected) == $(TRUE)
		set BusNumber = $(DetectedBusNum)
		set SlotNum = $(DetectedSlotNum)
		set BusInterfaceType = $(BusTypeNum)
		set WakeOnLan = YES
		set WakeOnLink = NO
		set FlowControl = ENABLE
; for Typhoon server card (SHD)
		set SelfHealing = BASIC
		set SHEnhanced = ENHANCED
                set SHD_Basic = "Self Healing"
                set SHD_Enhanced = "SH - Enhanced"
;
		Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"


;-------------------Maanasa--------------------------
	ifstr(i) $(DeviceID) == "39173FiberServer"
	 		
		Set NewValueList = {+
	 	 		{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
	 	 		{Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)},+
	 	 		{FlowControl,$(NoTitle),$(!REG_VT_SZ),$(FlowControl)},+
 		 		{NDIS_VERSION,$(NoTitle),$(!REG_VT_SZ),"NDIS 4"},+
		 		{XCVR_SELECT,$(NoTitle),$(!REG_VT_SZ),"HWDEFAULT"},+
		 		{MBADefaultBoot,$(NoTitle),$(!REG_VT_SZ),"HWDEFAULT"},+
		 		{IPSecOffload,$(NoTitle),$(!REG_VT_SZ),"ENABLE"},+
		 		{TCPSegOffload,$(NoTitle),$(!REG_VT_SZ),"ENABLE"},+
		 		{ChecksumOffload,$(NoTitle),$(!REG_VT_SZ),"ENABLE"},+
		 		{8021pOffload,$(NoTitle),$(!REG_VT_SZ),"DISABLE"},+
		 		{SelfHealing,$(NoTitle),$(!REG_VT_SZ),"BASIC"},+
		 		{PerfTuning,$(NoTitle),$(!REG_VT_SZ),"DISABLE"},+
		 		{NoTxEntries,$(NoTitle),$(!REG_VT_SZ),"256"},+
		 		{NoRxEntries,$(NoTitle),$(!REG_VT_SZ),"64"},+
				}
	else
		Set NewValueList = {+
	 	 		{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
	 	 		{Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)},+
	 	 		{FlowControl,$(NoTitle),$(!REG_VT_SZ),$(FlowControl)},+
 		 		{NDIS_VERSION,$(NoTitle),$(!REG_VT_SZ),"NDIS 4"},+
		 		{XCVR_SELECT,$(NoTitle),$(!REG_VT_SZ),"HWDEFAULT"},+
		 		{MBADefaultBoot,$(NoTitle),$(!REG_VT_SZ),"HWDEFAULT"},+
		 		{IPSecOffload,$(NoTitle),$(!REG_VT_SZ),"ENABLE"},+
		 		{TCPSegOffload,$(NoTitle),$(!REG_VT_SZ),"ENABLE"},+
		 		{ChecksumOffload,$(NoTitle),$(!REG_VT_SZ),"ENABLE"},+
		 		{8021pOffload,$(NoTitle),$(!REG_VT_SZ),"DISABLE"},+
		 		{SelfHealing,$(NoTitle),$(!REG_VT_SZ),"BASIC"},+
		 		{PerfTuning,$(NoTitle),$(!REG_VT_SZ),"DISABLE"},+
		 		{NoTxEntries,$(NoTitle),$(!REG_VT_SZ),"256"},+
		 		{NoRxEntries,$(NoTitle),$(!REG_VT_SZ),"64"},+
				}
	endif

;-------------------------end Maanasa------------------------------------------------

	 	Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"
	 	Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)

	 	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	 		goto ShellCodeError
	 	endif





;Paul

OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE" $(!REG_KEY_WRITE) SOFTKEY
OpenRegKey $(SOFTKEY) "" "3Com" $(!REG_KEY_WRITE) COMKEY


; If the 3Com Key doesn't exists, create one.
ifstr $(COMKEY) == ""
	CreateRegKey $(SOFTKEY) {"3Com", 0, GenericClass} "" $(!REG_KEY_WRITE) "" COMKEY
endif


; Create a SubKey using the servicename and instance of a NIC instance within the PC
;CreateRegKey $(COMKEY) {$(Driver), 0, GenericClass} "" $(!REG_KEY_WRITE) "" THISNIC


OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_ALL_ACCESS) ServicesKey
Ifstr(i) $(ServicesKey) != "" ; key exists

EnumRegKey $(ServicesKey) DriverList

ForListDo $(DriverList)

; *** Check whether any EL99X driver instances are present. This is a NIC project specific check!
set foundPythonInstance = FALSE
set Driver = *($($), 1)
Split-String "$(Driver)" "X" DriverTokens

set DriverName = *($(DriverTokens), 1)
ifstr(i) $(Driver) != "EL99X"
ifstr(i) $(DriverName) == "El99"
; We have found a 3Com client-related key
set found3ComClientInstance = TRUE
endif
endif


; *** Create a key with a cooresponding service name under the SOFTWARE\3Com key.

Ifstr(i) $(found3ComClientInstance) == "TRUE"

;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "Found Typhoon Driver instance ("$(DriverName)")"
;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "Driver instance name is  ("$(Driver)")"
CreateRegKey $(COMKEY) {$(Driver), 0, GenericClass} "" $(!REG_KEY_WRITE) "" THISNIC
endif


















; *************************************************************************************************
; *************************************************************************************************
;						NT4_CFG
;
;					      INSTRUCTIONS
;
;			        HKEY_LOCAL_MACHINE\SOFTWARE\3Com\B A S E K E Y 
;
;Under the BASEKEY we'll have ALL of the NIC parameters the driver supports under the Windows NT 4
;operating system.
;
;e.g.
;
;HKEY_LOCAL_MACHINE\SOFTWARE\3Com\EL99X\F L O W C O N T R O L 
;
;Where EL99x is the BASEKEY.  Under the parameter you'll find a subkey that determines the type of information
;tobe/nottobe displayed.  Legal subkey types are "enum","single value","protected", and "range"
;
;enum:		Every Value under this key will be displayed in a listbox. User selections and changes
;		will be based upon those value/data combinations exposed under the enum key.
;
;single value:	1 value is expected. The 1st value present that isn't "Default" will be shown. This
;		value can be changed at the user's request.
;
;protected:	1 value is expected. Said value will be shown but can not be changed by the user.
;
;range:		Programmatically a value will be shown. It will be incremented/decremented based
;		on Windows 2000 type /enum data exposed under this key
;
; *************************************************************************************************
; *************************************************************************************************



Ifstr(i) $(found3ComClientInstance) == "TRUE"



;BEGIN PARAMETERS LIST
; *************************************************************************************************






; *** 8021pOffload (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"8021pOffload", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_8021pOffload

SetRegValue $(KEY_8021pOffload),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Offload: 802.1p" }

CreateRegKey $(KEY_8021pOffload) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************





; *** ChecksumOffload (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"ChecksumOffload", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ChecksumOffload

SetRegValue $(KEY_ChecksumOffload),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Offload: TCP/IP Checksum" }

CreateRegKey $(KEY_ChecksumOffload) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************






; *** FlowControl (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"FlowControl", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_FlowControl

SetRegValue $(KEY_FlowControl),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Flow Control" }

CreateRegKey $(KEY_FlowControl) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************




; *** XCVR_SELECT (DATATYPE ENUM) ***



	CreateRegKey $(THISNIC) {"XCVR_SELECT", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_XCVR_SELECT
	
	SetRegValue $(KEY_XCVR_SELECT),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Media Select" }

	CreateRegKey $(KEY_XCVR_SELECT) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

;--------Added Maanasa 09/18/01--------------------------------------------------------

ifstr(i) $(DeviceID) != "39173FiberServer"
		
		Set ThisValueList = 	{{AUTO,$(NoTitle),$(!REG_VT_SZ),$(media_auto)},+
			 		{10HALF,$(NoTitle),$(!REG_VT_SZ),$(media_10_half)},+
					{100HALF,$(NoTitle),$(!REG_VT_SZ),$(media_100_half)},+
					{10FULL,$(NoTitle),$(!REG_VT_SZ),$(media_10_full)},+
					{100FULL,$(NoTitle),$(!REG_VT_SZ),$(media_100_full)},+
					{HWDEFAULT,$(NoTitle),$(!REG_VT_SZ),$(media_default)},+
					}

else 
		Set ThisValueList = 	{{100HALF,$(NoTitle),$(!REG_VT_SZ),$(media_100_half)},+
			 		{100FULL,$(NoTitle),$(!REG_VT_SZ),$(media_100_full)},+
			 		{HWDEFAULT,$(NoTitle),$(!REG_VT_SZ),$(media_default)},+
					}
endif
;----------------end-------------------------------------------------------------------



	Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif



; *************************************************************************************************



; *** MBADefaultBoot (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"MBADefaultBoot", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_MBADefaultBoot

SetRegValue $(KEY_MBADefaultBoot),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "ROMBoot" }

CreateRegKey $(KEY_MBADefaultBoot) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM


Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			 {HWDEFAULT,$(NoTitle),$(!REG_VT_SZ),$(rom_boot)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************






; *** SelfHealing (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"SelfHealing", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_SelfHealing

SetRegValue $(KEY_SelfHealing),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Self Healing" }

CreateRegKey $(KEY_SelfHealing) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM


Set ThisValueList = 	{{BASIC,$(NoTitle),$(!REG_VT_SZ),$(basic)},+
			 {DISABLE,$(NoTitle),$(!REG_VT_SZ),$(disable)},+
	 	 	 {ENHANCED,$(NoTitle),$(!REG_VT_SZ),$(enhanced)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif


; *************************************************************************************************





; *** IPSecOffload (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"IPSecOffload", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_IPSecOffload

SetRegValue $(KEY_IPSecOffload),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Offload: IPSec" }

CreateRegKey $(KEY_IPSecOffload) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************






; *** TCPSegOffload (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"TCPSegOffload", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_TCPSegOffload

SetRegValue $(KEY_TCPSegOffload),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Offload: TCP Segmentation" }

CreateRegKey $(KEY_TCPSegOffload) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************



; *** NoTxEntries ***

CreateRegKey $(THISNIC) {"NoTxEntries", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_NoTxEntries

SetRegValue $(KEY_NoTxEntries),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Descriptors: Transmit" }

CreateRegKey $(KEY_NoTxEntries) {"range", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{ParamDesc,$(NoTitle),$(!REG_VT_SZ),$(GenTxThreshold)},+
	 	 	 {Default,$(NoTitle),$(!REG_VT_SZ),"256"},+
	 	 	 {type,$(NoTitle),$(!REG_VT_SZ),$(int)},+
			 {min,$(NoTitle),$(!REG_VT_SZ),"128"},+
			 {max,$(NoTitle),$(!REG_VT_SZ),"512"},+
			 {step,$(NoTitle),$(!REG_VT_SZ),"32"},+
			 {base,$(NoTitle),$(!REG_VT_SZ),"10"},+
			}


; *** NoTxEntries int. ***

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************






; *** NoRxEntries ***

CreateRegKey $(THISNIC) {"NoRxEntries", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_NoRxEntries

SetRegValue $(KEY_NoRxEntries),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Descriptors: Receive" }

CreateRegKey $(KEY_NoRxEntries) {"range", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{ParamDesc,$(NoTitle),$(!REG_VT_SZ),$(GenTxThreshold)},+
	 	 	 {Default,$(NoTitle),$(!REG_VT_SZ),"128"},+
	 	 	 {type,$(NoTitle),$(!REG_VT_SZ),$(long)},+
			 {min,$(NoTitle),$(!REG_VT_SZ),"32"},+
			 {max,$(NoTitle),$(!REG_VT_SZ),"512"},+
			 {step,$(NoTitle),$(!REG_VT_SZ),"32"},+
			 {base,$(NoTitle),$(!REG_VT_SZ),"10"},+
			}


; *** NoRxEntries long. ***

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************




; *** PerfTuning (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"PerfTuning", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_PerfTuning

SetRegValue $(KEY_PerfTuning),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "Performance Tuning" }

CreateRegKey $(KEY_PerfTuning) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{$(enable_value),$(NoTitle),$(!REG_VT_SZ),$(enable)},+
	 	 	 {$(disable_value),$(NoTitle),$(!REG_VT_SZ),$(disable)},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif


; *************************************************************************************************


; *** NDIS Driver Version (DATATYPE ENUM) ***

CreateRegKey $(THISNIC) {"NDIS_VERSION", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_NDIS_VERSION

SetRegValue $(KEY_NDIS_VERSION),{FriendlyName,$(NoTitle),$(!REG_VT_SZ), "NDIS Driver Version" }

CreateRegKey $(KEY_NDIS_VERSION) {"enum", 0, GenericClass} "" $(!REG_KEY_WRITE) "" KEY_ENUM

Set ThisValueList = 	{{NDIS4,$(NoTitle),$(!REG_VT_SZ),"NDIS 4"},+
	 	 	 {NDIS3,$(NoTitle),$(!REG_VT_SZ),"NDIS 3"},+
			 {AUTO,$(NoTitle),$(!REG_VT_SZ),"Auto Select"},+
			}

Shell $(UtilityInf), AddValueList, $(KEY_ENUM), $(ThisValueList)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

; *************************************************************************************************





endif ; End of "Ifstr(i) $(found3ComClientInstance) == "TRUE""

set found3ComClientInstance = FALSE
EndForListDo

CloseRegKey $(ServicesKey)


CloseRegKey COMKEY
CloseRegKey SOFTKEY
CloseRegKey THISNIC




	 	Set NewValueList = { {SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)} }
	 	Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"
	 	Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)

	 	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	 		goto ShellCodeError
	 	endif

	else

		Set NewValueList = {+
	 	 {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
		 {DownLoadImage,$(NoTitle),$(!REG_VT_DWORD),1},+
	 	}

	 	Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"
	 	Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)

	 	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	 		goto ShellCodeError
	 	endif

	endif

	Set NewValueList = {+
	 {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
	 {CardType,$(NoTitle),$(!REG_VT_DWORD),$(CardType)},+
	 {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
	}

	Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"
	Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
		Shell $(UtilityInf), AddDefaultNetcardParameters, $(HardParameterKey)
	endif

	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)}}

	Debug-Output "$(InfFile) : HardwareRuleKey = $(NewValueList)"
	Shell $(UtilityInf), AddValueList, $(HardNetRuleKey), $(NewValueList)

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeEror
	endif

	CloseRegKey $(HardNetCardKey)
	CloseRegKey $(HardNetRuleKey)
	CloseRegKey $(HardParameterKey)

		OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3COM\" $(!REG_KEY_ALL_ACCESS) PCI_DATAKEY
		Ifstr(i) $(PCI_DATAKEY) != "" ; key exists
			DeleteRegTree $(PCI_DATAKEY) "PCI_DATA" ;neatens up the registry
		endif
 		CloseRegKey $(PCI_DATAKEY)

EndForListDo


;;; Add in hot plug support
 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Compaq\Cpqrcmc\ClassDLLs\NicMiniPort" $(!REG_KEY_WRITE) MiniPortKey
 ifstr $(MiniPortKey) != ""
   CreateRegKey $(MiniPortKey) {"EL99X", 0, GenericClass} "" $(!REG_KEY_WRITE) "" HotPlugServiceKey
   SetRegValue $(HotPlugServiceKey), {BaseOIDAddress, $(NoTitle),$(!REG_VT_DWORD), 4278322176} ;; 0xFF020400 in Hex
   SetRegValue $(HotPlugServiceKey), {SetOIDAddress, $(NoTitle),$(!REG_VT_DWORD), 4278321933}  ;; 0xFF02030D in Hex
 endif
 CloseRegKey $(MiniPortKey)
 CloseRegKey $(HotPlugServiceKey)

OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\HotSrv\SupportedDevices" $(!REG_KEY_WRITE) SupportedDevicesKey
ifstr $(SupportedDevicesKey) != ""
  CreateRegKey $(SupportedDevicesKey) {"10B7-9902-10B7-9902", 0, GenericClass} "" $(!REG_KEY_WRITE) "" 9902HotPlugKey
  CreateRegKey $(SupportedDevicesKey) {"10B7-9903-10B7-9903", 0, GenericClass} "" $(!REG_KEY_WRITE) "" 9903HotPlugKey
  CreateRegKey $(SupportedDevicesKey) {"10B7-9908-10B7-9908", 0, GenericClass} "" $(!REG_KEY_WRITE) "" 9908HotPlugKey
  CreateRegKey $(SupportedDevicesKey) {"10B7-9909-10B7-9909", 0, GenericClass} "" $(!REG_KEY_WRITE) "" 9909HotPlugKey
  SetRegValue $(9902HotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3CR990-TX-95"}
  SetRegValue $(9902HotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL99X"}
  SetRegValue $(9903HotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3CR990-TX-97"}
  SetRegValue $(9903HotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL99X"}
  SetRegValue $(9908HotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3CR990SVR95"}
  SetRegValue $(9908HotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL99X"}
  SetRegValue $(9909HotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3CR990SVR97"}
  SetRegValue $(9909HotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL99X"}
endif
CloseRegKey $(SupportedDevicesKey)
CloseRegKey $(9902HotPlugKey)
CloseRegKey $(9903HotPlugKey)
CloseRegKey $(9908HotPlugKey)
CloseRegKey $(9909HotPlugKey)



set TrayIconList = {TCAUDIAG,$(NoTitle),$(!REG_VT_SZ),$(DIAGCARDTYPE)}

 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG" $(!REG_KEY_ALL_ACCESS) NDKeyNt
 ifstr $(NDKeyNt) == ""
	CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\3Com\TCAUDIAG", 0, GenericClass} "" $(!REG_KEY_WRITE) "" NDKeyNt
 endif
	SetRegValue $(NDKeyNt) $(TrayIconList)
	CloseRegKey $(NDKeyNt)



; Paul May - 12/13/99 10:33pm
    ;;; Add in entries to support the DA/Touchdown integration - REALNICS Key
    OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG\RealNICs" $(!REG_KEY_ALL_ACCESS) RealNICsKey

    Ifstr(i) $(RealNICsKey) == "" ; key doesn't exist so create it
	CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\3Com\TCAUDIAG\RealNICs", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" RealNICsKey
    endif


      Ifstr(i) $(RealNICsKey) != "" ; key exists

        OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_ALL_ACCESS) ServicesKey
        Ifstr(i) $(ServicesKey) != "" ; key exists
          EnumRegKey $(ServicesKey) DriverList
          ForListDo $(DriverList)
            ;;; Check whether any python driver instances are present still
            ;;; If not, remove Touchdown and delete some leftover files
            set foundPythonInstance = FALSE
            set Driver = *($($), 1)
            Split-String "$(Driver)" "N" DriverTokens
            set DriverName = *($(DriverTokens), 1)
            ifstr(i) $(Driver) != "El980n4"
              ifstr(i) $(DriverName) == "El980"
                ;;; We have found a Python-related key
                set foundPythonInstance = TRUE
              endif
            endif

            ifstr(i) $(Driver) != "El98xn4"
              ifstr(i) $(DriverName) == "El98x"
                ;;; We have found a Python-related key
                set foundPythonInstance = TRUE
              endif
            endif

            Ifstr(i) $(foundPythonInstance) == "TRUE"
              ;; Add this driver instance name to the list of realNICs
              SetRegValue $(RealNICsKey) {$(Driver), 0, $(!REG_VT_SZ), ""}
            endif

            set found3ComClientInstance = FALSE
            Split-String "$(Driver)" "x" DriverTokens
            set DriverName = *($(DriverTokens), 1)
            ifstr(i) $(Driver) != "El90x"
              ifstr(i) $(DriverName) == "El90"
                ;;; We have found a 3Com client-related key
                set found3ComClientInstance = TRUE
              endif
            endif

            Split-String "$(Driver)" "d" DriverTokens
            set DriverName = *($(DriverTokens), 1)
            ifstr(i) $(Driver) != "El90xnd"
              ifstr(i) $(DriverName) == "El90xn"
                ;;; We have found a 3Com client-related key
                set found3ComClientInstance = TRUE
              endif
            endif

            Split-String "$(Driver)" "X" DriverTokens
            set DriverName = *($(DriverTokens), 1)
            ifstr(i) $(Driver) != "EL99X"
              ifstr(i) $(DriverName) == "El99"
                ;;; We have found a 3Com client-related key
                set found3ComClientInstance = TRUE
              endif
            endif

            Ifstr(i) $(found3ComClientInstance) == "TRUE"
              ;; Add this driver instance name to the list of realNICs
              SetRegValue $(RealNICsKey) {$(Driver), 0, $(!REG_VT_SZ), ""}
            endif

          EndForListDo

          CloseRegKey $(ServicesKey)
        Endif
      Endif


    CloseRegKey $(DiagKey)
    CloseRegKey $(RealNICsKey)

;End - Add in entries to support the DA/Touchdown integration - REALNICS Key

OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductHardwareName) $(!REG_KEY_ALL_ACCESS) KeyService

Ifstr $(KeyService) != ""
	SetRegValue $(KeyService) {ImagePath,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareUpgradePath)}
else
	goto fatalregistry
endif

CloseRegKey $(KeyService)
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\EventLog\System\"$(ProductHardwareName) $(!REG_KEY_ALL_ACCESS) KeyEventLog

Ifstr $(KeyEventLog) != ""
	SetRegValue $(KeyEventLog) {EventMessageFile,$(NoTitle),$(!REG_VT_SZ),$(NetEventDLL)}
else
	goto fatalregistry
endif

CloseRegKey $(KeyEventLog)


install "Install-Uninstaller"


OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\"$(ProductSoftwareName) $(!REG_KEY_ALL_ACCESS) +
 KeyNt

set TrayIconList = {TCAUDIAG,$(NoTitle),$(!REG_VT_SZ),$(DIAGCARDTYPE)}
SetRegValue $(KeyNt) $(TrayIconList)
CloseRegKey $(KeyNt)

ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)

	ifstr $(Install_3NIC_Diag) == "YES"

		;RunProgram ExitCode "Windows Directory" "" $(UnInstallerEXE).EXE "-upgrade"

		OpenRegKey $(KeyNt) "" "3Com99xNicUnInstall" $(!REG_KEY_ALL_ACCESS) KeyNt2

		ifstr $(KeyNt2) == ""
			CreateRegKey $(KeyNt) {"3Com99xNicUnInstall" , 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) +
			 "" KeyNt2
		endif

		set NewValueList = {{DisplayName, $(NoTitle), $(!REG_VT_SZ), "3Com NIC Diagnostics"}, +
		 {UninstallString, $(NoTitle), $(!REG_VT_SZ), $(UnInstallerEXE).EXE}}

		Shell $(UtilityInf), AddValueList, $(KeyNt2), $(NewValueList)

		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif

		CloseRegKey $(KeyNt2)

	endif
endif


ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)


endif

ifint $(OldVersionExisted) == $(FALSE)

	Ifstr(i) $(DoCopy) == "YES"
		Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO

		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

	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
endif

EndWait

;****** RUN INSTALLER AFTER ALL THE FILES ARE COPIED *******

ifstr $(Install_Installer) == "YES"

	ifstr(i) $(!STF_GUI_UNATTENDED) != "YES"

		ForListDo $(ToInstallList) ;pass by all the cards except the last one
			set BusNum = *($($),1)
 			set SlotNum = *($($),2)
 		EndForListDo

 		RunProgram ExitCode "Windows Directory" "" $(InstallerExe).EXE +
 		"cardtype=TCAUM99x" "bus="$(BusNum) "slot="$(SlotNum)
	endif

endif
;************************************************************

goto successful



updateparameters =+

Debug-Output "$(InfFile) : Updateparameters"
set HardParameterKey = $($R3)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

CloseRegKey $(KeyParameters)
goto successful



bindingadapter =+

Debug-Output "$(InfFile) : bindingadapter"
Return STATUS_SUCCESSFUL

set Error = "Binding: Sorry, not yet implemented."
goto fatal



removeadapter = +

 set CurrentCardPath =  $(!NTN_RegBase)
 set TitleValue = ""
 set CardTitle = ""
 set NameTokenList = ""

Debug-Output "$(InfFile) : removeadapter"
Debug-Output "$(InfFile) : ----> $(ProductKeyName), $(!NTN_RegBase)"

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

; Paul May - 12/13/99 10:59am
	; Populate Driver Instance
   	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(!REG_KEY_ALL_ACCESS) CardIndexKey
   	Ifstr(i) $(CardIndexKey) != "" ; key exists
     		GetRegValue $(CardIndexKey) "ServiceName" ServiceNameList

     		;;; The name of the service being removed is stored in DriverInstance
     		set DriverInstance = *($(ServiceNameList), 4)
   	endif
   	CloseRegKey $(CardIndexKey)
; End - Populate Driver Instance

; Paul May - 3/23/01 7:01am
	; Remove NT4_CFG nic instance key
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(!REG_KEY_ALL_ACCESS) CardInstanceKey
   	Ifstr(i) $(CardInstanceKey) != "" ; key exists
     		GetRegValue $(CardIndexKey) "ServiceName" ServiceNameList

     		;;; The name of the service being removed is stored in NICServiceName
     		set NICServiceName = *($(ServiceNameList), 4)
		OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3COM\" $(!REG_KEY_ALL_ACCESS) 3ComNT4_CFGKEY
		Ifstr(i) $(3ComNT4_CFGKEY) != "" ; key exists
			DeleteRegTree $(3ComNT4_CFGKEY) $(NICServiceName) 

		endif
   	endif
	CloseRegKey $(3ComNT4_CFGKEY)
   	CloseRegKey $(CardInstanceKey)


; End - Remove NT4_CFG nic instance key


	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




; Maanasa Kasturi  04/02/01 , 9:02am
; ****************************************************************************************************************************
;
; Check_For_3C99X_Service
;
; The following routine checks for the presense of the Python service in the registry and sets the global flag
; "NicPresent" accordingly
;
; ****************************************************************************************************************************


OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_ALL_ACCESS) WindowsServicesKey

Ifstr(i) $(WindowsServicesKey) != "" ; key exists
	EnumRegKey $(WindowsServicesKey) ServicesList

	; Check whether any 3C99X driver instances are present
        ; Set Global Flag Accordingly
	set Count = "1"
	set nicPresent = "FALSE"
	set NICINSTANCE = "0"


; This routine will loop though every key under "SYSTEM\CurrentControlSet\Services" till there are no more entries

ForListDo $(ServicesList)

	set CurrentServiceName = *($(ServicesList), $(Count))
	set ThisServiceName = *($(CurrentServiceName),1)
	

	; Check to see if the current Service Instance contains the string "EL990n4" case sensitively
	Split-String "$(ThisServiceName)" "N4" ParsedServiceNameList
	
	set ParsedServiceName 		= *($(ParsedServiceNameList),1)

	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE), "NONFATAL", "The parsed service name is "$(ParsedServiceName)""	

	ifstr(i) $(ParsedServiceName) == "EL990"
		;Increment the Nic instace counter
		set-add NICINSTANCE = $(NICINSTANCE),"1"	
	endif

	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE), "NONFATAL", "NicPresent variable is "$(NicPresent)""	



	; Increment Counter
	set-add Count = $(Count),"1"

	; Artificial trouble shooting limiting routine
	;	ifstr $(Count) == "3"
	;		Halt!
	;	endif


EndForListDo ;$(ServicesList)

CloseRegKey $(WindowsServicesKey)

; HALT!


 BailOut = +
 
	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE), "NONFATAL", "Nicinstance variable is "$(NICINSTANCE)""	

 ifint $(NICINSTANCE) > "1"
	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) NONFATAL "3C99X service still present in this machine."
 else-ifint $(NICINSTANCE) == "0"
	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) NONFATAL "No more instances of 3C99X detected so it's time to cleanup!"
	
	install "Clean_Up_Registry"
	
	Set RemoveList = {}
   	Set DelOnRebootList = {}


	set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_fix, 1))
	set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_data, 1))
;	set RemoveList = >($(RemoveList), #(Files-RemoveList, oemel99x, 1))
	set RemoveList = >($(RemoveList), #(Files-RemoveList, nt4_cfg, 1))
	

    ForListDo $(RemoveList)
        Debug-Output "Removing "$($)
        LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
        Debug-Output "Status is "$(Status)
    EndForListDo

   	ForListDo $(RemoveList)
          	Set DelStatus = ""
      		Debug-Output "Deleting File "$($)
      		Set FLibraryErrCtl = 1
      		
                	;LibraryProcedure DelStatus $(!UTILHANDLE), DelFile $($)
         		ifstr(i) $(DelStatus) == "FAILED"
                        	Set DelOnRebootList = >($(DelOnRebootList), $($))
         		EndIf
          	
                 	LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($)
      		
     	 
		Set FLibraryErrCtl = 0
   	EndForListDo

  	ForListDo $(DelOnRebootList)
        Debug-Output "File to remove on reboot = "$($)
        	AddFileToDeleteList $($)
        Set FLibraryErrCtl  = 1
        	;LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($)
        Set FLibraryErrCtl  = 0
          	
	EndForListDo


 else-ifint $(NICINSTANCE) == "1"
	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) NONFATAL "No more instances of 3C99X detected so it's time to cleanup!"
	
	install "Clean_Up_Registry"
	
	Set RemoveList = {}
   	Set DelOnRebootList = {}


	
	set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_fix, 1))
	set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_data, 1))
;	set RemoveList = >($(RemoveList), #(Files-RemoveList, oemel99x, 1))
	set RemoveList = >($(RemoveList), #(Files-RemoveList, nt4_cfg, 1))
	

    ForListDo $(RemoveList)
        Debug-Output "Removing "$($)
        LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
        Debug-Output "Status is "$(Status)
    EndForListDo

   	ForListDo $(RemoveList)
          	Set DelStatus = ""
      		Debug-Output "Deleting File "$($)
      		Set FLibraryErrCtl = 1
      		
                	;LibraryProcedure DelStatus $(!UTILHANDLE), DelFile $($)
         		ifstr(i) $(DelStatus) == "FAILED"
                        	Set DelOnRebootList = >($(DelOnRebootList), $($))
         		EndIf
          	
                 	LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($)
      		
     	 
		Set FLibraryErrCtl = 0
   	EndForListDo

  	ForListDo $(DelOnRebootList)
        Debug-Output "File to remove on reboot = "$($)
        	AddFileToDeleteList $($)
        Set FLibraryErrCtl  = 1
        	;LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($)
        Set FLibraryErrCtl  = 0
          	
	EndForListDo




 endif	

; End Check_For_3C99X_Service
; ****************************************************************************************************************************





; Paul May - 12/04/99 9:35am
 ;;; Remove the Service Name held in DriverInstance from the RealNICs key

 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG\RealNICs" $(!REG_KEY_ALL_ACCESS) RealNICsKey
 Ifstr(i) $(RealNICsKey) != "" ; key exists
   EnumRegValue $(RealNICsKey) RealNICsList
   set RealNICsValues = {}
   ForListDo $(RealNICsList)
     set RealNICsArray = *($($), 1)
     ForListDo $(RealNICsArray)
       set DriverInstanceName = *($($), 1)
       QueryListSize RealNICsValuesSize $(RealNICsValues)
       ifstr(i) $(RealNICsValuesSize) == 0
         set RealNICsValues = {$(DriverInstanceName)}
       else
         set RealNICsValues = >($(RealNICsValues), $(DriverInstanceName))
       endif
     EndForListDo
   EndForListDo

   set NewRealNICsValues = {}

   ForListDo $(RealNICsValues)
     ifstr(i) *($($), 1) != $(DriverInstance)
       set NewRealNICsValues = >($(NewRealNICsValues), *($($), 1))
     endif
   EndForListDo

   CloseRegKey $(DiagKey)
   OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG" $(!REG_KEY_ALL_ACCESS) DiagKey
   Ifstr(i) $(DiagKey) != "" ; key exists
     DeleteRegTree $(DiagKey) "RealNICs"
     CreateRegKey $(DiagKey) {"RealNICs", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewRealNICsKey
     Ifstr(i) $(NewRealNICsKey) != "" ; key exists
       ForListDo $(NewRealNICsValues)
         SetRegValue $(NewRealNICsKey) {*($($), 1), 0, $(!REG_VT_SZ), ""}
       EndForListDo
     Endif
   Endif
 Endif

 CloseRegKey $(NewRealNICsKey)
 CloseRegKey $(RealNICsKey)
 CloseRegKey $(DiagKey)

; End Remove the Service Name held in DriverInstance from the RealNICs key

goto end


UpgradeSoftware = +

Debug-Output "$(InfFile) : UpdateSoftware"
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(!REG_KEY_ALL_ACCESS) KeyProduct

Ifstr $(KeyProduct) != ""
	Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error"
		goto ShellCodeError
	endif

	set !UG_Filename = $($R0)

	install "Install-INF"

	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
		goto fatal
	endif

	SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)}
	SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)}
	SetRegValue $(KeyProduct) {Review,$(NoTitle),$(!REG_VT_DWORD),$(ProductReview)}
	CloseRegKey $(KeyProduct)

	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductHardwareName) $(!REG_KEY_ALL_ACCESS) KeyService

	Ifstr $(KeyService) != ""
		SetRegValue $(KeyService) {ImagePath,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareUpgradePath)}
	else
		goto fatalregistry
	endif

	CloseRegKey $(KeyService)


	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\EventLog\System\"$(ProductHardwareName) $(!REG_KEY_ALL_ACCESS) KeyEventLog

	Ifstr $(KeyEventLog) != ""
		SetRegValue $(KeyEventLog) {EventMessageFile,$(NoTitle),$(!REG_VT_SZ),$(NetEventDLL)}
	else
		goto fatalregistry
	endif

	CloseRegKey $(KeyEventLog)
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) $(!REG_KEY_ALL_ACCESS) KeyNt
	set LoopList = {1,2,3,4,5,6,7,8}
	set WinNTList = {WinNT,$(NoTitle),$(!REG_VT_SZ),YES}
	Set NewValueList = {{WakeOnMagic,$(NoTitle),$(!REG_VT_SZ),"YES"},+
	 {WakeOnLink,$(NoTitle),$(!REG_VT_SZ),"NO"},+
	 {DownLoadImage,$(NoTitle),$(!REG_VT_DWORD),1},+
	 {FlowControl,$(NoTitle),$(!REG_VT_SZ),"ENABLE"}}

	ForListDo $(LoopList)
		OpenRegKey $(KeyNt) "" $(ProductHardwareName)$($)"\Parameters" $(!REG_KEY_ALL_ACCESS) TestKey

		ifstr $(TestKey) != $(KeyNull)
			Shell $(UtilityInf), AddValueList, $(TestKey), $(NewValueList)

			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				goto ShellCodeError
			endif

			OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKey)$($)"\NetRules" $(!REG_KEY_ALL_ACCESS) NetCardKey

			ifstr $(NetCardKey) != $(KeyNull)
				SetRegValue $(NetCardKey) {"InfName",$(NoTitle),$(!REG_VT_SZ),$(!UG_Filename)}
				CloseRegKey $(NetCardKey)
			endif

			CloseRegKey $(TestKey)
		endif
	EndForListDo

else
	goto fatalregistry
endif

ifstr $(!STF_PLATFORM) == $(INF_PROCESSER)

	install "Install-Uninstaller"

	OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\"$(ProductSoftwareName) $(!REG_KEY_ALL_ACCESS) +
	 KeyNt
	set TrayIconList = {TCAUDIAG,$(NoTitle),$(!REG_VT_SZ),$(DIAGCARDTYPE)}
	SetRegValue $(KeyNt) $(TrayIconList)
	CloseRegKey $(KeyNt)

	ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)

		ifstr $(Install_3NIC_Diag) == "YES"
			OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" +
			 $(!REG_KEY_ALL_ACCESS) KeyNt

			ifstr $(KeyNt) == ""
				CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",+
				 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" KeyNt
			endif

			OpenRegKey $(KeyNt) "" "3Com99xNicUnInstall" $(!REG_KEY_ALL_ACCESS) KeyNt2

			ifstr $(KeyNt2) == ""
				CreateRegKey $(KeyNt) {"3Com99xNicUnInstall" , 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) +
				 "" KeyNt2
			endif

			set NewValueList = {{DisplayName, $(NoTitle), $(!REG_VT_SZ), "3Com NIC Diagnostics"},+
			 		}

			Shell $(UtilityInf), AddValueList, $(KeyNt2), $(NewValueList)

			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				goto ShellCodeError
			endif

			CloseRegKey $(KeyNt)
			CloseRegKey $(KeyNt2)

		endif
	endif

	ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)

		;;;OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" +
		;;;$(!REG_KEY_ALL_ACCESS) KeyNt

		;;;set TrayIconList = {TCASUTIEXE,$(NoTitle),$(!REG_VT_SZ),$(TrayIconExe)" -off"}
		;;;SetRegValue $(KeyNt) $(TrayIconList)

		;;;DeleteRegValue $(KeyNt) "COMSMDEXE"
		;;;CloseRegKey $(KeyNt)


		ifstr $(Install_3NIC_Diag) == "YES"
			Debug-Output "$(InfFile) : (Install_3NIC_Diag) == "YES""
			Shell "", DiagRegistry

		 	install "Install-3nicdiag"

			set InstallMode_Save = $(!NTN_InstallMode)
			set !NTN_InstallMode = install
		 	set SRCDIR_OVERRIDE_Save = $(!STF_SRCDIR_OVERRIDE)
		 	set !STF_SRCDIR_OVERRIDE = $(SrcDir)

		 	Shell $(!STF_WINDOWSSYSPATH)\TCAITDI.INF, InstallOption, $(CurrLang), +
		 	 "TCAITDI" ,$(SrcDir), YES, YES, YES, NO
			set !NTN_InstallMode = $(InstallMode_Save)
		 	set !STF_SRCDIR_OVERRIDE = $(SRCDIR_OVERRIDE_Save)

			ifstr(i) $(Install_Shortcuts) == "YES"
				Debug-Output "$(InfFile) : (Install_Shortcuts) == "YES""

				;RunProgram ExitCode "Windows Directory" "" $(UnInstallerEXE).EXE "-setup"

				Debug-Output "$(InfFile) : Enable or Disable Tray Icon"
				OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" +
				 $(!REG_KEY_ALL_ACCESS) KeyNt

				ifstr(i) $(Enable_TrayIcon) == "YES"
					set TrayIconList = {TCASUTIEXE,$(NoTitle),$(!REG_VT_SZ),$(TrayIconExe)" -on"}
				else
					set TrayIconList = {TCASUTIEXE,$(NoTitle),$(!REG_VT_SZ),$(TrayIconExe)" -off"}
					SetRegValue $(KeyNt) $(TrayIconList)
				endif

				DeleteRegValue $(KeyNt) "COMSMDEXE"
				CloseRegKey $(KeyNt)
			endif
		endif
	endif
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

;RunProgram ExitCode "Windows Directory" "" $(UnInstallerEXE).EXE "-upgrade"

goto end



successful = +

 Debug-Output "$(InfFile) : Successful"
 goto end



abandon = +

Debug-Output "$(InfFile) : 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

	detect checkFileExist
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\TCAITDI" $(!REG_KEY_READ) KeyTCATDI

	ifstr $(KeyTCATDI) != ""
		Shell $(!STF_WINDOWSSYSPATH)\TCAITDI.INF UserAbort
		CloseRegKey $(KeyTCATDI)
	endif

	set RegistryErrorIndex = $($R0)

	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		goto fatalregistry
	endif

endif

goto end


warning = +

Debug-Output "$(InfFile) : 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) : nonfatalinfo"
Set CommonStatus = STATUS_USERCANCEL
Set Severity = STATUS
goto nonfatalmsg


nonfatal = +

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

nonfatalmsg = +

Debug-Output "$(InfFile) : 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 "RemoveAdapter"
endif



fatalregistry = +

Debug-Output "$(InfFile) : fatalregistry"
Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)

ifint $($ShellCode) != $(!SHELL_CODE_OK)
	goto ShellCodeError
endif

set Error = $($R0)
goto fatal


fatal = +

Debug-Output "$(InfFile) : 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 = +

ifint $($ShellCode) == $(!SHELL_CODE_NO_SUCH_INF)
	Debug-Output "$(InfFile) : ShellCodeError - SHELL_CODE_NO_SUCH_INF"
else-ifint $($ShellCode) == $(!SHELL_CODE_NO_SUCH_SECTION)
	Debug-Output "$(InfFile) : ShellCodeError - SHELL_CODE_NO_SUCH_SECTION"
else
	Debug-Output "$(InfFile) : ShellCodeError - SHELL_CODE_ERROR"
endif

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) : 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)



[checkFileExist]
uninstFound = {} ? $(!LIBHANDLE) FindFileInstances $(!STF_WINDOWSSYSPATH)"\un3c99xa.exe"



[Install-Option]

set STF_VITAL = ""
set STF_OVERWRITE = "VERIFYSOURCEOLDER"
Debug-Output $(InfName)"Adding files: Files-$(NDIS_VER), SrcDir=$(SrcDir)"
AddSectionFilesToCopyList Files-$(NDIS_VER) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Files-Configuration $(SrcDir) $(!STF_WINDOWSSYSPATH)

;;;ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant)
;;;   AddSectionFilesToCopyList Files-DA $(SrcDir) $(!STF_WINDOWSSYSPATH)
;;;endif

;;;AddSectionFilesToCopyList Files-Cpl $(SrcDir) $(!STF_WINDOWSPATH)

set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
Exit


[Install-Uninstaller]

set STF_VITAL = ""
set STF_OVERWRITE = "VERIFYSOURCEOLDER"
;AddSectionFilesToCopyList Files-Uninstaller $(SrcDir) $(!STF_WINDOWSSYSPATH)
;set !STF_NCPA_FLUSH_COPYLIST = TRUE
;CopyFilesInCopyList
Exit


[Install-3nicdiag]

set STF_VITAL = ""
set STF_OVERWRITE = "VERIFYSOURCEOLDER"
AddSectionFilesToCopyList Files-diagImage $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-3nicdiag $(SrcDir) $(!STF_WINDOWSSYSPATH)
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
Exit


[Install-OTHER]
 set STF_VITAL = ""
 set STF_OVERWRITE = "VERIFYSOURCEOLDER"
 AddSectionFilesToCopyList Files-OTHER $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 Exit

[Install-INF]

set STF_VITAL = ""
AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
Exit

[Install-NDIS4]
 set STF_VITAL = ""
 set STF_OVERWRITE = "VERIFYSOURCEOLDER"
 AddSectionFilesToCopyList Files-NDIS4 $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 Exit



[Source Media Descriptions]
1 = "Disk1", TAGFILE = 3CDisk1

[ProductType]
STF_PRODUCT = Winnt


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


[Files-3nicdiag]
1,GUI99X.DLL,   SIZE=295000
1,INETWH32.DLL, SIZE=48000
1,ROBOEX32.DLL, SIZE=1000000
1,TCAICCHG.SYS, SIZE=5000
1,TCAITDI.INF, SIZE=15000
1,TCAMHWAC.DLL, SIZE=20198
1,TCAUDCUS.TXT, SIZE=113
1,TCAUDEXP.TXT, SIZE=113
1,TCAUDIAG.CNT, SIZE=4000
1,TCAUDIAG.EXE, SIZE=165504
1,TCAUDIAG.URL, SIZE=15
1,TCAUDIAG.HLP, SIZE=475000
1,TCAUM99x.DLL, SIZE=12345
1,TCAUM99x.HLP, SIZE=90000
1,TCAUPROT.HLP, SIZE=20877
1,TCAUPROT.DLL, SIZE=12345


[Files-Cpl]


[Files-Uninstaller]
;1,UN3C99xA.EXE, SIZE=6617


[Files-NDIS3]
1,EL99XND3.SYS 	, SIZE=25001
1,EL99XRUN.OUT 	, SIZE=48500

[Files-NDIS4]
1,EL99XND4.SYS 	, SIZE=25001
1,EL99XRUN.OUT 	, SIZE=48500

[Files-Configuration]
1,NT4_CFG.EXE	, SIZE=592000

[Files-DA]

[Files-Other]
1,pci_fix.sys, 	SIZE=65
1,pci_data.exe,	SIZE=65



; The file list below was requested by Certification Group team members
[Files-RemoveList]

pci_fix		 = $(!STF_WINDOWSSYSPATH)\pci_fix.sys
pci_data	 = $(!STF_WINDOWSSYSPATH)\pci_data.exe
;oemel99x	 = $(!STF_WINDOWSSYSPATH)\oemel99x.inf
nt4_cfg          = $(!STF_WINDOWSSYSPATH)\nt4_cfg.exe



[LanguagesSupported]
 ENG


[OptionsTextENG]
3C99x1 = "3Com Etherlink 10/100 Mbps PCI NIC with 3XP Processor"



[FileConstantsENG]
ProCaption = "Windows NT NIC 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, 1)
ConnectionValues = ^(ConnectionChoices, 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"
CANNOT_FIND_ANY_UNINSTALLED_CARD = "All the NICs supported by this product have already been installed."
NO_SP4    = "The driver for this Network Adapter requires Service Pack 4 or higher.  Please exit installation and update your system."


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

;(%VER OEMSETUP.INF - Installation file for 3c99x -  v2.3)
Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web5, load: 1.32