OEMSETUP.INF Driver File Contents (Pcmcia.zip)

[Identification]
 OptionType = NetAdapter

[PlatformsSupported]
 ISA
 EISA
 MCA
 PCI

[Options]
 elpc3nD
 elpc3n

[OptionsTextENG]
 elpc3nD = "3Com EtherLink III LAN+Modem PC Card (3C562D/3C563D)"
 elpc3n = "3Com EtherLink III LAN+Modem PC Card (3C562 3C562B/3C563B 3C562C/3C563C)"

[AllFileConstants]
 GenericInfVersion = " V1.50"
 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"

[FileConstants-elpc3n]
 GenericAdapterName = "3Com EtherLink III LAN+Modem PC Card"
 GenericDriverName = "3Com EtherLink III LAN+Modem Driver"
 GenericSysName = "elpc3ns.sys"


ProductMajorVersion = "4"
 ProductMinorVersion = "00"
 ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)


ProductSoftwareName = "elpc3n"
 ProductSoftwareDesc = "3Com EtherLink III LAN+Modem Driver"
 ProductSoftwareImage = "\SystemRoot\System32\drivers\"$(GenericSysName)
 NetRuleSoftwareType = "elpc3nSys ndisDriver elpc3nDriver"
 NetRuleSoftwareUse = $(SoftwareType)
 NetRuleSoftwareBindForm = """elpc3nSys"" yes no container"
 NetRuleSoftwareClass = {"elpc3nDriver basic"}
 NetRuleSoftwareBindable = {"elpc3nDriver elpc3nAdapter non exclusive 100"}


ProductHardwareName = "elpc3n"
 ProductHardwareDesc = "3Com EtherLink III LAN+Modem PC Card"
 NetRuleHardwareType = "elpc3n elpc3nAdapter"
 NetRuleHardwareBindForm = " yes yes container"
 NetRuleHardwareClass = {"elpc3nAdapter basic"}


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










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

[date]

Now = {} ? $(!LIBHANDLE) GetSystemDate

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

[ReturnOptions]
 set Status = STATUS_FAILED
 set OptionList = {}
 set OptionTextList = {}


set LanguageList = ^(LanguagesSupported, 1)
 Ifcontains(i) $($0) in $(LanguageList)

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

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

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

[InstallOption]
 set Status = STATUS_FAILED
 set Option = $($1)
 set SrcDir = $($2)
 set AddCopy = $($3)
 set DoCopy = $($4)
 set DoConfig = $($5)
 Set !DebugOutputControl = 0

    ; Shradha
    set ComPortPrefix = SerElpc3n
    ; Shradha

set LanguageList = ^(LanguagesSupported, 1)
 Ifcontains(i) $($0) NOT-IN $(LanguageList)
        Return STATUS_NOLANGUAGE
 endif

 Set AdapterTypeValue = 4096
 Ifstr(i) $(Option) == elpc3nD
        Set AdapterTypeValue = 4355
 endif
 set OldOption = $(Option)
 set Option = elpc3n

 set-subst LF = "\n"
 read-syms GeneralConstants
 read-syms AllFileConstants
 read-syms FileConstants"-"$(Option)
 read-syms DialogConstants$(!STF_LANGUAGE)"-"$(Option)
 ifstr(i) $(!NTN_Origination) == "NCPA"
        set Continue = $(OK)
 endif
 read-syms AllFileConstants$(!STF_LANGUAGE)
 read-syms FileConstants$(!STF_LANGUAGE)"-"$(Option)
 detect date
 set-title $(FunctionTitle)
 set to = Begin
 set from = Begin

 ; -------------------------- BEGIN FORCE FIX - SHRADHA

 ; Update the modem info by reading from the ZZZx
 ; entries under the Serial\Parameters in registry

 Debug-Output "<DBG: FORCE> Starting ModemIOBaseAddressList = "$(ModemIOBaseAddressList)
 Debug-Output "<DBG: FORCE> Starting ModemIOBaseAddressValues = "$(ModemIOBaseAddressValues)

 set SerParams = "SYSTEM\CurrentControlSet\Services\Serial\Parameters"

 set ZZZComPort = $(SerParams)"\ZZZa"
 install "install-update-modem-info"

 set ZZZComPort = $(SerParams)"\ZZZb"
 install "install-update-modem-info"

 set ZZZComPort = $(SerParams)"\ZZZc"
 install "install-update-modem-info"

 set ZZZComPort = $(SerParams)"\ZZZd"
 install "install-update-modem-info"

 Debug-Output "<DBG: FORCE> Final ModemIOBaseAddressList = "$(ModemIOBaseAddressList)
 Debug-Output "<DBG: FORCE> Final ModemIOBaseAddressValues = "$(ModemIOBaseAddressValues)

 Debug-Output "<DBG: FORCE> Final ModemIrqList = "$(ModemIrqList)
 Debug-Output "<DBG: FORCE> Final ModemIrqValues = "$(ModemIrqValues)
  ;-------------------------- END FORCE FIX - SHRADHA


 set CommonStatus = STATUS_SUCCESSFUL
 EndWait

Begin = +
 Set ActivateDetection = FALSE
 Ifstr(i) $(!NTN_InstallMode) == deinstall
        set StartLabel = removeadapter
 else-Ifstr(i) $(!NTN_InstallMode) == Update
        set StartLabel = UpgradeSoftware
 else-Ifstr(i) $(!NTN_InstallMode) == bind
        set StartLabel = bindingadapter
 else-Ifstr(i) $(!NTN_InstallMode) == configure
        set StartLabel = configureadapter

        Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
         Debug-Output "<DBG> Cannot configure the software."
         Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
         ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "<DBG> ShellCode error: cannot get an error string."
                goto ShellCodeError
         endif
         set Error = $($R0)
         set from = end
         set to = end
         goto nonfatalinfo
        endif
 else
        set StartLabel = installadapter
        set OEM_ABANDON_OPTIONS = {}
        set OEM_ABANDON_SOFTWARE = FALSE
        set OEM_ABANDON_ON = TRUE
 endif


ifstr(i) $(Option) == elpc3n
        ;Shradha
        ;set IOBaseAddrValue = *($(IOBaseAddrList), 17)
        ;set MemoryAddrValue = *($(MemoryAddrList), 9)
        set IOBaseAddrValue = *($(IOBaseAddrList), 1)
        set MemoryAddrValue = *($(MemoryAddrList), 1)
        ;Shradha
        set IRQValue = *($(IRQList), 1)
        set MediaTypeValue = *($(MediaTypeList), 1)
        set ModemIOBaseAddressValue = *($(ModemIOBaseAddressList), 2)
        set ModemInterruptNumberValue = *($(IRQList), 1)
        set ComPortValue = *($(ComPortList), 2)
        set LANOnlyValue = *($(LANOnlyList), 1)
                set Static1Label = "Note: Modem and Network use same interrupt"

 endif

Set from = $(fatal)
 Set to = $(fatal)
 Goto $(StartLabel)

installadapter = +

OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
 Ifstr $(KeyProduct) != $(KeyNull)


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

         Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
         $(ProductVersion)
         ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error: cannot get an error string."
         goto ShellCodeError
         endif
         goto end
        else

         Shell $(UtilityInf), CardExistedDlg
         ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error: cannot get an error string."
         goto ShellCodeError
         endif
         ifstr(i) $($R1) != "OK"
         goto end
         endif
         set OldVersionExisted = $(TRUE)
        endif
 endif


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

 Set SrcDir = $($R1)
 install "Install-Dll"
 goto adaptersetup

configureadapter = +
 Ifstr $(KeyProduct) == $(KeyNull)
        OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
        Ifstr $(KeyProduct) == $(KeyNull)
         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
         Debug-Output "<DBG> Cannot find component product key"
         goto fatalregistry
        Endif
 Endif


Debug-Output "<DBG> INF: Shelling to FindService"
 Shell $(UtilityInf) FindService, $(KeyProduct)
 Ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "<DBG> INF: FindService shell failure"
        Goto ShellCodeError
 Endif
 Ifstr(i) $($R0) != NO_ERROR
        Debug-Output "<DBG> INF: FindService Shell error: "$($R0)
        Goto fatalregistry
 endif

 Set KeyParameters = $($R2)


CloseRegKey $($R1)
 Ifstr $(KeyParameters) == $(KeyNull)
        set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
        Debug-Output "<DBG> Cannot find component service"
        goto fatalregistry
 endif
 set OldVersionExisted = $(TRUE)
 set ValueName = ""
 set ValueData = ""
 set ValueStr = ""
 set ValueList = {}


EnumRegValue $(KeyParameters) ValueList
 ifstr(i) $(Option) == elpc3n
        ForListDo $(ValueList)
         set ValueItem = $($)
         set ValueName = *($(ValueItem),1)
         set ValueData = *($(ValueItem),4)
         ifstr(i) $(ValueName) == "IoBaseAddress"
                set IOBaseAddrIndex = $(ValueData)
         else-ifstr(i) $(ValueName) == "PCCARDAttributeMemoryAddress"
                set MemoryAddrIndex = $(ValueData)
         else-ifstr(i) $(ValueName) == "InterruptNumber"
                set IRQValueIndex = $(ValueData)
         else-ifstr(i) $(ValueName) == "ModemInterruptNumber"
                set ModemInterruptNumberIndex = $(ValueData)
         else-ifstr(i) $(ValueName) == "ComPort"
                set ComPortIndex = $(ValueData)
         else-ifstr(i) $(ValueName) == "Transceiver"
                set MediaTypeIndex = $(ValueData)
         else-ifstr(i) $(ValueName) == "LANOnly"
                set LANOnlyIndex = $(ValueData)
        else-ifstr(i) $(ValueName) == "AdapterName"
                Debug-Output "<DBG> AdapterName in registry = "$(ValueData)
                set OldAdapterName = $(ValueData)
        endif
        EndForListDo

        set IRQValue = *($(IRQValues), ~($(IRQList), $(IRQValueIndex)))

        set ModemInterruptNumberValue = *($(IRQValues), ~($(IRQList), $(IRQValueIndex)))

        set MemoryAddrValue = *($(MemoryAddrList), ~($(MemoryAddrValues),$(MemoryAddrIndex)))
        ifstr(i) $(MemoryAddrValue) == ""
         set MemoryAddrValue = *($(MemoryAddrValues), 2)
        endif

        set IOBaseAddrValue = *($(IOBaseAddrList), ~($(IOBaseAddrValues),$(IOBaseAddrIndex)))
        ifstr(i) $(IOBaseAddrValue) == ""
         set IOBaseAddrValue = *($(IOBaseAddrList), 1)
        endif

        set ModemIOBaseAddressValue = *($(ModemIOBaseAddressList), ~($(ComPortValues),$(ComPortIndex)))
        Debug-Output "<DBG> Configure/ComPortIndex "$(ComPortIndex)
        Debug-Output "<DBG> Configure/ModemIOBaseAddressValue "$(ModemIOBaseAddressValue)
        ifstr(i) $(ModemIOBaseAddressValue) == ""
         set ModemIOBaseAddressValue = *($(ModemIOBaseAddressValues), 2)
        endif

        set ComPortValue = *($(ComPortList), ~($(ComPortValues),$(ComPortIndex)))
        ifstr(i) $(ComPortValue) == ""
         set ComPortValue = *($(ComPortValues), 2)
        endif

        set MediaTypeValue = *($(MediaTypeList), ~($(MediaTypeValues),$(MediaTypeIndex)))
        ifstr(i) $(MediaTypeValue) == ""
         set MediaTypeValue = *($(MediaTypeValues), 1)
        endif

        set LANOnlyValue = *($(LANOnlyList), ~($(LANOnlyValues),$(LANOnlyIndex)))
        ifstr(i) $(LANOnlyValue) == ""
         set LANOnlyValue = *($(LANOnlyValues), 1)
        endif

 endif

adaptersetup = +
 Set from = adapteroptions

adapteroptions = +
 LoadLibrary "disk 1" $(DialogDllName) hLib
 read-syms FileDependentDlg$(!STF_LANGUAGE)"-"$(Option)

Debug-Output "<DBG> ----- Before calling my dialog -----"
 Debug-Output "<DBG> Combo1Out "$(Combo1Out)
 Debug-Output "<DBG> Combo2Out "$(Combo2Out)
 Debug-Output "<DBG> Combo3Out "$(Combo3Out)
 Debug-Output "<DBG> Combo6Out "$(Combo6Out)
 Debug-Output "<DBG> Combo7Out "$(Combo7Out)
 Debug-Output "<DBG> Combo8Out "$(Combo8Out)
 Debug-Output "<DBG> ButtonPressed "$(ButtonPressed)
 ui start "InputDlg" $(hLib)
 Debug-Output "<DBG> ----- After calling my dialog -----"
 set ExitButton = $(ButtonPressed)
 Debug-Output "<DBG> Combo1Out "$(Combo1Out)
 Debug-Output "<DBG> Combo2Out "$(Combo2Out)
 Debug-Output "<DBG> Combo3Out "$(Combo3Out)
 Debug-Output "<DBG> Combo6Out "$(Combo6Out)
 Debug-Output "<DBG> Combo7Out "$(Combo7Out)
 Debug-Output "<DBG> Combo8Out "$(Combo8Out)
 Debug-Output "<DBG> ButtonPressed "$(ButtonPressed)

 FreeLibrary $(hLib)
 ifstr(i) $(DLGEVENT) == "CONTINUE"
        ifstr(i) $(Option) == elpc3n
         set IOBaseAddrIndex = $(Combo1Out)
         set MemoryAddrIndex = $(Combo2Out)
         set IRQValueIndex = $(Combo3Out)
         set MediaTypeIndex = $(Combo4Out)
         set ModemInterruptNumberIndex = $(Combo6Out)
         set ComPortIndex = $(Combo7Out)
         set LANOnlyIndex = $(Combo8Out)
         set ExitButton = $(ButtonPressed)
        endif
        ui pop 1
 else-ifstr(i) $(DLGEVENT) == "EXIT"
        set CommonStatus = STATUS_USERCANCEL
        ui pop 1
        goto end
 else
        set CommonStatus = STATUS_USERCANCEL
        ui pop 1
        Debug-Output "<DBG> Action: unknown. Bye."
        goto end
 endif

skipoptions =+
 ifint $(OldVersionExisted) == $(TRUE)
        ifstr(i) $(!NTN_InstallMode) == configure
         goto writeparameters
        endif
 endif
 StartWait


ifint $(OldVersionExisted) == $(FALSE)
        ifstr(i) $(!NTN_InstallMode) == "install"
         Ifstr(i) $(DoCopy) == "YES"
                Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
                Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                 Goto ShellCodeError
                Else-Ifstr(i) $($R0) == STATUS_FAILED
                 Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
                 ifint $($ShellCode) != $(!SHELL_CODE_OK)
                        goto ShellCodeError
                 endif
                 set Error = $($R0)
                 Goto fatal
                Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
                 Goto successful
                Endif
                Set SrcDir = $($R1)
         Endif
         install "Install-Option"
         ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
                Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                 goto ShellCodeError
                endif
                set Error = $($R0)
                goto fatal
         endif
        endif

        Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
         $(ProductSoftwareName), +
         $(ProductSoftwareName), +
         $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
         $(ProductSoftwareImage), "kernel", "NDIS", {}, "",+
         $(NetEventDLL)

        Set OEM_ABANDON_SOFTWARE = TRUE
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error"
         goto ShellCodeError
        endif







        set RegistryErrorIndex = $($R0)
        set KeyProduct = $($R1)
        Set SoftNetRulesKey = $($R2)
        CloseRegKey $($R3)
        CloseRegKey $($R4)
        CloseRegKey $($R5)

        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
         EndWait
         Debug-Output "<DBG> Registry error: add software components"
         CloseRegKey $(KeyProduct)
         CloseRegKey $(SoftNetRulesKey)
         goto fatalregistry
        endif

        ; Shradha
        ifstr $(AdapterNumber) == ""

                Debug-Output "<DBG> AdpaterNumber unknown !"
                Debug-Output "<DBG> NTN_RegBase = "$(!NTN_RegBase)

                set MyAdapterName = $(!NTN_RegBase)
                Debug-Output "<DBG> MyAdapterName = "$(MyAdapterName)

                Split-String $(MyAdapterName), "\", MyCardInfo
                Debug-Output "<DBG> MyCardInfo = "$(MyCardInfo)

                set AdapterNumber = *($(MyCardInfo),11)
                Debug-Output "<DBG> AdapterNumber = "$(AdapterNumber)
        endif
        ; Shradha

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

        Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
        Debug-Output "<DBG> AddValueList - SoftwareType, MajorVersion,..."

        ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error."
         goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
         EndWait
         Debug-Output "<DBG> Registry error: add value list."
         CloseRegKey $(KeyProduct)
         CloseRegKey $(SoftNetRulesKey)
         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),$(OldOption)}}

        Shell $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList)
        Debug-Output "<DBG> AddValueList - type, use, bindform, class, ..."
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error."
         goto ShellCodeError
        endif

        set RegistryErrorIndex = $($R0)
        CloseRegKey $(KeyProduct)
        CloseRegKey $(SoftNetRulesKey)
        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
         EndWait
         Debug-Output "<DBG> Resgitry error: add value list."
         goto fatalregistry
        endif
 endif

 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)
        Debug-Output "<DBG> Cannot add hardware component"
        goto ShellCodeError
 endif

 set RegistryErrorIndex = $($R0)
 Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output "<DBG> Registry error: add hardware component"
        CloseRegKey $($R1)
        CloseRegKey $($R2)
        CloseRegKey $($R3)
        goto fatalregistry
 endif

 set KeyParameters = $($R3)
 set KeyAdapterRules = $($R2)
 set AdapterNumber = $($R4)

 set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
                 {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+
                 {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDesc)},+
                 {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
                 {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
                 {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}

 Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList)
 Debug-Output "<DBG> AddValueList - Manufacturer, Title, Description,..."
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "<DBG> ShellCode error"
        goto ShellCodeError
 endif

 CloseRegKey $($R1)

 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),$(OldOption)}}

 Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
 Debug-Output "<DBG> AddValueList - type, bindform, class, InfOption"
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "<DBG> ShellCode error."
        goto ShellCodeError
 endif

 set RegistryErrorIndex = $($R0)

 Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output "<DBG> Resgitry error: add value list."
        CloseRegKey $(KeyParameters)
        CloseRegKey $(KeyAdapterRules)
        goto fatalregistry
 endif

 CloseRegKey $(KeyAdapterRules)
 goto writeparameters

writeparameters = +
 Shell $(UtilityInf), GetBusTypeNum
 set BusTypeNum = $($R1)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "<DBG> ShellCode error."
        goto ShellCodeError
 endif
 set BusTypeNum = 1

 ifstr(i) $(Option) == elpc3n
        set MemoryAddrValue = *($(MemoryAddrValues), ~($(MemoryAddrList), $(MemoryAddrIndex)))
        ;Shradha
        ;set-add CommonMemoryAddrValue = $(MemoryAddrValue), 8192
        ifint $(MemoryAddrValue) != 0
                set-add CommonMemoryAddrValue = $(MemoryAddrValue), 8192
        else
                set CommonMemoryAddrValue = 0
        endif
        ;Shradha
        set IRQValue = *($(IRQValues), ~($(IRQList), $(IRQValueIndex)))
        set IOBaseAddrValue = *($(IOBaseAddrValues), ~($(IOBaseAddrList), $(IOBaseAddrIndex)))
        set MediaTypeValue = *($(MediaTypeValues), ~($(MediaTypeList), $(MediaTypeIndex)))
        set ComPortValue = *($(ComPortValues), ~($(ComPortList), $(ComPortIndex)))
        Debug-Output "<DBG> Install/ComPortIndex "$(ComPortIndex)

        ; Shradha
        ; check if user selected Auto for Interrupt - if so
        ; we should write the correct irq for the modem intr
        ; and write 0 for the network intr.
        ;
        set ModemInterruptNumberValue = *($(IRQValues), ~($(IRQList), $(IRQValueIndex)))
        Debug-Output "<DBG> Install/ModemInterruptNumberValue "$(ModemInterruptNumberValue)
        ifint $(ModemInterruptNumberValue) == 0
                Debug-Output "<DBG> Install/ModemInterruptNumberValue is 0 !"
                set ModemInterruptNumberValue = *($(ModemIrqValues), ~($(ComPortList),$(ComPortIndex)))
                Debug-Output "<DBG> Install/ModemInterruptNumberValue "$(ModemInterruptNumberValue)
        endif
        ; Shradha

        set ModemIOBaseAddressValue = *($(ModemIOBaseAddressValues), ~($(ComPortList), $(ComPortIndex)))
        Debug-Output "<DBG> Install/ModemIOBaseAddressValue "$(ModemIOBaseAddressValue)
        set LANOnlyValue = *($(LANOnlyValues), ~($(LANOnlyList), $(LANOnlyIndex)))
        Debug-Output "<DBG> LanOnlyValue = "$(LANOnlyValue)


        ;Shradha
        ifstr $(OldAdapterName) == ""
                set OldAdapterName = $(ProductHardwareName)$(AdapterNumber)
                Debug-Output "<DBG> setting OldAdapterName"
        endif
        Debug-Output "<DBG> OldAdapterName = "$(OldAdapterName)
        ;Shradha

        set NewValueList = {{IoBaseAddress, $(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
                         {IoLength, $(NoTitle),$(!REG_VT_DWORD), 16},+
                         {IoBaseAddress_1, $(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseAddressValue)},+
                         {IoLength_1, $(NoTitle),$(!REG_VT_DWORD), 8},+
                         {PCCARDAttributeMemoryAddress, $(NoTitle),$(!REG_VT_DWORD),$(MemoryAddrValue)},+
                         {PCCARDAttributeMemorySize, $(NoTitle),$(!REG_VT_DWORD),8192},+
                         {PCCARDAttributeMemoryOffset, $(NoTitle),$(!REG_VT_DWORD),0},+
                         {MemoryMappedBaseAddress, $(NoTitle),$(!REG_VT_DWORD),$(CommonMemoryAddrValue)},+
                         {MemoryMappedSize, $(NoTitle),$(!REG_VT_DWORD),4096},+
                         {PCCARDMemoryWindowOffset, $(NoTitle),$(!REG_VT_DWORD),0},+
                         {Transceiver, $(NoTitle),$(!REG_VT_DWORD),$(MediaTypeValue)},+
                         {ModemIOBaseAddress, $(NoTitle),$(!REG_VT_DWORD),$(ModemIOBaseAddressValue)},+
                         {ModemInterruptNumber, $(NoTitle),$(!REG_VT_DWORD),$(ModemInterruptNumberValue)},+
                         {InterruptNumber, $(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+
                         {ComPort, $(NoTitle),$(!REG_VT_DWORD),$(ComPortValue)},+
                         {LANOnly, $(NoTitle),$(!REG_VT_DWORD),$(LANOnlyValue)},+
                         {InternalCTRL, $(NoTitle),$(!REG_VT_DWORD),1310722},+
                         {BusType, $(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
                         {BusNumber, $(NoTitle),$(!REG_VT_DWORD),0},+
                         {CardType, $(NoTitle),$(!REG_VT_DWORD),3},+
                         ; Shradha
                         {SoftexPcmcia, $(NoTitle),$(!REG_VT_DWORD),1},+
                         {AdapterName,$(NoTitle),$(!REG_VT_SZ),$(OldAdapterName)},+
                         ;{Pcmcia, $(NoTitle),$(!REG_VT_DWORD),1},+
                         ; Shradha
                         {OSType, $(NoTitle), $(!REG_VT_DWORD),1},+
                         {MediaType, $(NoTitle), $(!REG_VT_DWORD),1},+
                         {AdapterType, $(NoTitle), $(!REG_VT_DWORD), $(AdapterTypeValue)}}
 endif
 Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
 Debug-Output "<DBG> AddValueList - IoBaseAddress,..."
 CloseRegKey $(KeyParameters)




ifstr(i) $(Option) == elpc3n
        OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        Ifstr $(MyPcmciaHandle) == $(KeyNull)
         Debug-Output "<DBG> CreateRegKey (3C562)"
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation" $(MAXIMUM_ALLOWED) MyPcmciaKey
         CreateRegKey $(MyPcmciaKey) {"3C562",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyPcmcialHandle
         CloseRegKey $(MyPcmciaKey)
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        endif
        set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"elpc3n"}}
        Shell $(UtilityInf), AddValueList, $(MyPcmciaHandle), $(NewValueList)
        Debug-Output "<DBG> AddValueList - Driver:REG_SZ:elpc3n"
        CloseRegKey $(MyPcmciaHandle)

        OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562B/3C563B" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        Ifstr $(MyPcmciaHandle) == $(KeyNull)
         Debug-Output "<DBG> CreateRegKey (3C562B/3C563B)"
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation" $(MAXIMUM_ALLOWED) MyPcmciaKey
         CreateRegKey $(MyPcmciaKey) {"3C562B/3C563B",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyPcmcialHandle
         CloseRegKey $(MyPcmciaKey)
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562B/3C563B" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        endif
        set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"elpc3n"}}
        Shell $(UtilityInf), AddValueList, $(MyPcmciaHandle), $(NewValueList)
        Debug-Output "<DBG> AddValueList - Driver:REG_SZ:elpc3n"
        CloseRegKey $(MyPcmciaHandle)

        OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562C/3C563C" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        Ifstr $(MyPcmciaHandle) == $(KeyNull)
         Debug-Output "<DBG> CreateRegKey (3C562C/3C563C)"
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation" $(MAXIMUM_ALLOWED) MyPcmciaKey
         CreateRegKey $(MyPcmciaKey) {"3C562C/3C563C",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyPcmcialHandle
         CloseRegKey $(MyPcmciaKey)
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562C/3C563C" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        endif
        set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"elpc3n"}}
        Shell $(UtilityInf), AddValueList, $(MyPcmciaHandle), $(NewValueList)
        Debug-Output "<DBG> AddValueList - Driver:REG_SZ:elpc3n"
        CloseRegKey $(MyPcmciaHandle)

        OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562D/3C563D" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        Ifstr $(MyPcmciaHandle) == $(KeyNull)
         Debug-Output "<DBG> CreateRegKey (3C562D/3C563D)"
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation" $(MAXIMUM_ALLOWED) MyPcmciaKey
         CreateRegKey $(MyPcmciaKey) {"3C562D/3C563D",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyPcmcialHandle
         CloseRegKey $(MyPcmciaKey)
         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Pcmcia\DataBase\3Com Corporation\3C562D/3C563D" $(MAXIMUM_ALLOWED) MyPcmciaHandle
        endif
        set NewValueList = {{Driver,$(NoTitle),$(!REG_VT_SZ),"elpc3n"}}
        Shell $(UtilityInf), AddValueList, $(MyPcmciaHandle), $(NewValueList)
        Debug-Output "<DBG> AddValueList - Driver:REG_SZ:elpc3n"
        CloseRegKey $(MyPcmciaHandle)
 endif


;***************************************************************
Debug-Output "<DBG> Checking if COM port needs to be added ...."
;***************************************************************

ifstr $(AdapterNumber) == ""

        Debug-Output "<DBG> AdpaterNumber unknown !"
        Debug-Output "<DBG> NTN_RegBase = "$(!NTN_RegBase)

        set MyAdapterName = $(!NTN_RegBase)
        Debug-Output "<DBG> MyAdapterName = "$(MyAdapterName)

        Split-String $(MyAdapterName), "\", MyCardInfo
        Debug-Output "<DBG> MyCardInfo = "$(MyCardInfo)

        set AdapterNumber = *($(MyCardInfo),11)
        Debug-Output "<DBG> AdapterNumber = "$(AdapterNumber)
endif

set ComPortName = $(ComPortPrefix)$(AdapterNumber)
Debug-Output "<DBG> ComPortName = "$(ComPortName)

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

ifcontains(i) $(Option) in {"elpc3n", "ELPC3"}
        Debug-Output "<DBG> LANOnly mode = "$(LANOnlyValue)
        ifint $(LANOnlyValue) == 0

                Debug-Output "<DBG> Deleting old "$(ComPortName)

                OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) MyNewSerialHandle

                DeleteRegTree $(MyNewSerialHandle) $(ComPortName)

                CloseRegKey $(MyNewSerialHandle)

                Debug-Output "<DBG> Adding the COM port "$(ComPortName)

                ;OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters\$(ComPortName)" $(MAXIMUM_ALLOWED) MyNewSerialHandle

                ;Ifstr $(MyNewSerialHandle) == $(KeyNull)

                         OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialKey

                         CreateRegKey $(SerialKey) {$(ComPortName),0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle

                         CloseRegKey $(SerialKey)
                ;endif

                ;Shradha
                Debug-Output "<DBG> ComPortIndex "$(ComPortIndex)
                Debug-Output "<DBG> ModemInterruptNumberValue "$(ModemInterruptNumberValue)
                ifint $(ModemInterruptNumberValue) == 0
                        Debug-Output "<DBG> ModemInterruptNumberValue is 0 !"
                        set ModemInterruptNumberValue = *($(ModemIrqValues), ~($(ComPortList),$(ComPortIndex)))
                        Debug-Output "<DBG> ModemInterruptNumberValue "$(ModemInterruptNumberValue)
                endif
                ; Shradha

                set NewValueList = {+
                         {DosDevices, $(NoTitle),$(!REG_VT_SZ), "COM"$(ComPortValue)},+
                         {ForceFifoEnable, $(NoTitle), $(!REG_VT_DWORD), 0},+
                         {ExternallyConfiguredModem, $(NoTitle), $(!REG_VT_DWORD), 1},+                        ; Always true
                         {Interrupt, $(NoTitle), $(!REG_VT_DWORD), $(ModemInterruptNumberValue)},+
                         {PortAddress, $(NoTitle),$(!REG_VT_DWORD), $(ModemIOBaseAddressValue)}}
                Shell $(UtilityInf), AddValueList, $(MyNewSerialHandle), $(NewValueList)
                Debug-Output "<DBG> AddValueList - DosDevices, ForceFifiEnable,..."
                CloseRegKey $(MyNewSerialHandle)

                OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP\SERIALCOMM" $(MAXIMUM_ALLOWED) MyNewSerialHandle
                Ifstr $(MyNewSerialHandle) == $(KeyNull)
                         OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP" $(MAXIMUM_ALLOWED) SerialKey
                         CreateRegKey $(SerialKey) {"SERIALCOMM",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle
                         CloseRegKey $(SerialKey)
                endif
                SetRegValue $(MyNewSerialHandle) {$(ComPortName),$(NoTitle),$(!REG_VT_SZ),"COM"$(ComPortValue)}
                CloseRegKey $(MyNewSerialHandle)

                OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" $(MAXIMUM_ALLOWED) MyNewSerialHandle
                Ifstr $(MyNewSerialHandle) == $(KeyNull)
                         OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" $(MAXIMUM_ALLOWED) SerialKey
                         CreateRegKey $(SerialKey) {"Ports",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" MyNewSerialHandle
                         CloseRegKey $(SerialKey)
                endif
                SetRegValue $(MyNewSerialHandle) {"COM"$(ComPortValue)":",$(NoTitle),$(!REG_VT_SZ), "9600,n,8,1"}
                CloseRegKey $(MyNewSerialHandle)
         else
                Debug-Output "<DBG> LanONLY mode - Deleting the COM port ...."
                OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialHandle
                DeleteRegTree $(SerialHandle) $(ComPortName)
                CloseRegKey $(SerialHandle)
         endif
endif

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

 set RegistryErrorIndex = $($R0)

 Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        Debug-Output "<DBG> Registry error: Add value list"
        goto fatalregistry
 endif

 EndWait

 goto successful

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

removeadapter = +
 Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)

        Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
        $(ProductSoftwareName)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error"
         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)
         Debug-Output "<DBG> ShellCode error"
         goto ShellCodeError
        endif

        set RegistryErrorIndex = $($R0)

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

        ;Shradha
        ;***************************************************************
        ; Remove associated Com port
        ;***************************************************************

        Debug-Output "<DBG> Starting removal of COM PORT .... "
        Debug-Output "<DBG> !NTN_RegBase = "$(!NTN_RegBase)
        Debug-Output "<DBG> Manufacturer = "$(Manufacturer)
        Debug-Output "<DBG> ProductKeyName = "$(ProductKeyName)
        Debug-Output "<DBG> ProductSoftwareName = "$(ProductSoftwareName)

        set AdapterName = $(!NTN_RegBase)
        Split-String $(AdapterName), "\", CardInfo
        Debug-Output "<DBG> CardInfo = "$(CardInfo)
        set AdapterNumber = *($(CardInfo),11)

        set ComPortName = $(ComPortPrefix)$(AdapterNumber)
        Debug-Output "<DBG> ComPortName = "$(ComPortName)

        Debug-Output "<DBG> AdapterNumber = "$(AdapterNumber)

        OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(MAXIMUM_ALLOWED) SerialHandle

        DeleteRegTree $(SerialHandle) $(ComPortName)

        CloseRegKey $(SerialHandle)
        ;Shradha
 endif
 goto end

UpgradeSoftware = +








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




        OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

        Ifstr $(KeyProduct) != $(KeyNull)
         GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
         set Version = *($(VersionInfo), 4)



         Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
         ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "<DBG> ShellCode error"
                goto ShellCodeError
         endif
         set !UG_Filename = $($R0)

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



         SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
         SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}




         ifint $(Version) != $(ProductVersion)







         endif
         CloseRegKey $(KeyProduct)
        else



         goto fatalregistry
        endif
 else








        OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
         $(MAXIMUM_ALLOWED) NetworkCardKey
        Ifstr(i) $(NetworkCardKey) != $(KeyNull)



         GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
         set ServiceName = *($(ServiceNameInfo), 4)




         OpenRegKey $(NetworkCardKey) "" "NetRules" +
                $(MAXIMUM_ALLOWED) NetRuleKey
         Ifstr(i) $(NetRuleKey) != $(KeyNull)



         else



                goto fatalregistry
         endif

         CloseRegKey $(NetRules)
         CloseRegKey $(NetworkCardKey)
        else



         goto fatalregistry
        endif




        OpenRegKey $(!REG_H_LOCAL) "" +
         $(!NTN_ServiceBase)"\"$(ServiceName) +
         $(MAXIMUM_ALLOWED) ServiceKey

        Ifstr(i) $(ServiceKey) != $(KeyNull)





         CloseRegKey $(ServiceKey)
        else



         goto fatalregistry
        endif
 endif

 goto end




successful = +
 goto end

abandon = +
 ForListDo $(OEM_ABANDON_OPTIONS)
        Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
         $(ProductSoftwareName), $($)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output "<DBG> ShellCode error"
         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)
         Debug-Output "<DBG> ShellCode error"
         goto ShellCodeError
        endif

        set RegistryErrorIndex = $($R0)

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

 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 Severity = STATUS
 Set CommonStatus = STATUS_USERCANCEL
 goto nonfatalmsg
nonfatal = +
 Set Severity = NONFATAL
 goto nonfatalmsg
nonfatalmsg = +
 ifstr(i) $(Error) == ""
        Set Severity = NONFATAL
        Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
         goto ShellCodeError
        endif
        set Error = $($R0)
 endif
 Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
 endif
 ifstr(i) $($R1) == "OK"
        goto $(from)
 else
        goto "end"
 endif

fatalregistry = +
 Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
 endif
 set Error = $($R0)
 goto fatal

fataldetect = +
 Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
 ifint $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output "<DBG> ShellCode error: cannot get an error string."
        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 abandon
 endif
 goto end

end = +
 goto term

term = +
 Return $(CommonStatus)

[DebugConfiguration]
 Set InfName = "OEMSETNT.INF"
 Debug-Output $(InfName)"<DBG> **CONFIGURATION STATE: "$($0)
 Debug-Output $(InfName)"<DBG> IRQ_Level is "$(!p:IRQ_Level)
 Debug-Output $(InfName)"<DBG> IOBaseAddrValue is "$(!p:IOBaseAddrValue)
 Debug-Output $(InfName)"<DBG> TransceiverValue is "$(!p:TransceiverValue)
 Debug-Output $(InfName)"<DBG> MemoryAddr is "$(!p:MemoryAddr)
 Debug-Output $(InfName)"<DBG> MappedValue is "$(!p:MappedValue)
 return

[Install-Option]
 set STF_VITAL = ""

 ifstr(i) $(AddCopy) == "YES"
        AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
 endif

 ifstr(i) $(DoCopy) == "YES"



set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 endif
 Exit

[Install-Update]
 set STF_VITAL = ""
 set STF_OVERWRITE = "VERIFYSOURCEOLDER"
 AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
 AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 exit

[Install-Dll]
 set STF_VITAL = ""
 AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
 set !STF_NCPA_FLUSH_COPYLIST = TRUE
 CopyFilesInCopyList
 exit

[Source Media Descriptions]
 1 = "EtherLink III Lan+Modem PC Card EtherDisk for NT"

[ProductType]
 STF_PRODUCT = Winnt
 STF_PLATFORM = I386

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

[Files-Dll]
1, elpc3n.DLL, SIZE=100000

[Files-elpc3n]
1, elpc3ns.SYS, SIZE=50000

[LanguagesSupported]
ENG

[AllFileConstantsENG]
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:"
DialogDllName = "elpc3n.DLL"

[FileConstantsENG-elpc3n]
FunctionTitle = "EtherLink III LAN+Modem PC Card"$(GenericInfVersion)
ProductSoftwareTitle = $(GenericDriverName)
ProductHardwareTitle = $(GenericAdapterName)
IRQList = ^(IRQChoices, 1)
IRQValues = ^(IRQChoices, 2)
IOBaseAddrList = ^(IOBaseChoices, 1)
IOBaseAddrValues = ^(IOBaseChoices, 2)
MemoryAddrList = ^(MemoryAddrChoices,1)
MemoryAddrValues = ^(MemoryAddrChoices,2)
MediaTypeList = ^(MediaTypeChoices, 1)
MediaTypeValues = ^(MediaTypeChoices, 2)
ComPortList = ^(ComPortChoices, 1)
ComPortValues = ^(ComPortChoices, 2)
LANOnlyList = ^(LANOnlyChoices, 1)
LANOnlyValues = ^(LANOnlyChoices, 2)
ModemIOBaseAddressList = ^(ModemIOBaseChoices,1)
ModemIOBaseAddressValues = ^(ModemIOBaseChoices,2)
;Shradha
ModemIrqList                = ^(ModemIrqChoices,1)
ModemIrqValues              = ^(ModemIrqChoices,2)
;Shradha

[DialogConstantsENG-elpc3n]
Help = "Help"
Exit = "Cancel"
OK = "OK"
HelpContext = ""
Continue = "Continue"
Cancel = "Cancel"

[FileDependentDlgENG-elpc3n]
DlgType = "RadioCombination"
DlgTemplate = "elpc3n"
Caption = $(FunctionTitle)
HelpContext = $(!IDH_DB_OEMNADE2_INS)
CBOptionsGreyed = {}
NotifyFields = {NO, NO, NO, NO, NO, NO, NO}
Combo1Label = "I/O Port Address:"
Combo2Label = "Memory Address:"
Combo3Label = "Network Interrupt:"
Combo4Label = "Media Type:"
Combo5Label = "Modem Port Address:"
Combo6Label = "Modem Interrupt:"
Combo7Label = "Com Port:"
Combo8Label = "LANOnly Mode:"
Combo1List = $(IOBaseAddrList)
Combo1Out = $(IOBaseAddrValue)
Combo2List = $(MemoryAddrList)
Combo2Out = $(MemoryAddrValue)
Combo3List = $(IRQList)
Combo3Out = $(IRQValue)
Combo4List = $(MediaTypeList)
Combo4Out = $(MediaTypeValue)
Combo5List = $(ModemIOBaseAddressList)
Combo5Out = $(ModemIOBaseAddressValue)
Combo6List = $(IRQList)
Combo6Out = $(ModemInterruptNumberValue)
Combo7List = $(ComPortList)
Combo7Out = $(ComPortValue)
Combo8List = $(LANOnlyList)
Combo8Out = $(LANOnlyValue)
ComboListItemsIn = {Combo1List,Combo2List,Combo3List,Combo4List,Combo5List,Combo6List,Combo7List,Combo8List}
ComboListItemsOut = {Combo1Out,Combo2Out,Combo3Out,Combo4Out,Combo5Out,Combo6Out,Combo7Out,Combo8Out}
EditTextIn = {"",""}
EditTextLim = {"",""}

[MemoryAddrChoices]
;Shradha
MA_0 = "Auto", 0
;Shradha
MA_1 = "0xC8000", 819200
MA_2 = "0xC9000", 823296
MA_3 = "0xCA000", 827392
MA_4 = "0xCB000", 831488
MA_5 = "0xCC000", 835584
MA_6 = "0xCD000", 839680
MA_7 = "0xCE000", 843776
MA_8 = "0xCF000", 847872
MA_9 = "0xD0000", 851968
MA_10 = "0xD1000", 856064
MA_11 = "0xD2000", 860160
MA_12 = "0xD3000", 864256
MA_13 = "0xD4000", 868352
MA_14 = "0xD5000", 872448
MA_15 = "0xD6000", 876544
MA_16 = "0xD7000", 880640
MA_17 = "0xD8000", 884736
MA_18 = "0xD9000", 888832
MA_19 = "0xDA000", 892928
MA_20 = "0xDB000", 897024
MA_21 = "0xDC000", 901120
MA_22 = "0xDD000", 905216
MA_23 = "0xDE000", 909312
MA_24 = "0xDF000", 913408
MA_25 = "0xE0000", 917504
MA_26 = "0xE1000", 921600
MA_27 = "0xE2000", 925696
MA_28 = "0xE3000", 929792
MA_29 = "0xE4000", 933888
MA_30 = "0xE5000", 937984
MA_31 = "0xE6000", 942080
MA_32 = "0xE7000", 946176
MA_33 = "0xE8000", 950272
MA_34 = "0xE9000", 954368
MA_35 = "0xEA000", 958464
MA_36 = "0xEB000", 962560
MA_37 = "0xEC000", 966656
MA_38 = "0xED000", 970752
MA_39 = "0xEE000", 974848
MA_40 = "0xEF000", 978944

[IRQChoices]
;Shradha
IRQ_0 = "Auto",0
;Shradha
IRQ_1 = "3",3
IRQ_2 = "4",4
IRQ_3 = "5",5
IRQ_4 = "7",7
IRQ_5 = "9",9
IRQ_6 = "10",10
IRQ_7 = "11",11
IRQ_8 = "15",15

;Shradha
[ModemIrqChoices]
MdmIrq_1 = "4",4
MdmIrq_2 = "3",3
MdmIrq_3 = "4",4
MdmIrq_4 = "3",3
;Shradha

[ModemIOBaseChoices]
MdmIOBase_1 = "0x3F8",1016
MdmIOBase_2 = "0x2F8",760
MdmIOBase_3 = "0x3E8",1000
MdmIOBase_4 = "0x2E8",744

[ComPortChoices]
CP_1 = "COM1", 1
CP_2 = "COM2", 2
CP_3 = "COM3", 3
CP_4 = "COM4", 4

[LANOnlyChoices]
MS_1 = "Disabled", 0
MS_2 = "Enabled", 1

[IOBaseChoices]
;Shradha
IOBase_0 = "Auto",0
;Shradha
IOBase_1 = "0x200",512
IOBase_2 = "0x210",528
IOBase_3 = "0x220",544
IOBase_4 = "0x230",560
IOBase_5 = "0x240",576
IOBase_6 = "0x250",592
IOBase_7 = "0x260",608
IOBase_8 = "0x270",624
IOBase_9 = "0x280",640
IOBase_10 = "0x290",656
IOBase_11 = "0x2A0",672
IOBase_12 = "0x2B0",698
IOBase_13 = "0x2C0",714
IOBase_14 = "0x2D0",730
IOBase_15 = "0x2E0",746
IOBase_16 = "0x2F0",752
IOBase_17 = "0x300",768
IOBase_18 = "0x310",784
IOBase_19 = "0x320",800
IOBase_20 = "0x330",816
IOBase_21 = "0x340",832
IOBase_22 = "0x350",848
IOBase_23 = "0x360",864
IOBase_24 = "0x370",880
IOBase_25 = "0x380",896
IOBase_26 = "0x390",912
IOBase_27 = "0x3A0",928
IOBase_28 = "0x3B0",944
IOBase_29 = "0x3C0",960
IOBase_30 = "0x3D0",976

[MediaTypeChoices]
MT_1 = "TP (10BaseT)", 0
MT_2 = "COAX (10Base2)", 1


; -------------------------- BEGIN FORCE FIX - SHRADHA
[install-update-modem-info]

        OpenRegKey $(!REG_H_LOCAL) "" $(ZZZComPort) $(MAXIMUM_ALLOWED) +
                ZZZHandle

        ifstr $(ZZZHandle) == $(KeyNull)
                Debug-Output "<DBG: FORCE> OpenRegKey "$(ZZZComPort)" failed"
                goto done_update_modem_info
        endif

        Debug-Output "<DBG: FORCE> GetRegValue DosDevices"
        GetRegValue $(ZZZHandle) "DosDevices" DosDevicesValue
        set DosDevicesValueType = *($(DosDevicesValue), 3)
        set DosDevicesValueData = *($(DosDevicesValue), 4)
        ifint $(DosDevicesValueType) != $(!REG_VT_SZ)
                Debug-Output +
                "<DBG: FORCE> Bad DosDevices "$(ZZZComPort)" "$(DosDevicesValue)
                goto done_update_modem_info
        endif

        GetRegValue $(ZZZHandle) "PortAddress" PortAddressValue
        set PortAddressValueType = *($(PortAddressValue), 3)
        set PortAddressValueData = *($(PortAddressValue), 4)
        ifint $(PortAddressValueType) != $(!REG_VT_DWORD)
                Debug-Output +
                "<DBG: FORCE> Bad PortAddress "$(ZZZComPort)" "$(PortAddressValue)
                goto done_update_modem_info
        endif

        GetRegValue $(ZZZHandle) "Interrupt" InterruptValue
        set InterruptValueType = *($(InterruptValue), 3)
        set InterruptValueData = *($(InterruptValue), 4)
        ifint $(InterruptValueType) != $(!REG_VT_DWORD)
                Debug-Output +
                "<DBG: FORCE> Bad Interrupt "$(ZZZComPort)" "$(InterruptValue)
                goto done_update_modem_info
        endif

        ; now update the correct modem info

        Debug-Output +
        "<DBG: FORCE> "$(DosDevicesValueData)": iobase = "$(PortAddressValueData)", irq = "$(InterruptValueData)

        ifstr(i) $(DosDevicesValueData) == "COM1"
                set comNumber = 1
        else-ifstr(i) $(DosDevicesValueData) == "COM2"
                set comNumber = 2
        else-ifstr(i) $(DosDevicesValueData) == "COM3"
                set comNumber = 3
        else-ifstr(i) $(DosDevicesValueData) == "COM4"
                set comNumber = 4
        else
                goto done_update_modem_info
        endif


        set-dectohex PortAddressValueDataHex = $(PortAddressValueData)
        set-dectohex InterruptValueDataHex = $(InterruptValueData)

        Debug-Output +
        "<DBG: FORCE> PortAddressValueDataHex = "$(PortAddressValueData)
        Debug-Output +
        "<DBG: FORCE> InterruptValueDataHex = "$(InterruptValueData)

        ;
        ; Change ModemIOBaseAddressValues
        ;
        set oldList = $(ModemIOBaseAddressValues)
        set itemNumberToReplace = $(comNumber)
        set newData = $(PortAddressValueData)
        set return_addr = replace_modem_io_base
        goto replace_list_item
replace_modem_io_base = +
        set ModemIOBaseAddressValues = $(newList)

        ;
        ; Change ModemIOBaseAddressList
        ;
        set oldList = $(ModemIOBaseAddressList)
        set itemNumberToReplace = $(comNumber)
        set newData = $(PortAddressValueDataHex)
        set return_addr = replace_modem_io_base_list
        goto replace_list_item
replace_modem_io_base_list = +
        set ModemIOBaseAddressList = $(newList)

        ;
        ; Change ModemIrqValues
        ;
        set oldList = $(ModemIrqValues)
        set itemNumberToReplace = $(comNumber)
        set newData = $(InterruptValueData)
        set return_addr = replace_modem_irq
        goto replace_list_item
replace_modem_irq = +
        set ModemIrqValues = $(newList)

        ;
        ; Change ModemIrqList
        ;
        set oldList = $(ModemIrqList)
        set itemNumberToReplace = $(comNumber)
        set newData = $(InterruptValueDataHex)
        set return_addr = replace_modem_irq_list
        goto replace_list_item
replace_modem_irq_list = +
        set ModemIrqList = $(newList)



done_update_modem_info = +
        ifstr $(ZZZHandle) != $(KeyNull)
                CloseRegKey $(ZZZHandle)
        endif
        exit

replace_list_item = +
        ;
        ; INPUT: needs the following variables to be initialized
        ;       - oldList
        ;       - itemNumberToReplace
        ;       - newData
        ;       - return_addr (i.e. label to jump back to)
        ; OUTPUT: returns with the newList initialized
        ;

        ;Debug-Output "<DBG: FORCE> Replacing item number "$(itemNumberToReplace)" in the list "$(oldList)" with the data "$(newData)

        set newList = {}
        ForListDo $(oldList)
                ifint $(#) == $(itemNumberToReplace)
                        set newList = >($(newList), $(newData))
                else
                        set newList = >($(newList), $($))
                endif
        EndForListDo
        goto $(return_addr)



  ;-------------------------- END FORCE FIX - SHRADHA
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.39