[commentOEM] EtherSerial driver setup script file for Windows NT 3.5 - 4.0 FileVersion 2.6c/ses (97.02.13) Copyright 1995-1997 [Identification] OptionType = NetAdapter [PlatformsSupported] ISA PCMCIA [LanguagesSupported] ENG [Options] ESPC [OptionsTextENG] ESPC = " EtherSerial Adapter" [Files-Inf] 1, oemsetnt.inf, SIZE=50000, RENAME=$(!UG_Filename) [Files-ESPC] 1, ESndis.sy_, SIZE=50000, DECOMPRESS, RENAME=ESndis.sys [FileConstants] UtilityInf = "UTILITY.INF" ParamInf = "NCPARAM.INF" subroutineinf = "SUBROUTN.INF" SoftwareType = "driver" Exit_Code = 0 Manufacturer = "Generic" ProductMajorVersion = "1" ProductMinorVersion = "1" ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion) ProductSoftwareName = "ESPC" ProductSoftwareTitle = " EtherSerial Adapter Driver" ProductSoftwareImagePath = "\SystemRoot\System32\drivers\ESNDIS.SYS" NetRuleSoftwareType = "ESPCSys ndisDriver ESPCDriver" NetRuleSoftwareUse = $(SoftwareType) NetRuleSoftwareBindForm = """ESPCSys"" yes no container" NetRuleSoftwareClass = {"ESPCDriver basic"} NetRuleSoftwareBindable = {"ESPCDriver ESPCAdapter non exclusive 100"} ProductHardwareName = "ESPC" ProductHardwareTitle = " EtherSerial Adapter" NetRuleHardwareType = "ESPC ESPCAdapter" NetRuleHardwareBindForm = " yes yes container" NetRuleHardwareClass = {"ESPCAdapter basic"} NetEventDLL = "%SystemRoot%\System32\netevent.dll" IoLogMsgDLL = "%SystemRoot%\System32\IoLogMsg.dll" ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters" [ProductType] STF_PRODUCT = Winnt STF_PLATFORM = I386 [GeneralConstants] from = "" to = "" ExitCodeOk = 0 ExitCodeCancel = 1 ExitCodeFatal = 2 KeyNull = "" MAXIMUM_ALLOWED = 33554432 RegistryErrorIndex = NO_ERROR KeyProduct = "" KeyParameters = "" TRUE = 1 FALSE = 0 NoTitle = 0 ExitState = "Active" OldVersionExisted = $(FALSE) DriverPath = $(!STF_NTPATH)\drivers [FileConstantsENG] ProCaption = "Windows NT Setup" ProCancel = "Cancel" ProCancelMsg = "Windows NT Networking is not correctly installed. "+ "Are you sure you want to cancel copying files?" ProCancelCap = "Network Setup Message" ProText1 = "Copying:" ProText2 = "To:" FunctionTitle = " EtherSerial Adapter Setup" ProductSoftwareDescription = " EtherSerial Adapter Driver" ProductHardwareDescription = " EtherSerial Adapter" COMList = {"COM disabled","COM2","COM3","COM4","COM5"} ; irq options for pcic: {3 4 5 7 9 10 11 12 14 15} ; irq options for dbook: {3 4 5 6 7 10 14} IRQList = {"3", "4", "5", "7", "9", "10", "11", "12", "14", "15"} IOAddrList = ^(IOAddrChoices, 1) IOAddrValues = ^(IOAddrChoices, 2) MemoryAddrList = ^(MemoryAddrChoices,1) MemoryAddrValues = ^(MemoryAddrChoices,2) PHList = ^(PcmciaChoices, 1) PHValues = ^(PcmciaChoices, 2) DlgDllName = "ESNDIS.SYS" [PcmciaChoices] PH_AUTO = "Auto", 16 PH_i365 = "PCIC", 1 PH_DB = "Databook", 2 [DialogConstantsENG] Help = "&Help" Exit = "Cancel" OK = "OK" HelpContext = "" Continue = "Continue" Cancel = "Cancel" [date] Now = {} ? $(!LIBHANDLE) GetSystemDate [Source Media Descriptions] 1 = " EtherSerial Drivers Disk" ;- , TAGFILE = disk1 [FileDependentDlgENG] DlgType = "RadioCombination" ;pa 15.08 RadioOptionGreyed = {} RadioIn = {$(SockOpt)} Sok1 = "&1st" Sok2 = "&2nd" SokA = "Eit&her" SokText = "PCMCIA Socket to use:" ;-- DlgTemplate = "SPEM2" Caption = $(FunctionTitle) OK="&OK" Oops="Canc&el" ResourFrame = "Resources" IRQLabel = "&Interrupt Number:" PortLabel = "I/O &Port Address:" MemLabel = "&Memory Address:" MdmNameLabel = "COM Port &Name:" ComNote = "Choose the COM port to associate with EtherSerial. "+ "Using Control Panel|Ports, assign IRQ and I/O address "+ "to that COM port. The I/O address can be 0x2F8, 0x3E8 or 0x2E8. "+ "The IRQ must be different from the Interrupt Number above." RunMSD = "&Run NT Diagnostics to find free resources" OptFrame = "Advanced Options" CheckBox1 = "Use &direct enabler" CheckBox2 = "opt2" ;"&Receive Pipelining" CheckBox3 = "opt3" ;"&8 bit I/O mode" CheckBox4 = "opt4" ;More I/O &Wait states" Combo1List = $(IRQList) Combo1Out = $(IRQValue) Combo2List = $(IOAddrList) Combo2Out = $(IOAddrValue) Combo3List = $(MemoryAddrList) Combo3Out = $(MemoryAddrValue) Combo4List = $(COMList) Combo4Out = $(COMNameValue) ComboListItemsIn = {Combo1List, Combo2List, Combo3List, Combo4List} ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out, Combo4Out} EditTextIn = "" EditTextLim = "" CBOptionsGreyed = {} NotifyFields = {NO, NO, NO, NO} [RunMSD4] RunMSD = "Set up the &COM Port..." [Identify] read-syms Identification set !G:DebugOutputControl = 0 debug-output "*** SEM:identify:contextinfname="$(STF_CONTEXTINFNAME) set Status = STATUS_SUCCESSFUL set Identifier = $(OptionType) set Media = #("Source Media Descriptions", 1, 1) Return $(Status) $(Identifier) $(Media) [ReturnOptions] set Status = STATUS_FAILED set OptionList = {} set OptionTextList = {} set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) ; ; Check if the platforms requested is supported ; ifstr(i) $($1) == "" goto returnoptions endif set PlatformList = ^(PlatformsSupported, 1) Ifcontains(i) $($1) in $(PlatformList) goto returnoptions else set Status = STATUS_NOTSUPPORTED goto finish_ReturnOptions endif else set Status = STATUS_NOLANGUAGE goto finish_ReturnOptions endif returnoptions = + set OptionList = ^(Options, 1) set OptionTextList = ^(OptionsText$($0), 1) set Status = STATUS_SUCCESSFUL finish_ReturnOptions = + Return $(Status) $(OptionList) $(OptionTextList) [InstallOption] set !G:DebugOutputControl = 0 set Status = STATUS_FAILED set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) NOT-IN $(LanguageList) Return STATUS_NOLANGUAGE endif 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) set to = Begin set from = Begin Shell $(UtilityInf), GetBusTypeNum ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif Set PlatformList = ^(PlatformsSupported, 1) Set MachineType = *($(PlatformList), $($R1)) set CommonStatus = STATUS_SUCCESSFUL EndWait Begin = + Set ActivateDetection = FALSE Ifstr(i) $(!NTN_InstallMode) == deinstall set StartLabel = removeadapter else-Ifstr(i) $(!NTN_InstallMode) == Update set StartLabel = UpgradeSoftware else-Ifstr(i) $(!NTN_InstallMode) == bind set StartLabel = bindingadapter else-Ifstr(i) $(!NTN_InstallMode) == configure set ActivateDetection = TRUE set StartLabel = configureadapter ; ; If MCA we cannot Configure, so just exit out. ; ifstr(i) $(MachineType) == "MCA" Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE else Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_HARDWARE endif set Error = $($R0) set from = end set to = end goto nonfatalinfo endif ; ; You cannot config the software component ; Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) set Error = "Please configure the Adapter (in the lower pane)." set from = end set to = end goto nonfatalinfo endif else set ActivateDetection = TRUE set StartLabel = installadapter set OEM_ABANDON_OPTIONS = {} set OEM_ABANDON_SOFTWARE = FALSE set OEM_ABANDON_ON = TRUE endif Set DetectedCard = FALSE Ifstr(i) $(ActivateDetection) != TRUE Goto $(StartLabel) Endif ifstr(i) $(MachineType) == "MCA" goto CheckForMCA endif set IRQValue = "5" set IOAddrValue = "0x300" set MemoryAddrValue = "0xD0000" set PHValue = *($(PHList), 1) set IOReadyValue = 2 set COMNameValue = "COM4" Ifstr(i) $(!STF_NCDETECT) == YES Ifstr(i) $(!STF_NCOPTION) == $(Option) Set DetectedCard = TRUE Endif Endif ;DLL Install "Install-Option" Shell "" DebugConfiguration "Opt. dialog defaults" Set from = $(fatal) Set to = $(fatal) Goto $(StartLabel) installadapter = + OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) ; ; Same version already existed in the local machine ; Popup the dialog and ask the user whether he wants to continue ; CloseRegKey $(KeyProduct) ifstr(i) !(NTN_RegBase) == $(ProductKeyName) ; ; Cannot Install the same software again ; Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+ $(ProductVersion) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto end else ; ; Add a new adapter card? ; Shell $(UtilityInf), CardExistedDlg ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr(i) $($R1) != "OK" goto end endif set OldVersionExisted = $(TRUE) endif endif Ifstr(i) $(DetectedCard) != TRUE Goto adaptersetup Endif CheckForMCA = + StartWait Shell $(UtilityInf), MCAFindBus, $(EE16_1BYTE), $(EE16_2BYTE) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto CheckForISA endif ifstr $($R0) != "NO_ERROR" goto CheckForISA endif ifstr(i) $($R1) == {} set Error = $(CANNOT_FIND_ANY_CARD) set CommonStatus = USER_CANCEL set from = "end" goto nonfatal endif set AdapterList = $($R1) goto skipoptions CheckForISA = + Shell $(ParamInf) Param_QueryCard $(!STF_NCDETCARD) EndWait Ifstr(i) $($R0) != STATUS_SUCCESSFUL Goto adaptersetup Endif Set DetectedParams = $($R1) Shell $(ParamInf) Param_SetDefaults $(DetectedParams) goto adaptersetup configureadapter = + Ifstr $(KeyProduct) == $(KeyNull) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE goto fatalregistry Endif Endif Shell $(UtilityInf) FindService, $(KeyProduct) Ifint $($ShellCode) != $(!SHELL_CODE_OK) Goto ShellCodeError Endif Ifstr(i) $($R0) != NO_ERROR set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE Goto fatalregistry endif Set KeyParameters = $($R2) CloseRegKey $($R1) Ifstr $(KeyParameters) == $(KeyNull) set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE goto fatalregistry endif set OldVersionExisted = $(TRUE) set IRQValue = 5 set-hextodec IOAddrValue = 0x300 set-hextodec MemoryAddrValue = 0xD000 set PHValue = 16 set IOReadyValue = 2 set COMNameValue = "COM4" Debug-Output "seminf1 "$(COMNameValue) Shell "" DebugConfiguration "Defaults before read from registry" set ValueName = "" set ValueData = "" set ValueStr = "" set ValueList = {} EnumRegValue $(KeyParameters) ValueList ForListDo $(ValueList) set ValueItem = $($) set ValueName = *($(ValueItem),1) set ValueData = *($(ValueItem),4) Ifstr(i) $(ValueName) == "InterruptNumber" set IRQValue = $(ValueData) else-ifstr(i) $(ValueName) == "IoBaseAddress" set IOAddrValue = $(ValueData) else-ifstr(i) $(ValueName) == "IoChannelReady" set IOReadyValue = $(ValueData) else-ifstr(i) $(ValueName) == "PccardAttributeMemoryAddress" set MemoryAddrValue = $(ValueData) else-ifstr(i) $(ValueName) == "PCMCIAType" set PHValue = $(ValueData) else-ifstr(i) $(ValueName) == "Options" set OptValue = $(ValueData) else-ifstr(i) $(ValueName) == "EnablerOptions" set EnbOptValue = $(ValueData) else-ifstr(i) $(ValueName) == "ModemDosName" set COMNameValue = $(ValueData) else-ifstr(i) $(ValueName) == "Socket" ifint $(ValueData) == 0 set SockOpt = 2 else-ifint $(ValueData) == 1 set SockOpt = 3 else set SockOpt = 1 endif else-ifstr(i) $(ValueName) == "BusNumber" set BusNumberValue = $(ValueData) else-ifstr(i) $(ValueName) == "BusType" set BusTypeNum = $(ValueData) else-ifstr(i) $(ValueName) == "Pcmcia" set PCMCIA_SYS = $(ValueData) else endif EndForListDo Shell "" DebugConfiguration "after read from registry" ifstr(i) $(IRQValue) == "" set IRQValue = 5 endif ifstr(i) $(IOAddrValue) == "" set-hextodec IOAddrValue = 0x300 endif ifstr(i) $(MemoryAddrValue) == "" set-hextodec MemoryAddrValue = 0xD000 endif ifstr(i) $(OptValue) == "" set OptValue = 0 endif ifstr(i) $(EnbOptValue) == "" set EnbOptValue = 0 endif ifint $(IOReadyValue) == 0 set IOReadyValue = 2 endif ifstr(i) $(PHValue) == "" set PHValue = 16 endif ifstr(i) $(COMNameValue) == "" set COMNameValue = "COM disabled" endif ifstr(i) $(BusNumberValue) == "" set BusNumberValue = 0 endif adaptersetup = + Shell "" DebugConfiguration "at adaptersetup" Shell $(ParamInf) Param_ParameterConfidence Ifstr(i) $($R0) != STATUS_SUCCESSFUL Goto adapteroptions Endif Ifstr(i) $(DetectedCard) == TRUE Ifstr(i) $(!STF_INSTALL_MODE) != CUSTOM Goto adapterverify Endif Endif adapteroptions = + Set from = adapteroptions Shell "" DebugConfiguration "at adapteroptions" ifint ~($(IOAddrValues),$(IOAddrValue)) == 0 set-hextodec IOAddrValue = $(IOAddrValue) endif ifint ~($(MemoryAddrValues),$(MemoryAddrValue)) == 0 set-hextodec MemoryAddrValue = $(MemoryAddrValue) endif ifint ~($(PHValues),$(PHValue)) == 0 set PHValue = *($(PHValues),~($(PHList),$(PHValue))) endif set IOAddrValue = *($(IOAddrList),~($(IOAddrValues),$(IOAddrValue))) set MemoryAddrValue = *($(MemoryAddrList),~($(MemoryAddrValues),$(MemoryAddrValue))) set PHValue = *($(PHList),~($(PHValues),$(PHValue))) ;/ set-div TmpVar = $(OptValue),2 ;/ set-mul TmpVar = $(TmpVar),2 ;/ ifint $(TmpVar) == $(OptValue) ;/ set mylist = {"OFF"} ;/ else ;/ set mylist = {"ON"} ;/ endif ;/ set-div OptValue = $(OptValue),2 ;/ ;/ set-div TmpVar = $(OptValue),2 ;/ set-mul TmpVar = $(TmpVar),2 ;/ ifint $(TmpVar) == $(OptValue) ;/ set mylist = >($(mylist), "OFF") ;/ else ;/ set mylist = >($(mylist), "ON") ;/ endif ;/ set-div OptValue = $(OptValue),2 ;/ set-mul OptValue = $(OptValue),4 ;/ ;/ set-div TmpVar = $(EnbOptValue),2 ;/ set-mul TmpVar = $(TmpVar),2 ;/ ifint $(TmpVar) == $(EnbOptValue) ;/ set mylist = >($(mylist), "OFF") ;/ else ;/ set mylist = >($(mylist), "ON") ;/ endif ;/ set-div EnbOptValue = $(EnbOptValue),2 ;/ set-div TmpVar = $(EnbOptValue),2 ;/ set-mul TmpVar = $(TmpVar),2 ;/ ifint $(TmpVar) == $(EnbOptValue) ;/ set mylist = >($(mylist), "OFF") ;/ else ;/ set mylist = >($(mylist), "ON") ;/ endif ;/ set-div EnbOptValue = $(EnbOptValue),2 ;/ set-mul EnbOptValue = $(EnbOptValue),4 ;+ dir enb ifstr $(PCMCIA_SYS) != "" ifint $(PCMCIA_SYS) == 0 set CheckItemsIn = {"ON"} endif else set CheckItemsIn = {"OFF"} endif Shell "" DebugConfiguration "before displ dialog" ; compr: install before dialog ; ifint $(OldVersionExisted) == $(TRUE) set LibPath = $(!STF_WINDOWSSYSPATH)"\drivers\"$(DlgDllName) Debug-output "(10) -on configure- LibPath="$(LibPath) ; else ; ; Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir), NO ; ; Ifint $($ShellCode) != $(!SHELL_CODE_OK) ; Goto ShellCodeError ; Else-Ifstr(i) $($R0) == STATUS_FAILED ; Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL" ; ifint $($ShellCode) != $(!SHELL_CODE_OK) ; goto ShellCodeError ; endif ; set Error = $($R0) ; Goto fatal ; Else-Ifstr(i) $($R0) == STATUS_USERCANCEL ; Goto successful ; Endif ; ;;patch* for nt4 ; ifstr $($R1) == "" ; set LibPath0 = $(SrcDir) ; Debug-output "(20) -on install- LibPath0="$(LibPath0) ; else ; set LibPath0 = $($R1) ; Debug-output "(21) -on install- LibPath0="$(LibPath0) ; endif ; ; shell "" AddBakSlash $(LibPath0) ; Debug-output "(22) after add="$($R0) ; set LibPath = $($R0)$(DlgDllName) ; endif read-syms FileDependentDlg$(!STF_LANGUAGE) shell "" GetNTVer set NTVER = $($R0) ifint $(NTVER) > 3 ;+nt4 read-syms RunMSD4 endif a_displaydialog = + Debug-output "(23) LoadLib="$(LibPath) LoadLibrary " EtherSerial Drivers Disk" $(LibPath) hLib ui start "InputDlg" $(hLib) FreeLibrary $(hLib) Debug-output "Dlgevent="$(DLGEVENT) ifstr(i) $(DLGEVENT) == "CONTINUE" Set IRQValue = $(Combo1Out) Set IOAddrValue = $(Combo2Out) Set MemoryAddrValue = $(Combo3Out) Set COMNameValue = $(Combo4Out) else-ifstr(i) $(DLGEVENT) == "BACK" set CommonStatus = STATUS_USERCANCEL ui pop 1 goto end else ifint $(NTVER) < 4 ; Run MSD: StartDetachedProcess TempSts "" "" WinMSD.exe else StartDetachedProcess TempSts "" "" $(!STF_WINDOWSSYSPATH)\rundll32.exe "shell32.dll,Control_RunDLL" ports.cpl endif Sleep 2000 ; *ms, pause to start the program ui pop 1 ; Prepare again radios and checkboxes: set RadioIn = $(RadioOut) ifstr(i) *($(CheckItemsOut),1) == "ON" set CheckItemsIn = {"ON"} else set CheckItemsIn = {"OFF"} endif goto a_displaydialog endif adapterverify = + ;+pa15.08 set SockOpt = *($(RadioOut),1) ifint $(SockOpt) == 2 set SockVal = 0 else-ifint $(SockOpt) == 3 set SockVal = 1 else set-hextodec SockVal = 0xFFFF endif ;/ ;/ ifstr(i) *($(CheckItemsOut),1) == "ON" ;/ set-add OptValue = $(OptValue),1 ;/ endif ;/ ;/ ifstr(i) *($(CheckItemsOut),2) == "ON" ;/ set-add OptValue = $(OptValue),2 ;/ endif ;/ ;/ ifstr(i) *($(CheckItemsOut),3) == "ON" ;/ set-add EnbOptValue = $(EnbOptValue),1 ;/ endif ;/ ;/ ifstr(i) *($(CheckItemsOut),4) == "ON" ;/ set-add EnbOptValue = $(EnbOptValue),2 ;/ endif ifstr(i) *($(CheckItemsOut),1) == "ON" set PCMCIA_SYS = 0 else set PCMCIA_SYS = 1 endif ui pop 1 Shell "" DebugConfiguration "after running dialog" Ifstr(i) $(DetectedCard) != TRUE Goto skipoptions Endif Shell $(ParamInf) Param_VerifyCard $(!STF_NCDETCARD) Ifstr(i) $($R0) == STATUS_SUCCESSFUL Goto skipoptions Endif Set from = adapteroptions Set to = skipoptions Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto Warning skipoptions =+ ifint $(OldVersionExisted) == $(TRUE) ifstr(i) $(!NTN_InstallMode) == configure goto writeparameters endif endif StartWait ifint $(OldVersionExisted) == $(FALSE) ifstr(i) $(!NTN_InstallMode) == "install" Ifstr(i) $(DoCopy) == "YES" Debug-output "(30) AskSource" Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES Ifint $($ShellCode) != $(!SHELL_CODE_OK) Goto ShellCodeError Else-Ifstr(i) $($R0) == STATUS_FAILED Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto fatal Else-Ifstr(i) $($R0) == STATUS_USERCANCEL Goto successful Endif Set SrcDir = $($R1) Debug-output "(30) LibPath="$(LibPath) Endif install "Install-Option" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal endif endif debug-output "*** SEM:addSW:contextinfname="$(STF_CONTEXTINFNAME) Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), + $(ProductSoftwareName), + $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), + $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+ $(NetEventDLL) Set OEM_ABANDON_SOFTWARE = TRUE ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ; ; At this point: ; $R1 contains the product version key handle; ; $R2 contains the NetRules subkey handle; ; $R3 contains the new Services key handle; and ; $R4 contains the Parameters key ; $R5 contains the Linkage Key ; set RegistryErrorIndex = $($R0) set KeyProduct = $($R1) Set SoftNetRulesKey = $($R2) CloseRegKey $($R3) CloseRegKey $($R4) CloseRegKey $($R5) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) goto fatalregistry endif set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+ {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+ {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+ {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) goto fatalregistry endif set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+ {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, + {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, + {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}} Shell $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait goto fatalregistry endif endif debug-output "*** SEM:addHW:contextinfname="$(STF_CONTEXTINFNAME) Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName) ifint $($R4) != -1 Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4)) endif ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) goto fatalregistry endif set KeyParameters = $($R3) set KeyAdapterRules = $($R2) set AdapterNumber = $($R4) set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+ {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+ {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif CloseRegKey $($R1) set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)"""" set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm) set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+ {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}} Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait CloseRegKey $(KeyParameters) CloseRegKey $(KeyAdapterRules) goto fatalregistry endif CloseRegKey $(KeyAdapterRules) goto writeparameters writeparameters = + ifint $(BusTypeNum) == 0 ;0=internal bus - impossible, ask ; 15.07* Do not raise this dialog - most cases are isa number 0. ;- Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardware$(Option)Description) $(BusTypeNum) $(BusNumberValue) ;- ifint $($ShellCode) != $(!SHELL_CODE_OK) ;- Debug-Output "Shell error in GetBusTypeDialog." ;- goto ShellCodeError ;- endif ;- set BusTypeNum = $($R1) ;- set BusNumberValue = $($R2) set BusTypeNum = 1 set BusNumberValue = 0 endif ifstr $(PCMCIA_SYS) == "" set PCMCIA_SYS = 1 endif Shell "", CHECK-MY-COM, $(KeyParameters) $(COMNameValue) $(IRQValue) set COMNameValue = $($R0) set COMIoValue = $($R1) Set IOAddrValue = *($(IOAddrValues), ~($(IOAddrList),$(IOAddrValue))) Set MemoryAddrValue = *($(MemoryAddrValues), ~($(MemoryAddrList),$(MemoryAddrValue))) Shell "" DebugConfiguration "Before Writing Parameters" set NewValueList = {{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+ {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+ {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumberValue)},+ {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+ {PccardAttributeMemoryAddress,$(NoTitle),$(!REG_VT_DWORD),$(MemoryAddrValue)},+ {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOAddrValue)},+ {IoBaseAddress_1,$(NoTitle),$(!REG_VT_DWORD),$(COMIoValue)},+ {IoLength,$(NoTitle),$(!REG_VT_DWORD),15},+ {IoLength_1,$(NoTitle),$(!REG_VT_DWORD),7},+ {PccardAttributeMemorySize,$(NoTitle),$(!REG_VT_DWORD),1024},+ {Socket,$(NoTitle),$(!REG_VT_DWORD),$(SockVal)}, + {Pcmcia,$(NoTitle),$(!REG_VT_DWORD),$(PCMCIA_SYS)}, + {ModemDosName,$(NoTitle),$(!REG_VT_SZ),$(COMNameValue)} } Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList) CloseRegKey $(KeyParameters) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif EndWait ;+ Add us to pcmcia database ; *NOT OEMIZABLE* ifint $(PCMCIA_SYS) != 0 ;-sem- shell "", ADD-TO-CARD-BASE, "Silicom Ltd.", "EtherSerial LAN Card", "ESPC" shell "", ADD-TO-CARD-BASE, "Silicom Ltd.", "EtherSerial LAN Card", "ESPC" ;-spe- shell "", ADD-TO-CARD-BASE, "Silicom Ltd.", "Ethernet LAN Card", "ESndis" endif goto successful bindingadapter =+ set Error = "Binding: Sorry, not yet implemented." goto fatal removeadapter = + Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) ; Remove Software Component Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif else Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(ProductSoftwareName), $(!NTN_RegBase) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end UpgradeSoftware = + ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) ; Upgrade software component ; ; see whether the same version exist or not ; OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) GetRegValue $(KeyProduct),"MajorVersion", VersionInfo set Version = *($(VersionInfo), 4) ; ; Update the binaries ; Split-String $(!NTN_Infname), "\", FilenameList QueryListSize ListSize $(FilenameList) set !UG_Filename = *($(FilenameList), $(ListSize)) install "Install-Update" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS goto fatal endif ; Upgrade the version number ; SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)} SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)} ; ; do nothing for update ; ifint $(Version) != $(ProductVersion) ; ; If the major version number is not the same, ; it is major upgrade. So let Upgrade the product ; ; ; make other upgrade change if necessary ; endif CloseRegKey $(KeyProduct) else ; ; Cannot Open software key, goto ERROR ; goto fatalregistry endif else ; ; upgrade/update hardware component ; There is no different between upgrade and update for hardware ; component ; ; 1. Get the Service Name ; 2. Change the NetRule section if necessary ; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) + $(MAXIMUM_ALLOWED) NetworkCardKey Ifstr(i) $(NetworkCardKey) != $(KeyNull) ; ; Get Service name ; GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo set ServiceName = *($(ServiceNameInfo), 4) ; ; Change the NetRule if necessary ; OpenRegKey $(NetworkCardKey) "" "NetRules" + $(MAXIMUM_ALLOWED) NetRuleKey Ifstr(i) $(NetRuleKey) != $(KeyNull) ; ; Make the change.... ; else ; ; Error, cannot open net rules key ; goto fatalregistry endif CloseRegKey $(NetRules) CloseRegKey $(NetworkCardKey) else ; ; Error, cannot open network card key ; goto fatalregistry endif ; ; 3. Change the service section of the hardware. i.e., ; ParameterName change, value change, etc. ; OpenRegKey $(!REG_H_LOCAL) "" + $(!NTN_ServiceBase)"\"$(ServiceName) + $(MAXIMUM_ALLOWED) ServiceKey Ifstr(i) $(ServiceKey) != $(KeyNull) ; ; Get the ServiceKey to change the Start value ; or Type value. Or open Parameters key to ; change the hardware parameters if necessary. ; CloseRegKey $(ServiceKey) else ; ; Error, cannot open network card key ; goto fatalregistry endif endif goto end successful = + goto end abandon = + ForListDo $(OEM_ABANDON_OPTIONS) Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(ProductSoftwareName), $($) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif EndForListDo Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE ; Remove Software Component Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), FALSE ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end warning = + Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr(i) $($R1) == "OK" goto $(to) else-ifstr(i) $($R1) == "CANCEL" goto $(from) else goto "end" endif nonfatalinfo = + Set Severity = STATUS Set CommonStatus = STATUS_USERCANCEL goto nonfatalmsg nonfatal = + Set Severity = NONFATAL goto nonfatalmsg nonfatalmsg = + ifstr(i) $(Error) == "" Set Severity = NONFATAL Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) endif Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr(i) $($R1) == "OK" goto $(from) else goto "end" endif fatalregistry = + Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal fataldetect = + Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto fatal fatal = + ifstr(i) $(Error) == "" Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) endif Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto setfailed ShellCodeError = + set DlgType = "MessageBox" set STF_MB_TITLE = "Error: "$(FunctionTitle) set STF_MB_TEXT = "Shell Code Error" set STF_MB_TYPE = 1 set STF_MB_ICON = 3 set STF_MB_DEF = 1 ui start "Error Message" goto setfailed setfailed = + set CommonStatus = STATUS_FAILED ifstr(i) $(OEM_ABANDON_ON) == TRUE set OEM_ABANDON_ON = FALSE goto abandon endif goto end end = + goto term term = + Return $(CommonStatus) ;+ [CHECK-MY-COM] ; enumerate Serial param subkeys. Arg0 = reg key handle ; find our dos name (arg 1), check if irq not confl (arg2) ; if found: take IoBaseAddress_1 from there ; else IoBaseAddress_1 = 0 and ret failure set KeyParameters = $($0) set MyName = $($1) set Disabled = *($(!p:COMList), 1) ;disabled ifstr(i) $(MyName) == $(Disabled) Return $(MyName), 0 endif set SerHandle = "" OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\Serial\Parameters" $(!REG_KEY_ALL_ACCESS) SerHandle Ifint $(RegLastError) != 0 debug-output "***err open ser key"$(RegLastError) goto RetDis endif debug-output " ser key:"$(SerHandle) EnumRegKey $(SerHandle) SerPrmList Ifstr $(SerPrmList) == $(NULL) debug-output "***err enum ser key" goto RetDis endif set Found = "" set IOPort = 0 ForListDo $(SerPrmList) ifstr $(Found) == "" set SerPrms = *($($), 1) debug-output "ser key:"$(SerPrms) set Pkey = "" OpenRegKey $(SerHandle) "" $(SerPrms) $(!REG_KEY_ALL_ACCESS) PKey Ifstr $(PKey) == $(NULL) debug-output "***err open ser subkey"$(RegLastError)" "$(PKey) goto RetDis endif set VList = {} GetRegValue $(PKey) "DosDevices" VList Ifstr(i) *($(VList),4) != "" Ifstr(i) *($(VList),4) == $(MyName) Set Found = $(PKey) else CloseRegKey $(PKey) endif endif endif EndForListDo ;keys CloseRegKey $(SerHandle) ifstr $(Found) != "" ; test if irq and io present set VList = {} GetRegValue $(PKey) "Interrupt" VList set Irq = *($(VList),4) Ifstr(i) $(Irq) == "" goto EndPort endif set VList = {} GetRegValue $(PKey) "PortAddress" VList Ifstr(i) *($(VList),4) == "" goto EndPort endif set IOPort = *($(VList),4) debug-output "com found, io="$(IOPort)" irq="$(Irq) endif EndPort = + CloseRegKey $(PKey) ifint $(IOPort) == 0 debug-output "*** com not found" ;mess box set STF_MB_TITLE = "Setup Message" set-subst STF_MB_TEXT = "Specified COM port: "$(MyName)" is not yet defined,\n"+ "or has not I/O address and IRQ assigned,\n"+ "or is an existing internal port.\n\n"+ "The COM port on EtherSerial will be disabled." set STF_MB_TYPE = 1 ;ok set STF_MB_ICON = 5 ;excl set STF_MB_DEF = 1 set DlgType = "MessageBox" ui start "Error Message" goto RetDis endif ifcontains $(IOPort) not-in { 1016, 760, 1000, 744} ;3f8,2f8,3e8,2e8 debug-output "*** com addr bad:"$(IOPort) ;mess box set STF_MB_TITLE = "Setup Message" set-subst STF_MB_TEXT = "Specified COM port: "$(MyName)" has wrong I/O address.\n"+ "I/O address can be 0x3F8, 0x2F8, 0x3E8, 0x2E8.\n\n"+ "The COM port on EtherSerial will be disabled." set STF_MB_TYPE = 1 ;ok set STF_MB_ICON = 5 ;excl set STF_MB_DEF = 1 set DlgType = "MessageBox" ui start "Error Message" goto RetDis endif CheckIRQ = + ifint $(Irq) == $($2) set-subst STF_MB_TEXT = + "COM port IRQ ("$(MyName)") must be different from Ethernet IRQ" set STF_MB_TITLE = "Setup Message" set STF_MB_TYPE = 1 ;ok set STF_MB_ICON = 5 ;excl set STF_MB_DEF = 1 set DlgType = "MessageBox" ui start "Error Message" goto RetDis endif Return $(MyName), $(IOPort) RetDis = + debug-output "*** ret disabled com" Return $(Disabled), 0 ;+ subroutines [ADD-TO-CARD-BASE] set MyCompKeyName = $($0) set MyCardKeyName = $($1) set CardDatabaseKeyName = $(!NTN_ServiceBase)"\Pcmcia\DataBase" set MAXIMUM_ALLOWED = $(!REG_KEY_ALL_ACCESS) OpenRegKey $(!REG_H_LOCAL) "" $(CardDatabaseKeyName) $(MAXIMUM_ALLOWED) CDatabaseKey ifstr $(CDatabaseKey) != $(NULL) OpenRegKey $(CDatabaseKey) "" $(MyCompKeyName) $(MAXIMUM_ALLOWED) MyDatabaseKey ifstr $(MyDatabaseKey) == $(NULL) CreateRegKey $(CDatabaseKey) {$(MyCompKeyName), 0, 0} "" $(MAXIMUM_ALLOWED) "" MyDatabaseKey endif CloseRegKey $(CDatabaseKey) ifstr $(MyDatabaseKey) != $(NULL) ; if product key exist - rewrite DeleteRegTree $(MyDatabaseKey) $(MyCardKeyName) CreateRegKey $(MyDatabaseKey) {$(MyCardKeyName), 0, 0} "" $(MAXIMUM_ALLOWED) "" MyProdKey CloseRegKey $(MyDatabaseKey) ifstr $(MyProdKey) != $(NULL) SetRegValue $(MyProdKey) {Driver, 0, $(!REG_VT_SZ),$($2)} ;+ new kwds for 4.0? SetRegValue $(MyProdKey) {DeviceType, 0, $(!REG_VT_SZ),"NET"} ;? SetRegValue $(MyProdKey) {AttributeMemorySize, 0, $(!REG_VT_DWORD),4096} CloseRegKey $(MyProdKey) endif endif endif Return [GetNTVer] set MAXIMUM_ALLOWED = $(!REG_KEY_ALL_ACCESS) set RCCurVer1 = "\Microsoft\Windows NT\CurrentVersion" set RCCurVer = $(!NTN_SoftwareBase)$(RCCurVer1) OpenRegKey $(!REG_H_LOCAL) "" $(RCCurVer) $(MAXIMUM_ALLOWED) CVKEY GetRegValue $(CVKEY),"CurrentVersion", CurVer GetRegValue $(CVKEY),"CurrentBuildNumber", CurBuild CloseRegKey $(CVKEY) Split-String *($(CurVer), 4) "." VerLst Return *($(VerLst),1), *($(VerLst),2), *($(CurBuild), 4) [AddBakSlash] set res = $($0) Split-String $(res) "\" tmpl queryListSize ctmpl $(tmpl) debug-output "list:"$(tmpl)" size="$(ctmpl) debug-output "last:"*($(tmpl),$(ctmpl)) ifstr *($(tmpl), $(ctmpl)) != "\" debug-output "Adding \" set res = $($0)"\" endif debug-output "result:"$(res) Return $(res) [DebugConfiguration] Debug-Output "seminf at:"$($0) Debug-Output "COMname="$(!p:COMNameValue) return [Install-Option] set STF_VITAL = "" ifstr(i) $(AddCopy) == "YES" ; ; Add the files to the copy list ; AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers endif ifstr(i) $(DoCopy) == "YES" set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif Exit [Install-Update] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList exit [IOAddrChoices] IOBase_1 = "0x300",768 IOBase_2 = "0x310",784 IOBase_3 = "0x320",800 IOBase_4 = "0x330",816 IOBase_5 = "0x340",832 IOBase_6 = "0x350",848 IOBase_7 = "0x360",864 IOBase_8 = "0x370",880 IOBase_9 = "0x200",512 IOBase_10 = "0x210",528 IOBase_11 = "0x220",544 IOBase_12 = "0x230",560 IOBase_14 = "0x250",592 IOBase_15 = "0x260",608 IOBase_16 = "0x270",624 IOBase_17 = "0x380",896 IOBase_18 = "0x390",912 IOBase_19 = "0x3a0",928 IOBase_20 = "0x3b0",944 IOBase_21 = "0x3c0",960 IOBase_22 = "0x3d0",976 IOBase_24 = "0x3f0",1008 IOBase_25 = "0x280",640 IOBase_26 = "0x290",656 IOBase_27 = "0x2a0",672 IOBase_28 = "0x2b0",688 IOBase_29 = "0x2c0",704 IOBase_30 = "0x2d0",720 IOBase_31 = "0x2e0",736 IOBase_32 = "0x2f0",752 [MemoryAddrChoices] MA_41 = "0xC8000", 819200 MA_42 = "0xC9000", 823296 MA_43 = "0xCA000", 827392 MA_44 = "0xCB000", 831488 MA_45 = "0xCC000", 835584 MA_46 = "0xCD000", 839680 MA_47 = "0xCE000", 843776 MA_48 = "0xCF000", 847872 MA_49 = "0xD0000", 851968 MA_50 = "0xD1000", 856064 MA_51 = "0xD2000", 860160 MA_52 = "0xD3000", 864256 MA_53 = "0xD4000", 868352 MA_54 = "0xD5000", 872448 MA_55 = "0xD6000", 876544 MA_56 = "0xD7000", 880640 MA_57 = "0xD8000", 884736 MA_58 = "0xD9000", 888832 MA_59 = "0xDA000", 892928 MA_60 = "0xDB000", 897024 MA_61 = "0xDC000", 901120 MA_62 = "0xDD000", 905216 MA_63 = "0xDE000", 909312 MA_64 = "0xDF000", 913408 MA_65 = "0xE0000", 917504 MA_66 = "0xE1000", 921600 MA_67 = "0xE2000", 925696 MA_68 = "0xE3000", 929792 MA_69 = "0xE4000", 933888 MA_70 = "0xE5000", 937984 MA_71 = "0xE6000", 942080 MA_72 = "0xE7000", 946176 MA_73 = "0xE8000", 950272 MA_74 = "0xE9000", 954368 MA_75 = "0xEA000", 958464 MA_76 = "0xEB000", 962560 MA_77 = "0xEC000", 966656 MA_78 = "0xED000", 970752 MA_79 = "0xEE000", 974848 MA_80 = "0xEF000", 978944 ;[end]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.