OEMSETUP.INF Driver File Contents (Hpn200.exe)

;
; oemsetup.inf: HPNA 2.0 driver NT 4.0 install file
;
; Copyright 2001, Linksys Group Inc. 
;
;
[Identification]
	OptionType			= NetAdapter

[LanguagesSupported]
	ENG

[Options]
	bcm42xx

[OptionsTextENG]
	bcm42xx			= "Linksys Phoneline 10M Network Card Driver"

[FileConstants]
	UtilityInf			= "UTILITY.INF"
	subroutineinf			= "SUBROUTN.INF"
	SoftwareType			= "driver"
	Exit_Code			= 0
	NetEventDLL			= "%SystemRoot%\System32\netevent.dll"

	Manufacturer			= "Linksys"
	ProductMajorVersion		= "1"
	ProductMinorVersion		= "0"
	ProductVersion			= $(ProductMajorVersion)"."$(ProductMinorVersion)

	ProductSoftwareName		= "bcm42xx"
	ProductSoftwareImagePath	= "%SystemRoot%\System32\drivers\BCM42XX4.SYS"
	NetRuleSoftwareType		= "bcm42xxSys ndisDriver bcm42xxDriver"
	NetRuleSoftwareUse		= $(SoftwareType)
	NetRuleSoftwareBindForm		= """bcm42xxSys"" yes no container"
	NetRuleSoftwareClass		= {"bcm42xxDriver basic"}
	NetRuleSoftwareBindable		= {"bcm42xxDriver bcm42xxAdapter non exclusive 100"}

	ProductHardwareName		= "bcm42xx"
	NetRuleHardwareBindForm		= " yes yes container"
	NetRuleHardwareType		= "bcm42xx bcm42xxAdapter"
	NetRuleHardwareClass		= {"bcm42xxAdapter basic"}
	ProductDriverDescription	= "Linksys Phoneline 10M Network Card"
	ProductHardwareDescription	= $(ProductDriverDescription)
	ProductDriverCopyright		= "1998-2001, All Rights Reserved"
	ProductKeyName			= $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
	ServiceKeyName			= $(!NTN_ServiceBase)"\"$(ProductSoftwareName)
	ParamKeyName			= $(!NTN_ServiceBase)"\"$(ProductSoftwareName)"\Parameters"
	LinkageKeyName			= $(!NTN_ServiceBase)"\"$(ProductSoftwareName)"\Linkage"
	DiagnosticsKeyName		= "BCM42DIA"
	DiagLogoText			= "Linksys"
	DiagIconName			= "HPN200"
	DiagCompanyURL			= "http://www.linksys.com/"
	DiagTitle				= "HPN200 Information and Diagnostics"
	DiagLegalCopyright		= "1998-2001, All Rights Reserved."
	VendorList = { 0xfeda, 0x14e4 }
	DeviceList = { 0xa0fa, 0x4211 }
	DescList   = {"Linksys Phoneline 10M Network Card", "Linksys Phoneline 10M Network Card" }

[FileConstantsENG]
	ProCaption			= "Windows NT 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:"
	FunctionTitle				= "Linksys Phoneline 10M Home Networking"
	ShellCodeErrorTitle		= "Error: "$(FunctionTitle)
	ShellCodeErrorText		= "Shell Code Error."

	NoAdapterFound			= "Unable to detect a "$(ProductHardwareDescription)+
					  ". Install the adapter and try again."

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

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

[platform]
	STF_PLATFORM = "" ? $(!LIBHANDLE) GetPlatform

[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)
		goto returnoptions
	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 !DebugOutputControl = 1

	set Lang = $($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 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
	detect platform
	set-title $(FunctionTitle)
	set to = Begin
	set from = Begin
	set CommonStatus = STATUS_SUCCESSFUL
	EndWait

Begin = +
	Debug-Output "bcm42xx: Lang= $(Lang)"
	Debug-Output "bcm42xx: Option= $(Option)"
	Debug-Output "bcm42xx: SrcDir= $(SrcDir)"
	Debug-Output "bcm42xx: AddCopy= $(AddCopy)"
	Debug-Output "bcm42xx: DoCopy= $(DoCopy)"
	Debug-Output "bcm42xx: DoConfig= $(DoConfig)"
	Debug-Output "bcm42xx: LanguageList= $(LanguageList)"
	Debug-Output "bcm42xx: DriverPath= $(DriverPath)"
	Debug-Output "bcm42xx: Manufacturer= $(Manufacturer)"
	Debug-Output "bcm42xx: ProductMajorVersion= $(ProductMajorVersion)"
	Debug-Output "bcm42xx: ProductMinorVersion= $(ProductMinorVersion)"
	Debug-Output "bcm42xx: ProductVersion= $(ProductVersion)"
	Debug-Output "bcm42xx: ProductSoftwareName= $(ProductSoftwareName)"
	Debug-Output "bcm42xx: ProductSoftwareImagePath= $(ProductSoftwareImagePath)"
	Debug-Output "bcm42xx: NetRuleSoftwareType= $(NetRuleSoftwareType)"
	Debug-Output "bcm42xx: NetRuleSoftwareUse= $(NetRuleSoftwareUse)"
	Debug-Output "bcm42xx: NetRuleSoftwareBindForm= $(NetRuleSoftwareBindForm)"
	Debug-Output "bcm42xx: NetRuleSoftwareClass= $(NetRuleSoftwareClass)"
	Debug-Output "bcm42xx: NetRuleSoftwareBindable= $(NetRuleSoftwareBindable)"
	Debug-Output "bcm42xx: ProductHardwareName= $(ProductHardwareName)"
	Debug-Output "bcm42xx: NetRuleHardwareBindForm= $(NetRuleHardwareBindForm)"
	Debug-Output "bcm42xx: NetRuleHardwareType= $(NetRuleHardwareType)"
	Debug-Output "bcm42xx: NetRuleHardwareClass= $(NetRuleHardwareClass)"
	Debug-Output "bcm42xx: ProductKeyName= $(ProductKeyName)"
	Debug-Output "bcm42xx: ServiceKeyName= $(ServiceKeyName)"
	Debug-Output "bcm42xx: ParamKeyName= $(ParamKeyName)"
	Debug-Output "bcm42xx: LinkageKeyName= $(LinkageKeyName)"
	Debug-Output "bcm42xx: FunctionTitle= $(FunctionTitle)"
	Debug-Output "bcm42xx: ProductSoftwareDescription= $(ProductSoftwareDescription)"
	Debug-Output "bcm42xx: ProductSoftwareDisplayName= $(ProductSoftwareDisplayName)"
	Debug-Output "bcm42xx: ProductSoftwareTitle= $(ProductSoftwareTitle)"
	Debug-Output "bcm42xx: ProductHardwareDescription= $(ProductHardwareDescription)"
	Debug-Output "bcm42xx: ProductHardwareDisplayName= $(ProductHardwareDisplayName)"
	Debug-Output "bcm42xx: ProductHardwareTitle= $(ProductHardwareTitle)"
	Debug-Output "bcm42xx: Now= $(Now)"
	Debug-Output "bcm42xx: NTN_InfOption= $(!NTN_InfOption)"
	Debug-Output "bcm42xx: NTN_Infname= $(!NTN_Infname)"
	Debug-Output "bcm42xx: NTN_InstallMode= $(!NTN_InstallMode)"
	Debug-Output "bcm42xx: NTN_InstallPhase= $(!NTN_InstallPhase)"
	Debug-Output "bcm42xx: NTN_Origination= $(!NTN_Origination)"
	Debug-Output "bcm42xx: NTN_RegBase= $(!NTN_RegBase)"
	Debug-Output "bcm42xx: NTN_ScUseRegistry= $(!NTN_ScUseRegistry)"
	Debug-Output "bcm42xx: NTN_ServiceBase= $(!NTN_ServiceBase)"
	Debug-Output "bcm42xx: NTN_SoftwareBase= $(!NTN_SoftwareBase)"
	Debug-Output "bcm42xx: STF_BUSTYPE= $(!STF_BUSTYPE)"
	Debug-Output "bcm42xx: STF_BUSTYPELIST= $(!STF_BUSTYPELIST)"
	Debug-Output "bcm42xx: STF_COMPUTERNAME= $(!STF_COMPUTERNAME)"
	Debug-Output "bcm42xx: STF_CONTEXTINFNAME= $(!STF_CONTEXTINFNAME)"
	Debug-Output "bcm42xx: STF_CWDDIR= $(!STF_CWDDIR)"
	Debug-Output "bcm42xx: STF_CWDIR= $(!STF_CWDIR)"
	Debug-Output "bcm42xx: STF_DISPLAYDEBUGOUTPUT= $(!STF_DISPLAYDEBUGOUTPUT)"
	Debug-Output "bcm42xx: STF_ERROR= $(!STF_ERROR)"
	Debug-Output "bcm42xx: STF_FLOPPYLIST= $(!STF_FLOPPYLIST)"
	Debug-Output "bcm42xx: STF_GUI= $(!STF_GUI)"
	Debug-Output "bcm42xx: STF_GUI_UNATTENDED= $(!STF_GUI_UNATTENDED)"
	Debug-Output "bcm42xx: STF_HWND= $(!STF_HWND)"
	Debug-Output "bcm42xx: STF_IDW= $(!STF_IDW)"
	Debug-Output "bcm42xx: STF_INSTALL= $(!STF_INSTALL)"
	Debug-Output "bcm42xx: STF_LANGUAGE= $(!STF_LANGUAGE)"
	Debug-Output "bcm42xx: STF_MB= $(!STF_MB)"
	Debug-Output "bcm42xx: STF_NCDETCARD= $(!STF_NCDETCARD)"
	Debug-Output "bcm42xx: STF_NCDETECT= $(!STF_NCDETECT)"
	Debug-Output "bcm42xx: STF_NCDETINFO= $(!STF_NCDETINFO)"
	Debug-Output "bcm42xx: STF_NCOPTION= $(!STF_NCOPTION)"
	Debug-Output "bcm42xx: STF_NCPA= $(!STF_NCPA)"
	Debug-Output "bcm42xx: STF_NTDRIVE= $(!STF_NTDRIVE)"
	Debug-Output "bcm42xx: STF_NTPATH= $(!STF_NTPATH)"
	Debug-Output "bcm42xx: STF_NTUPGRADE= $(!STF_NTUPGRADE)"
	Debug-Output "bcm42xx: STF_NTWINDOWSSYSPATH= $(!STF_NTWINDOWSSYSPATH)"
	Debug-Output "bcm42xx: STF_OVERWRITE= $(!STF_OVERWRITE)"
	Debug-Output "bcm42xx: STF_PLATFORM= $(!STF_PLATFORM)"
	Debug-Output "bcm42xx: STF_PROCESSOR= $(!STF_PROCESSOR)"
	Debug-Output "bcm42xx: STF_PRODUCT= $(!STF_PRODUCT)"
	Debug-Output "bcm42xx: STF_RANFROM= $(!STF_RANFROM)"
	Debug-Output "bcm42xx: STF_RENAME= $(!STF_RENAME)"
	Debug-Output "bcm42xx: STF_SRCDIR= $(!STF_SRCDIR)"
	Debug-Output "bcm42xx: STF_STANDARDSERVERUPGRADE= $(!STF_STANDARDSERVERUPGRADE)"
	Debug-Output "bcm42xx: STF_SUCCESS= $(!STF_SUCCESS)"
	Debug-Output "bcm42xx: STF_UNATTENDED= $(!STF_UNATTENDED)"
	Debug-Output "bcm42xx: STF_UNUSEDDRIVES= $(!STF_UNUSEDDRIVES)"
	Debug-Output "bcm42xx: STF_USERNAME= $(!STF_USERNAME)"
	Debug-Output "bcm42xx: STF_VITAL= $(!STF_VITAL)"
	Debug-Output "bcm42xx: STF_WINDOWSPATH= $(!STF_WINDOWSPATH)"
	Debug-Output "bcm42xx: STF_WINDOWSSYSPATH= $(!STF_WINDOWSSYSPATH)"

	Ifstr(i) $(!NTN_InstallMode) == deinstall
		set StartLabel = deinstall
	else-Ifstr(i) $(!NTN_InstallMode) == update
		set StartLabel = update
	else-Ifstr(i) $(!NTN_InstallMode) == bind
		set StartLabel = bind
	else-Ifstr(i) $(!NTN_InstallMode) == configure
		set StartLabel = configure
	else
		set StartLabel = installadapter
	endif
	set RadioDefault = 2
	set RadioIn = {$(RadioDefault)}
	set from = $(fatal)
	set to = $(fatal)
	goto $(StartLabel)

installadapter = +
	Debug-Output "bcm42xx: 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)
				goto ShellCodeError
			endif
			goto end
		else
			Shell $(UtilityInf), CardExistedDlg
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				goto ShellCodeError
			endif
			ifstr(i) $($R1) != "OK"
				goto end
			endif
			set OldVersionExisted = $(TRUE)
		endif
	endif
	CloseRegKey $(KeyProduct)
	goto installproduct

installproduct = +
	Debug-Output "bcm42xx: installproduct"
	StartWait

	set AdapterList = {}
	set AdapterDesc = ""
	ForListDo $(DeviceList)
            set-hextodec DeviceId = $($)
 	    Debug-Output "bcm42xx: DeviceId = $(DeviceId)"
            set-hextodec VendorId = *($(VendorList),$(#))
 	    Debug-Output "bcm42xx: VendorId = $(VendorId)"
	    set AdapterDesc = *($(DescList),$(#))
	    Debug-Output "bcm42xx: AdapterDesc = $(AdapterDesc)"

 	    Debug-Output "bcm42xx: Calling GetPCIInformation $(VendorId) $(DeviceId) $(AdapterCFID)"
	    Shell $(UtilityInf), GetPCIInformation $(VendorId) $(DeviceId)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "bcm42xx: GetPCIInformation failed."
		goto ShellCodeError
	    endif
            ForListDo $($R0)
	        set AdapterList = >($(AdapterList), {*($($),1), *($($),2), $(AdapterCFID)})
            EndForListDo
        EndForListDo

	Debug-Output "bcm42xx: AdapterList = $(AdapterList)"
	ifstr(i) $(AdapterList) == {}
		set Error = $(NoAdapterFound)
	        set CommonStatus = USER_CANCEL
	        set from = end
		goto nonfatal
	endif

	set DriverStr = " Driver"
	set ProductSoftwareDescription	= $(AdapterDesc)$(DriverStr)
	set ProductSoftwareDisplayName	= $(AdapterDesc)$(DriverStr)
	set ProductSoftwareTitle		= $(AdapterDesc)$(DriverStr)
	set ProductHardwareDescription	= $(AdapterDesc)
	set ProductHardwareDisplayName	= $(AdapterDesc)
	set ProductHardwareTitle		= $(AdapterDesc)

	Debug-Output "bcm42xx: ProductSoftwareDescription= $(ProductSoftwareDescription)"
	Debug-Output "bcm42xx: ProductSoftwareDisplayName= $(ProductSoftwareDisplayName)"
	Debug-Output "bcm42xx: ProductSoftwareTitle= $(ProductSoftwareTitle)"
	Debug-Output "bcm42xx: ProductHardwareDescription= $(ProductHardwareDescription)"
	Debug-Output "bcm42xx: ProductHardwareDisplayName= $(ProductHardwareDisplayName)"
	Debug-Output "bcm42xx: ProductHardwareTitle= $(ProductHardwareTitle)"

	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
				Goto fatal
			Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
				Goto successful
			Endif
			Set SrcDir = $($R1)
		Endif
		Shell "" StripTrailSlash $(SrcDir)
		set PlatformDir = $($R0)
		set InfDir = $($R0)"\"
		Debug-Output "bcm42xx: SrcDir= $(SrcDir)"
		Debug-Output "bcm42xx: PlatformDir= $(PlatformDir)"
		Debug-Output "bcm42xx: InfDir= $(InfDir)"
		Debug-Output "bcm42xx: UG_Filename= $(!UG_Filename)"
		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
		set OEM_ABANDON_ON = TRUE


		Debug-Output "bcm42xx: Adding Software Component to Registry"
		Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), +
			$(ProductSoftwareName), +
			$(ProductSoftwareDisplayName), $(STF_CONTEXTINFNAME), +
			$(ProductSoftwareImagePath), "kernel", "NDIS", {}, "", +
			$(NetEventDLL)
		set RegistryErrorIndex = $($R0)
		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			Debug-Output "bcm42xx: Failed to Add Software Component."
			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)
		set RegistryErrorIndex = $($R0)
		Ifstr $(RegistryErrorIndex) != NO_ERROR
			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)}, +
			{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
			{bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
			{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
			{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)} +
		}
		Shell $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
		set RegistryErrorIndex = $($R0)
		Ifstr $(RegistryErrorIndex) != NO_ERROR
			CloseRegKey $(SoftProductKey)
			CloseRegKey $(SoftNetRuleKey)
			CloseRegKey $(SoftServiceKey)
			CloseRegKey $(SoftParameterKey)
			CloseRegKey $(SoftLinkageKey)
			goto fatalRegistry
		endif

		set NewValueList = { +
			{DebugLevel,$(NoTitle),$(!REG_VT_DWORD),0}, +
			{DebugMask,$(NoTitle),$(!REG_VT_DWORD), 0} +
		}
		Shell $(UtilityInf), AddValueList, $(SoftParameterKey), $(NewValueList)
		set RegistryErrorIndex = $($R0)
		Ifstr $(RegistryErrorIndex) != NO_ERROR
			CloseRegKey $(SoftProductKey)
			CloseRegKey $(SoftNetRuleKey)
			CloseRegKey $(SoftServiceKey)
			CloseRegKey $(SoftParameterKey)
			CloseRegKey $(SoftLinkageKey)
			goto fatalRegistry
		endif

		CloseRegKey $(SoftProductKey)
		CloseRegKey $(SoftNetRuleKey)
		CloseRegKey $(SoftServiceKey)
		CloseRegKey $(SoftParameterKey)
		CloseRegKey $(SoftLinkageKey)
	endif

	ForListDo $(AdapterList)
		set BusNumber = *($($),1)
		set SlotNumber = *($($),2)
		set AdapterCFID = *($($),3)
		Debug-Output "bcm42xx: found card at PCI_$(BusNumber)_$(SlotNumber)"
		Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNumber), $(SlotNumber), +
			$(ProductHardwareDescription), $(ProductHardwareName)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		ifstr $($R0) != "NO_ERROR"
			set Error = $($R0)
			goto fatal
		endif
		ifstr(i) $($R1) != "YES"
			; Add Adapter Hardware Component
			Debug-Output "bcm42xx: Adding Adapter Hardware Component to Registry"
			Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName), +
				$(STF_CONTEXTINFNAME), $(ProductKeyName)
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "bcm42xx: ShellCode error."
				goto ShellCodeError
			endif
			set RegistryErrorIndex = $($R0)
			Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
				Debug-Output "bcm42xx: Failed to Add Hardware Component"
				EndWait
				CloseRegKey $($R1)
				CloseRegKey $($R2)
				CloseRegKey $($R3)
				goto fatalRegistry
			endif
	
			set KeyAdapter = $($R1)
			set KeyAdapterRules = $($R2)
			set KeyParameters = $($R3)
			set AdapterNumber = $($R4)
			set NewValueList = { +
				{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)}, +
				{Title, $(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)}, +
				{Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)}, +
				{ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)}, +
				{ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)}, +
				{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)} +
			}
			Debug-Output "bcm42xx: Populating Hardware Component Value List"
			Shell $(UtilityInf), AddValueList, $(KeyAdapter), $(NewValueList)
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "bcm42xx: ShellCode error"
				goto ShellCodeError
			endif
			CloseRegKey $(KeyAdapter)

			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 "bcm42xx: Populating Adapter NetRules Value List"
			Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "bcm42xx: ShellCode error."
				goto ShellCodeError
			endif
			set RegistryErrorIndex = $($R0)
			Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
				EndWait
				Debug-Output "bcm42xx: Registry error: add value list."
				CloseRegKey $(KeyParameters)
				CloseRegKey $(KeyAdapterRules)
				goto fatalRegistry
			endif
			CloseRegKey $(KeyAdapterRules)

			set MediaType = 1	; Ethernet
			set BusType = 5		; PCI
			Set NewValueList = { +
				{MediaType,$(NoTitle),$(!REG_VT_DWORD),$(MediaType)}, +
				{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusType)}, +
				{AdapterCFID,$(NoTitle),$(!REG_VT_DWORD),$(AdapterCFID)}, +
				{SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)}, +
				{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)}, +
				{InstanceNumber,$(NoTitle),$(!REG_VT_DWORD),$(AdapterNumber)}, +
				{DriverDesc,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)} +
			}
			Debug-Output "bcm42xx: Populating Adapter Parameters Value List"
			Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "bcm42xx: ShellCode error"
				goto ShellCodeError
			endif
			CloseRegKey $(KeyParameters)
			OpenRegKey $(!REG_H_LOCAL) "" $(ServiceKeyName) $(MAXIMUM_ALLOWED) KeyDiagStrings
			Ifstr $(KeyDiagStrings) != $(KeyNull)
				Set NewValueList = { +
					{DiagDescription,$(NoTitle),$(!REG_VT_SZ),$(ProductDriverDescription)} +
					{DiagCopyright,$(NoTitle),$(!REG_VT_SZ),$(ProductDriverCopyright)} +
				}
				Debug-Output "bcm42xx: Populating Services Custom Diagnostics User-visible Strings"
				Shell $(UtilityInf), AddValueList, $(KeyDiagStrings), $(NewValueList)
				ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "bcm42xx: ShellCode error"
					goto ShellCodeError
				endif
				CloseRegKey $(KeyDiagStrings)
			endif
			OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase) $(MAXIMUM_ALLOWED) MyKeySoftware
			Ifstr $(MyKeySoftware) == $(KeyNull)
			   set RegistryErrorIndex = UNABLE_ACCESS_SOFTWARE_REG
			   goto ShellCodeError
			endif
			CreateRegKey $(MyKeySoftware) {$(DiagnosticsKeyName),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" KeyDiagStrings
			Ifstr $(KeyDiagStrings) != $(KeyNull)
				Set NewValueList = { +
					{"Logo Text",$(NoTitle),$(!REG_VT_SZ),$(DiagLogoText)} +
					{"Icon Name",$(NoTitle),$(!REG_VT_SZ),$(DiagIconName)} +
					{"Company URL",$(NoTitle),$(!REG_VT_SZ),$(DiagCompanyURL)} +
					{"Title",$(NoTitle),$(!REG_VT_SZ),$(DiagTitle)} +
					{"LegalCopyright",$(NoTitle),$(!REG_VT_SZ),$(DiagLegalCopyright)} +
				}
				Debug-Output "bcm42xx: Populating Software Custom Diagnostics User-visible Strings"
				Shell $(UtilityInf), AddValueList, $(KeyDiagStrings), $(NewValueList)
				ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "bcm42xx: ShellCode error"
					CloseRegKey $(MyKeySoftware)
					goto ShellCodeError
				endif
				CloseRegKey $(KeyDiagStrings)
			endif
			CloseRegKey $(MyKeySoftware)
		endif
	EndForListDo

	EndWait
	goto successful

bind = +
	Debug-Output "bcm42xx: bind"
	set Error = "Binding: Sorry, not yet implemented."
	goto fatal

deinstall = +
	Debug-Output "bcm42xx: deinstall"
	Debug-Output "bcm42xx: ProductKeyName= $(ProductKeyName)"
	Debug-Output "bcm42xx: NTN_RegBase= $(!NTN_RegBase)"
	ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
		Debug-Output "bcm42xx: RemoveSoftwareComponent"
		Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
			$(ProductSoftwareName)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "bcm42xx: ShellCode error."
			gotoShellCodeError
		endif
		set RegistryErrorIndex = $($R0)
		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			goto fatalRegistry
		endif
	else

		Debug-Output "bcm42xx: RemoveHardwareComponent"
		Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), $(!NTN_RegBase)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "bcm42xx: ShellCode error."
			goto ShellCodeError
		endif
		set RegistryErrorIndex = $($R0)
		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			goto fatalRegistry
		endif
	endif
	goto end

configure = +
	Debug-Output "bcm42xx: configure"
	set Error = "Configuration Not Implemented"
	set from = end
	goto nonfatalinfo

update = +
	Debug-Output "bcm42xx: update"
	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
	Ifstr $(KeyProduct) != $(KeyNull)
		Debug-Output "bcm42xx: Found ProductKeyName= $(ProductKeyName)"
		Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error"
			goto ShellCodeError
		endif
		set !UG_Filename = $($R0)
		Shell "" StripTrailSlash $(SrcDir)
		set PlatformDir = $($R0)
		set InfDir = $($R0)"\"
		Debug-Output "bcm42xx: SrcDir= $(SrcDir)"
		Debug-Output "bcm42xx: PlatformDir= $(PlatformDir)"
		Debug-Output "bcm42xx: InfDir= $(InfDir)"
		Debug-Output "bcm42xx: UG_Filename= $(!UG_Filename)"
		install "Install-Update"
		ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
			goto fatal
		endif

		; Get the Major and Minor version numbers
		GetRegValue $(KeyProduct),MajorVersion,VersionInfo
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			set CurrentMajorVersion = 0
		else
			set CurrentMajorVersion = *($(VersionInfo), 4)
		endif
		GetRegValue $(KeyProduct),MinorVersion,VersionInfo
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			set CurrentMinorVersion = 0
		else
			set CurrentMinorVersion = *($(VersionInfo), 4)
		endif
		Debug-Output "bcm42xx: CurrentMajorVersion= $(CurrentMajorVersion)"
		Debug-Output "bcm42xx: CurrentMinorVersion= $(CurrentMinorVersion)"

		SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)}
		SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)}
		Debug-Output "bcm42xx: Setting Major/MinorVersion= $(ProductMajorVersion)/$(ProductMinorVersion)"
		CloseRegKey $(KeyProduct)
	else
		goto fatalRegistry
	endif
	goto end

successful = +
	goto end

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 = +
	Set CommonStatus = STATUS_USERCANCEL
	Set Severity = STATUS
	goto nonfatalmsg
nonfatal = +
	Set Severity = NONFATAL
	goto nonfatalmsg
nonfatalmsg = +
	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), $(Severity), $(Error)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	ifstr(i) $($R1) == "OK"
		goto $(from)
	else
		goto "end"
	endif
fatalRegistry = +
	Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	set Error = $($R0)
	goto fatal
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 = +
	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 = +
	set CommonStatus = STATUS_FAILED
	ifstr(i) $(OEM_ABANDON_ON) == TRUE
		set OEM_ABANDON_ON = FALSE
		goto deinstall
	endif
	goto end
end = +
	goto term
term = +
	Return $(CommonStatus)

[StripTrailSlash]
	Split-String $($0) "\" InList
	QueryListSize InListSize, $(InList)
	Ifint $(InListSize) <= 1
		Return $($0)
	Endif
	Set NewString = ""
	ForListDo $(InList)
		ifint $(#) < $(InListSize)
			Set NewString = $(NewString)$($)
		else-ifstr $($) != "\"
			Set NewString = $(NewString)$($)
		endif
	EndForListDo
	Return $(NewString)

[Install-Option]
	set STF_VITAL = ""
	ifstr(i) $(AddCopy) == "YES"
		AddSectionFilesToCopyList Files-Platform-Drivers $(PlatformDir) $(!STF_WINDOWSSYSPATH)\drivers
		AddSectionFilesToCopyList Files-Platform-Sys32 $(PlatformDir) $(!STF_WINDOWSSYSPATH)

	endif
	ifstr(i) $(DoCopy) == "YES"
		set !STF_NCPA_FLUSH_COPYLIST = TRUE
		CopyFilesInCopyList
	endif
	ifstr(i) $(DoConfig) == "YES"
	endif
	Exit

[Install-Update]
	set STF_VITAL = ""
	set STF_OVERWRITE = "ALWAYS"
	AddSectionFilesToCopyList Files-Platform-Drivers $(PlatformDir) $(!STF_WINDOWSSYSPATH)\drivers
	AddSectionFilesToCopyList Files-Platform-Sys32 $(PlatformDir) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Inf $(InfDir) $(!STF_WINDOWSSYSPATH)
	Debug-Output "bcm42xx: Copying updated files"
	set !STF_NCPA_FLUSH_COPYLIST = TRUE
	CopyFilesInCopyList
	exit

[Source Media Descriptions]
	1 = "Linksys Phoneline 10M Network Card Driver Installation Disk"

[ProductType]
	STF_PRODUCT = Winnt

[Files-Inf]
	1, OEMSETUP.INF, SIZE=999, RENAME=$(!UG_Filename)

[Files-Platform-Drivers]
	1, BCM42XX4.SYS, SIZE=999
	1, BCM42XHW.sys, SIZE=999

[Files-Platform-Sys32]
	1, BCM42DIA.cpl, SIZE=999
	1, BCM42IOA.DLL, SIZE=999
	1, BCM42DB0.dll, SIZE=999
	1, BCM42CTL.dll, SIZE=999
	1, BCM42RLY.sys, SIZE=999
	1, MFC42.DLL, SIZE=999, OVERWRITE=VERIFYSOURCEOLDER
	1, MSVCRT.DLL, SIZE=999, OVERWRITE=VERIFYSOURCEOLDER

[DialogConstantsENG]
	Help			= "&Help"
	Exit			= "Cancel"
	OK			= "OK"
	HelpContext		= ""
	Continue		= "Continue"
	Cancel			= "Cancel"
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: ftp, load: 2.79