;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ; OEMSETUP.INF - Equinox SST Serial Driver for Windows NT ; ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [Identification] OptionType = NetAdapter [PlatformsSupported] ISA EISA MCA PCI [LanguagesSupported] ENG [Options] SST [FileConstants] EQNversion = "Ver. 4.13 Intel" TRUE = 1 FALSE = 0 ExitState = "Active" UtilityInf = $(!STF_CWDDIR)"\UTILITY.INF" ; available subroutines... ; RegistryErrorString ; VerExistedDlg ; CardExistedDlg ; AssignAdapterNumber ; DoAskSource ; AddSoftwareComponent, RemoveSoft... ; AddValueList ; AddHardwareComponent, RemoveHardware... ; IncrementReferenceCount, DecrementRef... ; MCAFindBus, EISAFindBus SubroutnInf = $(!STF_CWDDIR)"\SUBROUTN.INF" ; available subroutines... ; PushBillBoard/PopBillBoard ; SetupMessage HandleNull = "" DGCONFIG_HANDLE = $(HandleNull) MAXIMUM_ALLOWED = 33554432 ;------------------ [CustomMessageDlgTemp] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Error" STF_MB_TEXT = "Netcard number is blank" STF_MB_TYPE = 1 ; button set STF_MB_ICON = 3 ; stop icon STF_MB_DEF = 1 ; default button [CustomMessageDlg1] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Error" STF_MB_TEXT = "NT install subroutines unavailable. (1)" STF_MB_TYPE = 1 ; button set STF_MB_ICON = 3 ; stop icon STF_MB_DEF = 1 ; default button [CustomMessageDlg2] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Error" STF_MB_TEXT = "NT install subroutines unavailable. (2)" STF_MB_TYPE = 1 ; button set STF_MB_ICON = 3 ; stop icon STF_MB_DEF = 1 ; default button [CustomMessageDlg3] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Error" STF_MB_TEXT = "NT install subroutines unavailable. (3)" STF_MB_TYPE = 1 ; button set STF_MB_ICON = 3 ; stop icon STF_MB_DEF = 1 ; default button [CustomMessageDlg4] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "You must shutdown and re-boot before changes will take effect" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg5] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "The SNMP Extension Agent cannot be installed; the SNMP service is not installed. To enable the extension services, the SNMP service must be installed first. Remember: Any Service Packs must be re-applied AFTER component additions." STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg6] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not create an SNMP service Registry entry." STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg7] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not open base service key." STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg8] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not open the main binding registry key" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg9] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not open the binding registry key" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg10] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not open the 1st binding registry subkey" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg11] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "GetValue registry error occurred" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg12] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Note: The system file boot.ini has been modified to include the /PCILOCK parameter, please see EquiView Plus Help." STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg13] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Here1" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg14] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not add the Equinox EV Plus Monitor Service" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg15] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not add the Equinox TFTP Installtion Key" STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg16] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Invalid path name for TFTP Trace files." STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlg17] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Information" STF_MB_TEXT = "Could not remove TFTP Installation Key." STF_MB_TYPE = 1 ; OK button STF_MB_ICON = 2 ; information icon STF_MB_DEF = 1 ; default button [CustomMessageDlgx] DlgType = "MessageBox" STF_MB_TITLE = "Equinox Install Error" STF_MB_TEXT = "NT install subroutines unavailable. (x)" STF_MB_TYPE = 1 ; button set STF_MB_ICON = 3 ; stop icon STF_MB_DEF = 1 ; default button ; ----------------------------------------------------------------------------- ; FIRST - "Identify" is the first shell section executed by Setup ; it returns status (STATUS_SUCCESSFUL) ; it returns option type (NetAdapter) ; it returns media (diskette) description [Identify] read-syms DebugOptions shell "" DebugExternalGlobals Debug-Output $(InfTitl)"[Identify] section" read-syms Identification read-syms FileConstants set Status = STATUS_SUCCESSFUL set Identifier = $(OptionType) set Media = #("Source Media Descriptions", 1, 1) Debug-Output $(InfTitl)"[Identify] returning|"$(Status)"|"$(Identifier)"|"$(Media) return $(Status) $(Identifier) $(Media) ; required ------------------------------------------------------------------- ; SECOND - "ReturnOptions" is the shell section called after "Identify" ; it receives parameter, the language to use (ENG) ; it receives parameter, the bus type (EISA,etc) ; it returns status (STATUS_SUCCESSFUL) ; it returns the name of drivers that can be installed by this .inf file ; it returns text strings for the drivers that can be installed [ReturnOptions] read-syms FileConstants read-syms DebugOptions Debug-Output $(InfTitl)"[ReturnOption] section|"$($0)"|"$($1) set OptionList = ^(Options, 1) set OptionTextList = ^(OptionsTextENG, 1) set !BusType = $($1) ; '!' makes BusType globally accessable set Status = STATUS_SUCCESSFUL Debug-Output $(InfTitl)"[ReturnOption] returning|"$(Status)"|"$(OptionList)"|"$(OptionTextList) return $(Status) $(OptionList) $(OptionTextList) ; required ------------------------------------------------------------------- ; THIRD - "InstallOptions" is the shell section called after "ReturnOptions" ; ; This section is shelled to by main installation processing ; or by NCPASHEL.INF for one of following: ; ; install, config, removal, update, bind ; ; INPUT: $($0): Language to use ; $($1): OptionID to install ; $($2): SourceDirectory ; $($3): AddCopy (YES | NO) ; $($4): DoCopy (YES | NO) ; $($5): DoConfig (YES | NO) ; ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL [InstallOption] read-syms DebugOptions read-syms FileConstants ; Debug-Output $(InfTitl)"[InstallOption] section|"$($0)"|"$($1)"|"$($2)"|"$($3)"|"$($4)"|"$($5)"|"$(!NTN_InstallMode) Debug-Output $(InfTitl)"[InstallOption] section|"$($0)"|"$($1)"|"$($2)"|"$($3)"|"$($4)"|"$($5)"|"$(!NTN_InstallMode) set Option = $($1) set !SourceDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) NOT-IN $(LanguageList) Debug-Output $(InfTitl)"returning STATUS_NO_LANGUAGE" return STATUS_NOLANGUAGE Endif ;------------------ set reason for call 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 goto $(StartLabel) ;------------------ removeadapter = + Debug-Output $(InfTitl)"label removeadapter" shell "subroutn.inf" PushBillBoard NETSTATUSDLG "Removing Equinox SST driver..." LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLeqninstalled Debug-Output $(InfTitl)"DLL eqninstalled returned "$(rslt) LibraryProcedure rslt $(LIBHANDLE) DLLeqnrm /noerr Debug-Output $(InfTitl)"DLLeqnrm rslt is: "$(rslt) LibraryProcedure rslt $(LIBHANDLE) DLLeqnreg /remove Debug-Output $(InfTitl)"DLLeqnreg rslt is: "$(rslt) FreeLibrary $(LIBHANDLE) shell "" RemoveFiles ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ;comment OUT if unattend install ;=-=-=-= disable SNMP Extension Agent, start with SOFTWARE key =-=-=-= OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox" $(!REG_KEY_ALL_ACCESS) TempKey ifstr $(TempKey) != $(KeyNull) DeleteRegTree $(TempKey) "SuperSerialAgent" CloseRegKey $(TempKey) endif OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\SNMP\Parameters\ExtensionAgents" $(!REG_KEY_ALL_ACCESS) SNMPKeyHndl ifstr $(SNMPKeyHndl) != $(KeyNull) ;=-=-=-= now do the SNMP branch key =-=-=-= set ValueSetData = "SOFTWARE\Equinox\SuperSerialAgent\CurrentVersion" set SNMPValueList = {} EnumRegValue $(SNMPKeyHndl) SNMPValueList set ValueItem = "" set ValueData = "" ForListDo $(SNMPValueList) set ValueItem = $($) ;get list element set ValueData = *($(ValueItem), 4) ;look at data value ifstr $(ValueData) == $(ValueSetData) ;is it our entry? DeleteRegValue $(SNMPKeyHndl) *($(ValueItem),1) ;yes, delete it endif EndForListDo CloseRegKey $(SNMPKeyHndl) endif ; remove the EQMSTART Service ONLY if the ESP driver is not installed! OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox\ESP" $(!REG_KEY_ALL_ACCESS) TempKey ifstr $(TempKey) == $(KeyNull) Shell $(UtilityInf), RemoveService, "EqmStart", "YES" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\EQMSTART.EXE" else CloseRegKey $(TempKey) endif ;to here ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= shell "subroutn.inf" PopBillBoard return STATUS_SUCCESSFUL ;------------------ upgradesoftware = + Debug-Output $(InfTitl)"label upgradeadapter" read-syms ProgressCopyENG install "Install-Upgrade" ; update SOFTWARE\Equinox\eqn\CurrentVersion\VersionText Debug-Output $(InfTitl)"EQNversion: "$(EQNversion) set ProductKeyName = $(!NTN_SoftwareBase)"\Equinox\eqn\CurrentVersion" OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct ifstr $(KeyProduct) == $(KeyNull) Debug-Output $(InfTitl)"Unable to open "$(ProductKeyName) else set VERlist = { "VersionText", 0, $(!REG_VT_EXPAND_SZ), $(EQNversion) } SetRegValue $(KeyProduct) $(VERlist) CloseRegKey $(KeyProduct) endif ;=-=-=-=-= change originally bound inf file for upgrade inf file =-=-=-=-= OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(!REG_KEY_ALL_ACCESS) OEMKey ifstr $(OEMKey) != $(KeyNull) GetRegValue $(OEMKey) "EQNnetcard" OEMlist set OEMnetcard = *($(OEMlist),4) CloseRegKey $(OEMKey) set BindPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards" ;=-=-= open main bind key =-=-= OpenRegKey $(!REG_H_LOCAL) "" $(BindPath) $(!REG_KEY_ALL_ACCESS) BPKeyHndl ifstr $(BPKeyHndl) != $(KeyNull) EnumRegKey $(BPKeyHndl) BPValueList ;enumerate all sub keys into list set ValueItem = "" set ValueName = "" set ValueData = "" ForListDo $(BPValueList) set ValueItem = $($) ;get list element set ValueName = *($(ValueItem), 1) ;look at keyname ;=-=-= open 1st bind sub key =-=-= OpenRegKey $(BPKeyHndl) "" $(ValueName) $(!REG_KEY_ALL_ACCESS) BPSub1KeyHndl ifstr $(BPSub1KeyHndl) != $(KeyNull) ;=-=-=-= get the "Manufacturer" value name =-=-=-= GetRegValue $(BPSub1KeyHndl) "Manufacturer" Valuedatalist ifstr $(RegLastError) == $(!REG_ERROR_SUCCESS) set ValueData = *($(Valuedatalist), 4) ;=-=-= test if it is our entry =-=-=-= ifstr(i) $(ValueData) == "Equinox" ;=-=-= open 2nd bind sub key =-=-= OpenRegKey $(BPSub1KeyHndl) "" "NetRules" $(!REG_KEY_ALL_ACCESS) BPValueHndl ifstr $(BPValueHndl) != $(KeyNull) set NewBPValue = $(!STF_CWDDIR)"oemnad"$(OEMnetcard)".inf" set BPValue = {"InfName",0,$(!REG_VT_SZ),$(NewBPValue)} SetRegValue $(BPValueHndl) $(BPValue) CloseRegKey $(BPValueHndl) else read-syms CustomMessageDlg9 ; load "CustomMessageDlgxx template ui start "CustomMessageBox" ; display dialog box endif endif ;ENDif our "Equinox" entry else read-syms CustomMessageDlg11 ; load binding GetValue error template ui start "CustomMessageBox" ; display dialog box endif ;ENDif LastError OK CloseRegKey $(BPSub1KeyHndl) else read-syms CustomMessageDlg10 ; load template ui start "CustomMessageBox" ; display dialog box endif ;ENDif Subkey1 opened EndForListDo CloseRegKey $(BPKeyHndl) else read-syms CustomMessageDlg8 ; load couldn't open main bind key template ui start "CustomMessageBox" ; display dialog box endif ;ENDif main bind path opened endif ;ENDif OEMkey opened ;=-=-=-=-=-= pop up Configuration message box if necessary =-=-=-=-=-= OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(!REG_KEY_ALL_ACCESS) ParmKey ifstr $(ParmKey) != $(KeyNull) ;did we open the key? ;=-=-= driver has been installed, see if SNMP Extension Agent installed =-=-= GetRegValue $(ParmKey) "SNMPState" Statelist ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) ;=-=-= SNMP Extension Agent NOT installed =-=-= shell "" ConfigShell endif CloseRegKey $(ParmKey) endif ; Check to see if the TFTP key is defined and if not, pop config OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox\TFTP" $(!REG_KEY_ALL_ACCESS) ParmKey ifstr $(ParmKey) != $(KeyNull) ;did we open the key? GetRegValue $(ParmKey) "SecurePath" Statelist ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) ; TFTP key not set, force configuration shell "" ConfigShell endif CloseRegKey $(ParmKey) else ; TFTP key not set, force configuration shell "" ConfigShell endif ; Check to see if the EqmStart service is installed. If not, create it OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\EqmStart" $(!REG_KEY_ALL_ACCESS) ServiceKey ifstr $(ServiceKey) == $(KeyNull) Shell $(UtilityInf), CreateService, "EqmStart", "Equinox EV Plus Service", + "%SystemRoot%\System32\EqmStart.exe", "serviceauto", "", {}, "" Ifint $($ShellCode) != $(!SHELL_CODE_OK) read-syms CustomMessageDlg14 ; Could not create service ui start "CustomMessageBox" ; display dialog box Endif Else CloseRegKey $(ServiceKey) Endif ; Upgrade Parameters DMP registry key LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLUpgradeDmpRegistry LibraryProcedure rslt $(LIBHANDLE) DLLAddPCILOCK ifstr(i) $(rslt) != "ERROR" read-syms CustomMessageDlg12 ; boot.ini has been modified template ui start "CustomMessageBox" ; display dialog box endif RunProgram DummyCode "" "" $(!STF_CWDDIR)\cmd.exe /c eqngrp $(!STF_CWDDIR) shell "" RegistryShell ;to here ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= return STATUS_SUCCESSFUL ;------------------ configureadapter = + Debug-Output $(InfTitl)"label configureadapter" shell "" ConfigShell return $(!CA_STATUS) ;------------------ installadapter = + Debug-Output $(InfTitl)"label installadapter" ; ; The identify section is not called when integrated ; in control panel. This setup file is dependent on this ; function being called. ; shell "" DebugExternalGlobals ; ; The BusType also must be set ; ifstr(i) $(!BusType) == "" set !BusType = $(!STF_BUSTYPE) set BusType = $(!STF_BUSTYPE) endif read-syms ProgressCopyENG OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(MAXIMUM_ALLOWED) ServiceKey ifstr $(ServiceKey) != $(KeyNull) Debug-Output $(InfTitl)"Able to open "$(!NTN_ServiceBase)"\eqn\Parameters key" Debug-Output $(InfTitl)"eqn already installed. Exit." shell "subroutn.inf" SetupMessage ENG STATUS "Equinox SST driver already installed." CloseRegKey $(ServiceKey) set Status = STATUS_FAILED return $(Status) else Debug-Output $(InfTitl)"eqn NOT already installed. Continue." endif install "Install-Files" Debug-Output $(InfTitl)"[do_eqn] being called|"$($0)"|"$(1) shell "" do_eqn set Status = $($R0) Debug-Output $(InfTitl)"do_eqn returned|"$(Status) ifstr $(Status) != STATUS_SUCCESSFUL set Status = STATUS_FAILED Debug-Output $(InfTitl)"[InstallOption] returning|"$(Status) return $(Status) endif ;=-=-=-=-=-= pop up Configuration message box if necessary =-=-=-=-=-= OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(!REG_KEY_ALL_ACCESS) ParmKey ifstr $(ParmKey) != $(KeyNull) ;did we open the key? ;=-=-= driver has been installed, see if SNMP Extension Agent installed =-=-= GetRegValue $(ParmKey) "SNMPState" Statelist ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) ;=-=-= SNMP Extension Agent NOT installed =-=-= shell "" ConfigShell endif CloseRegKey $(ParmKey) endif ; Check to see if the TFTP key is defined and if not, pop config OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox\TFTP" $(!REG_KEY_ALL_ACCESS) ParmKey ifstr $(ParmKey) != $(KeyNull) ;did we open the key? GetRegValue $(ParmKey) "SecurePath" Statelist ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) ; TFTP key not set, force configuration shell "" ConfigShell endif CloseRegKey $(ParmKey) else ; TFTP key not set, force configuration shell "" ConfigShell endif ; Check to see if the EqmStart service is installed. If not, create it OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\EqmStart" $(!REG_KEY_ALL_ACCESS) ServiceKey ifstr $(ServiceKey) == $(KeyNull) Shell $(UtilityInf), CreateService, "EqmStart", "Equinox EV Plus Service", + "%SystemRoot%\System32\EqmStart.exe", "serviceauto", "", {}, "" Ifint $($ShellCode) != $(!SHELL_CODE_OK) read-syms CustomMessageDlg14 ; Could not create service ui start "CustomMessageBox" ; display dialog box Endif Else CloseRegKey $(ServiceKey) Endif ; was here Upgrade Parameters DMP registry key ;LibraryProcedure rslt $(LIBHANDLE) DLLUpgradeDmpRegistry LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLAddPCILOCK ifstr(i) $(rslt) != "ERROR" read-syms CustomMessageDlg12 ; boot.ini has been modified template ui start "CustomMessageBox" ; display dialog box endif ; check for Tcpip\Parameters key and set the NT RAS tunning values ; NumForwardPackets=500 (0x1F4) ; ForwardBufferMemory=742400 (0xB5400) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Tcpip\Parameters" $(!REG_KEY_ALL_ACCESS) ServiceKey ifstr $(ServiceKey) == $(KeyNull) Debug-Output $(InfTitl)"Unable to open "$(!NTN_ServiceBase)"\Tcpip\Parameters key" set CA_STATUS = STATUS_FAILED CloseRegKey $(ServiceKey) else set theval = "0x1F4" LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /decimal $(theval) set theval = $(rslt) set ADDRlist = { "NumForwardPackets", 0, $(!REG_VT_DWORD), $(theval) } Debug-Output $(InfTitl)"NumForwardPackets: "$(theval) SetRegValue $(ServiceKey) $(ADDRlist) set theval = "0xB5400" LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /decimal $(theval) set theval = $(rslt) set ADDRlist = { "ForwardBufferMemory", 0, $(!REG_VT_DWORD), $(theval) } Debug-Output $(InfTitl)"ForwardBufferMemory: "$(theval) SetRegValue $(ServiceKey) $(ADDRlist) CloseRegKey $(ServiceKey) endif ;to here ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= set Status = STATUS_SUCCESSFUL Debug-Output $(InfTitl)"[InstallOption] returning|"$(Status) return $(Status) ;------------------ bindingadapter = + Debug-Output $(InfTitl)"label bindingadapter" set Error = "Binding: Sorry, not yet implemented." shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error) set Status = STATUS_FAILED return $(Status) ;------------------------------------------------------------------------ [Date] ; detect section Now = {} ? $(!LIBHANDLE) GetSystemDate ;------------------------------------------------------------------------ [do_eqn] ; shell section read-syms DebugOptions read-syms FileConstants Debug-Output $(InfTitl)"[do_eqn] section" shell "subroutn.inf" PushBillBoard NETSTATUSDLG "Configuring Equinox SST driver..." ifint $($ShellCode) != $(!SHELL_CODE_OK) ifint $($ShellCode) == 1 read-syms CustomMessageDlg1 ; setup the message box variables (1) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) else-ifint $($ShellCode) == 2 read-syms CustomMessageDlg2 ; setup the message box variables (2) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) else-ifint $($ShellCode) == 3 read-syms CustomMessageDlg3 ; setup the message box variables (3) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) else read-syms CustomMessageDlgx ; setup the message box variables (?) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) endif endif shell "utility.inf" AssignAdapterNumber ifint $($ShellCode) != $(!SHELL_CODE_OK) ifint $($ShellCode) == 1 read-syms CustomMessageDlg1 ; setup the message box variables (1) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) else-ifint $($ShellCode) == 2 read-syms CustomMessageDlg2 ; setup the message box variables (2) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) else-ifint $($ShellCode) == 3 read-syms CustomMessageDlg3 ; setup the message box variables (3) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) else read-syms CustomMessageDlgx ; setup the message box variables (?) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) endif endif Debug-Output $(InfTitl)"ShellCode = "$($ShellCode) Debug-Output $(InfTitl)"RegistryErrorIndex = "$($R0) ifint $($ShellCode) != $(!SHELL_CODE_OK) set Status = STATUS_FAILED return $(Status) endif set AdapterNumber = $($R1) Debug-Output $(InfTitl)"AdapterNumber = "$(AdapterNumber) ifstr $(AdapterNumber) == "" read-syms CustomMessageDlgTemp ; setup the message box variables (1) ui start "CustomMessageBox" set Status = STATUS_FAILED return $(Status) endif Debug-Output $(InfTitl)"date = "$(!NowDate) Debug-Output $(InfTitl)"INFfile = "$(STF_CONTEXTINFNAME) Debug-Output $(InfTitl)"BusType = "$(!BusType) set Address = 0 Debug-Output $(InfTitl)"Address = "$(Address) ; samples of running external probrams ; RunProgram ExitCode "" "" $(!STF_CWDDIR)\cmd.exe /c c:\mstools\bin\where.exe -r \ddk\src\eqn *.* ; RunProgram ExitCode "" "" c:\mstools\bin\where.exe -r \ddk\src\eqn *.* LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx Debug-Output $(InfTitl)"DLLeqncomx rslt is: "$(rslt) ifint $(rslt) < "5" set rslt = "5" endif set COMnbr = $(rslt) Debug-Output $(InfTitl)"COMnbr = "$(COMnbr) LibraryProcedure rslt $(LIBHANDLE) DLLeqnrm /noerr Debug-Output $(InfTitl)"DLLeqnrm rslt is: "$(rslt) LibraryProcedure rslt $(LIBHANDLE) DLLeqnreg /rem0ve Debug-Output $(InfTitl)"DLLeqnreg rslt is: "$(rslt) LibraryProcedure rslt $(LIBHANDLE) DLLeqnreg /install /$(!BusType)=$(Address) /COM$(COMnbr) /netcard=$(AdapterNumber) /date=$(!NowDate) /inf=$(STF_CONTEXTINFNAME) Debug-Output $(InfTitl)"DLLeqnreg rslt is: "$(rslt) ; moved here for 4.10d Upgrade Parameters DMP registry key LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLUpgradeDmpRegistry shell "subroutn.inf" PopBillBoard ; --------------------- set Platform = "X86" Debug-Output $(InfTitl)"Platform is: "$(Platform) ifstr(i) $(Platform) == "X86" goto do_0 endif OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(MAXIMUM_ALLOWED) ServiceKey ifstr $(ServiceKey) == $(KeyNull) Debug-Output $(InfTitl)"Unable to open "$(!NTN_ServiceBase)"\eqn\Parameters key" set CA_STATUS = STATUS_FAILED CloseRegKey $(ServiceKey) goto do_0 else set theaddr = "0xdc000" LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /decimal $(theaddr) set theaddr = $(rslt) set ADDRlist = { "EQNaddr", 0, $(!REG_VT_DWORD), $(theaddr) } Debug-Output $(InfTitl)"EQNaddr: "$(theaddr) SetRegValue $(ServiceKey) $(ADDRlist) CloseRegKey $(ServiceKey) endif ; --------------------- do_0 = + ; Add the DMP registry values before starting the eqn driver shell "" RegistryShell shell "subroutn.inf" PushBillBoard NETSTATUSDLG "Loading Equinox SST driver..." LibraryProcedure rslt $(LIBHANDLE) DLLeqnld Debug-Output $(InfTitl)"DLLeqnld rslt is: "$(rslt) FreeLibrary $(LIBHANDLE) ; let the system run awhile with the driver loaded - if its going to crash ; on load, "start" will be left as SERVICE_DEMAND_START sleep 2 ; since system hasn't crashed, change "Start" field to SERVICE_AUTO_START set STF_VITAL = "" OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn" $(MAXIMUM_ALLOWED) ServiceKey ifstr $(ServiceKey) != $(KeyNull) GetRegValue $(ServiceKey) "Start" Slist set orgStart = *($(Slist),4) Debug-Output $(InfTitl)"orgStart is "$(orgStart) set newStart = $(!SERVICE_AUTO_START) set Slist = { "Start", 0, $(!REG_VT_DWORD), $(newStart) } SetRegValue $(ServiceKey) $(Slist) CloseRegKey $(ServiceKey) else Debug-Output $(InfTitl)"key eqn failed to open" endif shell "subroutn.inf" PopBillBoard shell "subroutn.inf" SetupMessage ENG STATUS "Equinox SST driver installed." RunProgram DummyCode "" "" $(!STF_CWDDIR)\cmd.exe /c start /min eqnlogr RunProgram DummyCode "" "" $(!STF_CWDDIR)\cmd.exe /c eqngrp $(!STF_CWDDIR) return STATUS_SUCCESSFUL ;------------------------------------------------------------------------------ ; option text section [OptionsTextENG] SST = "Equinox SST Serial Driver for Windows NT - "$(EQNversion) [Source Media Descriptions] 1 = "Equinox NT Driver Disk #1" , TAGFILE = ntdisk1.s 2 = "Equinox NT Driver Disk #2" , TAGFILE = ntdisk2.s 3 = "Equinox NT Driver Disk #3" , TAGFILE = ntdisk3.s [DebugOptions] ; read-syms section InfTitl = "EQN: " !DebugOutputControl = 1 ; send messages to debugger if loaded ; !DebugOutputControl = 0 ; no messages to debugger InfError = 0 ;----- debug code ------------------------------------------------------------- [DebugExternalGlobals] ; shell section read-syms DebugOptions Debug-Output $(InfTitl)"[DebugExternalGlobals] section" detect Date Debug-Output $(InfTitl)"Date "*($(Now),1) ; (($(Now),1) must be passed to eqnreg() set !NowDate = *($(Now),1) ; following seems to be only STF_ vars known Debug-Output $(InfTitl)"!STF_CONTEXTINFNAME = "$(!STF_CONTEXTINFNAME) Debug-Output $(InfTitl)"!STF_CWDDIR = "$(!STF_CWDDIR) Debug-Output $(InfTitl)"!LIBHANDLE = "$(!LIBHANDLE) return ;----- main entry here -------------------------------------------------------- ; this shell section called only if this .inf invoked directly from setup.exe ; this code is NOT executed from the control panel (ncpa) [Shell Commands] ; shell section "Main" read-syms DebugOptions set-title "Serial Setup" set-subst LF = "\n" set Exit_Code = 0 Debug-Output $(InfTitl)"[Shell Commands] called." LoadLibrary "x" $(!STF_CWDDIR)"\setupdll.dll" !LIBHANDLE shell "" Identify shell "" ReturnOptions ENG EISA shell "" InstallOption ENG SST c:\ddk\src\eqn\inf YES YES YES FreeLibrary $(!LIBHANDLE) LoadLibrary "x" $(!STF_CWDDIR)"\setupdll.dll" !LIBHANDLE LibraryProcedure rslt $(!LIBHANDLE) DLLeqncomx Debug-Output $(InfTitl)"DLLeqncomx rslt is: "$(rslt) set COMnbr = $(rslt) LibraryProcedure rslt $(!LIBHANDLE) DLLeqnrm /noerr Debug-Output $(InfTitl)"DLLeqnrm rslt is: "$(rslt) LibraryProcedure rslt $(!LIBHANDLE) DLLeqnreg /rem0ve Debug-Output $(InfTitl)"DLLeqnreg rslt is: "$(rslt) LibraryProcedure rslt $(!LIBHANDLE) DLLeqnreg /install /EISA=0 /COM$(COMnbr) /netcard=10 /date=0 /inf=file_name Debug-Output $(InfTitl)"DLLeqnreg rslt is: "$(rslt) LibraryProcedure rslt $(!LIBHANDLE) DLLeqnld Debug-Output $(InfTitl)"DLLeqnld rslt is: "$(rslt) FreeLibrary $(!LIBHANDLE) aexit = + ; this is a label! Debug-Output $(InfTitl)"[Shell Commands] returning." exit ; required in "main" routine ;------------------------------------------------------------------------------ [Install-Files] ; install section set STF_VITAL = "" ifstr(i) $(AddCopy) == "YES" set SrcDir = $(!SourceDir) Debug-Output $(InfTitl)"SrcDir is: "$(SrcDir) Debug-Output $(InfTitl)"Dest is: "$(!STF_CWDDIR) AddSectionFilesToCopyList Files-Resource $(SrcDir) $(!STF_CWDDIR) AddSectionFilesToCopyList Files-Resource2 $(SrcDir) $(!STF_CWDDIR)drivers set Platform = "X86" Debug-Output $(InfTitl)"Platform is: "$(Platform) ifstr(i) $(Platform) == "X86" AddSectionFilesToCopyList Files-Resource3 $(SrcDir) $(!STF_CWDDIR) else AddSectionFilesToCopyList Files-Resource4 $(SrcDir) $(!STF_CWDDIR) endif Debug-Output $(InfTitl)"Dest is: "$(!STF_CWDDIR) AddSectionFilesToCopyList Files-Resource5 $(SrcDir) $(!STF_CWDDIR) AddSectionFilesToCopyList Files-Resource6 $(SrcDir) $(!STF_NTPATH)\..\inf ifstr(i) $(DoCopy) == "YES" set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList else-ifstr(i) $(!NTN_InstallPhase) == primary set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif exit ; install sections use exit ;------------------------------------------------------------------------------ [Install-Upgrade] ; install section ; get value of oemnad??.inf and copy oemsetup.inf on top of old set STF_VITAL = "" OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(MAXIMUM_ALLOWED) ServiceKey ifstr $(ServiceKey) != $(KeyNull) GetRegValue $(ServiceKey) "EQNnetcard" NClist set netcard = *($(NClist),4) CloseRegKey $(ServiceKey) Debug-Output $(InfTitl)"NClist is "$(NClist) set SrcDir = $(!SourceDir) AddSectionFilesToCopyList Files-Resource $(SrcDir) $(!STF_CWDDIR) AddSectionFilesToCopyList Files-Resource2 $(SrcDir) $(!STF_CWDDIR)drivers AddSectionFilesToCopyList Files-Resource5 $(SrcDir) $(!STF_CWDDIR) AddSectionFilesToCopyList Files-Resource6 $(SrcDir) $(!STF_NTPATH)\..\inf AddSectionFilesToCopyList Files-Upgrade $(SrcDir) $(!STF_CWDDIR) CopyFilesInCopyList Debug-Output $(InfTitl)"rename src: "$(!STF_CWDDIR)"oemsetup.inf" Debug-Output $(InfTitl)"rename dest: "$(!STF_CWDDIR)"oemnad"$(netcard)".inf" LibraryProcedure Status, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"oemnad"$(netcard)".inf" LibraryProcedure Status $(!LIBHANDLE) RenFile $(!STF_CWDDIR)"oemsetup.inf" $(!STF_CWDDIR)"oemnad"$(netcard)".inf" endif exit ; install sections use exit ;------------------------------------------------------------------------------ [RemoveFiles] ; shell section read-syms DebugOptions Debug-Output $(InfTitl)"Entering [RemoveFiles]" RunProgram ExitCode "" "" $(!STF_CWDDIR)\cmd.exe /c eqngrp REMOVE LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqn.sys" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqndmpa.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqndmpb.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqndmpc.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqndmpd.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqnmload.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqnmcadn.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqnmcano.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqnmcudo.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\drivers\eqnmcuno.img" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndiag.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnlogr.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnsstview.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnsstview.hlp" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnsstview.cnt" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnloop.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\readeqn.wri" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqneula1.txt" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndll.dll" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndde.dll" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqngrp.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnchnl.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnstat.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqntrace.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnreset.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqnureg.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmmall.dll" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmmalnt.dll" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmcomp.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmagent.dll" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmatcmd.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmbusy.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmmprst.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndmpcp.cpl" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndmpcp.hlp" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndmpcp.cnt" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndmpd.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmloop.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmbrds.dat" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqmscope.exe" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\ntmml.dll" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\modeminf.txt" LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)"\eqndmp.dat" ; don't remove MSVCRT20.DLL or CRTDLL.DLL (may have previously existed) return ;------------------------------------------------------------------------------ [Files-Resource] ; sizes need only be approximate (used for %complete estimates) 2,eqndiag.ex_, SIZE=120000, DECOMPRESS, RENAME=eqndiag.exe 2,eqnlogr.ex_, SIZE=97000, DECOMPRESS, RENAME=eqnlogr.exe 2,eqnsstview.ex_, SIZE=363000, DECOMPRESS, RENAME=eqnsstview.exe 2,eqnsstview.hl_, SIZE=198000, DECOMPRESS, RENAME=eqnsstview.hlp 2,eqnsstview.cn_, SIZE=115, DECOMPRESS, RENAME=eqnsstview.cnt 2,eqnloop.ex_, SIZE=180000, DECOMPRESS, RENAME=eqnloop.exe 1,readeqn.wri, SIZE=9000 1,eqneula1.txt,SIZE=1000 1,eqndmp.dat,SIZE=300 1,eqndll.dl_, SIZE=130000, DECOMPRESS, RENAME=eqndll.dll 1,eqndde.dl_, SIZE=8000, DECOMPRESS, RENAME=eqndde.dll 2,eqngrp.ex_, SIZE=26000, DECOMPRESS, RENAME=eqngrp.exe 2,eqnchnl.ex_, SIZE=28000, DECOMPRESS, RENAME=eqnchnl.exe 2,eqnstat.ex_, SIZE=72000, DECOMPRESS, RENAME=eqnstat.exe 2,eqnreset.ex_, SIZE=68000, DECOMPRESS, RENAME=eqnreset.exe 2,eqntrace.ex_, SIZE=70000, DECOMPRESS, RENAME=eqntrace.exe 2,eqnureg.ex_, SIZE=158000, DECOMPRESS, RENAME=eqnureg.exe 2,eqnxfast.ex_, SIZE=140000 1,eqndmpcp.cp_, SIZE=270000, DECOMPRESS, RENAME=eqndmpcp.cpl 1,eqndmpcp.cn_, SIZE=1000, DECOMPRESS, RENAME=eqndmpcp.cnt 1,eqndmpcp.hl_, SIZE=37000, DECOMPRESS, RENAME=eqndmpcp.hlp 2,eqndmpd.ex_, SIZE=320000, DECOMPRESS, RENAME=eqndmpd.exe 1,modeminf.txt, SIZE=1000 [Files-Resource2] 1,eqn.sy_, SIZE=550000, DECOMPRESS, RENAME=eqn.sys 1,eqndmpa.im_, SIZE=8200, DECOMPRESS, RENAME=eqndmpa.img, READONLY 1,eqndmpb.im_, SIZE=8200, DECOMPRESS, RENAME=eqndmpb.img, READONLY 1,eqndmpc.im_, SIZE=8200, DECOMPRESS, RENAME=eqndmpc.img, READONLY 1,eqndmpd.im_, SIZE=8200, DECOMPRESS, RENAME=eqndmpd.img, READONLY 1,eqnmload.im_, SIZE=3200, DECOMPRESS, RENAME=eqnmload.img, READONLY 3,eqnmcadn.im_, SIZE=340000, DECOMPRESS, RENAME=eqnmcadn.img, READONLY 3,eqnmcano.im_, SIZE=340000, DECOMPRESS, RENAME=eqnmcano.img, READONLY 3,eqnmcudn.im_, SIZE=340000, DECOMPRESS, RENAME=eqnmcudn.img, READONLY 3,eqnmcuno.im_, SIZE=340000, DECOMPRESS, RENAME=eqnmcuno.img, READONLY [Files-Resource3] 1,MSVCRT20.DL_, SIZE=240000, OVERWRITE=OLDER, DECOMPRESS, RENAME=MSVCRT20.DLL ; Intel [Files-Resource4] 1,CRTDLL.DL_, SIZE=240000, OVERWRITE=OLDER, DECOMPRESS, RENAME=CRLDLL.DLL ; Mips [Files-Resource5] 2,EQMMALL.DL_, SIZE=30000, DECOMPRESS, RENAME=EQMMALL.DLL ; EV+ 2,EQMMALNT.DL_, SIZE=185000, DECOMPRESS, RENAME=EQMMALNT.DLL ; EV+ 2,EQMAGENT.DL_, SIZE=6000, DECOMPRESS, RENAME=EQMAGENT.DLL ; EV+ 2,EQMATCMD.EX_, SIZE=39000, DECOMPRESS, RENAME=EQMATCMD.EXE ; EV+ 2,EQMBUSY.EX_, SIZE=106000, DECOMPRESS, RENAME=EQMBUSY.EXE ; EV+ 2,EQMMPRST.EX_, SIZE=40000, DECOMPRESS, RENAME=EQMMPRST.EXE ; EV+ 2,EQMLOOP.EX_, SIZE=78000, DECOMPRESS, RENAME=EQMLOOP.EXE ; EV+ 2,EQMBRDS.DA_, SIZE=9600, DECOMPRESS, RENAME=EQMBRDS.DAT ; EV+ 2,EQMSTART.EX_, SIZE=70000, DECOMPRESS, RENAME=EQMSTART.EXE ; EV+ 2,EQMSCOPE.EX_, SIZE=86000, DECOMPRESS, RENAME=EQMSCOPE.EXE ; EV+ 2,EQMCOMP.EX_, SIZE=90000, DECOMPRESS, RENAME=EQMCOMP.EXE ; EV+ [Files-Resource6] 1,mdmeqnx.in_, SIZE=30000, DECOMPRESS, RENAME=mdmeqnx.inf 1,mdmeqn.in_, SIZE=30000, DECOMPRESS, RENAME=mdmeqn.inf [Files-Upgrade] 1,oemsetup.inf [ConfigShell] ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ;Comment OUT if unattend install set SNMPInstalled = 0 ; Says whether SNMP service installed on system set ForceSNMPInstall = 0 ; Says whether user has ever selected SNMP Ext Option set SNMPExtState = {2} ; Says whether SNMP Ext is currently installed on system OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\SNMP\Parameters\ExtensionAgents" $(!REG_KEY_ALL_ACCESS) SNMPKeyHndl ifstr $(SNMPKeyHndl) != $(KeyNull) set SNMPInstalled = 1 CloseRegKey $(SNMPKeyHndl) endif OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(!REG_KEY_ALL_ACCESS) ParmKey ifstr $(ParmKey) != $(KeyNull) ;did we open the key? ;=-=-= driver has been installed, see if SNMP Extension Agent installed =-=-= GetRegValue $(ParmKey) "SNMPState" Statelist ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) ;=-=-= SNMP Extension Agent Option not in Parameters =-=-= set ForceSNMPInstall = 1 ; Force first time install of SNMP Ext Agent ifstr $(SNMPInstalled) != 0 set SNMPExtInstalled = 0 set SNMPExtState = 1 ; SNMP is installed, default to Enabled endif SetRegValue $(ParmKey) {"SNMPState",0,$(!REG_VT_SZ),$(SNMPExtState)} else ;=-=-=-= SNMP Extension Installed, get initial state =-=-=-= Set SNMPExtState = *($(Statelist),4) endif CloseRegKey $(ParmKey) endif OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox\TFTP" $(!REG_KEY_ALL_ACCESS) TftpKey ifstr $(TftpKey) != $(KeyNull) GetRegValue $(TftpKey) "SecurePath" TftpList set TFTPDIR = *($(TftpList),4) ifstr $(TFTPDIR) == "" set TFTPDIR = $(!STF_WINDOWSPATH)"\TFTP" set TftpList = {SecurePath,0, $(!REG_VT_SZ),$(TFTPDIR)} SetRegValue $(TftpKey) $(TftpList) endif else CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\EQUINOX\TFTP",0,GenericClass} "" + $(!REG_KEY_SET_VALUE) "" TftpKey ifstr $(TftpKey) != $(KeyNull) set TFTPDIR = $(!STF_WINDOWSPATH)"\TFTP" set TftpList = {SecurePath,0, $(!REG_VT_SZ),$(TFTPDIR)} SetRegValue $(TftpKey) $(TftpList) endif endif ; TftpKey != KeyNull CloseRegKey $(TftpKey) ;To here ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= set RadioIn = $(SNMPExtState) LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx set Combo1Out = "COM"$(rslt) Debug-Output $(InfTitl)"initial COMPort: "$(Combo1Out) LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /address set Combo2Out = $(rslt) Debug-Output $(InfTitl)"initial ISA mem: "$(Combo2Out) FreeLibrary $(LIBHANDLE) set TFTPDIRIn = $(TFTPDIR) set bTryAgain = 0 get_dlg1 = + read-syms GetDlg1ENG ui start "InputDlg" set bCancel = 1 ifstr(i) $(DLGEVENT) == "CONTINUE" set bCancel = 0 set Dlg1COMPort = $(Combo1Out) set Dlg1ISAMem = $(Combo2Out) set Dlg1RadioIn = $(RadioIn) set Dlg1RadioOut = $(RadioOut) ui pop 1 ifstr(i) $(SNMPInstalled) == 0 ifstr(i) $(Dlg1RadioOut) == {1} read-syms CustomMessageDlg5 ; load SNMP not loaded template ui start "CustomMessageBox" ; display dialog box set Combo1Out = $(Dlg1COMPort) set Combo2Out = $(Dlg1ISAMem) set RadioIn = {2} set bTryAgain = 1 endif set bTryAgain = 0 endif ; SNMP Service is installed ifstr(i) $(Dlg1RadioOut) == {1} get_tftp = + read-syms TFTPDlgENG ui start "Diskette" ifstr(i) $(DLGEVENT) == "CONTINUE" ; really FINISH LoadLibrary "x" $(!STF_CWDDIR)"\setupdll.dll" !LIBHANDLE LibraryProcedure IsFullPath, $(!LIBHANDLE), CheckPathFullPathSpec $(EditTextOut) FreeLibrary $(!LIBHANDLE) ifstr(i) $(IsFullPath) == "NO" ui pop 1 read-syms CustomMessageDlg16 ; Bad pathname entered ui start "CustomMessageBox" ; display dialog box else set bTryAgain = 0 set TFTPDIR = $(EditTextOut) ui pop 1 endif else ; DLGEVENT(Diskette) != CONTINUE meaning BACK set TFTPDIR = $(EditTextOut) ui pop 1 set Combo1Out = $(Dlg1COMPort) set Combo2Out = $(Dlg1ISAMem) set RadioIn = $(Dlg1RadioOut) set bTryAgain = 1 set IsFullPath = "YES" endif ;ENDif DLGEVENT(Diskette) == FINISH ifstr(i) $(IsFullPath) == "NO" goto get_tftp endif else ifstr(i) $(Dlg1RadioOut) == {2} get_tftp2 = + read-syms TFTPDlg2ENG ui start "Diskette" ifstr(i) $(DLGEVENT) == "CONTINUE" ; really FINISH LoadLibrary "x" $(!STF_CWDDIR)"\setupdll.dll" !LIBHANDLE LibraryProcedure IsFullPath, $(!LIBHANDLE), CheckPathFullPathSpec $(EditTextOut) FreeLibrary $(!LIBHANDLE) ifstr(i) $(IsFullPath) == "NO" ui pop 1 read-syms CustomMessageDlg16 ; Bad pathname entered ui start "CustomMessageBox" ; display dialog box else set bTryAgain = 0 set TFTPDIR = $(EditTextOut) ui pop 1 endif else ; DLGEVENT(Diskette) != CONTINUE meaning BACK set TFTPDIR = $(EditTextOut) ui pop 1 set Combo1Out = $(Dlg1COMPort) set Combo2Out = $(Dlg1ISAMem) set RadioIn = $(Dlg1RadioOut) set bTryAgain = 1 set IsFullPath = "YES" endif ;ENDif DLGEVENT(Diskette) == FINISH ifstr(i) $(IsFullPath) == "NO" goto get_tftp2 endif endif ; SNMP Ext Agent install requested endif ; DLGEVENT was CONTINUE ifstr(i) $(bCancel) == 1 set !CA_STATUS = STATUS_SUCCESSFUL goto ca_end endif ifstr(i) $(bTryAgain) == 1 goto get_dlg1 endif Debug-Output $(InfTitl)"COMPort: "$(Dlg1COMPort) Debug-Output $(InfTitl)"ISA mem: "$(Dlg1ISAMem) ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ;Comment OUT if unattend install ifstr(i) $(Dlg1RadioOut) != $(Dlg1RadioIn) ;=-=-=-= settings have been changed... which one? =-=-=-= OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(!REG_KEY_SET_VALUE) ParmKey ifstr $(ParmKey) != $(KeyNull) ;did we open the key? ;;; SetRegValue $(ParmKey) {"SNMPState",0,$(!REG_VT_SZ),$(Dlg1RadioOut)} set SNMPKeyName = "SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents" set ValueSetData = "SOFTWARE\Equinox\SuperSerialAgent\CurrentVersion" OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\SNMP\Parameters\ExtensionAgents" $(!REG_KEY_ALL_ACCESS) SNMPKeyHndl ifstr $(SNMPKeyHndl) != $(KeyNull) ;=-=-=-=-= record for posterity, the Radio button value =-=-=-=-= SetRegValue $(ParmKey) {"SNMPState",0,$(!REG_VT_SZ),$(Dlg1RadioOut)} ;=-=-= now enable or disable agent =-=-= ifstr $(Dlg1RadioOut) == {1} ;=-=-= enable SNMP Extension Agent, start with SOFTWARE key =-=-= OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox" $(!REG_KEY_ALL_ACCESS) TempKey ifstr $(TempKey) != $(KeyNull) CreateRegKey $(TempKey) {"SuperSerialAgent\CurrentVersion",0,GenericClass} "" + $(!REG_KEY_SET_VALUE) "" NewTempHndl ifstr $(NewTempHndl) != $(KeyNull) set NewNameValueList = {Pathname,0, $(!REG_VT_SZ),"%SystemRoot%\system32\EqmAgent.dll"} SetRegValue $(NewTempHndl) $(NewNameValueList) CloseRegKey $(NewTempHndl) endif CloseRegKey $(TempKey) endif ; TempKey != KeyNull ;=-=-=-= now do the SNMP branch =-=-=-= set SNMPValueList = {} EnumRegValue $(SNMPKeyHndl) SNMPValueList set RefValue = "0" set ValueItem = "" set ValueName = "" ForListDo $(SNMPValueList) set ValueItem = $($) set ValueName = *($(ValueItem), 1) ifint $(ValueName) >= $(RefValue) set RefValue = $(ValueName) endif EndForListDo ;=-=-= get next ASCII name and build the value list =-=-= set-add SNMPValueName = $(RefValue), 1 set SNMPNameValueList = {$(SNMPValueName) 0 $(!REG_VT_SZ) $(ValueSetData)} ;=-=-= write list to key =-=-= SetRegValue $(SNMPKeyHndl) $(SNMPNameValueList) CloseRegKey $(SNMPKeyHndl) else ; Dlg1RadioOut == 2 so remove entries ;=-=-=-= disable SNMP Extension Agent, start with SOFTWARE key =-=-=-= OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox" $(!REG_KEY_ALL_ACCESS) TempKey ifstr $(TempKey) != $(KeyNull) DeleteRegTree $(TempKey) "SuperSerialAgent" CloseRegKey $(TempKey) endif ;=-=-=-= now do the SNMP branch key =-=-=-= set SNMPValueList = {} EnumRegValue $(SNMPKeyHndl) SNMPValueList set ValueItem = "" set ValueData = "" ForListDo $(SNMPValueList) set ValueItem = $($) ;get list element set ValueData = *($(ValueItem), 4) ;look at data value ifstr $(ValueData) == $(ValueSetData) ;is it our entry? DeleteRegValue $(SNMPKeyHndl) *($(ValueItem),1) ;yes, delete it endif EndForListDo endif ;ENDelse Dlg1RadioOut == 1 CloseRegKey $(SNMPKeyHndl) else ;SNMPKey == KeyNull ;=-=-=-= SNMP services NOT installed, tell the world =-=-=-= read-syms CustomMessageDlg5 ; load SNMP not loaded template ui start "CustomMessageBox" ; display dialog box endif ;SNMPKey != KeyNull CloseRegKey $(ParmKey) endif ;ParmKey != KeyNull endif ;Dlg1RadioOut != Dlg1RadioIn ifstr(i) $(TFTPDIRIn) != $(TFTPDIR) ; Now add the TFTP SecurePath key OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Equinox\TFTP" $(!REG_KEY_ALL_ACCESS) TftpKey ifstr $(TftpKey) != $(KeyNull) set TftpList = {SecurePath,0, $(!REG_VT_SZ),$(TFTPDIR)} SetRegValue $(TftpKey) $(TftpList) CloseRegKey $(TftpKey) else read-syms CustomMessageDlg15 ; Could not update TFTP key ui start "CustomMessageBox" ; display dialog box endif ; TftpKey != KeyNull endif ; TFTP Directory change ;To here ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= else set !CA_STATUS = STATUS_USERCANCEL ui pop 1 goto ca_end endif ;ENDif DLGEVENT(InputDlg) == CONTINUE LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /parse $(Dlg1COMPort) set Dlg1COMPort = $(rslt) ifstr $(Dlg1ISAMem) == "auto" set Dlg1ISAMem = "0" else LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /decimal $(Dlg1ISAMem) set Dlg1ISAMem = $(rslt) endif Debug-Output $(InfTitl)"COMPort: "$(Dlg1COMPort) Debug-Output $(InfTitl)"ISA mem: "$(Dlg1ISAMem) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\eqn\Parameters" $(!REG_KEY_ALL_ACCESS) ServiceKey ifstr $(ServiceKey) == $(KeyNull) Debug-Output $(InfTitl)"Unable to open "$(!NTN_ServiceBase)"\eqn\Parameters key" set CA_STATUS = STATUS_FAILED goto ca_end else set COMlist = { "EQNbaseComPort", 0, $(!REG_VT_DWORD), $(Dlg1COMPort) } Debug-Output $(InfTitl)"COMPort: "$(Dlg1COMPort) SetRegValue $(ServiceKey) $(COMlist) set ADDRlist = { "EQNaddr", 0, $(!REG_VT_DWORD), $(Dlg1ISAMem) } Debug-Output $(InfTitl)"ISA mem: "$(Dlg1ISAMem) SetRegValue $(ServiceKey) $(ADDRlist) CloseRegKey $(ServiceKey) endif set !CA_STATUS = STATUS_SUCCESSFUL ca_end = + return $(!CA_STATUS) [RegistryShell] ; check for Tcpip\Parameters key and set the NT RAS tunning values ; NumForwardPackets=500 (0x1F4) ; ForwardBufferMemory=742400 (0xB5400) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Tcpip\Parameters" $(!REG_KEY_ALL_ACCESS) ServiceKey ifstr $(ServiceKey) == $(KeyNull) Debug-Output $(InfTitl)"Unable to open "$(!NTN_ServiceBase)"\Tcpip\Parameters key" set CA_STATUS = STATUS_FAILED CloseRegKey $(ServiceKey) else set theval = "0x1F4" LoadLibrary "x" $(!STF_CWDDIR)"\eqndll.dll" LIBHANDLE LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /decimal $(theval) set theval = $(rslt) set ADDRlist = { "NumForwardPackets", 0, $(!REG_VT_DWORD), $(theval) } Debug-Output $(InfTitl)"NumForwardPackets: "$(theval) SetRegValue $(ServiceKey) $(ADDRlist) set theval = "0xB5400" LibraryProcedure rslt $(LIBHANDLE) DLLeqncomx /decimal $(theval) set theval = $(rslt) set ADDRlist = { "ForwardBufferMemory", 0, $(!REG_VT_DWORD), $(theval) } Debug-Output $(InfTitl)"ForwardBufferMemory: "$(theval) SetRegValue $(ServiceKey) $(ADDRlist) CloseRegKey $(ServiceKey) FreeLibrary $(LIBHANDLE) endif set !CA_STATUS = STATUS_SUCCESSFUL reg_end = + return $(!CA_STATUS) ;=-=-=-=-=-=-=-=-=-=-= debug message box code =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ; read-syms CustomMessageDlgxx ; load "CustomMessageDlgxx template ; ui start "CustomMessageBox" ; display dialog box ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [ProgressCopyENG] ; read-syms section ProCaption = "Equinox SST File Setup" ProCancel = "Cancel" ProCancelMsg = "Equinox is not correctly installed. Are you sure you want "+ "to cancel copying files?" ProCancelCap = "Setup Message" ProText1 = "Copying:" ProText2 = "To:" ;---------------- [GetDlg1ENG] ; read-syms section Help = "&Help" OK = "OK" Continue = "Next" Cancel = "Cancel" DlgType = "RadioCombination" DlgTemplate = "DEC_SETUP" Caption = "Equinox SST Configuration" Group1 = "SNMP Extension Agent" Radio1 = "&Enabled" Radio2 = "&Disabled" Label1 = "First COM&Port:" Label2 = "ISA &Memory Block:" ISAList = { auto, 0xb0000, 0xb4000, 0xb8000, 0xbc000, + 0xc0000, 0xc4000, 0xc8000, 0xcc000, + 0xd0000, 0xd4000, 0xd8000, 0xdc000, + 0xe0000, 0xe4000, 0xe8000, 0xec000 } COMxList = { COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, + COM9, COM10, COM11, COM12, COM13, COM14, COM15, COM16, + COM17, COM18, COM19, COM20, COM21, COM22, COM23, COM24, + COM25, COM26, COM27, COM28, COM29, COM30, COM31, COM32, + COM33, COM34, COM35, COM36, COM37, COM38, COM39, COM40, + COM41, COM42, COM43, COM44, COM45, COM46, COM47, COM48, + COM49, COM50, COM51, COM52, COM53, COM54, COM55, COM56, + COM57, COM58, COM59, COM60, COM61, COM62, COM63, COM64, + COM65, COM66, COM67, COM68, COM69, COM70, COM71, COM72, + COM73, COM74, COM75, COM76, COM77, COM78, COM79, COM80, + COM81, COM82, COM83, COM84, COM85, COM86, COM87, COM88, + COM89, COM90, COM91, COM92, COM93, COM94, COM95, COM96, + COM97, COM98, COM99, COM100, COM101, COM102, COM103, COM104, + COM105, COM106, COM107, COM108, COM109, COM110, COM111, COM112, + COM113, COM114, COM115, COM116, COM117, COM118, COM119, COM120, + COM121, COM122, COM123, COM124, COM125, COM126, COM127, COM128, + COM129, COM130, COM131, COM132, COM133, COM134, COM135, COM136, + COM137, COM138, COM139, COM140, COM141, COM142, COM143, COM144, + COM145, COM146, COM147, COM148, COM149, COM150, COM151, COM152, + COM153, COM154, COM155, COM156, COM157, COM158, COM159, COM160, + COM161, COM162, COM163, COM164, COM165, COM166, COM167, COM168, + COM169, COM170, COM171, COM172, COM173, COM174, COM175, COM176, + COM177, COM178, COM179, COM180, COM181, COM182, COM183, COM184, + COM185, COM186, COM187, COM188, COM189, COM190, COM191, COM192, + COM193, COM194, COM195, COM196, COM197, COM198, COM199, COM200, + COM201, COM202, COM203, COM024, COM205, COM206, COM207, COM208, + COM209, COM210, COM211, COM212, COM213, COM214, COM215, COM216, + COM217, COM218, COM219, COM220, COM221, COM222, COM223, COM224, + COM225, COM226, COM227, COM228, COM229, COM230, COM231, COM232, + COM233, COM234, COM235, COM236, COM237, COM238, COM239, COM240, + COM241, COM242, COM243, COM244, COM245, COM246, COM247, COM248, + COM249, COM250, COM251, COM252, COM253, COM254, COM255, COM256 } Combo1List = $(COMxList) Combo2List = $(ISAList) ComboListItemsIn = {Combo1List, Combo2List} ComboListItemsOut = {Combo1Out, Combo2Out} EditTextIn = "" EditTextLim = "" CBOptionsGreyed = {} NotifyFields = {NO, NO} HelpContext = "" RCCtlFocusOn = 403 [TFTPDlgENG] Caption = "EquiView Plus Datascope TFTP Path" DlgText = "Enter the path for EquiView Plus "+ "datascope trace files. EquiView Plus uses the Trivial "+ "File Transfer Protocol (TFTP) to access datascope trace "+ "files in this directory. "+ "NOTE that files in this path will ALSO be accessible "+ "by other systems on the network that may be running TFTP." Continue = "Finish" Cancel = "Back" DlgType = "Edit" DlgTemplate = "DISKETTE" Edit1Label = "" EditTextIn = $(TFTPDIR) EditTextLime = 256 EditFocus = "ALL" [TFTPDlg2ENG] Caption = "EquiView Plus Datascope Path" DlgText = "Enter the path for EquiView Plus "+ "datascope trace files. EquiView Plus will store all "+ "datascope trace files in this path. " Continue = "Finish" Cancel = "Back" DlgType = "Edit" DlgTemplate = "DISKETTE" Edit1Label = "" EditTextIn = $(TFTPDIR) EditTextLime = 256 EditFocus = "ALL" ;----- leave blank lines here -------------------------------------------------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.