;*********************************************************************** ; ; SMC9000.INF ; ; SMC 91C90 network card and driver SETUP INF file. ; ; ; Copyright (c) 1993 DWB Associates Inc. All Rights Reserved ; ;*********************************************************************** [Identification] OptionType = NetAdapter [PlatformsSupported] ISA EISA [LanguagesSupported] ENG [Options] SMC9000 [OptionsTextENG] SMC9000 = "SMC9000 Ethernet Adapter" [Source Media Descriptions] 1 = "SMC9000 Install Diskette" , TAGFILE = smc9000.sys [Files-SMC9000] 1,smc9000.sys, SIZE=40000 [Files-Dll] 1,smc9000.dll, SIZE=40000 1,smc9000.hlp, SIZE=40000 [Files-smcncdet] 1, smcncdet.dll, SIZE=40000 [Files-Inf] 1, oemsetup.inf, SIZE=40000, RENAME=$(!UG_Filename) [date] Now = {} ? $(!LIBHANDLE) GetSystemDate [FileConstants] UtilityInf = "UTILITY.INF" ParamInf = "NCPARAM.INF" SubroutnInf = "SUBROUTN.INF" NetEventDLL = "%SystemRoot%\System32\netevent.dll" [RegistryConstants] SoftwareType = "driver" Manufacturer = "SMC" ProductMajorVersion = "3" ProductMinorVersion = "1" ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion) ProductSoftwareName = "Smc9000" ProductSoftwareTitle = "Smc9000 Adapter Driver" ProductSoftwareImagePath = "\SystemRoot\System32\drivers\smc9000.sys" NetRuleSoftwareType = "smc9000Sys ndisDriver smc9000Driver" NetRuleSoftwareUse = $(SoftwareType) NetRuleSoftwareBindForm = """Smc9000Sys"" yes no container" NetRuleSoftwareClass = {"smc9000Driver basic"} NetRuleSoftwareBindable = {"smc9000Driver smc9000Adapter non exclusive 100"} ProductHardwareName = "Smc9000" ProductHardwareSMC9000Title = "SMC 9000 Adapter" NetRuleHardwareType = "smc9000 smc9000Adapter" NetRuleHardwareBindForm = " yes yes container" NetRuleHardwareClass = {"smc9000Adapter basic"} ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters" ProductSoftwareDescription = "SMC9000 Ethernet Adapter Driver" ProductHardwareSMC9000Description = "SMC9000 Ethernet Adapter" [GeneralConstants] KeyNull = "" MAXIMUM_ALLOWED = 33554432 KeyProduct = "" KeyParameters = "" TRUE = 1 FALSE = 0 NoTitle = 0 OldVersionExisted = $(FALSE) DriverPath = $(!STF_NTPATH)\drivers [FileConstantsENG] ProCaption = "Windows NT Setup" ProCancel = "Cancel" ProCancelMsg = "The SMC9000 Adapter is not correctly installed. "+ "Are you sure you want to cancel copying files?" ProCancelCap = "Network Setup Message" ProText1 = "Copying:" ProText2 = "To:" FunctionTitle = "SMC9000 Ethernet Adapter Card Setup" [SmcIrqs] IRQ0 = "9",9 IRQ1 = "3",3 IRQ2 = "10",10 IRQ3 = "11",11 [SmcIoBase] Base0 = "0x300",0x0300 Base1 = "0x280",0x0280 Base2 = "0x2a0",0x02a0 Base3 = "0x2c0",0x02c0 Base4 = "0x2e0",0x02e0 Base5 = "0x320",0x0320 Base6 = "0x340",0x0340 Base7 = "0x360",0x0360 Base8 = "0x380",0x0380 Base9 = "0x3a0",0x03a0 [SmcMedia] Media0 = "10BaseT" Media1 = "AUI" [HexDigits] Hex0 = 0 Hex1 = 1 Hex2 = 2 Hex3 = 3 Hex4 = 4 Hex5 = 5 Hex6 = 6 Hex7 = 7 Hex8 = 8 Hex9 = 9 HexA = A HexB = B HexC = C HexD = D HexE = E HexF = F [DialogConstantsENG] Help = "Help" Exit = "Cancel" OK = "OK" HelpContext = 30100 Continue = "Continue" Cancel = "Cancel" BadAddr1 = "Network Address must be 12 hexadecimal digits" BadAddr2 = "Network Address contains invalid hexadecimal digit: " BadAddr3 = "Network Address invalid, group bit must be 0" [FileDependentDlgENG] DlgType = "RadioCombination" DlgTemplate = "SMC9000" Caption = "SMC9000 Ethernet Adapter Card Setup" Combo1Label = "IRQ Level:" Combo2Label = "I/O Base:" Combo3Label = "Media Type:" Label3 = "Network Address" IrqList = ^(SmcIrqs, 1) IoBaseList = ^(SmcIoBase, 1) MediaList = ^(SmcMedia, 1) MediaValue = 0 Combo1List = $(IrqList) Combo1Out = $(InterruptNumber) Combo2List = $(IoBaseList) Combo2Out = $(IoBaseAddress) Combo3List = $(MediaList) Combo3Out = $(Media) ComboListItemsIn = {Combo1List, Combo2List, Combo3List} ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out} CBOptionsGreyed = {} RCCtlFocusOn = 403 [Identify] read-syms Identification set Status = STATUS_SUCCESSFUL set Identifier = $(OptionType) set Media = #("Source Media Descriptions", 1, 1) Return $(Status) $(Identifier) $(Media) [ReturnOptions] set !DebugOutputControl = 1 set OptionList = ^(Options, 1) set OptionTextList = ^(OptionsText$($0), 1) set Status = STATUS_SUCCESSFUL set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) ifstr(i) $($0) == "" set Status = STATUS_NOLANGUAGE goto ExitReturnOptions endif else set Status = STATUS_NOLANGUAGE goto ExitReturnOptions endif set PlatformList = ^(PlatformsSupported, 1) Ifcontains(i) $($1) in $(PlatformList) ifstr(i) $($1) == "" set Status = STATUS_NOTSUPPORTED endif else set Status = STATUS_NOTSUPPORTED endif ExitReturnOptions = + Return $(Status) $(OptionList) $(OptionTextList) [InstallOption] set !DebugOutputControl = 1 Shell "NCPARAM.INF" Param_DetectCard StartWait set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) set LanguageList = ^(LanguagesSupported, 1) read-syms GeneralConstants read-syms FileConstants read-syms RegistryConstants read-syms FileDependentDlg$(!STF_LANGUAGE) read-syms DialogConstants$(!STF_LANGUAGE) read-syms FileConstants$(!STF_LANGUAGE) Ifstr(i) $(!NTN_InstallMode) == deinstall set SubFunction = RemoveAdapter else-Ifstr(i) $(!NTN_InstallMode) == install set SubFunction = InstallAdapter else-Ifstr(i) $(!NTN_InstallMode) == update set SubFunction = UpgradeSoftware else-Ifstr(i) $(!NTN_InstallMode) == configure set SubFunction = ConfigureAdapter else set SubFunction = NoWay endif Shell "" $(SubFunction) EndWait return $($R0) [InstallAdapter] read-syms GeneralConstants read-syms RegistryConstants read-syms FileConstants detect date set CurrentTime = *($(Now),1) set SrcDir = $(!p:SrcDir) set Option = $(!p:Option) set DoCopy = $(!p:DoCopy) set AddCopy = $(!p:AddCopy) set KeyProduct = $(KeyNull) set DoSetup = $(TRUE) Set DetectedCard = $(FALSE) Ifstr(i) $(!STF_NCDETECT) == YES Ifstr(i) $(!STF_NCOPTION) == $(Option) Set DetectedCard = $(TRUE) Endif Endif ifint $(DetectedCard) == $(TRUE) Set TypeList = {{IRQ,IRQ_List,IRQLevel},+ {IOADDR, IOBaseAddressDecList, IOBaseValue},+ {TRANSCEIVER, MediaList, MediaTypeValue}} Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList) Set Status = $($R0) ifstr(i) $(Status) != STATUS_SUCCESSFUL Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT Shell "" FatalError $($R0) Return STATUS_FAILED Endif Shell $(ParamInf) Param_SetDefaults {} Endif set OldVersionExisted = $(FALSE) OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) CloseRegKey $(KeyProduct) ifstr(i) $(!NTN_RegBase) == $(ProductKeyName) Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle), + $(ProductVersion) ifstr(i) $($R1) != "OK" Return STATUS_FAILED endif else Shell $(UtilityInf), CardExistedDlg ifstr(i) $($R1) != "OK" Return STATUS_FAILED endif set OldVersionExisted = $(TRUE) endif endif ifint $(DetectedCard) == $(TRUE) shell $(ParamInf) Param_QueryCard $(!STF_NCDETCARD) ifstr(i) $($R0) == STATUS_SUCCESSFUL set DetectedParams = $($R1) shell $(ParamInf) Param_SetDefaults $(DetectedParams) endif endif ifint $(DoSetup) == $(TRUE) set TempList = ^(SmcIrqs, 1) set InterruptNumber = *($(TempList), 1) set TempList = ^(SmcIoBase, 1) set IoBaseAddrValue = *($(TempList), 1) set SetAddress = 0 set NetworkAddress = "" ifint $(DetectedCard) == $(TRUE) set InterruptNumber = $(IRQLevel) set-dectohex IoBaseAddrValue = $(IOBaseValue) set MediaValue = $(MediaTypeValue) endif set DLLPATH = "" ifstr(i) $(DoCopy) == "YES" OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) CloseRegKey $(KeyProduct) set DLLPATH = $(!STF_CWDDIR) else set BuiltIn = "YES" ifstr(i) $(!NTN_Origination) == "NCPA" Set BuiltIn = "NO" endif Shell $(UtilityInf) DoAskSource $(!STF_CWDDIR) $(SrcDir) $(BuiltIn) set DLLPATH = $($R1) set SrcDir = $($R1) endif endif dowind =+ Shell "" AdapterSetup ifint $($R0) != $(TRUE) Return STATUS_USERCANCEL endif set IRQLevel = $(InterruptNumber) set IOBaseValue = $(IoBaseAddrValue) set MediaTypeValue = $(MediaValue) Shell $(ParamInf) Param_SaveValues Set NewParamSettings = $($R0) Shell $(ParamInf) Param_VerifyResources $(NewParamSettings) Ifstr(i) $($R0) != STATUS_SUCCESSFUL Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING Shell "" VerifyError $($R0) ifstr(i) $($R0) != "OK" goto dowind endif endif ifint $(OldVersionExisted) == $(FALSE) Shell "" SetCopy $(DoCopy) $(AddCopy) $(SrcDir) ifint $($R0) == $(TRUE) Shell "" SetSoftware $(CurrentTime) ifint $($R0) != $(TRUE) Return STATUS_FAILED endif endif endif Shell "" SetHardware $(CurrentTime) ifint $($R0) == $(TRUE) Shell "" WriteParameters endif endif ifint $($R0) == $(TRUE) Return STATUS_SUCCESSFUL else Return STATUS_FAILED endif [ConfigureAdapter] read-syms GeneralConstants read-syms FileConstants read-syms RegistryConstants read-syms FileDependentDlg$(!STF_LANGUAGE) set Option = $(!p:Option) ifstr(i) $(!NTN_RegBase) == $(ProductKeyName) Shell $(UtilityInf) RegistryErrorString CANNOT_CONFIGURE_SOFTWARE Shell "" ShellError $($R0) Return STATUS_FAILED endif Set DetectedCard = $(FALSE) Set TypeList = {{IRQ,IRQ_List,IRQLevel},+ {IOADDR, IOBaseAddressDecList, IOBaseValue},+ {TRANSCEIVER, MediaList, MediaTypeValue}} Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList) Set Status = $($R0) ifstr(i) $(Status) != STATUS_SUCCESSFUL Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT Shell "" FatalError $($R0) Return STATUS_FAILED Endif Shell $(ParamInf) Param_SetDefaults {} Ifstr(i) $(!STF_NCDETECT) == YES Ifstr(i) $(!STF_NCOPTION) == $(Option) Set DetectedCard = $(TRUE) Endif Endif OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) Shell $(UtilityInf) RegistryErrorString CANNOT_FIND_COMPONENT_SERVICE Shell "" ShellError $($R0) Return STATUS_FAILED endif Shell $(UtilityInf) FindService, $(KeyProduct) Ifstr(i) $($R0) != NO_ERROR Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return STATUS_FAILED endif Set !KeyParameters = $($R2) CloseRegKey $($R1) Ifstr $(!KeyParameters) == $(KeyNull) Shell $(UtilityInf) RegistryErrorString CANNOT_FIND_COMPONENT_SERVICE Shell "" FatalError $($R0) Return STATUS_FAILED endif 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) == "Media" set MediaValue = $(ValueData) else-ifstr(i) $(ValueName) == "InterruptNumber" set InterruptNumber = $(ValueData) else-ifstr(i) $(ValueName) == "IoBaseAddress" set IoBaseAddrValue = $(ValueData) else-ifstr(i) $(ValueName) == "SetAddress" set SetAddress = $(ValueData) else-ifstr(i) $(ValueName) == "NetworkAddress" set NetworkAddress = $(ValueData) endif EndForListDo set-dectohex IoBaseAddrValue = $(IoBaseAddrValue) winagn =+ Shell "" AdapterSetup ifint $($R0) != $(TRUE) Return STATUS_USERCANCEL endif set IRQLevel = $(InterruptNumber) set IOBaseValue = $(IoBaseAddrValue) set MediaTypeValue = $(MediaValue) Shell $(ParamInf) Param_SaveValues Set NewParamSettings = $($R0) Shell $(ParamInf) Param_VerifyResources $(NewParamSettings) Ifstr(i) $($R0) != STATUS_SUCCESSFUL Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING Shell "" VerifyError $($R0) ifstr(i) $($R0) != "OK" goto winagn endif endif Shell "" WriteParameters ifint $($R0) == $(TRUE) Return STATUS_SUCCESSFUL else Return STATUS_FAILED endif [NoWay] read-syms GeneralConstants Shell "" ShellError "NoWay" Return STATUS_FAILED [RemoveAdapter] read-syms RegistryConstants read-syms GeneralConstants read-syms FileConstants Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(ProductSoftwareName), $(!NTN_RegBase) ifstr(i) $($R0) != NO_ERROR Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return STATUS_FAILURE endif Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName) ifstr(i) $($R0) == REF_COUNT_NOT_ZERO Return STATUS_SUCCESSFUL endif ifstr(i) $($R0) != NO_ERROR Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return STATUS_FAILURE endif Return STATUS_SUCCESSFUL [UpgradeSoftware] read-syms GeneralConstants read-syms RegistryConstants ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) Return STATUS_FAILED endif GetRegValue $(KeyProduct),"MajorVersion", VersionInfo set Version = *($(VersionInfo), 4) Split-String $(!NTN_Infname), "\", FilenameList QueryListSize ListSize $(FilenameList) set !UG_Filename = *($(FilenameList), $(ListSize)) install "Install-Update" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS Return STATUS_FAILED endif SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)} SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)} CloseRegKey $(KeyProduct) else OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) NetworkCardKey Ifstr(i) $(NetworkCardKey) == $(KeyNull) Return STATUS_FAILED endif GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo set ServiceName = *($(ServiceNameInfo), 4) OpenRegKey $(NetworkCardKey) "" "NetRules" $(MAXIMUM_ALLOWED) NetRuleKey Ifstr(i) $(NetRuleKey) == $(KeyNull) Return STATUS_FAILED endif CloseRegKey $(NetRules) CloseRegKey $(NetworkCardKey) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ServiceName) $(MAXIMUM_ALLOWED) ServiceKey Ifstr(i) $(ServiceKey) == $(KeyNull) Return STATUS_FAILED endif CloseRegKey $(ServiceKey) endif Return STATUS_SUCCESSFUL [AdapterSetup] read-syms FileDependentDlg$(!STF_LANGUAGE) read-syms DialogConstants$(!STF_LANGUAGE) read-syms FileConstants$(!STF_LANGUAGE) read-syms GeneralConstants set Combo1Out = $(!p:InterruptNumber) set Combo2Out = $(!p:IoBaseAddrValue) set MediaValue = $(!p:MediaValue) set DLLPATH = $(!p:DLLPATH) set SetAddress = $(!p:SetAddress) SetHelpFile $(DLLPATH)smc9000.hlp 30100 30100 set AdapterStatus = $(FALSE) ifint $(SetAddress) == 1 set NetworkAddress = $(!p:NetworkAddress) else set NetworkAddress = "" endif ifint $(MediaValue) == 0 set Combo3Out = "10BaseT" else set Combo3Out = "AUI" endif set EditTextIn = {$(NetworkAddress)} set NotifyFields = {NO} set EditTextLim = {12} set EditFocusOn = "" loadlibrary "SMC9000 Install Diskette" $(DLLPATH)smc9000.dll DllHandle RetryDialog =+ EndWait ui start "InputDlg" $(DllHandle) StartWait set NewNetworkAddress = *($(EditTextOut), 1) ifstr(i) $(DLGEVENT) == "CONTINUE" set AdapterStatus = $(TRUE) ifstr(i) $(Combo3Out) == "10BaseT" set MediaType = 0 else set MediaType = 1 endif ifstr(i) $(NewNetworkAddress) == "" set SetAddress = 0 else set SetAddress = 1 endif ifint $(SetAddress) == 1 Split-String $(NewNetworkAddress), "0123456789ABCDEFabcdef", TempList set HexList = ^(HexDigits, 1) QueryListSize ListSize $(TempList) ifint $(ListSize) == 12 set Index1 = 1 set Loop = 1 else Shell "" WarnError $(BadAddr1) goto RetryDialog endif NetAddrLoop =+ set Temp1 = *($(TempList), $(Index1)) ifcontains(i) $(Temp1) not-in $(HexList) Shell "" WarnError $(BadAddr2)$(Temp1) goto RetryDialog endif ifint $(Index1) == 2 ifcontains(i) $(Temp1) in { 1,3,5,7,9,b,d,f } Shell "" WarnError $(BadAddr3) goto RetryDialog endif endif set-add Index1 = $(Index1), 1 set-add Loop = $(Loop), 1 ifint $(Loop) < 13 goto NetAddrLoop endif else set NewNetworkAddress = "" endif endif ui pop 1 freelibrary $(DllHandle) set-hextodec Base = $(Combo2Out) set !p:IoBaseAddrValue = $(Base) set !p:InterruptNumber = $(Combo1Out) set !p:MediaValue = $(MediaType) set !p:SetAddress = $(SetAddress) set !p:NetworkAddress = $(NewNetworkAddress) return $(AdapterStatus) [SetCopy] read-syms GeneralConstants read-syms FileConstants set DoCopy = $($0) set AddCopy = $($1) set SrcDir = $($2) set Needcopy = $(FALSE) Ifstr(i) $(DoCopy) == "YES" set NeedCopy = $(TRUE) else-ifstr(i) $(AddCopy) == "YES" set NeedCopy = $(TRUE) else Return $(TRUE) endif set BuiltIn = "YES" ifstr(i) $(!NTN_Origination) == "NCPA" set BuiltIn = "NO" endif Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) $(BuiltIn) Ifstr(i) $($R0) == STATUS_FAILED Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL" Shell "" FatalError $($R0) Return $(FALSE) Else-Ifstr(i) $($R0) == STATUS_USERCANCEL Return $(FALSE) Endif Set SrcDir = $($R1) install "Install-Option" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE" Shell "" FatalError $($R0) Return $(FALSE) endif Shell "" PrepareDetectionDll "SMCNCDET.DLL" Return $(TRUE) [SetSoftware] read-syms RegistryConstants read-syms GeneralConstants read-syms FileConstants read-syms date Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), + $(ProductSoftwareName), + $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), + $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+ $(NetEventDLL) Ifstr(i) $($R0) != NO_ERROR Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) 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 KeyProduct = $($R1) Set SoftNetRulesKey = $($R2) CloseRegKey $($R3) CloseRegKey $($R4) CloseRegKey $($R5) Ifstr(i) $($R0) != NO_ERROR CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) 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),$($0)}} Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList) Ifstr(i) $($R0) != NO_ERROR CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) 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),"SMC9000"}} Shell $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList) CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) Ifstr(i) $($R0) != NO_ERROR Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) endif return $(TRUE) [SetHardware] read-syms RegistryConstants read-syms GeneralConstants read-syms FileConstants read-syms date Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName) Ifstr(i) $($R0) != NO_ERROR CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) endif ; ; At this point: ; $R1 Registry key variable for HARDWARE\Netcard\(n) ; $R2 Registry key variable for HARDWARE\Netcard\(n)\\NetRules ; $R3 Registry key handle for <service>\Parameters key ; $R4 Adapter number assigned to adapter ; $R5 Service name generated by combining svc name with adapter number ; set !KeyParameters = $($R3) set KeyAdapterRules = $($R2) set AdapterNumber = $($R4) set Option = "SMC9000" set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+ {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+ {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),$($0)}} Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList) Ifstr(i) $($R0) != NO_ERROR CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) 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) Ifstr(i) $($R0) != NO_ERROR CloseRegKey $(!KeyParameters) CloseRegKey $(KeyAdapterRules) Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) endif CloseRegKey $(KeyAdapterRules) return $(TRUE) [WriteParameters] read-syms RegistryConstants read-syms FileConstants read-syms GeneralConstants set Base = $(!p:IoBaseAddrValue) set Irq = $(!p:InterruptNumber) set Media = $(!p:MediaValue) set SetAddress = $(!p:SetAddress) set NetworkAddress = $(!p:NetworkAddress) Shell $(UtilityInf), GetBusTypeNum set BusTypeNum = $($R1) ifint $($ShellCode) != $(!SHELL_CODE_OK) Shell "" ShellError "Cannot get bus number" Return $(FALSE) endif Set NewValueList = {{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+ {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+ {BusNumber,$(NoTitle),$(!REG_VT_DWORD),0},+ {Media,$(NoTitle),$(!REG_VT_DWORD),$(Media)},+ {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(Irq)},+ {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(Base)},+ {SetAddress,$(NoTitle),$(!REG_VT_DWORD),$(SetAddress)},+ {NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NetworkAddress)}} Shell $(UtilityInf), AddValueList, $(!KeyParameters), $(NewValueList) CloseRegKey $(!KeyParameters) Ifstr(i) $($R0) != NO_ERROR Shell $(UtilityInf) RegistryErrorString $($R0) Shell "" ShellError $($R0) Return $(FALSE) endif Return $(TRUE) [ShellError] read-syms DialogConstants$(!STF_LANGUAGE) read-syms FileConstants$(!STF_LANGUAGE) set DlgType = "MessageBox" set STF_MB_TITLE = $(FunctionTitle) set STF_MB_TEXT = $($0) set STF_MB_TYPE = 1 set STF_MB_ICON = 3 set STF_MB_DEF = 1 ifstr(i) $(STF_MB_TEXT) == "" set STF_MB_TEXT = "Unknown Error" endif ui start "Error Message" Return [Install-Option] set STF_VITAL = "" ifstr(i) $(AddCopy) == "YES" AddSectionFilesToCopyList Files-smcncdet $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-SMC9000 $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH) 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-SMC9000 $(!SrcDir) $(!STF_WINDOWSSYSPATH)\drivers AddSectionFilesToCopyList Files-Inf $(!SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Dll $(!SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList exit [PrepareDetectionDll] Set NewDllName = $($0) Set Status = STATUS_FAILED read-syms GeneralConstants Set DllValueName = "NetcardDlls" OpenRegKey $(!REG_H_LOCAL) "" "System\Setup" $(MAXIMUM_ALLOWED) KeySetup Ifstr(i) $(KeySetup) == $(KeyNull) Goto PDD_Return Endif Set DllFound = 0 GetRegValue $(KeySetup) $(DllValueName) DllNamesValue Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS) Goto PDD_Return Endif Set DllNames = *($(DllNamesValue),4) ForListDo $(DllNames) Ifstr(i) $($) == $(NewDllName) Set DllFound = 1 Endif EndForListDo Ifint $(DllFound) == 0 Set DllNames = >($(DllNames),$(NewDllName)) Set ValueInfo = {$(DllValueName), $(NoTitle), $(!REG_VT_MULTI_SZ), $(DllNames)} SetRegValue $(KeySetup) $(ValueInfo) Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS) Set Status = STATUS_SUCCESSFUL Endif Else Set Status = STATUS_USERCANCEL Endif CloseRegKey $(KeySetup) PDD_Return = + Return $(Status) [FatalError] read-syms FileConstants ifstr(i) $($0) == "" set Message = "Unknown Error" else set Message = $($0) endif Shell $(SubroutnInf) SetupMessage $(!STF_LANGUAGE) FATAL $(Message) Return [VerifyError] read-syms FileConstants ifstr(i) $($0) == "" set Message = "Unknown Error" else set Message = $($0) endif Shell $(SubroutnInf) SetupMessage $(!STF_LANGUAGE) WARNING $(Message) Return $($R1) [WarnError] read-syms FileConstants ifstr(i) $($0) == "" set Message = "Unknown Error" else set Message = $($0) endif Shell $(SubroutnInf) SetupMessage $(!STF_LANGUAGE) NONFATAL $(Message) ReturnDownload 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.