OEMSETNT.INF Driver File Contents (tera_N-D_type.zip)

; Friendly Tecnologies
; Based on packet sample in d:\ddknt\src\network\packet
; December, 2001 - NT 4.0 Installation
; INF Version 4.11.26 - With TAPI stuff - Release

[Identification]
    OptionType = NetTransport

[Options]
    PPPOEWIN

[FileConstants]
INFVersion      = "4.11.26"
; FIXME - Set to zero before release
DebugINF        = 0
UtilityInf      = "UTILITY.INF"
subroutineinf   = "SUBROUTN.INF"
CodeFile        = "pppoent4.sys"
Exit_Code       = 0
NetEventDLL     = "%SystemRoot%\System32\netevent.dll"

Manufacturer    = "Microsoft"
ProductMajorVersion  = "4"
ProductMinorVersion  = "0"
ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)

SoftwareType    = "transport"
ProductSWName   = "PPPOEWINT"
ProductSWPath   = "\SystemRoot\System32\drivers\"$(CodeFile)

NetRuleSoftwareBindForm = """"$(ProductSWName)""" yes yes simple"
NetRuleSoftwareType     = $(ProductSWName)" lmNetService ndisTransport"
NetRuleSoftwareUse      = $(SoftwareType)" yes yes"
NetRuleSoftwareClass    = {"rasCapableTransport netBiosTransport"}

ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"+
                     $(ProductSWName)"\CurrentVersion"
ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductSWName)"\Parameters"

[DriverConstants]
DriverType            = "driver"
DriverSWName          = "PPPOEWIN"
DriverSWPath          = "\SystemRoot\System32\drivers\"$(CodeFile)

NetRuleDriverType     = $(DriverSWName)"Sys "$(DriverSWName)"Driver"
NetRuleDriverUse      = $(DriverType)
NetRuleDriverBindForm = """"$(DriverSWName)"Sys"" yes no container"
NetRuleDriverClass    = {$(DriverSWName)"Driver basic"}
NetRuleDriverBindable = {$(DriverSWName)"Driver "$(DriverSWName)"Adapter non exclusive 100"}

ProductHardwareName     = $(DriverSWName)
NetRuleHardwareBindForm = " yes yes container"
NetRuleHardwareType     = $(DriverSWName)" "$(DriverSWName)"Adapter"
NetRuleHardwareClass    = {$(DriverSWName)"Adapter basic"}

DriverKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"+
                     $(DriverSWName)"\CurrentVersion"
MSNWCardKeyName = $(!NTN_SoftwareBase)+
								"\Microsoft\Windows NT\CurrentVersion\NetworkCards"

[TapiConstants]
TapiDevices      = "TAPI DEVICES"
TapiDevKey       = $(TapiDevices)"\"$(DriverSWName)
TapiMediaType    = "ISDN"
TapiLineType     = 1
TapiLib          = 0
TapiParamKey     = "SYSTEM\CurrentControlSet\Services\TcpIp\Parameters"
TapiValue        = $(DriverSWName)TcpMaxDataRetransmissions
TapiSWKey        = "SOFTWARE\Microsoft\"$(TapiDevices)

[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

[POEConstants]
DBHDR          = "PPPOE: "
StartDir       = "\..\PROFILES\ADMINI~1\STARTM~1\PROGRAMS\STARTUP"

Max_MissedEchos=4
Echo_Interval=30
Max_Sessions=1
Connect_Speed=10000000
UseNotAdvertised=1

; Set ALL the PPPoE default values
DEBUG_DEF      = 0
MAX_DEF        = $(Max_Sessions)
SPEED_DEF      = $(Connect_Speed)
ECHO_DEF       = $(Echo_Interval)
ECHO2_DEF      = $(Max_MissedEchos)
USE_NADV_DEF = $(UseNotAdvertised)

[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)
        goto returnoptions
    else
        set Status = STATUS_NOLANGUAGE
        goto finish_ReturnOptions
    endif
returnoptions = +
    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL
finish_ReturnOptions = +
    Return $(Status) $(OptionList) $(OptionTextList)

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

   Ifcontains(i) $($0) NOT-IN $(LanguageList)
       Return STATUS_NOLANGUAGE
   endif

   ; 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 POEConstants
   read-syms DriverConstants
   read-syms TapiConstants
   read-syms DialogConstants$(!STF_LANGUAGE)
   ifstr(i) $(!NTN_Origination) == "NCPA"
       set Continue = $(OK)
   endif
   read-syms FileConstants$(!STF_LANGUAGE)

   detect date
	; now = { Sec from 1-1-1970, Year, Month, Day, Hour, Minute, Second }
	Set Today = *($(Now),2)"-"*($(Now),3)"-"*($(Now),4)
	Set Time  = *($(Now),5)":"*($(Now),6)":"*($(Now),7)

	; SETUP INITIAL VALUES
	; Now set an initial values which may later be changed
	; after running the PPPoECfg.DLL service PPPoESetup().
	set DEBUG_VAL    = $(DEBUG_DEF)
	set MAX_VAL      = $(MAX_DEF)
   set SPEED_VAL    = $(SPEED_DEF)
   set ECHO_VAL     = $(ECHO_DEF)
   set ECHO2_VAL    = $(ECHO2_DEF)
   set USE_NADV_VAL = $(USE_NADV_DEF) 

   set InfName = $(STF_CONTEXTINFNAME)

   Set OEM_ABANDON_OPTIONS = {}
   Set OEM_ABANDON_SOFTWARE = FALSE
   ;;;  Set OEM_ABANDON_ON = TRUE
   set-title  $(FunctionTitle)
   set to   = Begin
   set from = Begin
   set CommonStatus = STATUS_SUCCESSFUL

   EndWait

Begin = +

   Ifstr(i) $(!NTN_InstallMode) == deinstall
      set StartLabel = removeadapter
   else-Ifstr(i) $(!NTN_InstallMode) == Update
      set StartLabel = UpgradeSoftware
   else-Ifstr(i) $(!NTN_InstallMode) == bind
      set StartLabel = bindingadapter
   else-Ifstr(i) $(!NTN_InstallMode) == configure
      set StartLabel = ConfigureAdapter
    else
        set StartLabel = installadapter
    endif

    Debug-Output $(DBHDR)"Begin INF "$(INFVersion)" on "$(Today)" at "$(Time)
    Shell "" DebugGlobalFlags "Entry values"
    Debug-Output $(DBHDR)"STF_SRCDIR  ="$(!STF_SRCDIR)
    Debug-Output $(DBHDR)"STF_CWDDIR  ="$(!STF_CWDDIR)
    Debug-Output $(DBHDR)"STF_LANGUAGE="$(!STF_LANGUAGE)
    Debug-Output $(DBHDR)"Option      ="$(Option)
    Debug-Output $(DBHDR)"SrcDir      ="$(SrcDir)
    Debug-Output $(DBHDR)"AddCopy     ="$(AddCopy)
    Debug-Output $(DBHDR)"DoCopy      ="$(DoCopy)
    Debug-Output $(DBHDR)"DoConfig    ="$(DoConfig)
    Debug-Output $(DBHDR)"INFNAME     ="$(InfName)
    Debug-Output $(DBHDR)"StartDir    ="$(StartDir)
    Debug-Output $(DBHDR)"Origination ="$(!NTN_Origination)
    Debug-Output $(DBHDR)"DebugINF    ="$(DebugINF)
    Debug-Output $(DBHDR)"StartLabel  ="$(StartLabel)

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

installadapter = +

    Debug-Output $(DBHDR)"Entering installadapter. key="$(ProductKeyName)
    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
        CloseRegKey $(KeyProduct)
        Debug-Output $(DBHDR)"Shell to UTILITY.VerExistedDlg"
        Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
            $(ProductVersion)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(DBHDR)"ShellCode error: cannot get an error string."
            goto ShellCodeError
        endif
        goto end
    endif
    ;;;CloseRegKey $(KeyProduct)

    Debug-Output $(DBHDR)"In installadapter. key="$(DriverKeyName)
    OpenRegKey $(!REG_H_LOCAL) "" $(DriverKeyName) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
        CloseRegKey $(KeyProduct)
        Debug-Output $(DBHDR)"Shell to UTILITY.VerExistedDlg"
        Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
            $(ProductVersion)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(DBHDR)"ShellCode error: cannot get an error string."
            goto ShellCodeError
        endif
        goto end
    endif
    ;;;CloseRegKey $(KeyProduct)

    goto installproduct

installproduct = +
    StartWait
    ifint $(OldVersionExisted) == $(FALSE)
        Ifstr(i) $(DoCopy) == "YES"
           Debug-Output $(DBHDR)"No OldVersion and DoCopy shell to DoAskSource"
           Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
           Ifint $($ShellCode) != $(!SHELL_CODE_OK)
               Debug-Output $(DBHDR)"ShellCode error from DoAskSource"
               Goto ShellCodeError
           Else-Ifstr(i) $($R0) == STATUS_FAILED
               Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
               ifint $($ShellCode) != $(!SHELL_CODE_OK)
                   Debug-Output $(DBHDR)"ShellCode error failed ASK_SOURCE string"
                   goto ShellCodeError
               endif
               set Error = $($R0)
               Goto fatal
           Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
               Goto successful
           Endif
           Set SrcDir = $($R1)
        Endif

;*****************************************************************************
   IfInt $(DebugINF) >= 5

      Debug-Output $(DBHDR)"AddSoftwareComponet - service"
      set NewValueList = {+
            {SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)              },+
            {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)    },+
            {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)    },+
            {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)             },+
            {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription) },+
            {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSWName)              },+
            {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)                } }

      ;;;   {Hidden,     $(NoTitle),$(!REG_VT_DWORD),1                          } }

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      Debug-Output $(DBHDR)"AddSoftwareComponent - NetRules"
      set NewValueList = {+
            {type    ,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)     },+
            {use     ,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)      },+
            {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm) },+
            {review,  $(NoTitle),$(!REG_VT_DWORD),$(TRUE)                 },+
            {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)                 } }

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      Debug-Output $(DBHDR)"AddSoftwareComponent - Driver"
      Set NewValueList = {+
          {SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(DriverType)                },+
          {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)    },+
          {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)    },+
          {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)             },+
          {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription) },+
          {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(DriverSWName)               },+
          {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)                } }

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      Debug-Output $(DBHDR)"AddSoftwareComponent - NetRules"
      Set NewValueList = {+
          {type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleDriverType)},+
          {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleDriverUse)}, +
          {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleDriverBindForm)}, +
          {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleDriverClass)}, +
          {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleDriverBindable)}, +
          {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      Set AdapterNumber = 99
      Debug-Output $(DBHDR)"AddHardwareComponent - Driver Using Num="$(AdapterNumber)
      Set TempTitle = "["$(AdapterNumber)"] "$(ProductHardwareTitle)
      Set TempProdName = $(DriverSWName)$(AdapterNumber)
      Set NewValueList    = {+
        {Manufacturer, $(NoTitle),$(!REG_VT_SZ), $(Manufacturer)                 },+
        {Title,        $(NoTitle),$(!REG_VT_SZ),   $(TempTitle)                  },+
        {Description,  $(NoTitle),$(!REG_VT_SZ),   $(ProductHardwareDescription) },+
        {ProductName,  $(NoTitle),$(!REG_VT_SZ),   $(ProductHardwareDisplayName) },+
        {ServiceName,  $(NoTitle),$(!REG_VT_SZ),   $(TempProdName)               },+
        {InstallDate,  $(NoTitle),$(!REG_VT_DWORD),*($(Now),1)                   },+
        {Hidden,       $(NoTitle),$(!REG_VT_DWORD),1                             } }

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      Set NumberOfLineDevices = $(MAX_VAL)

      IfInt $(TapiLib) == 1
         LoadLibrary "x" $(!STF_CWDDIR)raspptpc.dll RASPPTPDLGHANDLE
         Debug-Output $(DBHDR)"Getting info from GetChassisConfiguration"
         Debug-Output $(DBHDR)"!STF_UNATTENDED        ="$(!STF_UNATTENDED)
         Debug-Output $(DBHDR)"!STF_GUI_UNATTENDED    ="$(!STF_GUI_UNATTENDED)
         Debug-Output $(DBHDR)"!STF_UNATTENDED_SECTION="$(!STF_UNATTENDED_SECTION)
         LibraryProcedure Result, $(RASPPTPDLGHANDLE), GetChassisConfiguration $(!NTN_InstallMode) +
                  $(!STF_GUI_UNATTENDED) $(!STF_UNATTENDED) $(!STF_UNATTENDED_SECTION)
         Debug-Output $(DBHDR)"Result value is :"$(Result)
         Set NumberOfLineDevices = *($(Result), 1)
         FreeLibrary $(RASPPTPDLGHANDLE)
         ifstr(i) $(NumberOfLineDevices) == "EXITSETUP"
            ;;;Read-Syms InvokeCancelDlg$(!STF_LANGUAGE)
            Debug-Output $(DBHDR)"GetChassisConfiguration User selected ExitSetup"
            ;;;Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", $(InvokeCancelMsg)
            ;;;GoTo SetFailed
         endif
      EndIf

      Debug-Output $(DBHDR)"Number Of Line Devices = "$(NumberOfLineDevices)
      Shell "" CreateFullTapiAddrList $(AdapterNumber)
      ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(DBHDR)"ERROR: Cannot create the TAPI address list"
         ;;;goto ShellCodeError
      endif

      Set FullTapiAddrList = $($R0)
      Set TapiAddressList = {}
      ForListDo $(FullTapiAddrList)
         Set CurListItem = $($)
         Set CurListNumber = $(#)
         IfInt $(CurListNumber) <= $(NumberOfLineDevices)
            Set TapiAddressList = >($(TapiAddressList), $(CurListItem))
         Endif
      EndForListDo
      Debug-Output $(DBHDR)"Modified Tapi Address List is :"$(TapiAddressList)

      Debug-Output $(DBHDR)"Added to Parameters key - Service and Driver"
      Set NewValueList = {+
         {AddressList,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TapiAddressList) },+
         {DeviceName,$(NoTitle),$(!REG_VT_SZ),$(DriverSWName)           },+
         {LineType,$(NoTitle),$(!REG_VT_DWORD),$(TapiLineType)          },+
         {MediaType,$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)           },+
         {ConnectSpeed,$(NoTitle),$(!REG_VT_DWORD),$(SPEED_VAL)         },+
         {DebugFlags,$(NoTitle),$(!REG_VT_DWORD),$(DEBUG_VAL)           },+
         {MaxSessions,$(NoTitle),$(!REG_VT_DWORD),$(MAX_VAL)            },+
         {EchoInterval,$(NoTitle),$(!REG_VT_DWORD),$(ECHO_VAL)          },+
         {MaxMissedEchos,$(NoTitle),$(!REG_VT_DWORD),$(ECHO2_VAL)       },+
         {UseNotAdvertised,$(NoTitle),$(!REG_VT_DWORD),$(USE_NADV_VAL)       },+
         {NetCard,$(NoTitle),$(!REG_VT_DWORD),$(AdapterNumber)          },+
         }

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      ;;;  Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer),
      ;;;      $(ProductHardwareName), $(MSNWCardKeyName)"\"$(NetCard)
      Debug-Output $(DBHDR)"AddHardwareComponent - NetRules"
      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)}}

      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo

      Debug-Output $(DBHDR)"Remove Hardware Component..."
      set NetCard = 99
      set TempProdName = $(MSNWCardKeyName)"\"$(NetCard)
      Debug-Output $(DBHDR)"TempProdName = "$(TempProdName)
      set RH_Manufacturer = $(Manufacturer)
      set RH_ProductName  = $(ProductHardwareName)
      set RH_VersionNum   = "CurrentVersion"
      set RH_ProductKey   = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductHardwareName)"\"$(RH_VersionNum)
      set RH_NetCardName  = $(TempProdName)
      Debug-Output $(DBHDR)"ProductKey = "$(RH_ProductKey)
      Split-String $(RH_NetCardName), "\", CardInfo
      Debug-Output $(DBHDR)"CardInfo = "$(CardInfo)
      ;;;ForListDo $(CardInfo)
      ;;;   Debug-Output $(DBHDR)"Value = "$($)
      ;;;EndForListDo
      set RH_NetCardNum   = *($(CardInfo),11)
      Debug-Output $(DBHDR)"netCardNum = "$(RH_NetCardNum)
      set RH_NetCardBase  = *($(CardInfo),1)*($(CardInfo),2)*($(CardInfo),3)*($(CardInfo),4)*($(CardInfo),5)*($(CardInfo),6)*($(CardInfo),7)*($(CardInfo),8)*($(CardInfo),9)
      Debug-Output $(DBHDR)"Key = "$(RH_NetCardBase)

; === just for debug only ===
      Debug-Output $(DBHDR)"Ask about continuation..."
      Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", +
              "Just a DEBUG stop. Click OK to continue. Cancel to Abort"
      ifstr(i) $($R0) != STATUS_SUCCESSFUL
         Debug-Output $(DBHDR)"ShellCode error: cannot display message."
         goto ShellCodeError
      else-ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(DBHDR)"ShellCode error: Cannot Display Message."
         goto ShellCodeError
      endif
      ifstr(i) $($R1) == "OK"
         Debug-Output $(DBHDR)"Chosen OK to continue."
         goto ContinueOperation
      else-ifstr(i) $($R1) == "CANCEL"
         Debug-Output $(DBHDR)"Chosen CANCEL to abort."
         goto end
      else
         Debug-Output $(DBHDR)"SetupMessage NOT OK or CANCEL = "$($R1)
         goto end
      endif
; === end just for debug only ===

      goto successful

   EndIf

;*****************************************************************************
ContinueOperation = +

        install "Install-Option"

        ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
           Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
           ifint $($ShellCode) != $(!SHELL_CODE_OK)
               goto ShellCodeError
           endif
           set Error = $($R0)
           goto fatal
        endif

        set OEM_ABANDON_ON = TRUE

        Debug-Output $(DBHDR)"Doing AddSoftwareComponet for "$(ProductSWName)
        Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
            $(ProductSWName), +
            $(ProductSWName), +
            $(ProductSoftwareDisplayName), +
            $(STF_CONTEXTINFNAME), +
            $(ProductSWPath), +
            "kernel", +
            "TDI", +
            {}, +
            "", +
            $(NetEventDLL)

        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) !=  NO_ERROR
            Debug-Output $(DBHDR)"Registry 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 KeyParameters       = $($R4)
        Set SoftLinkageKey      = $($R5)

        set NewValueList = {+
            {SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)              },+
            {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)    },+
            {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)    },+
            {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)             },+
            {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription) },+
            {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSWName)              },+
            {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)                } }

        IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"Values for s/w "$(ProductSWName)" rk="$(SoftProductKey)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
        EndIf

        Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
        set RegistryErrorIndex = $($R0)
        Ifstr $(RegistryErrorIndex) != NO_ERROR
            CloseRegKey $(SoftProductKey)
            CloseRegKey $(SoftNetRuleKey)
            CloseRegKey $(SoftServiceKey)
            CloseRegKey $(SoftLinkageKey)
            CloseRegKey $(KeyParameters)
            goto fatalRegistry
        endif

        set NewValueList = {+
            {type    ,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)     },+
            {use     ,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)      },+
            {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm) },+
            {review,  $(NoTitle),$(!REG_VT_DWORD),$(TRUE)                 },+
            {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)                 } }

        IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"NetRules for s/w "$(ProductSWName)" rk="$(SoftNetRuleKey)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
        EndIf

        Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
        set RegistryErrorIndex = $($R0)
        Ifstr $(RegistryErrorIndex) != NO_ERROR
            CloseRegKey $(SoftProductKey)
            CloseRegKey $(SoftNetRuleKey)
            CloseRegKey $(SoftServiceKey)
            CloseRegKey $(SoftLinkageKey)
            CloseRegKey $(KeyParameters)
            goto fatalRegistry
        endif

        Set NewValueList = {{NbProvider,$(NoTitle),$(!REG_VT_SZ),"_nb"}}
        IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"Parameters for s/w "$(ProductSWName)" rk="$(KeyParameters)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
        EndIf

        Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
        Ifstr $(RegistryErrorIndex) != NO_ERROR
            CloseRegKey $(SoftProductKey)
            CloseRegKey $(SoftNetRuleKey)
            CloseRegKey $(SoftServiceKey)
            CloseRegKey $(SoftLinkageKey)
            CloseRegKey $(KeyParameters)
            goto fatalRegistry
        endif
        CloseRegKey $(SoftProductKey)
        CloseRegKey $(SoftNetRuleKey)
        CloseRegKey $(SoftServiceKey)
        CloseRegKey $(SoftLinkageKey)
;*****************************************************************************
;
;*****************************************************************************
      Debug-Output $(DBHDR)"Doing AddSoftwareComponent "$(DriverSWName)
      Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
            $(DriverSWName), +
            $(DriverSWName), +
            $(ProductSoftwareTitle), +
            $(STF_CONTEXTINFNAME), +
            $(DriverSWPath), +
            "kernelautostart", +
			   "NDIS", +
			   {}, +
			   "", +
            $(NetEventDLL)

      IfInt $($ShellCode) != $(!SHELL_CODE_OK)
          Debug-Output $(DBHDR)"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 $(DBHDR)"Registry error: add software component"
          CloseRegKey $(KeyProduct)
          CloseRegKey $(SoftNetRulesKey)
          GoTo FatalRegistry
      EndIf

      Set NewValueList = {+
          {SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(DriverType)                },+
          {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)    },+
          {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)    },+
          {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)             },+
          {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription) },+
          {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(DriverSWName)               },+
          {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)                } }

      IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"Values for s/w "$(DriverSWName)" rk="$(KeyProduct)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
      EndIf

      Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
      IfInt $($ShellCode) != $(!SHELL_CODE_OK)
          Debug-Output $(DBHDR)"ShellCode error."
          GoTo ShellCodeError
      EndIf
      Set RegistryErrorIndex = $($R0)
      IfStr(i) $(RegistryErrorIndex) != NO_ERROR
          EndWait
          Debug-Output $(DBHDR)"Registry error: add value list."
          CloseRegKey $(KeyProduct)
          CloseRegKey $(SoftNetRulesKey)
          GoTo FatalRegistry
      EndIf

      Set NewValueList = {+
          {type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleDriverType)              },+
          {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleDriverUse)                },+
          {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleDriverBindForm)      },+
          {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleDriverClass)      },+
          {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleDriverBindable)},+
          {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)                    } }

      IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"NetRules for s/w "$(DriverSWName)" rk="$(SoftNetRulesKey)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
      EndIf

      Shell  $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList)
      IfInt $($ShellCode) != $(!SHELL_CODE_OK)
          Debug-Output $(DBHDR)"ShellCode error."
          GoTo ShellCodeError
      EndIf
      Set RegistryErrorIndex = $($R0)
      CloseRegKey $(KeyProduct)
      CloseRegKey $(SoftNetRulesKey)

      IfStr(i) $(RegistryErrorIndex) != NO_ERROR
          EndWait
          Debug-Output $(DBHDR)"Registry error: add value list."
          GoTo FatalRegistry
      EndIf

    endif
;*****************************************************************************
;
;*****************************************************************************
    Debug-Output $(DBHDR)"Doing AddHardwareComponent "$(ProductHardwareName)
    Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName), +
				$(STF_CONTEXTINFNAME), +
				$(DriverKeyName)
    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 $(DBHDR)"Cannot add hardware component"
        GoTo ShellCodeError
    EndIf
    Set RegistryErrorIndex = $($R0)
    IfStr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output $(DBHDR)"Registry error: add hardware component"
        CloseRegKey $($R1)
        CloseRegKey $($R2)
        CloseRegKey $($R3)
        GoTo FatalRegistry
    EndIf
    Set KeyHWProduct    = $($R1)
    Set KeyAdapterRules = $($R2)
    Set KeyHWParameters = $($R3)
    Set AdapterNumber   = $($R4)
    Debug-Output $(DBHDR)"ServiceName="$($R5)" AdapNum="$(AdapterNumber)
    Set TempTitle = "["$(AdapterNumber)"] "$(ProductHardwareTitle)
    ;;;Debug-Output $(DBHDR)"Manufacturer  ="$(Manufacturer)
    ;;;Debug-Output $(DBHDR)"Title         ="$(TempTitle)
    ;;;Debug-Output $(DBHDR)"Description   ="$(ProductHardwareDescription)
    ;;;Debug-Output $(DBHDR)"ProductName   ="$(ProductHardwareDisplayName)
    ;;;Debug-Output $(DBHDR)"ServiceName   ="$($R5)
    ;;;Debug-Output $(DBHDR)"InstallDate   ="*($(Now),1)

    Set NewValueList    = {+
      {Manufacturer, $(NoTitle),$(!REG_VT_SZ),   $(Manufacturer)               },+
      {Title,        $(NoTitle),$(!REG_VT_SZ),   $(TempTitle)                  },+
      {Description,  $(NoTitle),$(!REG_VT_SZ),   $(ProductHardwareDescription) },+
      {ProductName,  $(NoTitle),$(!REG_VT_SZ),   $(ProductHardwareDisplayName) },+
      {ServiceName,  $(NoTitle),$(!REG_VT_SZ),   $($R5)                        },+
      {InstallDate,  $(NoTitle),$(!REG_VT_DWORD),*($(Now),1)                   },+
      {Hidden,       $(NoTitle),$(!REG_VT_DWORD),1                             } }

    IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"Values for h/w "$($R5)$($R4)" rk="$(KeyHWProduct)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
    EndIf

    Shell  $(UtilityInf), AddValueList, $(KeyHWProduct), $(NewValueList)
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output $(DBHDR)"ShellCode error"
        CloseRegKey $(KeyHWProduct)
        CloseRegKey $(KeyAdapterRules)
        CloseRegKey $(KeyHWParameters)
        GoTo ShellCodeError
    EndIf
    Set RegistryErrorIndex = $($R0)
    IfStr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output $(DBHDR)"Registry error: AddValueList"
        CloseRegKey $($R1)
        CloseRegKey $($R2)
        CloseRegKey $($R3)
        GoTo FatalRegistry
    EndIf
    CloseRegKey $(KeyHWProduct)

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

    IfInt $(DebugINF) >= 3
            Debug-Output $(DBHDR)"NetRules for h/w "$(TempProdName)" rk="$(KeyAdapterRules)
            ForListDo $(NewValueList)
               Debug-Output $(DBHDR)"Value = "$($)
            EndForListDo
    EndIf

    Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        EndWait
        Debug-Output $(DBHDR)"AddValueList ShellCode error."
        CloseRegKey $(KeyHWParameters)
        CloseRegKey $(KeyAdapterRules)
        GoTo ShellCodeError
    EndIf
    Set RegistryErrorIndex = $($R0)
    IfStr(i) $(RegistryErrorIndex) != NO_ERROR
        EndWait
        Debug-Output $(DBHDR)"Resgitry error: add value list."
        CloseRegKey $(KeyHWParameters)
        CloseRegKey $(KeyAdapterRules)
        GoTo FatalRegistry
    EndIf
    CloseRegKey $(KeyAdapterRules)

   OpenRegKey $(!REG_H_LOCAL) "" $(DriverKeyName) $(MAXIMUM_ALLOWED) KeyProduct
   IfStr $(KeyProduct) != $(KeyNull)
      SetRegValue $(KeyProduct) {NetCard,$(NoTitle),$(!REG_VT_DWORD),$(AdapterNumber)}
      CloseRegKey $(KeyProduct)
      Debug-Output $(DBHDR)"NetCard = "$(AdapterNumber)" in "$(DriverKeyName)
   Else
      Debug-Output $(DBHDR)"Set NetCard FAILED for "$(DriverKeyName)
   EndIf

   goto writeparameters

writeparameters = +

    Debug-Output $(DBHDR)"Writing parameters to registry"
;;;    Set NewValueList = {+
;;;      {ConnectSpeed,$(NoTitle),$(!REG_VT_DWORD),        $(SPEED_VAL) },+
;;;      {DebugFlags,$(NoTitle),$(!REG_VT_DWORD),          $(DEBUG_VAL) },+
;;;      {MaxSessions,$(NoTitle),$(!REG_VT_DWORD),         $(MAX_VAL)   },+
;;;      {EchoInterval,$(NoTitle),$(!REG_VT_DWORD),        $(ECHO_VAL)  },+
;;;      {MaxMissedEchos,$(NoTitle),$(!REG_VT_DWORD),      $(ECHO2_VAL) },+
;;;      }
;;;    Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
;;;    CloseRegKey $(KeyParameters)
;;;    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
;;;        Debug-Output $(DBHDR)"ShellCode error."
;;;        GoTo ShellCodeError
;;;    EndIf
;;;    Set RegistryErrorIndex = $($R0)
;;;    IfStr(i) $(RegistryErrorIndex) != NO_ERROR
;;;        Debug-Output $(DBHDR)"Registry error: Add value list"
;;;        GoTo FatalRegistry
;;;    EndIf
;;;    Shell  $(UtilityInf), AddValueList, $(KeyHWParameters), $(NewValueList)
;;;    CloseRegKey $(KeyHWParameters)
;;;    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
;;;        Debug-Output $(DBHDR)"ShellCode error."
;;;        GoTo ShellCodeError
;;;    EndIf
;;;    Set RegistryErrorIndex = $($R0)
;;;    IfStr(i) $(RegistryErrorIndex) != NO_ERROR
;;;        Debug-Output $(DBHDR)"Registry error: Add value list"
;;;        GoTo FatalRegistry
;;;    EndIf

   Set NumberOfLineDevices = $(MAX_VAL)
   IfInt $(TapiLib) == 1
      LoadLibrary "x" $(!STF_CWDDIR)raspptpc.dll RASPPTPDLGHANDLE
      Debug-Output $(DBHDR)"Getting info from GetChassisConfiguration"
      Debug-Output $(DBHDR)"!STF_UNATTENDED        ="$(!STF_UNATTENDED)
      Debug-Output $(DBHDR)"!STF_GUI_UNATTENDED    ="$(!STF_GUI_UNATTENDED)
      Debug-Output $(DBHDR)"!STF_UNATTENDED_SECTION="$(!STF_UNATTENDED_SECTION)
      LibraryProcedure Result, $(RASPPTPDLGHANDLE), GetChassisConfiguration $(!NTN_InstallMode) +
                  $(!STF_GUI_UNATTENDED) $(!STF_UNATTENDED) $(!STF_UNATTENDED_SECTION)
      Debug-Output $(DBHDR)"Result value is :"$(Result)
      Set NumberOfLineDevices = *($(Result), 1)
      FreeLibrary $(RASPPTPDLGHANDLE)
      ifstr(i) $(NumberOfLineDevices) == "EXITSETUP"
         Read-Syms InvokeCancelDlg$(!STF_LANGUAGE)
         Debug-Output $(DBHDR)"GetChassisConfiguration User selected ExitSetup"
         Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", $(InvokeCancelMsg)
         GoTo SetFailed
      endif
   EndIf

   Debug-Output $(DBHDR)"Number Of Line Devices = "$(NumberOfLineDevices)
   Shell "" CreateFullTapiAddrList $(AdapterNumber)
   ifint $($ShellCode) != $(!SHELL_CODE_OK)
      Debug-Output $(DBHDR)"Cannot create the TAPI address list"
      goto ShellCodeError
   endif
   Set FullTapiAddrList = $($R0)
   Set TapiAddressList = {}
   ForListDo $(FullTapiAddrList)
      Set CurListItem = $($)
      Set CurListNumber = $(#)
      IfInt $(CurListNumber) <= $(NumberOfLineDevices)
         Set TapiAddressList = >($(TapiAddressList), $(CurListItem))
      Endif
   EndForListDo
   Debug-Output $(DBHDR)"Modified Tapi Address List is :"$(TapiAddressList)

   Set NewValueList = {+
      {AddressList,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TapiAddressList) },+
      {DeviceName,$(NoTitle),$(!REG_VT_SZ),$(DriverSWName)           },+
      {LineType,$(NoTitle),$(!REG_VT_DWORD),$(TapiLineType)          },+
      {MediaType,$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)           },+
      {ConnectSpeed,$(NoTitle),$(!REG_VT_DWORD),$(SPEED_VAL)         },+
      {DebugFlags,$(NoTitle),$(!REG_VT_DWORD),$(DEBUG_VAL)           },+
      {MaxSessions,$(NoTitle),$(!REG_VT_DWORD),$(MAX_VAL)            },+
      {EchoInterval,$(NoTitle),$(!REG_VT_DWORD),$(ECHO_VAL)          },+
      {MaxMissedEchos,$(NoTitle),$(!REG_VT_DWORD),$(ECHO2_VAL)       },+
         {UseNotAdvertised,$(NoTitle),$(!REG_VT_DWORD),$(USE_NADV_VAL)       },+
      {NetCard,$(NoTitle),$(!REG_VT_DWORD),$(AdapterNumber)          },+
      }

   IfInt $(DebugINF) >= 3
      Debug-Output $(DBHDR)"Parameters s/w and h/w rk1="$(KeyHWParameters)" rk2="$(KeyParameters)
      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo
   EndIf

; NOTE: Parameters ADDED to BOTH the s/w and h/w keys
; ===================================================
   Shell  $(UtilityInf), AddValueList, $(KeyHWParameters), $(NewValueList)
   CloseRegKey $(KeyHWParameters)

   IfInt $($ShellCode) != $(!SHELL_CODE_OK)
      Debug-Output $(DBHDR)"ShellCode error."
      CloseRegKey $(KeyParameters)
      GoTo ShellCodeError
   EndIf
   Set RegistryErrorIndex = $($R0)
   IfStr(i) $(RegistryErrorIndex) != NO_ERROR
      Debug-Output $(DBHDR)"Registry error: Add value list"
      CloseRegKey $(KeyParameters)
      GoTo FatalRegistry
   EndIf

   Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
   CloseRegKey $(KeyParameters)

   IfInt $($ShellCode) != $(!SHELL_CODE_OK)
       Debug-Output $(DBHDR)"ShellCode error."
       GoTo ShellCodeError
   EndIf
   Set RegistryErrorIndex = $($R0)
   IfStr(i) $(RegistryErrorIndex) != NO_ERROR
       Debug-Output $(DBHDR)"Registry error: Add value list"
       GoTo FatalRegistry
   EndIf

   IfStr(i) $(!NTN_InstallMode) == configure
       GoTo successful
   EndIf

   OpenRegKey $(!REG_H_LOCAL) "" $(TapiParamKey) $(MAXIMUM_ALLOWED) TcpKey
   IfStr(i) $(TcpKey) != ""
       Debug-Output $(DBHDR)"TapiParamKey key="$(TapiParamKey)
       Debug-Output $(DBHDR)"Setting to 9 value="$(TapiValue)
       SetRegValue $(TcpKey) {$(TapiValue),$(NoTitle),$(!REG_VT_DWORD), 9}
       CloseRegKey $(TcpKey)
   Else
       Debug-Output $(DBHDR)"Can't open key "$(TapiParamKey)
   EndIf

   OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft" $(MAXIMUM_ALLOWED) BaseKey
   shell "" HtCreateRegKey $(BaseKey) $(TapiDevKey)
   IfStr(i) $($R0) != NO_ERROR
       Debug-Output $(DBHDR)"Error creating registry key!"
       GoTo FatalRegistry
   EndIf

   Set TapiDeviceKey = $($R1)

   Set NewValueList = {+
      {Address,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TapiAddressList) },+
      {"Media Type",$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)    } }

   IfInt $(DebugINF) >= 3
      Debug-Output $(DBHDR)"Values for SW\MS\"$(TapiDevKey)" rk="$(TapiDeviceKey)
      ForListDo $(NewValueList)
         Debug-Output $(DBHDR)"Value = "$($)
      EndForListDo
   EndIf

   Shell  $(UtilityInf), AddValueList, $(TapiDeviceKey), $(NewValueList)
   IfInt $($ShellCode) != $(!SHELL_CODE_OK)
      Debug-Output $(DBHDR)"ShellCode error."
      CloseRegKey $(TapiDeviceKey)
      CloseRegKey $(BaseKey)
      GoTo ShellCodeError
   EndIf
   Set RegistryErrorIndex = $($R0)
   IfStr(i) $(RegistryErrorIndex) != NO_ERROR
      Debug-Output $(DBHDR)": Registry error: Add value list"
      CloseRegKey $(TapiDeviceKey)
      CloseRegKey $(BaseKey)
      GoTo FatalRegistry
   EndIf

   CloseRegKey $(TapiDeviceKey)
   CloseRegKey $(BaseKey)

   ifstr(i) $(!STF_INSTALL_MODE) == EXPRESS
      GoTo InstallRas
   Else
      Shell "" InstallTCPIPIfNotInstalled $(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig)
      ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(DBHDR)"ShellCode error from InstallTCPIPIfNotInstalled"
         goto ShellCodeError
      endif
      ifstr(i) $($R0) != STATUS_SUCCESSFUL
         Debug-Output $(DBHDR)"Error installing TCP/IP"
         set Error = "Error installing TCP/IP"
         goto FatalError
      endif
      Shell "" DebugGlobalFlags "After TCP/IP"
   EndIf

InstallRas = +

   ifstr(i) $(!STF_INSTALL_MODE) == EXPRESS
      GoTo successful
   Else
      Read-Syms InvokeRasDlg$(!STF_LANGUAGE)
      Shell "oemnsvra.inf" CheckRasInstalled
      IfInt $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(DBHDR)"Error Shelling the RAS INF file oemnsvra.inf"
         Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE),  +
                  "STATUS", $(InvokeRasError)
         IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(DBHDR)"ShelCode Error from subroutn.inf SetupMessage"
            GoTo ShellCodeError
         EndIf
         GoTo RASSetup
      EndIf

      Set RasInstalled = $($R0)
      Debug-Output $(DBHDR)"RAS Installed? = "$(RasInstalled)
      IfStr(i) $(RasInstalled) == FALSE
          Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
                  $(InvokeRasSetupMsg)
          IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(DBHDR)"ShelCode Error from subroutn SetupMessage"
            GoTo RASSetup
          EndIf
      Else
          Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
                  $(InvokeRasConfigMsg)
          IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(DBHDR)"ShelCode Error from subroutn SetupMessage"
            GoTo RASSetup
          EndIf
      EndIf
      ;;;EndWait
      GoTo RASSetup
   Endif

RASSetup =+

    Debug-Output $(DBHDR)"Entering RAS configure"
    Set AddCopy  = YES
    Set DoCopy   = YES
    Set DoConfig = YES
    ;;;;Set SrcDir   = $(!STF_CWDDIR) ; Srcdir received from external parameter
   Set SrcDir = $(!NTN_RasSourcePath)	

    IfStr(i) $(RasInstalled) == TRUE
       Set SaveNTN_InstallMode = $(!NTN_InstallMode)
       Set !NTN_InstallMode = configure
    EndIf

    Set PREV_SRCDIR = $(!STF_SRCDIR_OVERRIDE)
    Set !STF_SRCDIR_OVERRIDE = ""
    ;;;Set PREVUNAT = $(!STF_UNATTENDED)
    ;;;Set PREVGUI  = $(!STF_GUI_UNATTENDED)
    ;;;Set !STF_SRCDIR_OVERRIDE = $(SrcDir)
    ;;;Set !STF_UNATTENDED      = "YES"
    ;;;Set !STF_GUI_UNATTENDED  = "YES"
    ;;;Shell "" DebugGlobalFlags "Before oemnsvra.InStallOption"
    Shell "oemnsvra.inf" InstallOption $(!STF_LANGUAGE) "RAS" $(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig)
    ;;;Shell "" DebugGlobalFlags "After  oemnsvra.InStallOption"
    ;;;Set !STF_UNATTENDED      = $(PREVUNAT)
    ;;;Set !STF_GUI_UNATTENDED  = $(PREVGUI)
    Set !STF_SRCDIR_OVERRIDE = $(PREV_SRCDIR)
    IfStr(i) $(RasInstalled) == TRUE
       Set !NTN_InstallMode  = $(SaveNTN_InstallMode)
    EndIf

    Shell "" DebugGlobalFlags "After reset"
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output $(DBHDR)"Error Shelling the RAS INF file oemnsvra.inf"
        Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
                $(InvokeRasError)
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(DBHDR)"Shellcode Error"
            GoTo ShellCodeError
        EndIf
        ;;;GoTo successful
    EndIf

    Debug-Output $(DBHDR)"Exit RAS configure"
    EndWait
    goto successful

ConfigureAdapter = +
   Debug-Output $(DBHDR)"Entering ConfigureAdapter"
   Read-Syms InvokeConfigureDlg$(!STF_LANGUAGE)
   IfInt $(TapiLib) == 1
      LoadLibrary "x" $(!STF_CWDDIR)raspptpc.dll RASPPTPDLGHANDLE
      Debug-Output $(DBHDR)"Getting info from GetChassisConfiguration"
      Debug-Output $(DBHDR)"NTN_InstallMode = "$(!NTN_InstallMode)
      LibraryProcedure Result, $(RASPPTPDLGHANDLE), GetChassisConfiguration $(!NTN_InstallMode)
      Set NumberOfLineDevices = *($(Result), 1)
      Set AdapterNum = *($(Result), 2)
      FreeLibrary $(RASPPTPDLGHANDLE)
      ifstr(i) $(NumberOfLineDevices) != "EXITSETUP"
	      ifstr(i) $(NumberOfLineDevices) != "RASNOCHANGE"
            Shell "" UpdateAddressList $(NumberOfLineDevices) $(AdapterNum) +
               $(DriverSWName) $(TapiMediaType)
	         ifint $($ShellCode) != $(!SHELL_CODE_OK)
		         Debug-Output $(DBHDR)"Cannot update address list for RAS"
    	         goto ShellCodeError
	         endif
         else
	         Debug-Output $(DBHDR)"RAS reports NO CHANGE!"
	      endif
         Set CommonStatus = STATUS_SUCCESSFUL
      Else
         Debug-Output $(DBHDR)"RAS reports EXIT SETUP!"
         Set CommonStatus = STATUS_USERCANCEL
      EndIf
   Else
;;; we had
      Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
      ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(DBHDR)"ShellCode error: cannot get an error string."
         goto ShellCodeError
      endif
      set Error = $($R0)
      set from  = end
      set to    = end
      goto nonfatalinfo
   EndIf
   goto end

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

removeadapter = +
   Debug-Output $(DBHDR)"Entering removeadapter"
   OpenRegKey $(!REG_H_LOCAL) "" $(DriverKeyName) $(MAXIMUM_ALLOWED) KeyProduct
   IfStr $(KeyProduct) != $(KeyNull)
       GetRegValue $(KeyProduct),"NetCard", NetCardInfo
       CloseRegKey $(KeyProduct)
       Debug-Output $(DBHDR)"Got NetCardInfo = "$(NetCardInfo)
       Set NetCard = *($(NetCardInfo), 4)
       Debug-Output $(DBHDR)"Set NetCard = "$(NetCard)
       Debug-Output $(DBHDR)"Doing RemoveHardwareComponent for "$(ProductHardwareName)
       Set TempCardKey = $(MSNWCardKeyName)"\"$(NetCard)
       Debug-Output $(DBHDR)"Passing key ="$(TempCardKey)
       Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
           $(ProductHardwareName), $(TempCardKey)
       IfInt $($ShellCode) != $(!SHELL_CODE_OK)
           Debug-Output $(DBHDR)"ShellCode error"
           ;;;GoTo ShellCodeError
       Else
          Set RegistryErrorIndex = $($R0)
          IfStr(i) $(RegistryErrorIndex) != NO_ERROR
              Debug-Output $(DBHDR)"Registry error"
              ;;;GoTo FatalRegistry
          EndIf
       EndIf
   Else
       Debug-Output $(DBHDR)"Unable to open "$(DriverKeyName)
   EndIf

   Debug-Output $(DBHDR)"Doing RemoveSoftwareComponent for "$(ProductSWName)
   Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
       $(ProductSWName)
   ifint $($ShellCode) != $(!SHELL_CODE_OK)
       Debug-Output $(DBHDR)"ShellCode error"
       goto ShellCodeError
   endif
   set RegistryErrorIndex = $($R0)
   Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
       Debug-Output $(DBHDR)"Registry error"
       goto fatalregistry
   endif

   Debug-Output $(DBHDR)"Doing RemoveSoftwareComponent for "$(DriverSWName)
   Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
       $(DriverSWName), FALSE
   ifint $($ShellCode) != $(!SHELL_CODE_OK)
       Debug-Output $(DBHDR)"ShellCode error in RemoveSoftwareComponent "$(DriverSWName)
       goto ShellCodeError
   endif
   set RegistryErrorIndex = $($R0)
   Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
       Debug-Output $(DBHDR)"Registry error in RemoveSoftwareComponent "$(DriverSWName)
       Debug-Output $(DBHDR)"To be EXPECTED if RemoveHardwareComponent was SUCCESSFUL"
       ;;;goto fatalregistry
   endif

   Debug-Output $(DBHDR)"Openning Tapi Base key "$(TapiSWKey)
   OpenRegKey $(!REG_H_LOCAL) "" $(TapiSWKey) $(MAXIMUM_ALLOWED) BaseKey
   IfStr $(BaseKey) != $(KeyNull)
      DeleteRegTree $(BaseKey) $(DriverSWName)
   Else
      Debug-Output $(DBHDR)"Open Tapi Base key FAILED!"
   EndIf

   Debug-Output $(DBHDR)"Openning TcpIp Param key "$(TapiParamKey)
   OpenRegKey $(!REG_H_LOCAL) "" $(TapiParamKey) $(MAXIMUM_ALLOWED) TcpKey
   IfStr(i) $(TcpKey) != ""
      Debug-Output $(DBHDR)"Removing value from "$(TapiValue)
      DeleteRegValue $(TcpKey) $(TapiValue)
      CloseRegKey $(TcpKey)
   Else
      Debug-Output $(DBHDR)"Registry error: can't open tcpip key"
   EndIf

   Read-Syms InvokeRasDlg$(!STF_LANGUAGE)
   Shell "oemnsvra.inf" CheckRasInstalled
   IfInt $($ShellCode) != $(!SHELL_CODE_OK)
       Debug-Output $(DBHDR)"Error Shelling the RAS INF file oemnsvra.inf"
       Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE),  +
               "STATUS", $(InvokeRasError)
       IfInt $($ShellCode) != $(!SHELL_CODE_OK)
          Debug-Output $(DBHDR)"ShellCode error"
          GoTo ShellCodeError
       EndIf
       GoTo RASSetup2
   EndIf

   Set RasInstalled = $($R0)
   Debug-Output $(DBHDR)"Is RAS Installed? "$(RasInstalled)
   IfStr(i) $(RasInstalled) == FALSE
       goto end
   Else
       Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
               $(InvokeRasConfigMsg2)
       IfInt $($ShellCode) != $(!SHELL_CODE_OK)
          Debug-Output $(DBHDR)"ShellCode error"
          ;;;GoTo RASSetup2
       EndIf
   EndIf
   GoTo RASSetup2

RASSetup2 =+
   Debug-Output $(DBHDR)"Doing RAS configure in remove"
   ; setup for oemnsvra call
   Set AddCopy  = NO
   Set DoCopy   = NO
   Set DoConfig = NO
   Set SrcDir   = $(!STF_CWDDIR)

   Set SaveNTN_InstallMode = $(!NTN_InstallMode)
   Set !NTN_InstallMode = configure
   ;;;Set PREVUNAT = $(!STF_UNATTENDED)
   ;;;Set PREVGUI  = $(!STF_GUI_UNATTENDED)
   ;;;Set !STF_UNATTENDED = "YES"
   ;;;Set !STF_GUI_UNATTENDED = "YES"
   Shell "oemnsvra.inf" InstallOption $(!STF_LANGUAGE) "RAS" $(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig)
   ;;;Set !STF_UNATTENDED = $(PREVUNAT)
   ;;;Set !STF_GUI_UNATTENDED = $(PREVGUI)
   Set !NTN_InstallMode = $(SaveNTN_InstallMode)

   IfInt $($ShellCode) != $(!SHELL_CODE_OK)
      Debug-Output $(DBHDR)"Error Shelling the RAS INF file oemnsvra.inf"
      Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
                $(InvokeRasError)
      IfInt $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(DBHDR)"ShellCode error"
         GoTo ShellCodeError
      EndIf
   EndIf
   Debug-Output $(DBHDR)"Done RAS configure in remove"
   goto end

UpgradeSoftware = +
    Debug-Output $(DBHDR)"Entering 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)
            Debug-Output $(DBHDR)"Prevent MajorVersion = "$(Version)
            Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output $(DBHDR)"ShellCode error getting INF name"
                goto ShellCodeError
            endif
            set !UG_Filename = $($R0)
            ifstr(i) $(!UG_Filename) != ""
               install "Install-Update"
               ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
                   Debug-Output $(DBHDR)"File COPY failed!"
                   goto fatal
               endif
               SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
               SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
            else
                Debug-Output $(DBHDR)"Error UG_Filename is BLANK"
            endif
            ;;;ifint $(Version) != $(ProductVersion)
            ;;;endif
            CloseRegKey $(KeyProduct)
        else
            Debug-Output $(DBHDR)"Registry error on ProductKeyName "$(ProductKeyName)
            goto fatalregistry
        endif
    else
       Debug-Output $(DBHDR)"ProductKeyName     = "$(ProductKeyName)
       Debug-Output $(DBHDR)"Is NOT NTN_RegBase = "$(!NTN_RegBase)
    endif
    Debug-Output $(DBHDR)"Exit UpgradeSoftware"
    goto end

successful = +
    goto end

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

nonfatalinfo = +
    Set CommonStatus = STATUS_USERCANCEL
    Set Severity = STATUS
    goto nonfatalmsg

nonfatal = +
    Set Severity = NONFATAL
    goto nonfatalmsg

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

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

fatal = +
    ifstr(i) $(Error) == ""
        Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
        endif
        set Error = $($R0)
    endif

    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    goto setfailed

ShellCodeError = +
    set DlgType      = "MessageBox"
    set STF_MB_TITLE = $(ShellCodeErrorTitle)
    set STF_MB_TEXT  = $(ShellCodeErrorText) 
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1
    ui start "Error Message"
    goto setfailed

setfailed = +
    set CommonStatus = STATUS_FAILED
    ifstr(i) $(OEM_ABANDON_ON) == TRUE
        set OEM_ABANDON_ON = FALSE
        goto removeadapter
    endif
    goto end

end = +
    goto term

term = +
   IfInt $(DebugINF) >= 5
      detect date
	   ; now = { Sec from 1-1-1970, Year, Month, Day, Hour, Minute, Second }
	   Set Today = *($(Now),2)"-"*($(Now),3)"-"*($(Now),4)
	   Set Time  = *($(Now),5)":"*($(Now),6)":"*($(Now),7)
   Endif
   Debug-Output $(DBHDR)"End INF "$(INFVersion)" on "$(Today)" at "$(Time)
   ;;;Debug-Output $(DBHDR)"Termination of INF, and set debug = "$(OldDebugControl)
   Set !DebugOutputControl = $(OldDebugControl)
   Return $(CommonStatus)

[InstallTCPIPIfNotInstalled]
   Debug-Output $(!P:DBHDR)"InstallTCPIPIfNotInstalled entry "
   Debug-Output $(!P:DBHDR)"!NTN_ServiceBase is "$(!NTN_ServiceBase)
   set SrcDir   = $($0)
   set AddCopy  = $($1)
   set DoCopy   = $($2)
   set DoConfig = $($3)
   Read-Syms InvokeTCPIPDlg$(!STF_LANGUAGE)
   set TcpIpKeyName  = $(!NTN_ServiceBase)"\TcpIp"
   Set KeyNull       =    ""
   Set status = STATUS_FAILED
   Set TcpIpInstalled   = FALSE
	Set MAXIMUM_ALLOWED = 33554432
   set Protocol = "TCPIP"
   set KeyService = $(KeyNull)
   set DeleteFlag = 0
   set DeleteFlagInfo = {}
   OpenRegKey $(!REG_H_LOCAL) "" $(TcpIpKeyName) $(MAXIMUM_ALLOWED) KeyService
   Ifstr(i) $(KeyService) != $(KeyNull)
      GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
      set DeleteFlag = *($(DeleteFlagInfo), 4)
      ifint $(DeleteFlag) != 1
         set TcpIpInstalled = TRUE
      endif
      CloseRegKey $(KeyService)
   endif
   Debug-Output $(!P:DBHDR)"TCP/IP Installed? "$(TcpIpInstalled)
   Ifstr(i) $(TcpIpInstalled) == "FALSE"
      Debug-Output $(!P:DBHDR)"Installing TCP/IP"
      Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
         $(InvokeTCPSetupMsg)
      set InvokedByRas = FALSE
    	Debug-Output $(!P:DBHDR)"Not resetting stf_srcdir_override flag"
    	;;;Set PREV_SRCDIR = $(!STF_SRCDIR_OVERRIDE)
    	;;;Set !STF_SRCDIR_OVERRIDE = $(SrcDir)
      Shell "oemnxptc.inf" InstallOption $(!STF_LANGUAGE) "TC" $(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig) $(InvokedByRas)
    	;;;set !STF_SRCDIR_OVERRIDE = $(PREV_SRCDIR)
      Ifint $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(!P:DBHDR)"SHELL ERROR! during TCP/IP installation"
         Goto InstallTCPEscape
      Endif
      Set status = $($R0)
      Ifstr(i) $(status) != STATUS_SUCCESSFUL
         Ifstr(i) $(status) != STATUS_USERCANCEL
            Debug-Output $(!P:DBHDR)"oemnxptc.inf  returned "$(status)
            Goto InstallTCPEscape
         Endif
      Endif
   Else
      set status = STATUS_SUCCESSFUL
   Endif
InstallTCPEscape = +
    set RetStatus = $(status)
    return $(RetStatus)

[HtCreateRegKey]
   Debug-Output $(!P:DBHDR)"Entering [HtCreateRegKey]"
   Set ECR_Result          = NO_ERROR
   Set ECR_BaseKeyHandle   = $($0)
   Set ECR_NewPath         = $($1)
   Set KeyNull             = ""
   Set MAXIMUM_ALLOWED     = 33554432
   Debug-Output $(!P:DBHDR)"ECR_BaseKeyHandle = "$(ECR_BaseKeyHandle)
   Debug-Output $(!P:DBHDR)"ECR_NewPath       = "$(ECR_NewPath)
   Debug-Output $(!P:DBHDR)"MAXIMUM_ALLOWED   = "$(MAXIMUM_ALLOWED)
   Debug-Output $(!P:DBHDR)"KeyNull           = "$(KeyNull)
   OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_NewPath) $(MAXIMUM_ALLOWED) +
              ECR_BaseKey
   Debug-Output $(!P:DBHDR)"ECR_BaseKey = "$(ECR_BaseKey)
   Debug-Output $(!P:DBHDR)"OpenRegKey returned "$($R0)
   IfStr $(ECR_BaseKey) == $(KeyNull)
       Debug-Output $(!P:DBHDR)"ECR_BaseKey == KeyNull"
   Else
       Debug-Output $(!P:DBHDR)"ECR_BaseKey != KeyNull"
       Set ECR_KeyHandle = $(ECR_BaseKey)
       GoTo  ECR_Return
   EndIf

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

ECR_Return = +
   Return $(ECR_Result) $(ECR_KeyHandle)

[UpdateAddressList]
   Debug-Output $(!P:DBHDR)": Entering [UpdateAddressList]"
	Set NumberLineDevices = $($0)
	Set AdapNum = $($1)
	Set DriverName = $($2)
	Set MediaType = $($3)
   Set MAXIMUM_ALLOWED     = 33554432
   Set KeyNull             = ""
	Debug-Output $(!P:DBHDR)"Number of line devices = "$(NumberLineDevices)
	Debug-Output $(!P:DBHDR)"Adapter number         = "$(AdapNum)
	Debug-Output $(!P:DBHDR)"Driver name            = "$(DriverName)
	Shell "" CreateFullTapiAddrList $(AdapNum)
   ifint $($ShellCode) != $(!SHELL_CODE_OK)
	   Debug-Output $(!P:DBHDR)"Cannot create the new TAPI address list"
      goto ShellCodeError
   endif
	Set NewTapiAddrList = $($R0)
	Set TapiAddressList = {}
	ForListDo $(NewTapiAddrList)
	   Set CurListItem = $($)
		Set CurListNumber = $(#)
		IfInt $(CurListNumber) <= $(NumberLineDevices)
			Set TapiAddressList = >($(TapiAddressList), $(CurListItem))
		Endif
	EndForListDo
	Debug-Output $(!P:DBHDR)"Modified new Tapi Address List is :"$(TapiAddressList)
   set RASPPTPAddress = "SYSTEM\CurrentControlSet\Services\"$(DriverName)$(AdapNum)"\Parameters"
	Debug-Output $(!P:DBHDR)"RASPPTPAddress = "$(RASPPTPAddress)
   OpenRegKey $(!REG_H_LOCAL) "" $(RASPPTPAddress) $(MAXIMUM_ALLOWED) KeyParam
   Debug-Output $(!P:DBHDR)"Keyparam = "$(KeyParam)
   Ifstr(i) $(KeyParam) != $(KeyNull)
      Debug-Output $(!P:DBHDR)"Entering to set usrwan2 value"
   	DeleteRegValue $(KeyParam) "AddressList"
      SetRegValue $(KeyParam) {AddressList, 0,$(!REG_VT_MULTI_SZ),$(TapiAddressList)}
	   CloseRegKey $(KeyParam)
	EndIf
   OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft" $(MAXIMUM_ALLOWED) BaseKey
   Shell "" HtCreateRegKey $(BaseKey) $(TapiDevKey)
   IfStr(i) $($R0) != NO_ERROR
      Debug-Output $(!P:DBHDR)"Error creating registry key! "$(BaseKey)"\"$(TapiDevKey)
      GoTo FatalRegistry
   EndIf
   Set TapiDeviceKey = $($R1)
	DeleteRegValue $(TapiDeviceKey) "Address"
	DeleteRegValue $(TapiDeviceKey) "Media Type"
   SetRegValue $(TapiDeviceKey) {Address, 0,$(!REG_VT_MULTI_SZ),$(TapiAddressList)}
   SetRegValue $(TapiDeviceKey) {"Media Type", 0,$(!REG_VT_SZ),$(MediaType)}
   CloseRegKey $(TapiDeviceKey)
   CloseRegKey $(BaseKey)
   Read-Syms InvokeRasDlg$(!STF_LANGUAGE)
   Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", +
	    $(InvokeRasConfigMsg)
   Set AddCopy  = YES
   Set DoCopy   = YES
   Set DoConfig = YES
   Set SaveNTN_InstallMode = $(!NTN_InstallMode)
   Set !NTN_InstallMode = configure
   Shell "oemnsvra.inf" InstallOption $(!STF_LANGUAGE) "RAS" "" $(AddCopy) $(DoCopy) $(DoConfig)
   Set !NTN_InstallMode = $(SaveNTN_InstallMode)
   IfInt $($ShellCode) != $(!SHELL_CODE_OK)
      Debug-Output $(!P:DBHDR)"Error Shelling the RAS INF file oemnsvra.inf"
      Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
                $(InvokeRasError)
      IfInt $($ShellCode) != $(!SHELL_CODE_OK)
         Debug-Output $(!P:DBHDR)"ShellCode Error subroutn SetupMessage"
         GoTo ShellCodeError
      EndIf
   EndIf
   EndWait
	return

[CreateFullTapiAddrList]
   Debug-Output $(!P:DBHDR)"Entering [TapiAddrList]"
	Set AdapterNum = $($0)
	Set FullTapiAddrList = 	{+
      $(AdapterNum)"-1-0", $(AdapterNum)"-2-0", $(AdapterNum)"-3-0", +
		$(AdapterNum)"-4-0", $(AdapterNum)"-5-0", $(AdapterNum)"-6-0", +
		$(AdapterNum)"-7-0", $(AdapterNum)"-8-0", $(AdapterNum)"-9-0", +
		$(AdapterNum)"-10-0", $(AdapterNum)"-11-0", $(AdapterNum)"-12-0", +
		$(AdapterNum)"-13-0", $(AdapterNum)"-14-0", $(AdapterNum)"-15-0", +
		$(AdapterNum)"-16-0", $(AdapterNum)"-17-0", $(AdapterNum)"-18-0", +
		$(AdapterNum)"-19-0", $(AdapterNum)"-20-0", $(AdapterNum)"-21-0", +
		$(AdapterNum)"-22-0", $(AdapterNum)"-23-0", $(AdapterNum)"-24-0", +
		$(AdapterNum)"-25-0", $(AdapterNum)"-26-0", $(AdapterNum)"-27-0", +
		$(AdapterNum)"-28-0", $(AdapterNum)"-29-0", $(AdapterNum)"-30-0", +
		$(AdapterNum)"-31-0", $(AdapterNum)"-32-0", $(AdapterNum)"-33-0", +
		$(AdapterNum)"-34-0", $(AdapterNum)"-35-0", $(AdapterNum)"-36-0", +
		$(AdapterNum)"-37-0", $(AdapterNum)"-38-0", $(AdapterNum)"-39-0", +
		$(AdapterNum)"-40-0", $(AdapterNum)"-41-0", $(AdapterNum)"-42-0", +
		$(AdapterNum)"-43-0", $(AdapterNum)"-44-0", $(AdapterNum)"-45-0", +
		$(AdapterNum)"-46-0", $(AdapterNum)"-47-0", $(AdapterNum)"-48-0", +
		$(AdapterNum)"-49-0", $(AdapterNum)"-50-0", $(AdapterNum)"-51-0", +
		$(AdapterNum)"-52-0", $(AdapterNum)"-53-0", $(AdapterNum)"-54-0", +
		$(AdapterNum)"-55-0", $(AdapterNum)"-56-0", $(AdapterNum)"-57-0", +
		$(AdapterNum)"-58-0", $(AdapterNum)"-59-0", $(AdapterNum)"-60-0", +
		$(AdapterNum)"-61-0", $(AdapterNum)"-62-0", $(AdapterNum)"-63-0", +
		$(AdapterNum)"-64-0", $(AdapterNum)"-65-0", $(AdapterNum)"-66-0", +
		$(AdapterNum)"-67-0", $(AdapterNum)"-68-0", $(AdapterNum)"-69-0", +
		$(AdapterNum)"-70-0", $(AdapterNum)"-71-0", $(AdapterNum)"-72-0", +
		$(AdapterNum)"-73-0", $(AdapterNum)"-74-0", $(AdapterNum)"-75-0", +
		$(AdapterNum)"-76-0", $(AdapterNum)"-77-0", $(AdapterNum)"-78-0", +
		$(AdapterNum)"-79-0", $(AdapterNum)"-80-0", $(AdapterNum)"-81-0", +
		$(AdapterNum)"-82-0", $(AdapterNum)"-83-0", $(AdapterNum)"-84-0", +
		$(AdapterNum)"-85-0", $(AdapterNum)"-86-0", $(AdapterNum)"-87-0", +
		$(AdapterNum)"-88-0", $(AdapterNum)"-89-0", $(AdapterNum)"-90-0", +
		$(AdapterNum)"-91-0", $(AdapterNum)"-92-0", $(AdapterNum)"-93-0", +
		$(AdapterNum)"-94-0", $(AdapterNum)"-95-0", $(AdapterNum)"-96-0", +
		$(AdapterNum)"-97-0", $(AdapterNum)"-98-0", $(AdapterNum)"-99-0", +
		$(AdapterNum)"-100-0", $(AdapterNum)"-101-0", $(AdapterNum)"-102-0", +
		$(AdapterNum)"-103-0", $(AdapterNum)"-104-0", $(AdapterNum)"-105-0", +
		$(AdapterNum)"-106-0", $(AdapterNum)"-107-0", $(AdapterNum)"-108-0", +
		$(AdapterNum)"-109-0", $(AdapterNum)"-110-0", $(AdapterNum)"-111-0", +
		$(AdapterNum)"-112-0", $(AdapterNum)"-113-0", $(AdapterNum)"-114-0", +
      $(AdapterNum)"-115-0", +
		$(AdapterNum)"-116-0", $(AdapterNum)"-117-0", $(AdapterNum)"-118-0", +
		$(AdapterNum)"-119-0", $(AdapterNum)"-120-0", $(AdapterNum)"-121-0", +
		$(AdapterNum)"-122-0", $(AdapterNum)"-123-0", $(AdapterNum)"-124-0", +
		$(AdapterNum)"-125-0", $(AdapterNum)"-126-0", $(AdapterNum)"-127-0", +
		$(AdapterNum)"-128-0", $(AdapterNum)"-129-0", $(AdapterNum)"-130-0", +
		$(AdapterNum)"-131-0", $(AdapterNum)"-132-0", $(AdapterNum)"-133-0", +
		$(AdapterNum)"-134-0", $(AdapterNum)"-135-0", $(AdapterNum)"-136-0", +
		$(AdapterNum)"-137-0", $(AdapterNum)"-138-0", $(AdapterNum)"-139-0", +
		$(AdapterNum)"-140-0", $(AdapterNum)"-141-0", $(AdapterNum)"-142-0", +
		$(AdapterNum)"-143-0", $(AdapterNum)"-144-0", $(AdapterNum)"-145-0", +
		$(AdapterNum)"-146-0", $(AdapterNum)"-147-0", $(AdapterNum)"-148-0", +
		$(AdapterNum)"-149-0", $(AdapterNum)"-150-0", $(AdapterNum)"-151-0", +
		$(AdapterNum)"-152-0", $(AdapterNum)"-153-0", $(AdapterNum)"-154-0", +
		$(AdapterNum)"-155-0", $(AdapterNum)"-156-0", $(AdapterNum)"-157-0", +
		$(AdapterNum)"-158-0", $(AdapterNum)"-159-0", $(AdapterNum)"-160-0", +
		$(AdapterNum)"-161-0", $(AdapterNum)"-162-0", $(AdapterNum)"-163-0", +
		$(AdapterNum)"-164-0", $(AdapterNum)"-165-0", $(AdapterNum)"-166-0", +
		$(AdapterNum)"-167-0", $(AdapterNum)"-168-0", $(AdapterNum)"-169-0", +
		$(AdapterNum)"-170-0", $(AdapterNum)"-171-0", $(AdapterNum)"-172-0", +
		$(AdapterNum)"-173-0", $(AdapterNum)"-174-0", $(AdapterNum)"-175-0", +
		$(AdapterNum)"-176-0", $(AdapterNum)"-177-0", $(AdapterNum)"-178-0", +
		$(AdapterNum)"-179-0", $(AdapterNum)"-180-0", $(AdapterNum)"-181-0", +
		$(AdapterNum)"-182-0", $(AdapterNum)"-183-0", $(AdapterNum)"-184-0", +
		$(AdapterNum)"-185-0", $(AdapterNum)"-186-0", $(AdapterNum)"-187-0", +
		$(AdapterNum)"-188-0", $(AdapterNum)"-189-0", $(AdapterNum)"-190-0", +
		$(AdapterNum)"-191-0", $(AdapterNum)"-192-0", $(AdapterNum)"-193-0", +
		$(AdapterNum)"-194-0", $(AdapterNum)"-195-0", $(AdapterNum)"-196-0", +
		$(AdapterNum)"-197-0", $(AdapterNum)"-198-0", $(AdapterNum)"-199-0", +
		$(AdapterNum)"-200-0", $(AdapterNum)"-201-0", $(AdapterNum)"-202-0", +
		$(AdapterNum)"-203-0", $(AdapterNum)"-204-0", $(AdapterNum)"-205-0", +
		$(AdapterNum)"-206-0", $(AdapterNum)"-207-0", $(AdapterNum)"-208-0", +
		$(AdapterNum)"-209-0", $(AdapterNum)"-210-0", $(AdapterNum)"-211-0", +
		$(AdapterNum)"-212-0", $(AdapterNum)"-213-0", $(AdapterNum)"-214-0", +
      $(AdapterNum)"-215-0", +
		$(AdapterNum)"-216-0", $(AdapterNum)"-217-0", $(AdapterNum)"-218-0", +
		$(AdapterNum)"-219-0", $(AdapterNum)"-220-0", $(AdapterNum)"-221-0", +
		$(AdapterNum)"-222-0", $(AdapterNum)"-223-0", $(AdapterNum)"-224-0", +
		$(AdapterNum)"-225-0", $(AdapterNum)"-226-0", $(AdapterNum)"-227-0", +
		$(AdapterNum)"-228-0", $(AdapterNum)"-229-0", $(AdapterNum)"-230-0", +
		$(AdapterNum)"-231-0", $(AdapterNum)"-232-0", $(AdapterNum)"-233-0", +
		$(AdapterNum)"-234-0", $(AdapterNum)"-235-0", $(AdapterNum)"-236-0", +
		$(AdapterNum)"-237-0", $(AdapterNum)"-238-0", $(AdapterNum)"-239-0", +
		$(AdapterNum)"-240-0", $(AdapterNum)"-241-0", $(AdapterNum)"-242-0", +
		$(AdapterNum)"-243-0", $(AdapterNum)"-244-0", $(AdapterNum)"-245-0", +
		$(AdapterNum)"-246-0", $(AdapterNum)"-247-0", $(AdapterNum)"-248-0", +
		$(AdapterNum)"-249-0", $(AdapterNum)"-250-0", $(AdapterNum)"-251-0", +
		$(AdapterNum)"-252-0", $(AdapterNum)"-253-0", $(AdapterNum)"-254-0", +
		$(AdapterNum)"-255-0", $(AdapterNum)"-256-0"}

   return $(FullTapiAddrList)

[DebugGlobalFlags]
   Debug-Output $(!P:DBHDR)"***DebugGlobalFlags*** STATE: "$($0)
   Debug-Output $(!P:DBHDR)"STF_SRCDIR_USED     = "$(!STF_SRCDIR_USED)
   Debug-Output $(!P:DBHDR)"STF_SRCDIR_KEYED    = "$(!STF_SRCDIR_KEYED)
   Debug-Output $(!P:DBHDR)"STF_SRCDIR_OVERRIDE = "$(!STF_SRCDIR_OVERRIDE)
   Debug-Output $(!P:DBHDR)"STF_UNATTENDED      = "$(!STF_UNATTENDED)
   Debug-Output $(!P:DBHDR)"STF_GUI_UNATTENDED  = "$(!STF_GUI_UNATTENDED)
   Debug-Output $(!P:DBHDR)"STF_UNATTENDED_SECT = "$(!STF_UNATTEND_SECTION)
   Return

[Install-Option]
   Debug-Output $(!P:DBHDR)"Entering Install-Option"
   set STF_VITAL = ""
   ifstr(i) $(AddCopy) == "YES"
      AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
      AddSectionFilesToCopyList Files-App $(SrcDir) $(!STF_WINDOWSSYSPATH)
      AddSectionFilesToCopyList Files-Start $(SrcDir) $(!STF_WINDOWSSYSPATH)\$(StartDir)
   endif
   ifstr(i) $(DoCopy) == "YES"
      set !STF_NCPA_FLUSH_COPYLIST = TRUE
      CopyFilesInCopyList
      Debug-Output $(!P:DBHDR)"Done CopyFilesInCopyList"
   endif
   ifstr(i) $(DoConfig) == "YES"
   endif
   Exit

[Install-Update]
   Debug-Output $(!P:DBHDR)"Entering Install-Update"
   set STF_VITAL        = ""
   set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
   AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
   AddSectionFilesToCopyList Files-App $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-Start $(SrcDir) $(!STF_WINDOWSSYSPATH)\$(StartDir)
   AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
   Debug-Output $(!P:DBHDR)"Copying NEW files"
   CopyFilesInCopyList
   exit

[Source Media Descriptions]
    1  = "PPPoEWin Setup Disk"  , TAGFILE = disk1

[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386

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

[Files-PPPOEWIN]
1, pppoent4.SYS , SIZE=999

[Files-App]

[Files-Start]
;1,pppoent4.lnk , SIZE=999

[LanguagesSupported]
   ENG

[OptionsTextENG]
   NDISPERF     = "PPPOEWIN Protocol v4.0"

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

FunctionTitle   = "PPPoEWin Driver"
ProductSoftwareDescription = "This is a protocol for sending Point to Point (PPP) over Ethernet. "+
                     "It supports dial up (DUN) to Internet service providers (ISPs)."
ProductSoftwareDisplayName = "Friendly PPP over Ethernet"

ProductSoftwareTitle    = "PPPoEWin Protocol"
ShellCodeErrorTitle     = "Error: "$(FunctionTitle)
ShellCodeErrorText      = "Shell Code Error."

ProductHardwareDescription = "Sending PPP over Ethernet."
ProductHardwareDisplayName = "Friendly PPP over Ethernet"
ProductHardwareTitle       = "PPPoEWin Driver"

DLG_RESULT = "OK"

POE_DDESC = "PPPoE Driver v4.0"
POE_BLANK = "Blank"

POE_DEBUG = "Debug Flag"
POE_MAX   = "Maximum Sessions"
POE_SPEED = "Speed Displayed"
POE_ECHO  = "EchoInterval"
POE_ECHO2 = "MaxMissedEchos"

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

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

[InvokeRasDlgENG]
InvokeRasSetupMsg   = "Remote Access Services (RAS) will now be installed. "+
                      "Please add the PPPoE ports in RAS "+
                      "setup to enable you to use PPPoE via DUN."
InvokeRasConfigMsg  = "Remote Access Services (RAS) setup will now be invoked. "+
                      "Please add the PPPoE ports in RAS "+
                      "setup to enable you to use PPPoE via DUN. "+
                      "Click [Add...] and select PPPoE ports. Click [Continue] when done."
InvokeRasConfigMsg2 = "Remote Access Services (RAS) setup will now be invoked. "+
                      "Please remove the PPPoE ports in RAS configuration. "+
                      "Select each and click [Remove]. Click [Continue] when done."

InvokeRasError      = "PPPoE 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."

[InvokeTCPIPDlgENG]
InvokeTCPSetupMsg   = "TCP/IP is not installed. It will now be installed."
InvokeTCPError      = "PPPoE setup encountered an error "+
                      "while invoking the TCP/IP setup INF file (OEMNXPTC.INF). "+
                      "Please make sure that the file is present in the "+
                      "System32 directory and is the proper file."

[InvokeCancelDlgENG]
InvokeCancelMsg = "PPPoE setup is incomplete. "+
                  "Please rerun the Setup Program if you want "+
                  "to install PPPoE."

[InvokeConfigureDlgENG]
InvokeConfigureMsg = "Please reboot for the new changes to take effect."

;eof
Download Driver Pack

How To Update Drivers Manually

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

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

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

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

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

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

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

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

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

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

server: ftp, load: 2.27