Oemsetup.inf Driver File Contents (3Com_PCI_Win_oAandBridge.exe)

;*************************************************************************
;
; Installation file for the 3Com HomeConnect ADSL PCI Modem
;
; Model Number 3CP3617
;
; Copyright 1999 3Com Corporation
;*************************************************************************

[Identification]
 OptionType = NetAdapter

[PlatformsSupported]
 PCI

[Options]
 USRPCIAWR 

[FileConstants]
 InfName					= "OEMCOBRA.INF"
 UtilityInf					= "UTILITY.INF"
 ParamInf					= "NCPARAM.INF"
 subroutineinf				= "SUBROUTN.INF"
 SoftwareType				= "driver"
 Exit_Code					= 0
 NetEventDLL				= "%SystemRoot%\System32\netevent.dll"
 IoLogMsgDLL				= "%SystemRoot%\System32\IoLogMsg.dll"
 Manufacturer				= "3Com"
 ProductMajorVersion		= "1"
 ProductMinorVersion		= "1"
 ProductVersion				= $(ProductMajorVersion)"."$(ProductMinorVersion)
 ProductSoftwareName		= "USRPCIAWR"
 ProductSoftwareImagePath	= "\SystemRoot\System32\drivers\3CPAWR40.SYS"
 DsHelperExe = %SystemRoot%\System32\drivers\DsHelper.exe -M
 NetRuleSoftwareType		= "PCIALRSys USRPCIAWRDriver"
 NetRuleSoftwareUse			= $(SoftwareType)
 NetRuleSoftwareBindForm	= """USRPCIAWRSys"" yes no container"
 NetRuleSoftwareClass		= {"USRPCIAWRDriver basic"}
 NetRuleSoftwareBindable	= {"USRPCIAWRDriver USRPCIAWRAdapter non exclusive 100"}
 ProductHardwareName		= "USRPCIAWR"
 NetRuleHardwareBindForm	= " yes yes container"
 NetRuleHardwareType		= "USRPCIAWR USRPCIAWRAdapter"
 NetRuleHardwareClass		= {"USRPCIAWRAdapter basic"}
 BindableUSRPCIAWRTxt		= {"USRPCIAWRDriver USRPCIAWRAdapter non exclusive 100"}
 TapiDeviceKey				= $(ProductHardwareName)
 TapiMediaType				= "ISDN"
 ProductKeyName				= $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"+
								$(ProductSoftwareName)"\CurrentVersion"
 ParamKeyName				= $(!NTN_ServiceBase)"\"$(ProductHardwareName)+
								"\Parameters"
 NetworkCardsKey			= $(!NTN_SoftwareBase)+
								"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"
 ProductReview				= "1"
 FunctionTitle				= "3Com ADSL PCI Modem Dialup/PPP Setup"
 ProductSoftwareDescription = "3Com ADSL PCI Modem Dialup/PPP Driver"
 ProductSoftwareTitle		= "3Com ADSL PCI Modem Dialup/PPP Driver"
 FunctionTitleUSRPCIAWR              = "3Com ADSL PCI Modem Dialup/PPP Setup"
 ProductHardwareUSRPCIAWRDescription = "3Com ADSL PCI Modem Dialup/PPP"
 ProductHardwareUSRPCIAWRTitle       = "3Com ADSL PCI Modem Dialup/PPP"
 ProductHardwareXXXXXDescription	 = "3Com ADSL PCI Modem Dialup/PPP"
 CFIDList                = {0x0003}

; FIXME - default to dialup line mode = 1 -- leased line = 0
; In dialup mode we need to write the parameters so RAS/TAPI will bind to us
; In leased mode we need to twrite the parameters so NDIS/WAN will bind to us
; Right now this file only supports dialup mode - leased line changes are needed
;
 LineType				= 1
  						 
; FIXME - Set to zero before release
 DebugFlags			= 3

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

 DefaultAlcInitImage = "Init141.bin"
 DefaultAlcMainImage = "1_4_1.bin"
 DefaultAlcMainImage2 = "1_4_1_2.bin"
 DefaultAlcMainImage3 = "1_4_1_3.bin"
 DefaultAlcMainImage4 = "1_4_1_4.bin"
 DefaultAlcMainImage5 = "1_4_1_5.bin"

 ConfigCnt = "1"

 Name1 = "MyISP"
 SVCAddress1 = "NONE"
 VPI1 = "8"
 VCI1 = "67"
 Protocol1 = "1"
 BT1 = "0"
 QOS1 = "1"
 PCR1 = "0"
 SCR1 = "0"
 VCType1 = "1"

 Name2 = "OAM1"
 SVCAddress2 = "OAM1-NOOP"
 VPI2 = "0"
 VCI2 = "3"
 Protocol2 = "1"
 BT2 = "0"
 QOS2 = "1"
 PCR2 = "100"
 SCR2 = "0"
 VCType2 = "1"

 Name3 = "OAM2"
 SVCAddress3 = "OAM2-NOOP"
 VPI3 = "0"
 VCI3 = "4"
 Protocol3 = "1"
 BT3 = "0"
 QOS3 = "1"

 PCR3 = "100"
 SCR3 = "0"
 VCType3 = "1"


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

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

[ReturnOptions]
set Status = STATUS_FAILED
set OptionList = {}
set OptionTextList = {}
set LanguageList = ^(LanguagesSupported, 1)

Ifcontains(i) $($0) in $(LanguageList)
	ifstr(i) $($1) == ""
		goto returnoptions
	endif
	set PlatformList = ^(PlatformsSupported, 1)
	Ifcontains(i) $($1) in $(PlatformList)
		goto returnoptions
	else
		set Status = STATUS_NOTSUPPORTED
		goto finish_ReturnOptions
	endif
else
	set Status = STATUS_NOLANGUAGE
	goto finish_ReturnOptions
endif

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

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


[InstallOption]
set CurrLang = $($0)
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
set LanguageList = ^(LanguagesSupported, 1)

Set !DebugOutputControl = 1

Ifcontains(i) $($0) NOT-IN $(LanguageList)
	Return STATUS_NOLANGUAGE
endif
;
; FIXME - make sure this flag is disabled before shipping
;
set OldDebugControl = $(!DebugOutputControl)
set !DebugOutputControl = 1

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
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)) == $(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) 
		set CommonStatus = STATUS_USERCANCEL
		goto end
	else-Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
		Debug-Output $(InfName)": Cannot configure the 3Com Home Connect driver software."
		Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output $(InfName)": ShellCode error: cannot get an error string."
			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

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

;DCC DCC DCC
	Debug-Output "xxxxyyy Possible location for TAPI oriented stuff."
;DCC DCC DCC


Goto adapteroptions 

;***********************************************************************
;
;***********************************************************************
configureadapter = +

Debug-Output "$(InfFile) : Configureadapter"
;;May
RunProgram DsExitCode "" ""  $(!STF_WINDOWSSYSPATH)"\drivers\vccfg.exe"
goto end

;***********************************************************************
;
;***********************************************************************
adapteroptions = +
	Debug-Output "$(InfFile) : Adapteroptions"
	set from = adapteroptions
	ifstr(i) $(!NTN_InstallMode) == configure
		goto updateparameters
	endif

;***********************************************************************
;
;***********************************************************************
installproduct =+
	Debug-Output "$(InfFile) : installproduct"
	StartWait 
	set AdapterList = $($R1)
	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

	endif


	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), "kernelautostart", "NDIS", {}, "",+
; $(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)}}
		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 $(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)
 	CloseRegKey $(SoftNetRuleKey)
	Debug-Output "$(InfFile) : Added CloseRegKey for SoftNetRuleKey"
 	goto ShellCodeError
 endif
 

	Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
		EndWait
		CloseRegKey $(SoftNetRuleKey)
		Debug-Output "$(InfFile) : Added CloseRegKey for SoftNetRuleKey"
		goto fatalregistry
	endif
endif 

CloseRegKey $(SoftNetRuleKey)
Debug-Output "$(InfFile) : Added CloseRegKey for SoftNetRuleKey"
Debug-Output "$(InfFile) : "
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 =  4381
set CFIDList = $(CFIDList)
 Debug-Output "$(InfFile) : VendorID = $(Vendor)"
 Debug-Output "$(InfFile) : CFIDList = $(CFIDList)"
 set AdapterList = {}
 ForListDo $(CFIDList)
 set-div CFID = $($) 1
 set DeviceID = $($)
 Debug-Output "Option=$(Option)"
 set CFID = 3
 Debug-Output "Vendor = $(Vendor), CFID = $(CFID), DeviceID = $(Option)"
 Shell $(UtilityInf), GetPCIInformation, $(Vendor) $(CFID)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
 goto ShellCodeError
 endif
 ForListDo $($R0)
 set AdapterList = >($(AdapterList), {*($($),1), *($($),2), $(Option)})
 EndForListDo
 EndForListDo
 ifstr(i) $(AdapterList) == {}
 set Error = $(CANNOT_FIND_ANY_CARD)
 set CommonStatus = USER_CANCEL
 set from = end
 goto nonfatal
 endif
 endif 

 Debug-Output "AdapterList = $(AdapterList)"


Debug-Output "$(InfFile) : Adapterlist = $(AdatperList)"
 ForListDo $(AdapterList)
 Set InstallCard = "YES"
 ifint $(NTDetected) == $(TRUE)
 set DetectedBusNum = *($($),1)
 set DetectedSlotNum = *($($),2)
 set DeviceID = *($($),3)
 Debug-Output "$(InfFile) : DetectedBusNumber = $(DetectedBusNum)"
 Debug-Output "$(InfFile) : DetectedSlotNum = $(DetectedSlotNum)"

 Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(DetectedBusNum), +
 $(DetectedSlotNum), $(ProductHardware$(Option)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 InstallCard = "NO" 
endif 
endif
 


ifstr(i) $(InstallCard) == "NO"
 Debug-Output "$(InfFile) : Card Already at $(DetectedBusNum):$(DetectedSlotNum) already installed!"
 set Error = "An adapter at $(DetectedBusNum):$(DetectedSlotNum) is already installed!"
 Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
 goto ShellCodeError
 endif
 else
 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$(Option)Title)},+
 {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
 {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
 {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
 {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
 Shell $(UtilityInf), AddValueList, $(HardNetCardKey), $(NewValueList)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
 goto ShellCodeError
 endif
 

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

set BusTypeNum = 5 
ifstr(i) $(DeviceID) == "0x0003"
 set CardType = 0
 endif 


ifint $(NTDetected) == $(TRUE)
 set BusNumber = $(DetectedBusNum)
 set SlotNum = $(DetectedSlotNum) 
set BusInterfaceType = $(BusTypeNum)
			 set WakeOnLan = YES
			 set WakeOnLink = NO 
			 set FlowControl = YES 
			
			 Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"

 



set NewValueList = {+
 {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
 {Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)},+
				 {WakeOnMagic,$(NoTitle),$(!REG_VT_SZ),$(WakeOnLan)},+
				 {WakeOnLink,$(NoTitle),$(!REG_VT_SZ),$(WakeOnLink)},+
				 {FlowControl,$(NoTitle),$(!REG_VT_SZ),$(FlowControl)},+
 }
 Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"
 Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
 goto ShellCodeError
 endif

 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)},+
 }
 Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)"
 Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
 goto ShellCodeError
 endif
 endif

;;; You need one address entry in the list for each channel on your device.
;;; FIXME - at this point RAS requires there to be one logical line per address
;;; FIXME - so the address (channel) number is ignored and the line number is used
 Set TapiAddressList = {$(AdapterNumber)"-1-0"}
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-2-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-3-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-4-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-5-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-6-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-7-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-8-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-9-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-10-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-11-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-12-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-13-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-14-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-15-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-16-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-17-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-18-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-19-0")
 Set TapiAddressList = >($(TapiAddressList),$(AdapterNumber)"-20-0")

	;Debug-Output $(InfName): "TapiAddressList"$(TapiAddressLIst)

 Set NewValueList = {+
  {AddressList,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TapiAddressList)},+
  {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
  {DeviceName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
  {CardType,$(NoTitle),$(!REG_VT_DWORD),$(CardType)},+
  {MediaType,$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)},+
  {LineType,$(NoTitle),$(QREG_VT_DWORD),$(LineType)},+
  {AlcInitImage,$(NoTitle),$(!REG_VT_SZ),$(DefaultAlcInitImage)},+
  {AlcMainImage,$(NoTitle),$(!REG_VT_SZ),$(DefaultAlcMainImage)},+ 
  {AlcMainImagePart2,$(NoTitle),$(!REG_VT_SZ),$(DefaultAlcMainImage2)},+
  {AlcMainImagePart3,$(NoTitle),$(!REG_VT_SZ),$(DefaultAlcMainImage3)},+
  {AlcMainImagePart4,$(NoTitle),$(!REG_VT_SZ),$(DefaultAlcMainImage4)},+
  {AlcMainImagePart5,$(NoTitle),$(!REG_VT_SZ),$(DefaultAlcMainImage5)},+ 
  {ConfigCnt,$(NoTitle),$(!REG_VT_DWORD),$(ConfigCnt)},+ 
  {Name1, $(NoTitle),$(!REG_VT_SZ),$(Name1)},+
  {SVCAddress1, $(NoTitle),$(!REG_VT_SZ),$(SVCAddress1)},+
  {VPI1, $(NoTitle),$(!REG_VT_SZ),$(VPI1)},+
  {VCI1, $(NoTitle),$(!REG_VT_SZ),$(VCI1)},+
  {Protocol1, $(NoTitle),$(!REG_VT_SZ),$(Protocol1)},+
  {BT1, $(NoTitle),$(!REG_VT_SZ),$(BT1)},+
  {QOS1, $(NoTitle),$(!REG_VT_SZ),$(QOS1)},+
  {PCR1, $(NoTitle),$(!REG_VT_SZ),$(PCR1)},+
  {SCR1, $(NoTitle),$(!REG_VT_SZ),$(SCR1)},+
  {VCType1, $(NoTitle),$(!REG_VT_SZ),$(VCType1)},+
 {Name2, $(NoTitle),$(!REG_VT_SZ),$(Name11)},+
 {SVCAddress2, $(NoTitle),$(!REG_VT_SZ),$(SVCAddress2)},+
 {VPI2, $(NoTitle),$(!REG_VT_SZ),$(VPI2)},+
 {VCI2, $(NoTitle),$(!REG_VT_SZ),$(VCI2)},+
 {Protocol2, $(NoTitle),$(!REG_VT_SZ),$(Protocol2)},+
 {BT2, $(NoTitle),$(!REG_VT_SZ),$(BT2)},+
 {QOS2, $(NoTitle),$(!REG_VT_SZ),$(QOS2)},+
 {PCR2, $(NoTitle),$(!REG_VT_SZ),$(PCR2)},+
 {SCR2, $(NoTitle),$(!REG_VT_SZ),$(SCR2)},+
 {VCType2, $(NoTitle),$(!REG_VT_SZ),$(VCType2)},+
 {Name3, $(NoTitle),$(!REG_VT_SZ),$(Name3)},+
 {SVCAddress3, $(NoTitle),$(!REG_VT_SZ),$(SVCAddress3)},+
 {VPI3, $(NoTitle),$(!REG_VT_SZ),$(VPI3)},+
 {VCI3, $(NoTitle),$(!REG_VT_SZ),$(VCI3)},+
 {Protocol3, $(NoTitle),$(!REG_VT_SZ),$(Protocol3)},+
 {BT3, $(NoTitle),$(!REG_VT_SZ),$(BT3)},+
 {QOS3, $(NoTitle),$(!REG_VT_SZ),$(QOS3)},+
 {PCR3, $(NoTitle),$(!REG_VT_SZ),$(PCR3)},+
 {SCR3, $(NoTitle),$(!REG_VT_SZ),$(SCR3)},+
 {VCType3, $(NoTitle),$(!REG_VT_SZ),$(VCType3)},+
 }

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

 set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
 set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
 set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(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 ShellCodeError
 endif
 CloseRegKey $(HardNetCardKey)
 CloseRegKey $(HardNetRuleKey)
 CloseRegKey $(HardParameterKey)
 endif 
EndForListDo


install "Install-HwSys" 
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS 
goto fatal 
endif 

	
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductHardwareName) $(!REG_KEY_ALL_ACCESS) KeyService
	 Ifstr $(KeyService) != "" 
	 SetRegValue $(KeyService) {ImagePath,$(NoTitle),$(!REG_VT_SZ),"\SystemRoot\System32\drivers\3CPAWR40.SYS"}
	 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                           

; Set VPI in Registry that the user entered.




; Skip TAPI/RAS setup if already installed.
 ;
 IfStr(i) $(!NTN_InstallMode) == configure
	GoTo successful
 EndIf

 ;
 ; Create the HARDWARE\DEVICEMAP\TAPI DEVICES\USRPCIAWR key
 ;
 Debug-Output ">>>>>>>>>>>Create the HARDWARE\DEVICEMAP\TAPI DEVICES\USRPCIAWR key"

 OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP" $(MAXIMUM_ALLOWED) BaseKey
 Set TapiKeyName = "TAPI DEVICES\USRPCIAWR"


;-----------	added by DCC DCC DC
; If we are installing more than one card at a time, there may already be
; address list data in the TAPI DEVICES\USRPCIAWR Address list. Grab the
; current contents. We'll add our new ones to the current ones.
;
   OpenRegKey $(!REG_H_LOCAL) "" $(CurrentAddressListKeyName) $(MAXIMUM_ALLOWED) CurrentAddressListHandle
	ifstr(i) $(CurrentAddressListHandle) != $(KeyNull)
		GetRegValue $(CurrentAddressListHandle),"Address", CurrentAddressListInfo
		set CurrentAddressList = *($(CurrentAddressListInfo), 4)
		Debug-Output "   CurrentAddressList = "$(CurrentAddressList)
	else
		Debug-Output "  No current address list "
	endif
    CloseRegKey $(CurrentAddressListHandle)

	set AddressList = {}
	ifstr(i) $(CurrentAddressList) != ""
	ForListDo $(CurrentAddressList)
	    Set ValueItem = $($)
			Debug-Output $(InfName)": "$(ValueItem)"="$(ValueItem)
		Set AddressList = >($(AddressList),$(ValueItem))
	EndForListDo

	ForListDo $(TapiAddressList)
	    Set ValueItem = $($)
			Debug-Output $(InfName)": "$(ValueItem)"="$(ValueItem)
		Set AddressList = >($(AddressList),$(ValueItem))
	EndForListDo
	else
	ForListDo $(TapiAddressList)
	    Set ValueItem = $($)
			Debug-Output $(InfName)": "$(ValueItem)"="$(ValueItem)
		Set AddressList = >($(AddressList),$(ValueItem))
	EndForListDo
	endif
	Debug-Output $(InfName)": Final AddressList="$(AddressList)

;--------------

shell "" CobraCreateRegKey $(BaseKey) "TAPI DEVICES\USRPCIAWR"
 IfStr(i) $($R0) != NO_ERROR
	Debug-Output $(InfName)": Error creating registry key!"
	GoTo FatalRegistry
 EndIf
 Set TapiDeviceKey = $($R1)
 
 Debug-Output $(InfName)": TapiDeviceKey="$(TapiDeviceKey)
;------------- DCC DCC


 Set NewValueList = {+
					{Address,$(NoTitle),$(!REG_VT_MULTI_SZ),$(AddressList)},+
					{"Media Type",$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)}}
 Shell $(UtilityInf), AddValueList, $(TapiDeviceKey), $(NewValueList)
 IfInt $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output $(InfName)": ShellCode error."
	GoTo ShellCodeError
 EndIf
 Set RegistryErrorIndex = $($R0)
 IfStr(i) $(RegistryErrorIndex) != NO_ERROR
	Debug-Output $(InfName)": Registry error: Add value list"
	GoTo FatalRegistry
 EndIf
 CloseRegKey $(TapiDeviceKey)
 CloseRegKey $(BaseKey)

 ;
 ; if RAS is not installed, then shell ras setup INF file to install RAS
 ; else invoke RAS to allow user to configure RAS for ISDN.
 ;
 Debug-Output ">>>>>>>>if RAS is not installed, then shell ras setup INF file to install RAS"

 Read-Syms InvokeRasDlg$(!STF_LANGUAGE)
 Shell "oemnsvra.inf" CheckRasInstalled
 IfInt $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output $(InfName)": Error Shelling the RAS INF file oemnsvra.inf"
	Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), +
			"STATUS", $(InvokeRasError)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		GoTo ShellCodeError
	EndIf
	GoTo successful
 EndIf
 Set RasInstalled = $($R0)
 Debug-Output $(InfName)": Is RAS Installed? "$(RasInstalled)
 ;
 ; display a message to the user that RAS setup will now be invoked
 ;
Debug-Output ">>>>>>>display a message to the user that RAS setup will now be invoked"

 IfStr(i) $(RasInstalled) == FALSE
	Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
			$(InvokeRasSetupMsg)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Goto successful
	EndIf
 Else
	Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
			$(InvokeRasConfigMsg)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		goto successful
	EndIf
 EndIf
 ;
 ; FIXME - RAS INF wil not locate the files if it is spawned here.
 ;
 EndWait
 goto successful

 ;
 ; Set the flags based on whether this is an IDW installation
 ;
 IfStr(i) $(!STF_IDW) == TRUE
	Set AddCopy = NO
	Set DoCopy = NO
	Set DoConfig = NO
 Else
	Set AddCopy = YES
	Set DoCopy	= YES
	Set DoConfig = YES
 EndIf
 ;
 ; change the global isntall mode flag to configure if RAS is already installed
 ;
 IfStr(i) $(RasInstalled) == TRUE
	Set SaveNTN_InstallMode = $(!NTN_InstallMode)
	Set !NTN_InstallMode = configure
 EndIf
 ;
 ; now invoke RAS setup to do the right thing
 ;
 Shell "oemnsvra.inf" InstallOption $(!STF_LANGUAGE) "RAS" $(RasDir) $(AddCopy) $(DoCopy) $(DoConfig)
 ;
 ; restore the global install mode flag if it was changed
 ;
 IfStr(i) $(RasInstalled) == TRUE
	Set !NTN_InstallMode = $(SaveNTN_InstallMode)
 EndIf
 IfInt $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output $(InfName)": Error Shelling the RAS INF file oemnsvra.inf"
	Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
			$(InvokeRasError)
	IfInt $($ShellCode) != $(!SHELL_CODE_OK)
		Goto ShellCodeError
	EndIf
	goto successful
 EndIf

CloseRegKey $(KeyEventLog)

 EndWait
 goto successful

;***********************************************************************
;
;***********************************************************************
updateparameters =+

	Debug-Output "$(InfFile) : Updateparameters"
	set HardParameterKey = $($R3)
 
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

;DCC DCC DCC
	Debug-Output "xxxxyyy another Possible location for TAPI oriented stuff."
	Debug-Output "Right after this the CloseRegKey $(KeyParameters) takes place."
;DCC DCC DCC

	CloseRegKey $(KeyParameters)
	goto successful


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


removeadapter = +
 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
	 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
 
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName) $(!REG_KEY_ALL_ACCESS) KeyBase
;
;	Check the above key instead of this key. This one does not get removed til reboot
;	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductSoftwareName) $(!REG_KEY_ALL_ACCESS) KeyBase
;
	 Ifstr $(KeyBase) != "" 
	   CloseRegKey $(KeyBase)                                                                                                                                        
	 else
	   set RemoveList = {}
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\3CPAWR40.SYS")
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\Init141.bin")
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\1_4_1.bin")
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\1_4_1_2.bin")
  	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\1_4_1_3.bin")
   	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\1_4_1_4.bin")
 	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\1_4_1_5.bin")
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\dshelper.exe")
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\dshelper.ini")
	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\dsdialer.exe")
 	   set RemoveList = >($(RemoveList), $(!STF_WINDOWSSYSPATH)"\DRIVERS\vccfg.exe")

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

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),"\SystemRoot\System32\drivers\3CPAWR40.SYS"}
	 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"},+ 
		 {FlowControl,$(NoTitle),$(!REG_VT_SZ),"YES"}} 
		 
		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 

 goto end

successful = +
 Debug-Output "$(InfFile) : Successful"
 RunProgram DsExitCode "" ""  $(!STF_WINDOWSSYSPATH)"\drivers\DsHelper.exe" -M
 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
 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)
 

[CobraCreateRegKey]
    Debug-Output $(InfName)": Entering [CobraCreateRegKey]"
    Set ECR_Result          = NO_ERROR
    Set ECR_BaseKeyHandle   = $($0)
    Set ECR_NewPath         = $($1)
    Set KeyNull             = ""
    Set MAXIMUM_ALLOWED     = 33554432

    Debug-Output $(InfName)": CobraCreateRegKey - ECR_BaseKeyHandle = "$(ECR_BaseKeyHandle)
    Debug-Output $(InfName)":                  ECR_NewPath       = "$(ECR_NewPath)
    Debug-Output $(InfName)":                  MAXIMUM_ALLOWED   = "$(MAXIMUM_ALLOWED)
    Debug-Output $(InfName)":                  KeyNull           = "$(KeyNull)

    OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_NewPath) $(MAXIMUM_ALLOWED) +
               ECR_BaseKey
    Debug-Output $(InfName)": ECR_BaseKey = "$(ECR_BaseKey)
    Debug-Output $(InfName)":     OpenRegKey returned "$($R0)
    IfStr $(ECR_BaseKey) == $(KeyNull)
        Debug-Output $(InfName)": ECR_BaseKey == KeyNull"
    Else
        Debug-Output $(InfName)": ECR_BaseKey != KeyNull"
        Set ECR_KeyHandle = $(ECR_BaseKey)
        GoTo  ECR_Return
    EndIf

    Set ECR_TmpPath = ""
    Split-String $(ECR_NewPath) "\" ECR_PList
    Debug-Output $(InfName)": ECR_PList = "$(ECR_PList)
    ForListDo $(ECR_PList)
        IfStr(i) $($) != "\"
            IfInt $(#) == 1
                Set ECR_TmpPath = $($)
            Else
                Set ECR_TmpPath = $(ECR_TmpPath)"\"$($)
            EndIf
            Debug-Output $(InfName)": Determining if "$(ECR_TmpPath)" exists"
            OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_TmpPath) $(MAXIMUM_ALLOWED) ECR_BaseKey
            IfStr $(ECR_BaseKey) == $(KeyNull)
                Debug-Output $(InfName)": Creating "$(ECR_TmpPath)
                CreateRegKey $(ECR_BaseKeyHandle)  {$(ECR_TmpPath),0,GenericClass} "" $(MAXIMUM_ALLOWED) "" ECR_KeyHandle
                IfStr(i) $(ECR_KeyHandle) == $(KeyNull)
                    Set ECR_Result = $($R0)
                    GoTo ECR_Return
                EndIf
            EndIf
        EndIf
    EndForListDo
ECR_Return = +
    Return $(ECR_Result) $(ECR_KeyHandle)

[InvokeRasDlgENG]
    InvokeRasSetupMsg   = "Your 3Com ADSL Modem setup is complete. "+
                          "Remote Access Services (RAS) must now be installed. "+
                          "Please configure the 3Com ADSL Modem ports in RAS "+
                          "to enable you to use Dialup Networking with your ADSL Modem."+
			  "If you are using NT Server, please make sure your Modem ports"+
			  "are configured to Dial Out. This is NOT a default setting"
    InvokeRasConfigMsg  = "3Com ADSL Modem setup is complete. "+
                          "Remote Access Services (RAS) setup must now be invoked. "+
                          "Please configure the 3Com ADSL Modem ports in RAS "+
                          "setup to enable you to use Dialup Networking with your ADSL Modem."+
		          "If you are using NT Server, please make sure your Modem ports"+
			  "are configured to Dial Out. This is NOT a default setting"
    InvokeRasError      = "3Com ADSL Modem setup encountered an error "+
                          "while invoking the RAS setup INF file (OEMNSVRA.INF). "+
                          "Please make sure that the file is present in the "+
                          "System32 directory and is the proper file." 



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

[Install-HwSys]
 set STF_VITAL = ""
 AddSectionFilesToCopyList Files-HwSys $(SrcDir) $(!STF_WINDOWSSYSPATH)"\drivers"
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 Exit

[Source Media Descriptions]
 1 = "3Com ADSL PCI Modem Dialup/PPP Disk" ;, TAGFILE = DISK1

[ProductType]
STF_PRODUCT = Winnt

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

[Files-HwSys]
1,3CPAWR40.SYS,SIZE=180000
1,1_4_1.bin,SIZE=300000
1,1_4_1_2.bin,SIZE=300000
1,1_4_1_3.bin,SIZE=300000
1,1_4_1_4.bin,SIZE=300000
1,1_4_1_5.bin,SIZE=300000
1,init141.bin,SIZE=800
1,dshelper.exe,SIZE=300000
1,dshelper.ini,SIZE=100
1,dsdialer.exe,SIZE=300000
1,vccfg.exe,SIZE=300000

[LanguagesSupported]
 ENG

[OptionsTextENG]
 USRPCIAWR = "3Com ADSL PCI Modem Dialup/PPP"
 
[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"

[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: 1.27