;*********************************************************************** ; 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
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.