oemsetup.inf Driver File Contents (Intel2100Drivers.zip)

;***********************************************************************
; Intel(R) PRO/DSL 2100 PCI ADSL adapter driver Windows NT Setup File.
; $Revision: 16 $
;***********************************************************************
[Identification]
    OptionType = NetAdapter

;***********************************************************************
[PlatformsSupported]
    PCI

;***********************************************************************
[Options]
    ProDsl21PPP
    ProDsl21LAN

;***********************************************************************
[FileConstants]
    InfName                     = "OEMINTEL.INF"
    UtilityInf                  = "UTILITY.INF"
    ParamInf                    = "NCPARAM.INF"
    subroutineinf               = "SUBROUTN.INF"
    P21PPP                      = "p21cn4w.sys"
    P21LAN                      = "p21cn4l.sys"
    Exit_Code                   = 0
    NetEventDLL                 = "%SystemRoot%\System32\netevent.dll"
    IoLogMsgDLL                 = "%SystemRoot%\System32\IoLogMsg.dll"
    Manufacturer                = "Intel"
    ProductMajorVersion         = "1"
    ProductMinorVersion         = "0"
    ProductVersion              = $(ProductMajorVersion)"."$(ProductMinorVersion)
    SoftwareName                = "ProDsl21"
    ProductSoftwareImagePathPPP = "%SystemRoot%\System32\drivers\"$(P21PPP)
    ProductSoftwareImagePathLAN = "%SystemRoot%\System32\drivers\"$(P21LAN)
    NetRuleSoftwareTypePPP      = "ProDsl21Sys ProDsl21Driver"
    NetRuleSoftwareTypeLAN      = "ProDsl21Sys ndisDriver ProDsl21Driver"
    ProductHardwareName         = $(SoftwareName)
    DeviceMap                   = "HARDWARE\DEVICEMAP"
    TapiDevices                 = "TAPI DEVICES"
    TapiDeviceKey               = $(ProductHardwareName)
    TapiMediaType               = "ADSL"
    ProductKeyName              = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"+
                                  $(SoftwareName)"\CurrentVersion"
    ProDslEXE                   = "ProDsl.EXE"
    ProDslHLP                   = "ProDsl.HLP"
    DslHelpHLP                  = "DslHelp.HLP"
    ProDslDLL                   = "ProDsl.DLL"
    DslFileLocation             = "c:\intel\dslsetup"

;   FIXME - Set to zero before release
    DebugFlags              = 0

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

[VendorDeviceIDs]
    {32902, 20481}      ; 0x8086, 0x5001 ; "we need subvendor/subdevice support!"
;    { 4814,     1}      ; 0x12CE, 0x0001

[SoftwareCurrentVersion]
  ; HKLM\SOFTWARE\[Mfg]\[Product]\CurrentVersion
    {SoftwareType,  $(NoTitle), $(!REG_VT_SZ),      "driver"}
    {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),      $(SoftwareName)}
    {InstallDate,   $(NoTitle), $(!REG_VT_DWORD),   *($(Now),1)}

[SoftwareNetBindRules]
  ; HKLM\SOFTWARE\[Mfg]\[Product]\CurrentVersion\NetRules
    {type,          $(NoTitle), $(!REG_VT_SZ),      $(LocalSoftwareType)}
    {use,           $(NoTitle), $(!REG_VT_SZ),      "driver"}
    {bindform,      $(NoTitle), $(!REG_VT_SZ),      """"$(SoftwareName)"Sys"" yes no container"}
    {class,         $(NoTitle), $(!REG_VT_MULTI_SZ),{$(SoftwareName)"Driver basic"}}
    {bindable,      $(NoTitle), $(!REG_VT_MULTI_SZ),{$(SoftwareName)"Driver "$(SoftwareName)"Adapter non exclusive 100"}}
    {InfOption,     $(NoTitle), $(!REG_VT_SZ),      $(Option)}

[NetworkCardValues]
  ; HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\[x]
    {Manufacturer,  $(NoTitle), $(!REG_VT_SZ),      $(Manufacturer)}
    {Title,         $(NoTitle), $(!REG_VT_SZ),      "["$(AdapterNumber)"] "$(ProductHardware$(Option)Title)}
    {Description,   $(NoTitle), $(!REG_VT_SZ),      $(ProductHardware$(Option)Description)" [Slot "$(SlotNumber)"]"}
    {ProductName,   $(NoTitle), $(!REG_VT_SZ),      $(ProductHardwareName)}
    {ServiceName,   $(NoTitle), $(!REG_VT_SZ),      $(SoftwareName)$(AdapterNumber)}
    {InstallDate,   $(NoTitle), $(!REG_VT_DWORD),   *($(Now),1)}

[HardwareNetBindRules]
  ; HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\[x]\NetRules
    {type,          $(NoTitle), $(!REG_VT_SZ),      $(SoftwareName)" "$(SoftwareName)"Adapter"}
    {bindform,      $(NoTitle), $(!REG_VT_SZ),      """"$(SoftwareName)$(AdapterNumber)""" yes yes container"}
    {class,         $(NoTitle), $(!REG_VT_MULTI_SZ),{$(SoftwareName)"Adapter basic"}}
    {InfOption,     $(NoTitle), $(!REG_VT_SZ),      $(Option)}

[ProDsl21LANParameters]
  ; HKLM\SYSTEM\CurrentControlSet\Services\[miniport instance]\Parameters
    {AdapterNumber, $(NoTitle), $(!REG_VT_DWORD),   $(AdapterNumber)    }
    {Baud,          $(NoTitle), $(!REG_VT_DWORD),   3                   }
    {BusNumber,     $(NoTitle), $(!REG_VT_DWORD),   $(BusNumber)        }
    {BusType,       $(NoTitle), $(!REG_VT_DWORD),   5                   }
    {DeviceName,    $(NoTitle), $(!REG_VT_SZ),      $(ProductHardwareName)}
    {Rfc1483Mode,   $(NoTitle), $(!REG_VT_DWORD),   0                   }
    {Rfc1483VCI,    $(NoTitle), $(!REG_VT_DWORD),   1                   }
    {Rfc1483VPI,    $(NoTitle), $(!REG_VT_DWORD),   1                   }
    {SlotNumber,    $(NoTitle), $(!REG_VT_DWORD),   $(SlotNumber)       }
    {TxPower,       $(NoTitle), $(!REG_VT_DWORD),   0                   }
;    {AlwaysConnect, $(NoTitle), $(!REG_VT_DWORD),   1                   } ; temp
;    {AutoRetrainMode,$(NoTitle),$(!REG_VT_DWORD),   1                   } ; temp

[ProDsl21PPPParameters]
  ; HKLM\SYSTEM\CurrentControlSet\Services\[miniport instance]\Parameters
    {AdapterNumber, $(NoTitle), $(!REG_VT_DWORD),   $(AdapterNumber)    }
    {AddressList,   $(NoTitle), $(!REG_VT_MULTI_SZ),{$(AdapterNumber)" 1 0"}}
    {Baud,          $(NoTitle), $(!REG_VT_DWORD),   3                   }
    {BusNumber,     $(NoTitle), $(!REG_VT_DWORD),   $(BusNumber)        }
    {BusType,       $(NoTitle), $(!REG_VT_DWORD),   5                   }
    {DeviceName,    $(NoTitle), $(!REG_VT_SZ),      $(ProductHardwareName)}
    {Rfc2364VCI,    $(NoTitle), $(!REG_VT_DWORD),   1                   }
    {Rfc2364VPI,    $(NoTitle), $(!REG_VT_DWORD),   1                   }
    {SlotNumber,    $(NoTitle), $(!REG_VT_DWORD),   $(SlotNumber)       }
    {StripHDLC,     $(NoTitle), $(!REG_VT_DWORD),   0                   }
    {TxPower,       $(NoTitle), $(!REG_VT_DWORD),   0                   }


;*******************************************************************************
; Detect sections.  These sections are called using the detect command.
;*******************************************************************************
[Date]
    Now                     = {} ? $(!LIBHANDLE) GetSystemDate

;*******************************************************************************
; Returns information to Setup about the type of driver or drivers that
; can be installed by this INF file.
;*******************************************************************************
[Identify]
    Return STATUS_SUCCESSFUL NetAdapter ""

;*******************************************************************************
; This section returns information to the Setup program, listing the 
; names of any drivers that can be installed by this INF file. It also 
; returns the text strings for each driver (in the requested language) 
; to be used in the dialog box that asks the user to select the driver
; to install. 
;*******************************************************************************
[ReturnOptions]
    Set Status          = STATUS_FAILED
    Set OptionList      = {}
    Set OptionTextList  = {}
    Set LanguageList    = ^(LanguagesSupported, 1)

    IfContains(i) $($0) in $(LanguageList)
        IfStr(i) $($1) == ""
            GoTo SetOptions
        EndIf
        Set PlatformList = ^(PlatformsSupported, 1)
        IfContains(i) $($1) in $(PlatformList)
            GoTo SetOptions
        Else
            Set Status = STATUS_NOTSUPPORTED
            GoTo ExitReturnOptions
        EndIf
    Else
        Set Status = STATUS_NOLANGUAGE
        GoTo ExitReturnOptions
    EndIf

SetOptions = +
    Set OptionList     = ^(Options, 1)
    Set OptionTextList = ^(OptionsText$($0), 1)
    Set Status         = STATUS_SUCCESSFUL

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

;*******************************************************************************
; If the [ReturnOptions] section returns successfully, indicating the
; language is supported, Setup displays a dialog box from which the user
; can select a driver to install. If the user proceeds with the
; installation, Setup calls the [InstallOption] section.
;*******************************************************************************
[InstallOption]
    Set Status   = STATUS_FAILED
    Set Option   = $($1)
    Set SrcDir   = $($2)
    Set RasDir   = $($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
    ; must goto end at any point after this to disable debugging correcly
    ;
    Set OldDebugControl = $(!DebugOutputControl)
    Set !G:DebugOutputControl = 0

    Set-Subst LF = "\n"

    Read-Syms GeneralConstants
    Read-Syms FileConstants
    Read-Syms DialogConstants$(!STF_LANGUAGE)

    IfStr(i) $(!NTN_Origination) == "NCPA"
        Set Continue = $(OK)
    EndIf

    Read-Syms FileConstants$(!STF_LANGUAGE)
    Detect Date
    Set-Title  $(FunctionTitle)$(Option)

    Set to   = Begin
    Set from = Begin
    Set CommonStatus = STATUS_SUCCESSFUL

;***********************************************************************
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
        Set ActivateDetection = TRUE
        Set CommonStatus = STATUS_REBOOT
        IfStr(i) $(ProductKeyName) == $(!NTN_RegBase)
            Debug-Output $(InfName)": Cannot configure the driver software."
            Shell "Utility.Inf",RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
            IfInt $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output $(InfName)": ShellCode error: cannot get an error string."
                GoTo ShellCodeError
            EndIf
            Set Error = $($R0)
            Set from = end
            Set to = end
            GoTo NonFatalInfo
        EndIf
    Else
        Set StartLabel = InstallAdapter
        Set ActivateDetection = TRUE
        Set OEM_ABANDON_OPTIONS = {}
        Set OEM_ABANDON_SOFTWARE = FALSE
        Set OEM_ABANDON_ON = TRUE
    EndIf

    Debug-Output $(InfName)": =================================================="
    Debug-Output $(InfName)": STF_CWDIR is: "$(!STF_CWDIR)
    Debug-Output $(InfName)": STF_LANGUAGE is: "$(!STF_LANGUAGE)
    Debug-Output $(InfName)": Option is: "$(Option)
    Debug-Output $(InfName)": !STF_NCDETECT  is: "$(!STF_NCDETECT)
    Debug-Output $(InfName)": !STF_NCOPTION  is: "$(!STF_NCOPTION)
    Debug-Output $(InfName)": !STF_NCDETCARD is: "$(!STF_NCDETCARD)
    Debug-Output $(InfName)": !STF_NCDETINFO is: "$(!STF_NCDETINFO)
    Debug-Output $(InfName)": =================================================="

    Set DetectedCard = FALSE
    IfStr(i) $(ActivateDetection) != TRUE
        GoTo $(StartLabel)
    EndIf

    Debug-Output $(InfName)": Calling Param_SetDefaults"
    Shell $(ParamInf) Param_SetDefaults {}

    IfStr(i) $(!STF_NCDETECT) == YES
        IfStr(i) $(!STF_NCOPTION) == $(Option)
           Set DetectedCard = TRUE
           Debug-Output $(InfName)": Setting DetectedCard to TRUE"
        EndIf
    EndIf

;    Shell "" DebugConfiguration "After parameter querying"
    Set from = FatalError
    Set to = FatalError
    GoTo $(StartLabel)

;*******************************************************************************
; Called when the user clicks the Add button in the NCPA.
;*******************************************************************************
InstallAdapter = +
    ;-----------------------------------------------------------------------
    ; NT 3.50 & 3.51 are not supported, so give user the bad news
    ;-----------------------------------------------------------------------
    OpenRegKey $(!REG_H_LOCAL) "" +
        "SOFTWARE\Microsoft\Windows NT\CurrentVersion" +
        $(!REG_KEY_READ) hKeyWinNT
    GetRegValue $(hKeyWinNT) "CurrentVersion" CurrentVersion
    Set WinNTVersion = *($(CurrentVersion), 4)
    CloseRegKey $(hKeyWinNT)

    ifcontains(i) $(WinNTVersion) in {"3.50", "3.51"}
        Shell $(subroutineinf) SetupMessage $(!STF_LANGUAGE) "STATUS" +
            "NT 3.50 and NT 3.51 are not supported."
        Set CommonStatus = STATUS_USERCANCEL        
        goto end
    EndIf

    ; find a card we support
    Set BusDevFuncList = {}
    ForListDo ^(VendorDeviceIDs, 1)    
        Shell "Utility.Inf", GetPCIInformation, *($($), 1), *($($), 2)
        ForListDo $($R0)
            Set BusDevFuncList = >($(BusDevFuncList), $($))
        EndForListDo
    EndForListDo

    ; Check for an empty adapter list and abort with error if empty.
    IfStr $(BusDevFuncList) == {}
        Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "STATUS" +
            "No supported adapters were found in the system.  "+
            "Install the adapter in another PCI slot and try again."
        Set CommonStatus =  STATUS_USERCANCEL
        goto end
    EndIf

    ;-----------------------------------------------------------------------
    ; Search through the bus/slot/function list looking for previously
    ; installed adapters that match.  A match is found by searching through
    ; the installed miniport instances and matching on bus/slot.  If a match
    ; is found, assume that the adapter is already setup and remove the 
    ; adapter from the bus/slot/function list.
    ;-----------------------------------------------------------------------

    Set NewBusDevFuncList = {}
    ForListDo $(BusDevFuncList)

        Set BusNumber = *($($), 1)
        Set SlotNumber = *($($), 2)
        Shell "Utility.Inf", IsNetCardAlreadyInstalled, $(BusNumber), +
            $(SlotNumber), "", "", "YES"
        IfStr $($R1) != "YES"
            Set NewBusDevFuncList = >($(NewBusDevFuncList), $($))
        EndIf

    EndForListDo
    Set BusDevFuncList = $(NewBusDevFuncList)

    ; Check for an empty adapter list.  If the list is empty, it means that
    ; all detected adapters already have a NetworkCard entry in the 
    ; registry, or some rogue NetworkCard is pretending to be the software 
    ; key for this adapter.  In any case, we're done.  The user can remove 
    ; the rogue NetworkCard and reinstall with this software if they want.

    IfStr $(BusDevFuncList) == {}
        Set CommonStatus =  STATUS_USERCANCEL
        goto end
    EndIf

    ;-----------------------------------------------------------------------
    ; Create the software component (service) if it doesn't already exist.
    ;-----------------------------------------------------------------------

    OpenRegKey $(!REG_H_LOCAL) "" $(SoftwareKeyName) $(!REG_KEY_READ) hKey

    IfStr $(hKey) == ""
        
        ; The software component didn't exist...Let's create it.
        IfStr(i) $(Option) == "ProDsl21LAN"
            Set LocalImagePath = $(ProductSoftwareImagePathLAN)
        Else
            Set LocalImagePath = $(ProductSoftwareImagePathPPP)
        EndIf
            
        Shell "Utility.Inf", AddSoftwareComponent, $(Manufacturer), +
            $(SoftwareName), +
            $(SoftwareName), +
            $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
            $(LocalImagePath), "kernelautostart", "NDIS", {}, "",+
            $(NetEventDLL)

        Set hKeyCurrentVersion = $($R1)
        Set hKeyNetRule        = $($R2)

        ; Insert other details to the software component's current 
        ; version key.
        Shell "Utility.Inf", AddValueList, $(hKeyCurrentVersion), +
            ^(SoftwareCurrentVersion, 1)

        IfStr(i) $(Option) == "ProDsl21LAN"
            Set LocalSoftwareType = $(NetRuleSoftwareTypeLAN)
        Else
            Set LocalSoftwareType = $(NetRuleSoftwareTypePPP)
        EndIf

        ; Insert the net bind rules.
        Shell "Utility.Inf", AddValueList, $(hKeyNetRule), +
            ^(SoftwareNetBindRules, 1)

    EndIf

    CloseRegKey $(hKey)

    QueryListSize ListSize BusDevFuncList
    Debug-Output $(InfName)": Found $(ListSize) uninstalled adapters"

    ;-----------------------------------------------------------------------
    ; For each detected adapter, create a hardware component (miniport 
    ; instance).
    ;-----------------------------------------------------------------------

    ForListDo $(BusDevFuncList)
           
        ; Get Bus and Slot from PCI device information
        Set BusNumber  = *($($), 1)
        Set SlotNumber = *($($), 2)

        ; Create a new miniport instance, AKA hardware component.
        Shell "Utility.Inf", AddHardwareComponent, $(SoftwareName), +
            $(STF_CONTEXTINFNAME), $(SoftwareKeyName)
        Set hKeyNetCard   = $($R1)
        Set hKeyNetRule   = $($R2)
        Set hKeyParameter = $($R3)
        Set AdapterNumber = $($R4)

        ; Insert other details to the NetworkCard key.
        Shell "Utility.Inf", AddValueList, $(hKeyNetCard), +
            ^(NetworkCardValues, 1)

        ; Add the miniport parameters.
        IfStr(i) $(Option) == "ProDsl21LAN"
            Shell "Utility.Inf", AddValueList, $(hKeyParameter), +
                ^(ProDsl21LANParameters, 1)
        Else
            Shell "Utility.Inf", AddValueList, $(hKeyParameter), +
                ^(ProDsl21PPPParameters, 1)
        Endif

        ; Insert the net bind rules.
        Shell "Utility.Inf", AddValueList, $(hKeyNetRule), +
            ^(HardwareNetBindRules, 1)

        ; Install unattended answer file overrides if running in
        ; unattended mode.
        IfStr(i) $(!STF_GUI_UNATTENDED) == "YES"
            Shell "Utility.Inf", AddDefaultNetCardParameters, +
                $(hKeyParameter)
        EndIf

    EndForListDo

    ;-----------------------------------------------------------------------
    ; Install the driver, and support files
    ;-----------------------------------------------------------------------
    Install "Install-Option"

    ;-----------------------------------------------------------------------
    ; set up to run our application in the Windows\CurrentVersion\Run key
    ;-----------------------------------------------------------------------
    OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" $(!REG_KEY_SET_VALUE) KeyWinRun
    SetRegValue $(KeyWinRun) {$(ProDslEXE), 0, $(!REG_VT_SZ), $(ProDslEXE)}
    CloseRegKey $(KeyWinRun)
    
    ;-----------------------------------------------------------------------
    ; upgrade the common control dll if need be
    ;-----------------------------------------------------------------------
    RunProgram ExitCode "" "" $(SrcDir)\401com~1.exe /r:n /q:a

    ;-----------------------------------------------------------------------
    ; check for TCP/IP, we will pretty much ALWAYS want TCP installed
    ;-----------------------------------------------------------------------
    set KeyService = $(KeyNull)
    set DeleteFlag = 0
    set DeleteFlagInfo = {}
    set TCPIPInstalled = FALSE
    Debug-Output $(InfName)": before checking, Tcp/Ip handle is "$(KeyService)
    OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\Tcpip" $(!REG_KEY_READ) KeyService
    Debug-Output $(InfName)": Tcp/Ip handle is "$(KeyService)
    Ifstr(i) $(KeyService) != $(KeyNull)
        GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
        set DeleteFlag = *($(DeleteFlagInfo), 4)
        ifint $(DeleteFlag) != 1
            set TCPIPInstalled = TRUE
        endif
        CloseRegKey $(KeyService)
    endif

    IfStr(i) $(TCPIPInstalled) == FALSE
        Debug-Output $(InfName)": TCP/IP is not installed"
        ; start a TCPIP install        
        Set PREV_SRCDIR = $(!STF_SRCDIR_OVERRIDE)
        Set !STF_SRCDIR_OVERRIDE = ""
        Set BbIndex = 2
        read-syms Billboard$(BbIndex)$(!STF_LANGUAGE)
        Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
        Set BillboardVisible = 1
        Debug-Output $(InfName)": before calling tcp/ip install"
        set AddCopy  = YES
        set DoCopy   = YES
        set DoConfig = YES
        set InvokedByRas = NO
        set SaveNTN_InstallMode = $(!NTN_InstallMode)
        set SaveSTF_INSTALL_MODE = $(!STF_INSTALL_MODE)
        set !NTN_InstallMode = install
        set !STF_INSTALL_MODE = EXPRESS
        Shell "oemnxptc.inf" InstallOption $(!STF_LANGUAGE) TC $(!STF_SRCDIR) $(AddCopy) $(DoCopy) $(DoConfig) $(InvokedByRas)
        set !NTN_InstallMode = $(SaveNTN_InstallMode)
        set !STF_INSTALL_MODE = $(SaveSTF_INSTALL_MODE)

        set !STF_SRCDIR_OVERRIDE = $(PREV_SRCDIR)
        Debug-Output $(InfName)": OKAY! We installed Tcp/Ip"
        IfInt $(BillboardVisible) != 0
            Shell "subroutn.inf" PopBillboard
            Set BillboardVisible = 0
        Endif
    Else
        Debug-Output $(InfName)": OKAY! Tcp/Ip is installed"
    EndIf

    Debug-Output $(InfName)": after calling tcp/ip install"
    Debug-Output $(InfName)": !STF_SRCDIR           is: "$(!STF_SRCDIR)
    Debug-Output $(InfName)": !STF_SRCDIR_OVERRIDE  is: "$(!STF_SRCDIR_OVERRIDE)

    GoTo WriteParameters

;***********************************************************************
; called when the user hits the Properties Button in the Network Adapter page
; we don't support this right now
;***********************************************************************
ConfigureAdapter = +
    Debug-Output "$(InfFile) $(Option): Configureadapter"

    set Error = "Cannot configure the software component"
    goto FatalError

;***********************************************************************
; This section just takes care of setting up our tapi registration and
; calling RAS setup if need be, then calling RAS configuration
;***********************************************************************
WriteParameters = +
    Debug-Output $(InfName)": Writing TAPI Parameters"

    ; skip out of the rest of the install if its the 1483 driver
    IfStr(i) $(Option) == "ProDsl21LAN"
        Debug-Output $(InfName)": Assuming rfc1483, skipping tapi setup"
        GoTo SuccessfulOption
    EndIf

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

    ; Create the HARDWARE\DEVICEMAP\TAPI DEVICES\ProDsl21 key
    OpenRegKey $(!REG_H_LOCAL) "" "HARDWARE\DEVICEMAP" $(MAXIMUM_ALLOWED) BaseKey
    shell "" HtCreateRegKey $(BaseKey) "TAPI DEVICES\ProDsl21"

    IfStr(i) $($R0) != NO_ERROR
        Debug-Output $(InfName)": Error creating registry key!"
        GoTo FatalRegistry
    EndIf
    Set TapiDeviceKey = $($R1)
    Set NewValueList = {+
                       {Address,$(NoTitle),$(!REG_VT_MULTI_SZ),{$(AdapterNumber)" 1 0"}},+
                       {"Media Type",$(NoTitle),$(!REG_VT_SZ),$(TapiMediaType)}}
    Shell  "Utility.Inf", AddValueList, $(TapiDeviceKey), $(NewValueList)
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output $(InfName)": ShellCode error."
        GoTo ShellCodeError
    EndIf
    Set RegistryErrorIndex = $($R0)
    IfStr(i) $(RegistryErrorIndex) != NO_ERROR
        Debug-Output $(InfName)": Registry error: Add value list"
        GoTo FatalRegistry
    EndIf
    CloseRegKey $(TapiDeviceKey)
    CloseRegKey $(BaseKey)

    ; if RAS is not installed, then shell ras setup INF file to install RAS
    ; else invoke RAS to allow user to configure RAS
    Read-Syms InvokeRasDlg$(!STF_LANGUAGE)
    Shell "oemnsvra.inf" CheckRasInstalled
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output $(InfName)": Error Shelling the RAS INF file oemnsvra.inf"
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE),  +
                "STATUS", $(InvokeRasError)
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            GoTo ShellCodeError
        EndIf
        GoTo RASSetup
    EndIf
    Set RasInstalled = $($R0)
    Debug-Output $(InfName)": Is RAS Installed? "$(RasInstalled)

    ; display a message to the user that RAS setup will now be invoked
    IfStr(i) $(RasInstalled) == FALSE
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS", +
                $(InvokeRasSetupMsg)
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            GoTo RASSetup
        EndIf
    Else
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS", +
                $(InvokeRasConfigMsg)
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            GoTo RASSetup
        EndIf
    EndIf

    ; FIXME - RAS INF will not locate the files if it is spawned here.
    
RASSetup =+
    Set AddCopy  = YES
    Set DoCopy   = YES
    Set DoConfig = YES
    IfStr(i) $(RasInstalled) == TRUE
       Set SaveNTN_InstallMode = $(!NTN_InstallMode)
       Set !NTN_InstallMode = configure
    EndIf
    Set PREV_SRCDIR = $(!STF_SRCDIR_OVERRIDE)
    Set !STF_SRCDIR_OVERRIDE = ""
    Shell "oemnsvra.inf" InstallOption $(!STF_LANGUAGE) "RAS" $(RasDir) $(AddCopy) $(DoCopy) $(DoConfig)
    set !STF_SRCDIR_OVERRIDE = $(PREV_SRCDIR)
    IfStr(i) $(RasInstalled) == TRUE
            Set !NTN_InstallMode = $(SaveNTN_InstallMode)
    EndIf
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        Debug-Output $(InfName)": Error Shelling the RAS INF file oemnsvra.inf"
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
                $(InvokeRasError)
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            GoTo ShellCodeError
        EndIf
        GoTo SuccessfulOption
    EndIf
    
    ; check for a service pack only if we actually installed RAS
    IfStr(i) $(RasInstalled) == FALSE
        OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows NT\CurrentVersion" $(!REG_KEY_READ) hKeySPVersion
        GetRegValue $(hKeySPVersion) "CSDVersion" SPString
        IfInt $(RegLastError) == 0
            Set !ServicePack = *($(SPString), 4)
            Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
                    $(InstallSPMessage)$(!ServicePack).
        EndIf
        CloseRegKey $(BaseKey)
    EndIf

    GoTo SuccessfulOption


;***********************************************************************
BindingAdapter =+
    Set Error = "Binding: Sorry, not yet implemented."
    GoTo FatalError

;***********************************************************************
RemoveAdapter = +

    IfStr(i) $(Option) == "ProDsl21PPP"
        Read-Syms RemoveRasDlg$(!STF_LANGUAGE)
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS",  +
                $(RemoveRasSetupMsg)
    EndIf

    ;-----------------------------------------------------------------------
    ; Delete the hardware component (miniport instance).  If this is the
    ; last instance, the software component will be deleted as well.
    ;-----------------------------------------------------------------------
    Shell "Utility.Inf", RemoveHardwareComponent, $(Manufacturer), +
        $(SoftwareName), $(!NTN_RegBase)

    ; remove our tapi devices entry we created to allow RAS to find us
    OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\RAS\TAPI DEVICES" $(MAXIMUM_ALLOWED) BaseKey
    IfStr $(BaseKey) != $(KeyNull)
        DeleteRegTree $(BaseKey) $(SoftwareName)
    EndIf
    CloseRegKey $(BaseKey)

    ; remove our run entry
    OpenRegKey $(!REG_H_LOCAL) "" +
        "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" +
        $(!REG_KEY_SET_VALUE) KeyWinRun
    DeleteRegValue $(KeyWinRun) $(ProDslEXE)
    CloseRegKey $(KeyWinRun)

    ; remove our registry entries
    RunProgram ExitCode "" "" $(!STF_WINDOWSPATH)\$(ProDslEXE) /UNREGISTER

    ; get rid of the other files we installed
    AddFileToDeleteList $(!STF_WINDOWSPATH)\$(ProDslEXE)
    AddFileToDeleteList $(!STF_WINDOWSPATH)\$(ProDslHLP)
    AddFileToDeleteList $(!STF_WINDOWSPATH)\$(DslHelpHLP)
    AddFileToDeleteList $(!STF_WINDOWSPATH)\P21DHCP.EXE

    AddFileToDeleteList $(!STF_WINDOWSSYSPATH)\$(ProDslDLL)

    AddFileToDeleteList $(DslFileLocation)\SUPPORT.TXT
    AddFileToDeleteList $(DslFileLocation)\NTREADME.WRI

    ; remove our directory with a non fatal action if it fails
    ; RemoveDir $(DslFileLocation)

    IfStr(i) $(Option) == "ProDsl21LAN"
        AddFileToDeleteList $(!STF_WINDOWSSYSPATH)\drivers\$(P21LAN)
    Else
        AddFileToDeleteList $(!STF_WINDOWSSYSPATH)\drivers\$(P21PPP)
    EndIf
    GoTo end

;***********************************************************************
UpgradeSoftware = +
    set Error = "Cannot upgrade to this software component. Please remove, reboot and reinstall."
    goto FatalError

;***********************************************************************
SuccessfulOption = +
    GoTo end

;***********************************************************************
Abandon = +
    ForListDo $(OEM_ABANDON_OPTIONS)
        Shell "Utility.Inf", RemoveHardwareComponent, $(Manufacturer), +
            $(SoftwareName), $($)
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(InfName)": ShellCode error"
            GoTo ShellCodeError
        EndIf
        Set RegistryErrorIndex = $($R0)
        IfStr(i) $(RegistryErrorIndex) != NO_ERROR
            GoTo FatalRegistry
        EndIf
    EndForListDo
    IfStr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
        Shell "Utility.Inf", RemoveSoftwareComponent, $(Manufacturer), +
            $(SoftwareName), FALSE
        IfInt $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output $(InfName)": ShellCode error"
            GoTo ShellCodeError
        EndIf
        Set RegistryErrorIndex = $($R0)
        IfStr(i) $(RegistryErrorIndex) != NO_ERROR
            GoTo FatalRegistry
        EndIf
    EndIf
    GoTo end

;***********************************************************************
WarningMsg = +
    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)
    EndIf
    GoTo end

;***********************************************************************
NonFatalInfo = +
    Set Severity = STATUS
    Set CommonStatus = STATUS_USERCANCEL
    IfStr(i) $(Error) == ""
        Set Severity = NONFATAL
        Shell "Utility.Inf" 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)
    EndIf
    GoTo end

;***********************************************************************
FatalRegistry = +
    Shell "Utility.Inf" RegistryErrorString $(RegistryErrorIndex)
    IfInt $($ShellCode) != $(!SHELL_CODE_OK)
        GoTo ShellCodeError
    EndIf
    Set Error = $($R0)
    GoTo FatalError

;***********************************************************************
FatalError = +
    IfStr(i) $(Error) == ""
        Shell "Utility.Inf" 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 = +
    Set !DebugOutputControl = $(OldDebugControl)
    Return $(CommonStatus)

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

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

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

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

;***********************************************************************
[DebugConfiguration]
    Debug-Output $(!p:InfName)": **CONFIGURATION STATE: "$($0)
;    Debug-Output $(!p:InfName)": InterruptNumber is "$(!p:InterruptNumber)
    Debug-Output $(!p:InfName)": RamBaseAddress  is "$(!p:RamBaseAddress)
    Return

;***********************************************************************
[Install-Option]
    Set STF_VITAL = ""
    IfStr(i) $(AddCopy) == "YES"
        AddSectionFilesToCopyList Files-$(Option)        $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
        AddSectionFilesToCopyList Files-ProDslManagerNT  $(SrcDir) $(!STF_WINDOWSPATH)
        AddSectionFilesToCopyList Files-ProDslManagerSYS $(SrcDir) $(!STF_WINDOWSSYSPATH)
        ; create the directory c:\intel\dslsetup $(DslFileLocation) (not fatal if fails)
        CreateDir "c:\Intel"
        CreateDir "c:\Intel\DslSetup"
        ; copy to the new directory     
        AddSectionFilesToCopyList Files-ProDslSupport    $(SrcDir) $(DslFileLocation)
    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
;   Set !STF_NCPA_FLUSH_COPYLIST = TRUE
;   CopyFilesInCopyList
;   Exit

;***********************************************************************
[Source Media Descriptions]
    1 = "Intel(R) PRO/DSL 2100 Modem CD-ROM"

;***********************************************************************
[ProductType]
    STF_PRODUCT         = Winnt
    STF_PLATFORM        = I386

;***********************************************************************
[Files-ProDsl21PPP]
    1, P21CN4W.SY_, SIZE=189180, RENAME=P21CN4W.SYS

[Files-ProDsl21LAN]
    1, P21CN4L.SY_, SIZE=189180, RENAME=P21CN4L.SYS

[Files-ProDslManagerNT]
    1, PRODSL.EX_,   SIZE=50000, RENAME=$(ProDslEXE)
    1, $(ProDslHLP), SIZE=50000
    1, $(DslHelpHLP),SIZE=50000
    1, P21DHCP.EX_,  SIZE=50000, RENAME=P21DHCP.EXE

[Files-ProDslManagerSYS]
    1, PRODSL.DL_,  SIZE=50000,  RENAME=$(ProDslDLL)

[Files-ProDslSupport]
    1, SUPPORT.TXT, SIZE=50000
    1, NTREADME.WRI,  SIZE=50000

;***********************************************************************
[LanguagesSupported]
    ENG

;***********************************************************************
[OptionsTextENG]
    ProDsl21PPP           = "Intel(R) PRO/DSL 2100 Modem for PPP"
    ProDsl21LAN           = "Intel(R) PRO/DSL 2100 Modem for Bridged Ethernet (1483)"

;***********************************************************************
[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:"

    FunctionTitleProDsl21PPP               = "Intel(R) PRO/DSL 2100 Modem Setup"
    FunctionTitleProDsl21LAN               = "Intel(R) PRO/DSL 2100 Modem Setup"
    ProductSoftwareDescription             = "Intel(R) PRO/DSL Driver"
    ProductHardwareProDsl21PPPDescription  = "Intel(R) PRO/DSL 2100 Modem - PPP"
    ProductHardwareProDsl21LANDescription  = "Intel(R) PRO/DSL 2100 Modem - Bridged Ethernet (1483)"
    ; shows in devices
    ProductSoftwareTitle                   = "Intel(R) PRO/DSL 2100 Modem"
    ProductHardwareProDsl21PPPTitle        = "Intel(R) PRO/DSL 2100 Modem - PPP"
    ProductHardwareProDsl21LANTitle        = "Intel(R) PRO/DSL 2100 Modem - Bridged Ethernet (1483)"

    ShellCodeErrorTitle                 = "Error: "$(FunctionTitle)$(Option))
    ShellCodeErrorText                  = "Shell Code Error."

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

;***********************************************************************
[InvokeRasDlgENG]
    InvokeRasSetupMsg   = "Intel(R) PRO/DSL Modem setup is complete. "+
                          "Remote Access Services (RAS) must now be installed. "+
                          "Please configure the Intel(R) PRO/DSL Modem port in RAS "+
                          "setup to enable you to use RAS over the "+
                          "Intel(R) PRO/DSL 2100 Modem."
    InstallSPMessage    = "For your system to function properly, you MUST re-apply "

    InvokeRasConfigMsg  = "Intel(R) PRO/DSL Modem setup is complete. "+
                          "Remote Access Services (RAS) setup must now be configured. "+
                          "Please configure the Intel(R) PRO/DSL Modem port in RAS "+
                          "setup to enable you to use RAS over the "+
                          "Intel(R) PRO/DSL 2100 Modem."
    InvokeRasError      = "Intel(R) PRO/DSL Modem setup encountered an error "+
                          "while invoking the RAS setup INF file (OEMNSVRA.INF). "+
                          "Please make sure that the file is present in the "+
                          "System32 directory."

[RemoveRasDlgENG]
    RemoveRasSetupMsg   = "Remote Access Services (RAS) may no longer be needed. If you see "+
                          "a message stating there are no more RAS ports configured, you may "+
                          "safely remove RAS from the Services Tab in the Network Control Panel."

[Billboard2ENG]
Status = "Intel(R) PRO/DSL 2100 Setup is installing the TCP/IP transport..."
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: web4, load: 1.93