[IntstallOptions] Install_3NIC_Diag = "NO" Install_Shortcuts = "NO" Install_Installer = "NO" Install_On_Server = "YES" [Identification] OptionType = NetAdapter [PlatformsSupported] ISA EISA PCI "Jazz-Internal Bus" [Options] 3C90X 3C980 [DriverConstantsNDIS3] ND3NetEventDLL = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\drivers\el98xn3.sys" ND3ProdSWImagePath = "%SystemRoot%\System32\drivers\el98xn3.sys" ND3ProdSWUpgradePath = "\SystemRoot\System32\drivers\el98xn3.sys" [DriverConstantsNDIS4] ND4NetEventDLL = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\drivers\el98xn4.sys" ND4ProdSWImagePath = "%SystemRoot%\System32\drivers\el98xn4.sys" ND4ProdSWUpgradePath = "\SystemRoot\System32\drivers\el98xn4.sys" ;************************************************************************************************** [FileConstants] UtilityInf = "UTILITY.INF" subroutineinf = "SUBROUTN.INF" SWType = "driver" Exit_Code = 0 IoLogMsgDLL = "%SystemRoot%\System32\IoLogMsg.dll" NetworkCardsKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\" FunctionTitle = "3Com 3C980x Adapter Card Setup" ; *** 3CNUMBER = "3C90X" 3CNUMBER = "3C980X" GROUP_NAME = "3Com EtherLink PCI NIC" ProdHWXXXXXTitle = "3Com EtherLink PCI NIC " ProdHWXXXXXDesc = "3Com EtherLink PCI NIC " Manufacturer = "3Com" EtherDiskVersion = "2.1" ProdMajorVer = "2" ProdMinorVer = "1" ProdReview = "1" ProdVer = $(ProdMajorVer)"."$(ProdMinorVer) ProdSWDesc = "3Com 3C98x 10/100 Server NIC Driver" ProdSWTitle = "3Com 3C98x 10/100 Server NIC Driver" ProdSWName = "EL980N4" NetRuleSWType = "EL980N4Sys ndisDriver EL980N4Driver" NetRuleSWUse = $(SWType) NetRuleSWBindForm = """EL980N4Sys"" yes no container" NetRuleSWClass = {"El98xDriver basic"} NetRuleSWBindable = {"EL980N4Driver El98xAdapter non exclusive 100"} ProdHWName = "EL980N4" NetRuleHWBindForm = " yes yes container" NetRuleHWType = "EL980N4 El98xAdapter" NetRuleHWClass = {"EL980N4Adapter basic"} ProdKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProdSWName)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(ProdHWName)"\Parameters" Hardware_Default = "HardwareDefault" DiagExe = TCAUDIAG NICPROP = NICPROP ; *** ??? next line DIAGCARDTYPE = "TCAUM90X" TrayIconExe = TCAUDIAG InstallerExe = TCAUDIAG UnInstallerEXE = UN3C90XA ;--------------------these NICs use old NDIS4 driver -------------------------------- ProdHW38912Title = "3Com EtherLink Server 10/100 PCI NIC (3C980B-TX)" ProdHW38912Desc = "3Com EtherLink Server 10/100 PCI NIC (3C980B-TX)" ProdHW38917Title = "3Com EtherLink Server 10/100 PCI NIC (3C980C-TXM)" ProdHW38917Desc = "3Com EtherLink Server 10/100 PCI NIC (3C980C-TXM)" ProdHW38917HydraATitle = "3Com EtherLink Server 10/100 Dual Port A" ProdHW38917HydraBTitle = "3Com EtherLink Server 10/100 Dual Port B" ProdHW38917HydraDescription = "3Com EtherLink Server 10/100 PCI Dual Port Network Interface Card featuring DynamicAccess technology with Advanced Server Features." ;------------------------------------------------------------------------------------------------ ; List of NICs CFIDList = {38912, 38917} AdapterType = 5 [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 NT350VersionConstant = "3.50" NT310VersionConstant = "3.10" NT400VersionConstant = "(4.0)" INF_PROCESSER = "I386" PythonPresent = "FALSE" LastCardRemoved = "TRUE" [date] Now = {} ? $(!LIBHANDLE) GetSystemDate [Identify] read-syms Identification 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) 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) [checkFileExist] DiagFound = {} ? $(!LIBHANDLE) FindFileInstances $(!STF_WINDOWSSYSPATH)"\tcaudiag.exe" OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion\NetworkCards" $(!REG_KEY_ALL_ACCESS) SWNWCardsKey ifstr(i) $(SWNWCardsKey) != "" EnumRegKey $(SWNWCardsKey) DriverList ForListDo $(DriverList) set Driver = *($($), 1) OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(Driver) + $(!REG_KEY_ALL_ACCESS) DriverRootKey Ifstr(i) $(DriverRootKey) != "" ; key exists GetRegValue $(DriverRootKey) "ProductName" CurrentProductName ifstr(i) (*($(CurrentProductName),4)) == "(El980n4)" OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(Driver)"\NetRules" + $(!REG_KEY_ALL_ACCESS) DriverNetRulesKey Ifstr(i) $(DriverNetRulesKey) != "" ; key exists SetRegValue $(DriverNetRulesKey) {"InfName" , 0, $(!REG_VT_SZ), $(NewINFFileName)} Endif ;;; Change to support I.B.M. hot plug SetRegValue $(DriverRootKey) {"ProductName" , 0, $(!REG_VT_SZ), "EL980N4"} GetRegValue $(DriverRootKey) "ServiceName" CurrentServiceNameString set CurrentServiceName = *($(CurrentServiceNameString), 4) Split-String "$(CurrentServiceName)" "n" ServiceNameTokens set ServiceSuffix = *($(ServiceNameTokens), 3) set FullServiceName = "EL980N"$(ServiceSuffix) SetRegValue $(DriverRootKey) {"ServiceName", 0, $(!REG_VT_SZ), $(FullServiceName)} ;;; End of changes to support hot plug ;;; Change the description and title fields GetRegValue $(DriverRootKey) "Description" CurrentDescriptionString GetRegValue $(DriverRootKey) "Title" CurrentTitleString set CurrentDescription = *($(CurrentDescriptionString), 4) set CurrentTitle = *($(CurrentTitleString), 4) ifstr(i) $(CurrentDescription) == "10/100Mb PCI" SetRegValue $(DriverRootKey) {"Description", 0, $(!REG_VT_SZ), "3C980B-TX Adapter w/ Server Software ver. 2.0"} Split-String "$(CurrentTitle)" "m" TitleTokens set TitlePrefix = *($(TitleTokens), 1) set FullTitle = $(TitlePrefix)"m EtherLink Server 10/100 PCI NIC" SetRegValue $(DriverRootKey) {"Title", 0, $(!REG_VT_SZ), $(FullTitle)} Endif Endif Endif CloseRegKey $(DriverRootKey) CloseRegKey $(DriverNetRulesKey) EndForListDo endif CloseRegKey $(SWNWCardsKey) OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_ALL_ACCESS) ServicesKey ifstr(i) $(ServicesKey) != "" EnumRegKey $(ServicesKey) DriverList ForListDo $(DriverList) set Driver = *($($), 1) OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\"$(Driver)"\Parameters" + $(!REG_KEY_ALL_ACCESS) DriverKey Ifstr(i) $(DriverKey) != "" ; key exists Split-String "$(Driver)" "n" DriverTokens set DriverName = *($(DriverTokens), 1) ifstr(i) $(Driver) != "El980n4" ifstr(i) $(DriverName) == "El980" ;;; This is a 980-Series 3Com driver. The name must be changed to uppercase ;;; Changes to support hot plug for I.B.M. ;;; First, save the old settings for this driver instance OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\"$(Driver) + $(!REG_KEY_ALL_ACCESS) DriverInstanceKey Ifstr(i) $(DriverInstanceKey) != "" ; key exists GetRegValue $(DriverInstanceKey) "ErrorControl" SavedErrorControl GetRegValue $(DriverInstanceKey) "Start" SavedStart GetRegValue $(DriverInstanceKey) "Type" SavedType OpenRegKey $(DriverInstanceKey) "" "Linkage" $(!REG_KEY_ALL_ACCESS) DriverLinkageKey Ifstr(i) $(DriverLinkageKey) != "" ; key exists GetRegValue $(DriverLinkageKey) "Bind" SavedBind GetRegValue $(DriverLinkageKey) "Export" SavedExport GetRegValue $(DriverLinkageKey) "Route" SavedRoute OpenRegKey $(DriverLinkageKey) "" "Disabled" $(!REG_KEY_ALL_ACCESS) DriverLinkageDisabledKey Ifstr(i) $(DriverLinkageDisabledKey) != "" ; key exists GetRegValue $(DriverLinkageDisabledKey) "Bind" SavedDisabledBind GetRegValue $(DriverLinkageDisabledKey) "Export" SavedDisabledExport GetRegValue $(DriverLinkageDisabledKey) "Route" SavedDisabledRoute endif endif OpenRegKey $(DriverInstanceKey) "" "Parameters" $(!REG_KEY_ALL_ACCESS) DriverParametersKey Ifstr(i) $(DriverParametersKey) != "" ; key exists GetRegValue $(DriverParametersKey) "ADAPTERNUMBER" SavedADAPTERNUMBER GetRegValue $(DriverParametersKey) "AdapterSeq" SavedAdapterSeq GetRegValue $(DriverParametersKey) "Base_Mac_Address" SavedBaseMacAddress GetRegValue $(DriverParametersKey) "BusNumber" SavedBusNumber GetRegValue $(DriverParametersKey) "BusType" SavedBusType GetRegValue $(DriverParametersKey) "CardType" SavedCardType GetRegValue $(DriverParametersKey) "ErrorTolerance" SavedErrorTolerance GetRegValue $(DriverParametersKey) "MediaType" SavedMediaType GetRegValue $(DriverParametersKey) "Network_Address" SavedNetworkAddress GetRegValue $(DriverParametersKey) "SamplingRatio" SavedSamplingRatio GetRegValue $(DriverParametersKey) "SamplingWindow" SavedSamplingWindow GetRegValue $(DriverParametersKey) "SelfCheckLevel" SavedSelfCheckLevel GetRegValue $(DriverParametersKey) "Slot" SavedSlot GetRegValue $(DriverParametersKey) "SlotNumber" SavedSlotNumber OpenRegKey $(DriverParametersKey) "" "Tcpip" $(!REG_KEY_ALL_ACCESS) DriverTCPIPKey Ifstr(i) $(DriverTCPIPKey) != "" ; key exists GetRegValue $(DriverTCPIPKey) "DefaultGateway" SavedDefaultGateway GetRegValue $(DriverTCPIPKey) "EnableDHCP" SavedEnableDHCP GetRegValue $(DriverTCPIPKey) "IPAddress" SavedIPAddress GetRegValue $(DriverTCPIPKey) "IPInterfaceContext" SavedIPInterfaceContext GetRegValue $(DriverTCPIPKey) "IPInterfaceContextMax" SavedIPInterfaceContextMax GetRegValue $(DriverTCPIPKey) "LLInterface" SavedLLInterface GetRegValue $(DriverTCPIPKey) "PPTPFiltering" SavedPPTPFiltering GetRegValue $(DriverTCPIPKey) "RawIPAllowedProtocols" SavedRawIPAllowedProtocols GetRegValue $(DriverTCPIPKey) "SubnetMask" SavedSubnetMask GetRegValue $(DriverTCPIPKey) "TCPAllowedPorts" SavedTCPAllowedPorts GetRegValue $(DriverTCPIPKey) "UDPAllowedPorts" SavedUDPAllowedPorts GetRegValue $(DriverTCPIPKey) "UseZeroBroadcast" SavedUseZeroBroadcast endif endif endif CloseRegKey $(DriverTCPIPKey) CloseRegKey $(DriverParametersKey) CloseRegKey $(DriverLinkageDisabledKey) CloseRegKey $(DriverLinkageKey) CloseRegKey $(DriverInstanceKey) ;;; Delete this driver instance and recreate it with all caps DeleteRegTree $(ServicesKey) $(Driver) ;; Convert the driver instance name to all caps Split-String "$(Driver)" "n" DriverNameTokens set DriverNameSuffix = *($(DriverNameTokens), 3) set DriverNameAsCAPS = "EL980N"$(DriverNameSuffix) CreateRegKey $(ServicesKey) {$(DriverNameAsCAPS), 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewDriverKey ifstr $(NewDriverKey) != "" SetRegValue $(NewDriverKey), {ErrorControl, $(NoTitle),$(!REG_VT_DWORD),*($(SavedErrorControl), 4)} SetRegValue $(NewDriverKey), {Start, $(NoTitle),$(!REG_VT_DWORD),*($(SavedStart), 4)} SetRegValue $(NewDriverKey), {Type, $(NoTitle),$(!REG_VT_DWORD),*($(SavedType), 4)} CreateRegKey $(NewDriverKey) {"Linkage", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewDriverLinkageKey ifstr $(NewDriverLinkageKey) != "" ;;; Add in the values for the Linkage key SetRegValue $(NewDriverLinkageKey) {Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedBind), 4)} SetRegValue $(NewDriverLinkageKey) {Export,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedExport), 4)} SetRegValue $(NewDriverLinkageKey) {Route,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedRoute), 4)} CreateRegKey $(NewDriverLinkageKey) {"Disabled", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewDriverLinkageDisabledKey ifstr $(NewDriverLinkageDisabledKey) != "" ;;; Add in the values for the Disabled key SetRegValue $(NewDriverLinkageDisabledKey) {Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDisabledBind), 4)} SetRegValue $(NewDriverLinkageDisabledKey) {Export,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDisabledExport), 4)} SetRegValue $(NewDriverLinkageDisabledKey) {Route,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDisabledRoute), 4)} endif endif CreateRegKey $(NewDriverKey) {"Parameters", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewDriverParamKey ifstr $(NewDriverParamKey) != "" SetRegValue $(NewDriverParamKey), {VersionNo, $(NoTitle),$(!REG_VT_DWORD),20} SetRegValue $(NewDriverParamKey), {shdinformmsgs, $(NoTitle),$(!REG_VT_DWORD),0} SetRegValue $(NewDriverParamKey), {shdwarnmsgs, $(NoTitle),$(!REG_VT_DWORD),0} SetRegValue $(NewDriverParamKey), {shderrormsgs, $(NoTitle),$(!REG_VT_DWORD),1} SetRegValue $(NewDriverParamKey) {"FlowControl", 0, $(!REG_VT_SZ), "YES"} SetRegValue $(NewDriverParamKey) {"WakeOnMagic", 0, $(!REG_VT_SZ), "YES"} SetRegValue $(NewDriverParamKey) {"WakeOnLink" , 0, $(!REG_VT_SZ), "NO"} SetRegValue $(NewDriverParamKey) {"RWUMagic", 0, $(!REG_VT_SZ), "ENABLE"} SetRegValue $(NewDriverParamKey), {ADAPTERNUMBER, $(NoTitle),$(!REG_VT_DWORD),*($(SavedADAPTERNUMBER), 4)} SetRegValue $(NewDriverParamKey), {AdapterSeq, $(NoTitle),$(!REG_VT_DWORD),*($(SavedAdapterSeq), 4)} SetRegValue $(NewDriverParamKey) {"Base_Mac_Address" , 0, $(!REG_VT_SZ), *($(SavedBaseMacAddress), 4)} SetRegValue $(NewDriverParamKey), {BusNumber, $(NoTitle),$(!REG_VT_DWORD),*($(SavedBusNumber), 4)} SetRegValue $(NewDriverParamKey), {BusType, $(NoTitle),$(!REG_VT_DWORD),*($(SavedBusType), 4)} SetRegValue $(NewDriverParamKey), {CardType, $(NoTitle),$(!REG_VT_DWORD),*($(SavedCardType), 4)} SetRegValue $(NewDriverParamKey) {"ErrorTolerance" , 0, $(!REG_VT_SZ), *($(SavedErrorTolerance), 4)} SetRegValue $(NewDriverParamKey), {MediaType, $(NoTitle),$(!REG_VT_DWORD),*($(SavedMediaType), 4)} SetRegValue $(NewDriverParamKey) {"Network_Address" , 0, $(!REG_VT_SZ), *($(SavedNetworkAddress), 4)} SetRegValue $(NewDriverParamKey), {SamplingRatio, $(NoTitle),$(!REG_VT_DWORD),*($(SavedSamplingRatio), 4)} SetRegValue $(NewDriverParamKey), {SamplingWindow, $(NoTitle),$(!REG_VT_DWORD),*($(SavedSamplingWindow), 4)} SetRegValue $(NewDriverParamKey) {"SelfCheckLevel" , 0, $(!REG_VT_SZ), *($(SavedSelfCheckLevel), 4)} SetRegValue $(NewDriverParamKey), {Slot, $(NoTitle),$(!REG_VT_DWORD),*($(SavedSlot), 4)} SetRegValue $(NewDriverParamKey), {SlotNumber, $(NoTitle),$(!REG_VT_DWORD),*($(SavedSlotNumber), 4)} CreateRegKey $(NewDriverParamKey) {"Tcpip", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewDriverTCPIPKey ifstr $(NewDriverTCPIPKey) != "" ;;; Add in the values for the Tcpip key SetRegValue $(NewDriverTCPIPKey) {DefaultGateway,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDefaultGateway), 4)} SetRegValue $(NewDriverTCPIPKey), {EnableDHCP, $(NoTitle),$(!REG_VT_DWORD),*($(SavedEnableDHCP), 4)} SetRegValue $(NewDriverTCPIPKey) {IPAddress,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedIPAddress), 4)} SetRegValue $(NewDriverTCPIPKey), {IPInterfaceContext, $(NoTitle),$(!REG_VT_DWORD),*($(SavedIPInterfaceContext), 4)} SetRegValue $(NewDriverTCPIPKey), {IPInterfaceContextMax, $(NoTitle),$(!REG_VT_DWORD),*($(SavedIPInterfaceContextMax), 4)} SetRegValue $(NewDriverTCPIPKey) {"LLInterface" , 0, $(!REG_VT_SZ), *($(SavedLLInterface), 4)} SetRegValue $(NewDriverTCPIPKey), {PPTPFiltering, $(NoTitle),$(!REG_VT_DWORD),*($(SavedPPTPFiltering), 4)} SetRegValue $(NewDriverTCPIPKey) {RawIPAllowedProtocols,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedRawIPAllowedProtocols), 4)} SetRegValue $(NewDriverTCPIPKey) {SubnetMask,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedSubnetMask), 4)} SetRegValue $(NewDriverTCPIPKey) {TCPAllowedPorts,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedTCPAllowedPorts), 4)} SetRegValue $(NewDriverTCPIPKey) {UDPAllowedPorts,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedUDPAllowedPorts), 4)} SetRegValue $(NewDriverTCPIPKey), {UseZeroBroadcast, $(NoTitle),$(!REG_VT_DWORD),*($(SavedUseZeroBroadcast), 4)} endif endif endif ;;; End of key recreation ;;; END OF MASSIVE CHANGES ;;; End of changes for hot plug Endif Else ;;; Full driver name = El980n4 -> Change this to uppercase ;;; Changes to support hot plug for I.B.M. ;;; Save all parameters to memory before recreating the keys OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\el980n4" $(!REG_KEY_ALL_ACCESS) RootSvcsKey Ifstr(i) $(RootSvcsKey) != "" ; key exists OpenRegKey $(RootSvcsKey) "" "Security" $(!REG_KEY_ALL_ACCESS) RootSvcsSecurityKey ifstr(i) $(RootSvcsSecurityKey) != "" GetRegValue $(RootSvcsSecurityKey) "Security" SavedSecurity CloseRegKey $(RootSvcsSecurityKey) endif OpenRegKey $(RootSvcsKey) "" "Linkage" $(!REG_KEY_ALL_ACCESS) RootSvcsLinkageKey ifstr(i) $(RootSvcsLinkageKey) != "" GetRegValue $(RootSvcsLinkageKey) "Bind" SavedBind GetRegValue $(RootSvcsLinkageKey) "Export" SavedExport GetRegValue $(RootSvcsLinkageKey) "Route" SavedRoute OpenRegKey $(RootSvcsLinkageKey) "" "Disabled" $(!REG_KEY_ALL_ACCESS) RootSvcsLinkageDisabledKey ifstr(i) $(RootSvcsLinkageDisabledKey) != "" GetRegValue $(RootSvcsLinkageDisabledKey) "Bind" SavedDisabledBind GetRegValue $(RootSvcsLinkageDisabledKey) "Export" SavedDisabledExport GetRegValue $(RootSvcsLinkageDisabledKey) "Route" SavedDisabledRoute CloseRegKey $(RootSvcsLinkageDisabledKey) endif CloseRegKey $(RootSvcsLinkageKey) endif DeleteRegTree $(ServicesKey) "el980n4" ;;; Start of key recreation CreateRegKey $(ServicesKey) {"EL980N4", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewEL980N4Key ifstr $(NewEL980N4Key) != "" SetRegValue $(NewEL980N4Key), {ErrorControl, $(NoTitle),$(!REG_VT_DWORD),0} SetRegValue $(NewEL980N4Key), {Start, $(NoTitle),$(!REG_VT_DWORD),2} SetRegValue $(NewEL980N4Key), {Type, $(NoTitle),$(!REG_VT_DWORD),1} SetRegValue $(NewEL980N4Key) {"DisplayName", 0, $(!REG_VT_SZ), "3Com 3C980C Adapter Driver"} SetRegValue $(NewEL980N4Key) {"ImagePath", 0, $(!REG_VT_SZ), "\SystemRoot\System32\drivers\el98xn4.sys"} SetRegValue $(NewEL980N4Key) {"Group", 0, $(!REG_VT_SZ), "NDIS"} CreateRegKey $(NewEL980N4Key) {"Linkage", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewEL980N4LinkageKey ifstr $(NewEL980N4LinkageKey) != "" ;;; Add in the values for the Linkage key SetRegValue $(NewEL980N4LinkageKey) {Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedBind), 4)} SetRegValue $(NewEL980N4LinkageKey) {Export,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedExport), 4)} SetRegValue $(NewEL980N4LinkageKey) {Route,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedRoute), 4)} CreateRegKey $(NewEL980N4LinkageKey) {"Disabled", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewEL980N4LinkageDisabledKey ifstr $(NewEL980N4LinkageDisabledKey) != "" ;;; Add in the values for the Disabled key SetRegValue $(NewEL980N4LinkageDisabledKey) {Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDisabledBind), 4)} SetRegValue $(NewEL980N4LinkageDisabledKey) {Export,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDisabledExport), 4)} SetRegValue $(NewEL980N4LinkageDisabledKey) {Route,$(NoTitle),$(!REG_VT_MULTI_SZ),*($(SavedDisabledRoute), 4)} endif endif CreateRegKey $(NewEL980N4Key) {"Parameters", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewEL980N4ParamKey ifstr $(NewEL980N4ParamKey) != "" set WakeOnLan = YES set WakeOnLink = NO set ValueEnable = ENABLE Set NewValueList = {{WakeOnMagic,$(NoTitle),$(!REG_VT_SZ),$(WakeOnLan)},+ {WakeOnLink,$(NoTitle),$(!REG_VT_SZ),$(WakeOnLink)},+ {RWUMagic,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)},+ {FLOWCONTROL,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)}} OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\EL980N4\Parameters" + $(!REG_KEY_ALL_ACCESS) NewSoftParameterKey ifstr $(NewSoftParameterKey) != "" Shell $(UtilityInf), AddValueList, $(NewSoftParameterKey), $(NewValueList) CreateRegKey $(NewSoftParameterKey) {"3CDefault" , 0, GenericClass} "" + $(!REG_KEY_ALL_ACCESS) "" KeyNt2 Set ThisValueList = {RWUMagic,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)} OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\EL980N4" $(!REG_KEY_ALL_ACCESS) NDKeyNt ifstr $(KeyNt2) != "" SetRegValue $(KeyNt2 ) $(ThisValueList) CloseRegKey $(KeyNt2 ) endif endif CloseRegKey $(NewSoftParameterKey) CloseRegKey $(NDKeyNt) ;l endif CreateRegKey $(NewEL980N4Key) {"Security", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewEL980N4SecurityKey ifstr $(NewEL980N4SecurityKey) != "" ;;; Add in the values for the Security key SetRegValue $(NewEL980N4SecurityKey) {Security,$(NoTitle),$(!REG_VT_BIN),*($(SavedSecurity), 4)} endif endif ;;; End of key recreation endif endif ;;; End of changes for hot plug Endif CloseRegKey $(DriverKey) EndForListDo endif CloseRegKey $(SWel980n4Key) CloseRegKey $(SWel980n4CVKey) CloseRegKey $(SWel980n4NRKey) CloseRegKey $(ServicesKey) // *** DIAG SECTION USES TCAUM90X AND NOT TCAUM980X THISMAY CAUSE TROUBLE. WATCH FOR IT. [DiagRegistry] OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE" $(!REG_KEY_WRITE) SOFTKEY OpenRegKey $(SOFTKEY) "" "3Com" $(!REG_KEY_WRITE) COMKEY ifstr $(COMKEY) == "" CreateRegKey $(SOFTKEY) {"3Com", 0, GenericClass} "" $(!REG_KEY_WRITE) "" COMKEY endif OpenRegKey $(COMKEY) "" "TCAUDIAG" $(!REG_KEY_WRITE) TCAUDIAGKEY ifstr $(TCAUDIAGKEY) == "" CreateRegKey $(COMKEY) {"TCAUDIAG", 0, GenericClass} "" $(!REG_KEY_WRITE) "" TCAUDIAGKEY endif OpenRegKey $(TCAUDIAGKEY) "" "TCAUM98X" $(!REG_KEY_WRITE) TCAUM90XKEY ifstr $(TCAUM90XKEY) == "" CreateRegKey $(TCAUDIAGKEY) {"TCAUM98X", 0, GenericClass} "" $(!REG_KEY_WRITE) "" TCAUM90XKEY endif SetRegValue $(TCAUM90XKEY) {"DriverNames", 0, $(!REG_VT_SZ), "3C90X.COM;EL90X.DOS;SYSTEM\EL98XN3.SYS;SYSTEM\EL98XN4.SYS"} OpenRegKey $(TCAUM90XKEY) "" "Extensions" $(!REG_KEY_WRITE) ExtensionsKEY ifstr $(ExtensionsKEY) == "" CreateRegKey $(TCAUM90XKEY) {"Extensions", 0, GenericClass} "" $(!REG_KEY_WRITE) "" ExtensionsKEY endif OpenRegKey $(ExtensionsKEY) "" "DA" $(!REG_KEY_WRITE) DAKEY ifstr $(DAKEY) == "" CreateRegKey $(ExtensionsKEY) {"DA", 0, GenericClass} "" $(!REG_KEY_WRITE) "" DAKEY endif CloseRegKey $(SOFTKEY) CloseRegKey $(COMKEY) CloseRegKey $(TCAUDIAGKEY) CloseRegKey $(TCAUM90XKEY) CloseRegKey $(ExtensionsKEY) CloseRegKey $(DAKEY) return [InstallOption] set CurrLang = $($0) 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 IntstallOptions 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 set CommonStatus = STATUS_SUCCESSFUL EndWait Begin = + ;*********** add this to check correct platform supported******** ifstr(i) $(!STF_PLATFORM) == "Alpha" set CommonStatus = STATUS_USERCANCEL goto end else-ifstr(i) $(!STF_PLATFORM) == "Alpha_AXP" set CommonStatus = STATUS_USERCANCEL goto end endif ;***************************************************************** set CurrentVersionValue = "" OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows Nt\CurrentVersion" $(!REG_KEY_READ) KeyNt Ifstr(i) $(KeyNt) != "" GetRegValue $(KeyNt) "CurrentVersion" CurrentVersionValue Debug-Output "$(InfFile) : WinNT CurrentVersion ="$(CurrentVersionValue) CloseRegKey $(KeyNt) Endif ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant) set NDIS_VER = NDIS4 else set NDIS_VER = NDIS3 endif read-syms DriverConstants$(NDIS_VER) ifstr(i) (*($(CurrentVersionValue),4)) == $(NT310VersionConstant) Debug-Output "$(InfFile) : Configureadapter" set Error = "Windows NT v3.10 is not support by this product" goto fatal endif 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 ifstr $(!STF_PLATFORM) == $(INF_PROCESSER) ifstr(i) $(Install_On_Server) == "YES" RunProgram ExitCode "Windows Directory" "" srv_conf.exe ; Determine whether the program has modified any SHD parameters ; If so, then prompt for a reboot. Also prompt for a reboot on ; an install or upgrade. OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com" $(!REG_KEY_ALL_ACCESS) KeyNt Ifstr(i) $(KeyNt) != "" GetRegValue $(KeyNt) "PromptForReboot" RebootRequiredList set RebootRequired = *($(RebootRequiredList), 4) Ifstr(i) $(RebootRequired) == "YES" ; Reset the reboot status to NO SetRegValue $(KeyNt), {PromptForReboot, $(NoTitle),$(!REG_VT_SZ),"NO"} set CommonStatus = STATUS_SUCCESSFUL else set CommonStatus = STATUS_USERCANCEL Endif Endif CloseRegKey $(KeyNt) else set CommonStatus = STATUS_USERCANCEL endif goto end else-Ifstr(i) $(ProdKeyName) == $(!NTN_RegBase) Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) set from = end set to = end goto nonfatalinfo else set StartLabel = configureadapter endif else set StartLabel = installadapter set OEM_ABANDON_OPTIONS = {} set OEM_ABANDON_SOFTWARE = FALSE set OEM_ABANDON_ON = TRUE endif Debug-Output "$(InfFile) : ==================================================" Debug-Output "$(InfFile) : STF_CWDIR is: "$(!STF_CWDIR) Debug-Output "$(InfFile) : STF_SRCDIR is: "$(!STF_SRCDIR) Debug-Output "$(InfFile) : STF_LANGUAGE is: "$(!STF_LANGUAGE) Debug-Output "$(InfFile) : Option is: "$(Option) Debug-Output "$(InfFile) : !STF_NCN_InstallMode is:"$(!NTN_InstallMode) Debug-Output "$(InfFile) : !STF_NCDETECT is: "$(!STF_NCDETECT) Debug-Output "$(InfFile) : !STF_NCOPTION is: "$(!STF_NCOPTION) Debug-Output "$(InfFile) : !STF_NCDETCARD is: "$(!STF_NCDETCARD) Debug-Output "$(InfFile) : !STF_NCDETINFO is: "$(!STF_NCDETINFO) Debug-Output "$(InfFile) : !STF_GUI_UNATTENDED is: "$(!STF_GUI_UNATTENDED) Debug-Output "$(InfFile) : !STF_BusType is $(!STF_BUSTYPE)" Debug-Output "$(InfFile) : !STF_BusTypeList is $(!STF_BUSTYPELIST)" Debug-Output "$(InfFile) : ==================================================" set from = $(fatal) set to = $(fatal) goto $(StartLabel) installadapter = + Debug-Output "$(InfFile) : Installadapter" OpenRegKey $(!REG_H_LOCAL) "" $(ProdKeyName) $(!REG_KEY_READ) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) CloseRegKey $(KeyProduct) ifstr(i) !(NTN_RegBase) == $(ProdKeyName) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error: cannot get an error string." goto ShellCodeError endif goto end endif Endif Goto adapteroptions configureadapter = + Debug-Output "$(InfFile) : Configureadapter" set Error = "Cannot configure the software component" goto fatal adapteroptions = + Debug-Output "$(InfFile) : Adapteroptions" set from = adapteroptions ifstr(i) $(!NTN_InstallMode) == configure goto updateparameters endif installproduct =+ install "Install-OTHER" Debug-Output "$(InfFile) : installproduct" StartWait set AdapterList = $($R1) Debug-Output "$(InfFile) : About to look for 3Com PCI Cards" set TargetVersion = *($(CurrentVersionValue),4) Debug-Output "$(InfFile) : Current Version:"$(TargetVersion) ifstr $(TargetVersion) == $(NT350VersionConstant) Debug-Output "Running on WindowsNT 3.50" set Version350 = $(TRUE) else Debug-Output "Running on WindowsNT 3.51 or higher" set Version350 = $(FALSE) endif ifint $(Version350) == $(TRUE) Debug-Output "Running on WindowsNT v3.50, Not using PCI Detection!!!" ifstr $(!STF_GUI_UNATTENDED) == "YES" Debug-Output "$(InfFile) : Running in GUI unattended mode" ifstr(i) $(!AutoNetInterfaceType) != "" set BusInterfaceType = $(!AutoNetInterfaceType) else set BusInterfaceType = 5 endif ifstr(i) $(!AutoNetBusNumber) != "" set BusNumber = $(!AutoNetBusNumber) else set BusNumber = 0 endif set NTDetected = $(FALSE) set AdapterList = {{$(Option),0, XXXXX}} Debug-Output "$(InfFile) : BusInterfaceType = $(BusInterfaceType)" Debug-Output "$(InfFile) : BusNumber = $(BusNumber)" else ;;; GUI_UNATTENDED=NO Debug-Output "$(InfFile) : Running 3.50 Bus Dialog" set BusInterfaceType = 5 set BusNumber = 0 set NTDetected = $(FALSE) Shell $(UtilityInf),GetBusTypeDialog,$(ProdHWXXXXXDesc) $(BusInterfaceType) $(BusNumber) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error." goto ShellCodeError endif set BusInterfaceType = $($R1) set BusNumber = $($R2) set AdapterList = {{$(Option),0, XXXXX}} Debug-Output "$(InfFile) : BusInterfaceType = $(BusInterfaceType)" Debug-Output "$(InfFile) : BusNumber = $(BusNumber)" endif ;;; end check GUI_UNATTENDED else ;;; Version350=FALSE Debug-Output "$(InfFile) : Running 3.51 or higher using PCI Dectection" set NTDetected = $(TRUE) set Vendor = 4279 set CFIDList = $(CFIDList) Debug-Output "$(InfFile) : VendorID = $(Vendor)" Debug-Output "$(InfFile) : CFIDList = $(CFIDList)" set AdapterList = {} ForListDo $(CFIDList) set-div CFID = $($) 1 set DeviceID = $($) Shell $(UtilityInf), GetPCIInformation, $(Vendor) $(CFID) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ForListDo $($R0) set AdapterList = >($(AdapterList), {*($($),1), *($($),2), $(DeviceID)}) EndForListDo EndForListDo ifstr(i) $(AdapterList) == {} set Error = $(CANNOT_FIND_ANY_CARD) set CommonStatus = USER_CANCEL set from = end goto nonfatal endif endif set ToInstallList = {} Debug-Output "$(InfFile) : Adapterlist = $(AdatperList)" ForListDo $(AdapterList) ifint $(NTDetected) == $(TRUE) set DetectedBusNum = *($($),1) set DetectedSlotNum = *($($),2) set DeviceID = *($($),3) ; 1.) Call Executable to populate the reg key "SOFTWARE\3Com\PCI_DATA" with the PCI data the current instance of the NIC RunProgram ExitCode "" "" $(SrcDir)PCI_DATA.EXE /$(DetectedBusNum) /$(DetectedSlotNum) ; 2.) Check open key for the data of interest. *** DeviceID, SubSystemID, SubVendorID, and VendorID are present OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\PCI_DATA" $(!REG_KEY_ALL_ACCESS) PCI_DATA_KEY GetRegValue $(PCI_DATA_KEY) "DeviceID" Array_DeviceID GetRegValue $(PCI_DATA_KEY) "VendorID" Array_VendorID GetRegValue $(PCI_DATA_KEY) "SubSystemID" Array_SubSystemID GetRegValue $(PCI_DATA_KEY) "SubVendorID" Array_SubVendorID Set Value_DeviceID = *($(Array_DeviceID),4) Set Value_VendorID = *($(Array_VendorID),4) Set Value_SubSystemID = *($(Array_SubSystemID),4) Set Value_SubVendorID = *($(Array_SubVendorID),4) ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected DeviceID is ("$(Value_DeviceID)")" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected VendorID is ("$(Value_VendorID)")" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubSystemID is ("$(Value_SubSystemID)")" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubVendorID is ("$(Value_SubVendorID)")" ; 3.) Stepthrough logic to determine card type ; 3Com Product ifstr(i) $(Value_VendorID) == "10B7" ; 3C980B-TX ************************************************************** ifstr(i) $(Value_DeviceID) == "9800" set Product_Hardware_Title = $(ProdHW38912Title) set Product_Hardware_Desc = $(ProdHW38912Desc) endif ; 3C980C-TXM ************************************************************* ifstr(i) $(Value_DeviceID) == "9805" ifstr(i) $(Detected_SubSystemID) != "1201" ifstr(i) $(Value_SubSystemID) != "1202" set Product_Hardware_Title = $(ProdHW38917Title) set Product_Hardware_Desc = $(ProdHW38917Desc) endif endif endif ; 3C982 Multi Cards ; 3C982-TXM (Port A) ****************************************************** ifstr(i) $(Value_DeviceID) == "9805" ifstr(i) $(Value_SubSystemID) == "1201" set Product_Hardware_Title = $(ProdHW38917HydraATitle) set Product_Hardware_Desc = $(ProdHW38917HydraDescription) endif endif ; 3C982-TXM (Port B) ***************************************************** ifstr(i) $(Value_DeviceID) == "9805" ifstr(i) $(Value_SubSystemID) == "1202" set Product_Hardware_Title = $(ProdHW38917HydraBTitle) set Product_Hardware_Desc = $(ProdHW38917HydraDescription) endif endif endif CloseRegKey $(PCI_DATA_KEY) ; 980X CARD Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(DetectedBusNum), + $(DetectedSlotNum), $(Product_Hardware_Desc), "EL980N4" ;**** DO THIS BECAUSE WE NOW USE NEW NAMES FOR OUR CARDS, CHECK OLD NAME ifstr(i) $($R1) != "YES" ;not installed yet, not sure, check oldnames ; Take no action. else ;already installed with current name on ECD2.1 goto endchecking endif AddToNotList=+ ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr $($R0) != "NO_ERROR" set Error = $($R0) goto fatal endif ;ifstr(i) $(ToInstallList) == {} ; COMMENT THIS OUT TO INSTALL MULTIPLE NIC at a time ifstr(i) $($R1) != "YES" set ToInstallList = >($(ToInstallList), $($)) endif ;endif endchecking =+ endif EndForListDo ifstr(i) $(ToInstallList) == {} set Error = $(CANNOT_FIND_ANY_UNINSTALLED_CARD) set CommonStatus = USER_CANCEL set from = end goto nonfatal endif ForListDo $(ToInstallList) set-add AdapterSeq = $(AdapterSeq) , 1 set DetectedBusNum = *($($),1) set DetectedSlotNum = *($($),2) set DeviceID = *($($),3) set BoomDetected = FALSE set NonBoomDetected = FALSE ; 1.) Call Executable to populate the reg key "SOFTWARE\3Com\PCI_DATA" with the PCI data the current instance of the NIC RunProgram ExitCode "" "" $(SrcDir)PCI_DATA.EXE /$(DetectedBusNum) /$(DetectedSlotNum) ; 2.) Check open key for the data of interest. *** DeviceID, SubSystemID, SubVendorID, and VendorID are present OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\PCI_DATA" $(!REG_KEY_ALL_ACCESS) PCI_DATA_KEY GetRegValue $(PCI_DATA_KEY) "DeviceID" Array_DeviceID GetRegValue $(PCI_DATA_KEY) "VendorID" Array_VendorID GetRegValue $(PCI_DATA_KEY) "SubSystemID" Array_SubSystemID GetRegValue $(PCI_DATA_KEY) "SubVendorID" Array_SubVendorID Set Value_DeviceID = *($(Array_DeviceID),4) Set Value_VendorID = *($(Array_VendorID),4) Set Value_SubSystemID = *($(Array_SubSystemID),4) Set Value_SubVendorID = *($(Array_SubVendorID),4) ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected DeviceID is ("$(Value_DeviceID)")" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected VendorID is ("$(Value_VendorID)")" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubSystemID is ("$(Value_SubSystemID)")" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "The detected SubVendorID is ("$(Value_SubVendorID)")" ; 3.) Stepthrough logic to determine card type ; 3Com Product ifstr(i) $(Value_VendorID) == "10B7" ; 3C980B-TX ************************************************************** ifstr(i) $(Value_DeviceID) == "9800" set Product_Hardware_Title = $(ProdHW38912Title) set Product_Hardware_Desc = $(ProdHW38912Desc) endif ; 3C980C-TXM ************************************************************* ifstr(i) $(Value_DeviceID) == "9805" ifstr(i) $(Detected_SubSystemID) != "1201" ifstr(i) $(Value_SubSystemID) != "1202" set Product_Hardware_Title = $(ProdHW38917Title) set Product_Hardware_Desc = $(ProdHW38917Desc) endif endif endif ; 3C982 Multi Cards ; 3C982-TXM (Port A) ****************************************************** ifstr(i) $(Value_DeviceID) == "9805" ifstr(i) $(Value_SubSystemID) == "1201" set Product_Hardware_Title = $(ProdHW38917HydraATitle) set Product_Hardware_Desc = $(ProdHW38917HydraDescription) endif endif ; 3C982-TXM (Port B) ***************************************************** ifstr(i) $(Value_DeviceID) == "9805" ifstr(i) $(Value_SubSystemID) == "1202" set Product_Hardware_Title = $(ProdHW38917HydraBTitle) set Product_Hardware_Desc = $(ProdHW38917HydraDescription) endif endif endif ; The only 2 sequences that scan the PCI_DATA RegKey are done so don't just close the key: destroy the PCI_DATA key ; and the full tree beneath it. DeleteRegTree $(PCI_DATA_KEY) "" ;3C98X CARD set CorrectProdSWDesc = $(ProdSWDesc) set CorrectProdSWTitle = $(ProdSWTitle) set CorrectProdHWName = $(ProdHWName) set CorrectProdSWName = $(ProdSWName) set CorrectNetRuleSWType = $(NetRuleSWType) set CorrectNetRuleSWBindForm = $(NetRuleSWBindForm) set CorrectNetRuleSWClass = $(NetRuleSWClass) set CorrectNetRuleSWBindable = $(NetRuleSWBindable) set CorrectNetRuleHWBindForm = $(NetRuleHWBindForm) set CorrectNetRuleHWType = $(NetRuleHWType) set CorrectNetRuleHWClass = $(NetRuleHWClass) set CorrectProdKeyName = $(ProdKeyName) set CorrectParamKeyName = $(ParamKeyName) ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant) set CorrectNetEventDLL = $(ND4NetEventDLL) set CorrectProdSWImagePath = $(ND4ProdSWImagePath) set CorrectProdSWUpgradePath = $(ND4ProdSWUpgradePath) else set CorrectNetEventDLL = $(ND3NetEventDLL) set CorrectProdSWImagePath = $(ND3ProdSWImagePath) set CorrectProdSWUpgradePath = $(ND3ProdSWUpgradePath) endif OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(CorrectProdHWName) $(!REG_KEY_READ) KeyNt CloseRegKey $(KeyNt) Ifstr(i) $(KeyNt) == "" ; Begin check Key=null Debug-Output "$(InfFile) : AddSoftwareComponent" Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(CorrectProdSWName), + $(CorrectProdSWName), + $(CorrectProdSWTitle), $(STF_CONTEXTINFNAME), + $(CorrectProdSWImagePath), "kernel", "NDIS", {}, "",+ $(CorrectNetEventDLL) Set OEM_ABANDON_SOFTWARE = TRUE ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR" EndWait CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) CloseRegKey $($R4) CloseRegKey $($R5) goto fatalregistry endif ;DEBUG: ; ifstr(i) $(BoomCard) == TRUE ; Set DlgText = "bOOM CARD" ; else ; Set DlgText = "90xbc CARD" ; endif ; Shell "Done Add Software comp to get keyhandle" ; Set DlgText = "firstDB "$(CorrectProdHWName)" "$(CorrectProdSWName) ;END DEBUG Set SoftProductKey = $($R1) Set SoftNetRuleKey = $($R2) Set SoftServiceKey = $($R3) Set SoftParameterKey = $($R4) Set SoftLinkageKey = $($R5) set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SWType)},+ {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProdMajorVer)},+ {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProdMinorVer)},+ {Title,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdSWTitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdSWDesc)},+ {Review,$(NoTitle),$(!REG_VT_DWORD),$(ProdReview)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdSWName)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)},+ {EDVersion,$(NoTitle),$(!REG_VT_SZ),$(EtherDiskVersion)}} Shell $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR" EndWait CloseRegKey $(SoftProductKey) CloseRegKey $(SoftNetRuleKey) CloseRegKey $(SoftServiceKey) CloseRegKey $(SoftParameterKey) CloseRegKey $(SoftLinkageKey) goto fatalregistry endif set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(CorrectNetRuleSWType)},+ {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSWUse)}, + {bindform,$(NoTitle),$(!REG_VT_SZ),$(CorrectNetRuleSWBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(CorrectNetRuleSWClass)}, + {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(CorrectNetRuleSWBindable)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}} Shell $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR" EndWait CloseRegKey $(SoftProductKey) CloseRegKey $(SoftNetRuleKey) CloseRegKey $(SoftServiceKey) CloseRegKey $(SoftParameterKey) CloseRegKey $(SoftLinkageKey) goto fatalregistry endif ;********** Add parameter for driver ************************* set WakeOnLan = YES set WakeOnLink = NO set ValueEnable = ENABLE Set NewValueList = {{RWUMAGIC,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)},+ {FLOWCONTROL,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)}} Shell $(UtilityInf), AddValueList, $(SoftParameterKey), $(NewValueList) CreateRegKey $(SoftParameterKey) {"3CDefault" , 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) + "" KeyNt2 ;;; Set ThisValueList = {RWUMAGIC,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)} OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\"$(ProdSWName) $(!REG_KEY_ALL_ACCESS) NDKeyNt ifstr $(KeyNt2) != "" SetRegValue $(KeyNt2 ) $("ThisValueList") CloseRegKey $(KeyNt2 ) endif ;;; ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif CloseRegKey $(SoftProductKey) CloseRegKey $(SoftNetRuleKey) CloseRegKey $(SoftServiceKey) CloseRegKey $(SoftParameterKey) CloseRegKey $(SoftLinkageKey) Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR" EndWait goto fatalregistry endif ;************************************************************* endif ; end check Key=null Debug-Output "$(InfFile) : DetectedBusNumber = $(DetectedBusNum)" Debug-Output "$(InfFile) : DetectedSlotNum = $(DetectedSlotNum)" Debug-Output "$(InfFile) : Installing Card at $(DetectedBusNum):$(DetectedSlotNum)!" Shell $(UtilityInf), AddHardwareComponent, $(CorrectProdHWName),$(STF_CONTEXTINFNAME),$(CorrectProdKeyName) 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 HardNetCardKey = $($R1) Set HardNetRuleKey = $($R2) Set HardParameterKey = $($R3) set AdapterNumber = $($R4) ; set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+ ; {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProdHW$(DeviceID)Title)},+ ; {Description,$(NoTitle),$(!REG_VT_SZ),$(ProdHW$(DeviceID)Desc)},+ ; {ProductName,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdHWName)},+ ; {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+ ; {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)},+ ; {EDVersion,$(NoTitle),$(!REG_VT_SZ),$(EtherDiskVersion)},+ ; } set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+ {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(Product_Hardware_Title)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(Product_Hardware_Desc)},+ {ProductName,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdHWName)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)},+ {EDVersion,$(NoTitle),$(!REG_VT_SZ),$(EtherDiskVersion)},+ } ; Workaround: Sometimes AddHardwareComponent can't return correct handle for HardNetCardKey ; We have to manually open the key using adapter number returned from AddHardwareComponent ; might have to do the same for HardParameterKey OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKey)$($R4) $(!REG_KEY_SET_VALUE) HardNetCardKey ; end workaround Shell $(UtilityInf), AddValueList, $(HardNetCardKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ;set RegistryErrorIndex = $($R0) ;Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR" ;EndWait ;goto fatalregistry ;endif set BusTypeNum = 5 set CardType = 2 ; Set the card type to Type 2 as none of the device IDs below are supported under this product ; ifstr(i) $(DeviceID) == "36944" ; ;set CardType = 0 ; else-ifstr(i) $(DeviceID) == "36945" ; ;set CardType = 0 ; else-ifstr(i) $(DeviceID) == "36949" ; set CardType = 0 ; else ; set CardType = 2 ; endif ifint $(NTDetected) == $(TRUE) set BusNumber = $(DetectedBusNum) set SlotNum = $(DetectedSlotNum) set BusInterfaceType = $(BusTypeNum) Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)" Set NewValueList = {{BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+ {ADAPTERNUMBER,$(NoTitle),$(!REG_VT_DWORD),$(AdapterNumber)} + {AdapterSeq,$(NoTitle),$(!REG_VT_DWORD),$(AdapterSeq)}, + {shdinformmsgs, $(NoTitle),$(!REG_VT_DWORD),0} + {shdwarnmsgs, $(NoTitle),$(!REG_VT_DWORD),0} + {shderrormsgs, $(NoTitle),$(!REG_VT_DWORD),1} + {"FlowControl", 0, $(!REG_VT_SZ), "YES"} + {"WakeOnMagic", 0, $(!REG_VT_SZ), "YES"} + {"WakeOnLink" , 0, $(!REG_VT_SZ), "NO"} + {"RWUMagic", 0, $(!REG_VT_SZ), "ENABLE"} + {"SelfCheckLevel" , 0, $(!REG_VT_SZ), "Basic"} + {SamplingWindow, $(NoTitle),$(!REG_VT_DWORD),1024} + {SamplingRatio, $(NoTitle),$(!REG_VT_DWORD),50} + {"ErrorTolerance" , 0, $(!REG_VT_SZ), "Medium"} + {"Base_Mac_Address" , 0, $(!REG_VT_SZ), ""} + {"Network_Address" , 0, $(!REG_VT_SZ), ""} + {VersionNo, $(NoTitle),$(!REG_VT_DWORD),21} + {Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)}} Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)" Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif Set NewValueList = {{SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNum)},+ {Media,$(NoTitle),$(!REG_VT_SZ),$(Hardware_Default)}} Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)" Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif else ; NTDetected != TRUE Set NewValueList = {+ {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+ {Media,$(NoTitle),$(!REG_VT_SZ),$(Hardware_Default)}} Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)" Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif endif ; Set NewValueList = {{BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+ {CardType,$(NoTitle),$(!REG_VT_DWORD),$(CardType)},+ {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+ } Debug-Output "$(InfFile) : Set HardwareParameterKey = $(NewValueList)" Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr(i) $(!STF_GUI_UNATTENDED) == "YES" Shell $(UtilityInf), AddDefaultNetcardParameters, $(HardParameterKey) endif set TempProdName = """"$(CorrectProdHWName)$(AdapterNumber)"""" set TempBindForm = $(TempProdName)$(CorrectNetRuleHWBindForm) set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(CorrectNetRuleHWType)},+ {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(CorrectNetRuleHWClass)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}} Debug-Output "$(InfFile) : HardwareRuleKey = $(NewValueList)" Shell $(UtilityInf), AddValueList, $(HardNetRuleKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeEror endif ;****************************************************************************************************************** ;3CDefault set ValueEnable = ENABLE Set ThisValueList = {{RWUMAGIC,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)},+ {FLOWCONTROL,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)}} Shell $(UtilityInf), AddValueList, $(HardParameterKey), $(ThisValueList) CreateRegKey $(HardParameterKey) {"3CDefault" , 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) + "" KeyNt2 Set ThisValueList = {RWUMAGIC,$(NoTitle),$(!REG_VT_SZ),$(ValueEnable)} SetRegValue $(KeyNt2) $("ThisValueList") ;****************************************************************************************************************** CloseRegKey $(HardNetCardKey) CloseRegKey $(HardNetRuleKey) CloseRegKey $(HardParameterKey) ;******************************************* ;* Driver History Information * ;* The following code adds Driver History * ;* Information to the system registry * ;******************************************* ; Driver Information Entries ; These items will be set by IHV... Set DriverMfgr = "3Com Corporation" ; IHV name Set DriverVersionID = "2.47.0.0" ; The IHV driver package version Set BaseDriverFileName = "EL98XN4.SYS" ; Key file for version check Set BaseDriverFileVersion = "2.47.0.0" ; Version in Key file ; These items will be set to VENDOR values, and then set to OEM-specific by OEM Set DriverOEM = "3Com Corporation" ; name of the OEM Set DriverFamily = "NIC" ; device family (NIC, Storage, Video...) Set DriverProduct = "???" ; Specific Name of device (chipset, for example) Set DriverDescription = "EtherCD 2.1 Ndis4 Driver set" ; Description of device (product name, OS or system supported) Set DriverOEMVersion = "2.47.0.0" ; OEM-specified version ; This section is added to all INFs to add registry entries for Driver Info. set DriverInfoRegList = {"InstalledOptions",$(DriverOEM),$(DriverFamily),$(DriverMfgr),$(DriverProduct)} set DriverInfoKey = "SOFTWARE" OpenRegKey $(!REG_H_LOCAL) "" $(DriverInfoKey) $(!REG_KEY_CREATE_SUB_KEY) DriverInfoOldKeyHandle ifstr $(DriverInfoOldKeyHandle) == "" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "DriverInfo registry failed. Could not open HKLM\Software ("$(RegLastError)")" set DriverInfoFailed = "FAIL" else ForListDo $(DriverInfoRegList) Set NewDriverInfoKey = $(DriverInfoKey)"\"$($) OpenRegKey $(!REG_H_LOCAL) "" $(NewDriverInfoKey) $(!REG_KEY_ALL_ACCESS) DriverInfoKeyHandle ifstr(i) $(DriverInfoKeyHandle) == "" CreateRegKey $(DriverInfoOldKeyHandle) {$($),0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" DriverInfoKeyHandle ifstr $(DriverInfoKeyHandle) == "" shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" "DriverInfo registry failed. Could not create key:"$($)" ("$(RegLastError)")" set DriverInfoFailed = "FAIL" endif endif CloseRegKey $(DriverInfoOldKeyHandle) set DriverInfoOldKeyHandle = $(DriverInfoKeyHandle) set DriverInfoKey = $(NewDriverInfoKey) EndForListDo endif ifstr $(DriverInfoFailed) != "FAIL" SetRegValue $(DriverInfoKeyHandle) {"Description",0,$(!REG_VT_SZ),$(DriverDescription)} SetRegValue $(DriverInfoKeyHandle) {"CurrentVer",0,$(!REG_VT_SZ),$(DriverOEMVersion)} SetRegValue $(DriverInfoKeyHandle) {"Ver_"$(DriverOEMVersion),0,$(!REG_VT_SZ),$(DriverVersionID)} SetRegValue $(DriverInfoKeyHandle) {" BaseDriverFileName",0,$(!REG_VT_SZ),$( BaseDriverFileName)} SetRegValue $(DriverInfoKeyHandle) {" BaseDriverFileVersion",0,$(!REG_VT_SZ),$(BaseDriverFileVersion)} CloseRegKey $(DriverInfoKeyHandle) endif ;******************************************* ;* End of Driver History Information * ;******************************************* ;******* CREATE DIAG REGISTRY FOR TOUCHDOWN SINCE WE SUPPORT IT ************** ; ; Place an instance in the registry for each instance of the Nic card ; ;***************************************************************************** set TrayIconList = {TCAUDIAG,$(NoTitle),$(!REG_VT_SZ),$(DIAGCARDTYPE)} OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\"$(CorrectProdSWName) $(!REG_KEY_ALL_ACCESS) NDKeyNt ifstr $(NDKeyNt) != "" SetRegValue $(NDKeyNt) $(TrayIconList) CloseRegKey $(NDKeyNt) endif EndForListDo ;******* CREATE REGISTRY ENTRIES FOR COMPAQ HOT PLUG SUPPORT IF ************** ; HOT PLUG CURRENTLY SUPPORTED ON THIS SERVER ; ; Place an instance in the registry for ONE instance of the Nic card. Not each ; instance ; ;***************************************************************************** OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Compaq\Cpqrcmc\ClassDLLs\NicMiniPort" $(!REG_KEY_WRITE) MiniPortKey ifstr $(MiniPortKey) != "" ; Hot plug support currently installed on this server CreateRegKey $(MiniPortKey) {"EL980N4", 0, GenericClass} "" $(!REG_KEY_WRITE) "" HotPlugServiceKey SetRegValue $(HotPlugServiceKey), {BaseOIDAddress, $(NoTitle),$(!REG_VT_DWORD), 4278322176} ;; 0xFF020400 in Hex SetRegValue $(HotPlugServiceKey), {SetOIDAddress, $(NoTitle),$(!REG_VT_DWORD), 4278321920} ;; 0xFF020300 in Hex endif CloseRegKey $(MiniPortKey) CloseRegKey $(HotPlugServiceKey) OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services\HotSrv\SupportedDevices" $(!REG_KEY_WRITE) SupportedDevicesKey ifstr $(SupportedDevicesKey) != "" CreateRegKey $(SupportedDevicesKey) {"10B7-9800-10B7-1000", 0, GenericClass} "" $(!REG_KEY_WRITE) "" 9800HotPlugKey CreateRegKey $(SupportedDevicesKey) {"10B7-9805-10B7-1000", 0, GenericClass} "" $(!REG_KEY_WRITE) "" 9805HotPlugKey ;CreateRegKey $(SupportedDevicesKey) {"10B7-9805-10B7-1201", 0, GenericClass} "" $(!REG_KEY_WRITE) "" PortAHotPlugKey ;CreateRegKey $(SupportedDevicesKey) {"10B7-9805-10B7-1202", 0, GenericClass} "" $(!REG_KEY_WRITE) "" PortBHotPlugKey SetRegValue $(9800HotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3Com EtherLink Server 10/100 PCI NIC (3C980B-TX)"} SetRegValue $(9800HotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL980N4"} SetRegValue $(9805HotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3Com EtherLink Server 10/100 PCI NIC (3C980C-TXM)"} SetRegValue $(9805HotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL980N4"} ;SetRegValue $(PortAHotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3Com EtherLink Server 10/100 Dual Port A"} ;SetRegValue $(PortAHotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL980N4"} ;SetRegValue $(PortBHotPlugKey) {"FriendlyName", 0, $(!REG_VT_SZ), "3Com EtherLink Server 10/100 Dual Port B"} ;SetRegValue $(PortBHotPlugKey) {"DriverService", 0, $(!REG_VT_SZ), "EL980N4"} endif CloseRegKey $(SupportedDevicesKey) CloseRegKey $(9800HotPlugKey) CloseRegKey $(9805HotPlugKey) ;CloseRegKey $(PortAHotPlugKey) ;CloseRegKey $(PortBHotPlugKey) ; End Add Compaq in hot plug support ******************************************* install "Install-SHD" set TrayIconList = {TCAUDIAG,$(NoTitle),$(!REG_VT_SZ),$(DIAGCARDTYPE)} OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG" $(!REG_KEY_ALL_ACCESS) NDKeyNt ifstr $(NDKeyNt) == "" CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\3Com\TCAUDIAG", 0, GenericClass} "" $(!REG_KEY_WRITE) "" NDKeyNt endif SetRegValue $(NDKeyNt) $(TrayIconList) CloseRegKey $(NDKeyNt) ; Paul May - 12/08/99 6:27pm ;;; Add in entries to support the DA/Touchdown integration - REALNICS Key OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG\RealNICs" $(!REG_KEY_ALL_ACCESS) RealNICsKey Ifstr(i) $(RealNICsKey) == "" ; key doesn't exist so create it CreateRegKey $(!REG_H_LOCAL) {"SOFTWARE\3Com\TCAUDIAG\RealNICs", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" RealNICsKey endif Ifstr(i) $(RealNICsKey) != "" ; key exists OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_ALL_ACCESS) ServicesKey Ifstr(i) $(ServicesKey) != "" ; key exists EnumRegKey $(ServicesKey) DriverList ForListDo $(DriverList) ;;; Check whether any python driver instances are present still ;;; If not, remove Touchdown and delete some leftover files set foundPythonInstance = FALSE set Driver = *($($), 1) Split-String "$(Driver)" "N" DriverTokens set DriverName = *($(DriverTokens), 1) ifstr(i) $(Driver) != "El980n4" ifstr(i) $(DriverName) == "El980" ;;; We have found a Python-related key set foundPythonInstance = TRUE endif endif ifstr(i) $(Driver) != "El98xn4" ifstr(i) $(DriverName) == "El98x" ;;; We have found a Python-related key set foundPythonInstance = TRUE endif endif Ifstr(i) $(foundPythonInstance) == "TRUE" ;; Add this driver instance name to the list of realNICs SetRegValue $(RealNICsKey) {$(Driver), 0, $(!REG_VT_SZ), ""} endif set found3ComClientInstance = FALSE Split-String "$(Driver)" "x" DriverTokens set DriverName = *($(DriverTokens), 1) ifstr(i) $(Driver) != "El90x" ifstr(i) $(DriverName) == "El90" ;;; We have found a 3Com client-related key set found3ComClientInstance = TRUE endif endif Split-String "$(Driver)" "d" DriverTokens set DriverName = *($(DriverTokens), 1) ifstr(i) $(Driver) != "El90xnd" ifstr(i) $(DriverName) == "El90xn" ;;; We have found a 3Com client-related key set found3ComClientInstance = TRUE endif endif Split-String "$(Driver)" "x" DriverTokens set DriverName = *($(DriverTokens), 1) ifstr(i) $(Driver) != "EL99X" ifstr(i) $(DriverName) == "El99" ;;; We have found a 3Com client-related key set found3ComClientInstance = TRUE endif endif Ifstr(i) $(found3ComClientInstance) == "TRUE" ;; Add this driver instance name to the list of realNICs SetRegValue $(RealNICsKey) {$(Driver), 0, $(!REG_VT_SZ), ""} endif EndForListDo CloseRegKey $(ServicesKey) Endif Endif CloseRegKey $(DiagKey) CloseRegKey $(RealNICsKey) ;End - Add in entries to support the DA/Touchdown integration - REALNICS Key ;;ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(CorrectProdHWName) $(!REG_KEY_ALL_ACCESS) KeyService Ifstr $(KeyService) != "" SetRegValue $(KeyService) {ImagePath,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdSWUpgradePath)} else goto fatalregistry endif CloseRegKey $(KeyService) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\EventLog\System\"$(CorrectProdHWName) $(!REG_KEY_ALL_ACCESS) KeyEventLog Ifstr $(KeyEventLog) != "" SetRegValue $(KeyEventLog) {EventMessageFile,$(NoTitle),$(!REG_VT_SZ),$(CorrectNetEventDLL)} else goto fatalregistry endif CloseRegKey $(KeyEventLog) ;;endif ifint $(OldVersionExisted) == $(FALSE) Ifstr(i) $(DoCopy) == "YES" Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO ifint $($ShellCode) != $(!SHELL_CODE_OK) Goto ShellCodeError endif 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 Endif ;******* CREATE DIAG REGISTRY FOR TOUCHDOWN SINCE WE SUPPORT IT ************** set TrayIconList = {TCAUDIAG,$(NoTitle),$(!REG_VT_SZ),$(DIAGCARDTYPE)} OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG" $(!REG_KEY_ALL_ACCESS) NDKeyNt ifstr $(NDKeyNt) != "" SetRegValue $(NDKeyNt) $(TrayIconList) CloseRegKey $(NDKeyNt) endif ;****************************************************************************************** NextCommon =+ ;****************************************************************************************** ifint $(OldVersionExisted) == $(FALSE) Ifstr(i) $(DoCopy) == "YES" 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 Endif ;**************** check if 980XN and copy new NDIS4 driver ******************** install "Install-OptionNewNDIS" ;install "Install-Option" endcurrent =+ 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 EndWait goto successful updateparameters =+ Debug-Output "$(InfFile) : Updateparameters" set HardParameterKey = $($R3) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif CloseRegKey $(KeyParameters) goto successful bindingadapter =+ Debug-Output "$(InfFile) : bindingadapter" Return STATUS_SUCCESSFUL set Error = "Binding: Sorry, not yet implemented." goto fatal removeadapter = + ;**************************************************************************************** ; Check if 905BC or Boomerang ;**************************************************************************************** set CurrentCardPath = $(!NTN_RegBase) set TitleValue = "" set CardTitle = "" set NameTokenList = "" OpenRegKey $(!REG_H_LOCAL) "" $(CurrentCardPath) $(!REG_KEY_READ) CurrentCardKey Ifstr(i) $(CurrentCardKey) != "" GetRegValue $(CurrentCardKey) "Title" TitleValue set CardTitle = *($(TitleValue), 4) Split-String $(CardTitle) "()" NameTokenList set NameCode = *($(NameTokenList), 3) CloseRegKey $(CurrentCardKey) Endif ;end checking currentCardKey ;**************************************************************************************** set CorrectProdHWName = $(ProdHWName) set CorrectProdSWName = $(ProdSWName) set CorrectProdKeyName = $(ProdKeyName) Debug-Output "$(InfFile) : removeadapter" Debug-Output "$(InfFile) : ----> $(CorrectProdKeyName), $(!NTN_RegBase)" Ifstr(i) $(CorrectProdKeyName) == $(!NTN_RegBase) Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(CorrectProdSWName) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif else ; Paul May - 12/04/99 10:01am ; Populate Driver Instance OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(!REG_KEY_ALL_ACCESS) CardIndexKey Ifstr(i) $(CardIndexKey) != "" ; key exists GetRegValue $(CardIndexKey) "ServiceName" ServiceNameList ;;; The name of the service being removed is stored in DriverInstance set DriverInstance = *($(ServiceNameList), 4) endif CloseRegKey $(CardIndexKey) ; End - Populate Driver Instance Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(CorrectProdSWName), $(!NTN_RegBase) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif ; **************************************************************************************************************************** ; ; Check_For_3C98X_Service ; ; The following routine checks for the presense of the Python service in the registry and sets the global flag ; "PythonPresent" accordingly ; ; **************************************************************************************************************************** OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\CurrentControlSet\Services" $(!REG_KEY_ALL_ACCESS) WindowsServicesKey Ifstr(i) $(WindowsServicesKey) != "" ; key exists EnumRegKey $(WindowsServicesKey) ServicesList ; Check whether any 3C98X driver instances are present ; Set Global Flag Accordingly set Count = "1" set PythonPresent = "FALSE" set NICINSTANCE = "0" ; This routine will loop though every key under "SYSTEM\CurrentControlSet\Services" till there are no more entries ForListDo $(ServicesList) set CurrentServiceName = *($(ServicesList), $(Count)) set ThisServiceName = *($(CurrentServiceName),1) ; Check to see if the current Service Instance contains the string "EL980n4" case sensitively Split-String "$(ThisServiceName)" "N4" ParsedServiceNameList set ParsedServiceName = *($(ParsedServiceNameList),1) ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE), "NONFATAL", "The parsed service name is "$(ParsedServiceName)"" ifstr(i) $(ParsedServiceName) == "EL980" ;Increment the Nic instace counter set-add NICINSTANCE = $(NICINSTANCE),"1" endif ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE), "NONFATAL", "PythonPresent variable is "$(PythonPresent)"" ; Increment Counter set-add Count = $(Count),"1" ; Artificial trouble shooting limiting routine ; ifstr $(Count) == "3" ; Halt! ; endif EndForListDo ;$(ServicesList) CloseRegKey $(WindowsServicesKey) ; HALT! BailOut = + ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE), "NONFATAL", "Nicinstance variable is "$(NICINSTANCE)"" ifint $(NICINSTANCE) > "1" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) NONFATAL "3C98X service still present in this machine." else-ifint $(NICINSTANCE) == "0" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) NONFATAL "No more instances of 3C98X detected so it's time to cleanup!" install "Clean_Up_Registry" Set RemoveList = {} Set DelOnRebootList = {} set RemoveList = >($(RemoveList), #(Files-RemoveList, srv_confe, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, srv_confh, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, srv_confu, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_fix, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_data, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, oemel98x, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, el98xn4d, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, el98xn4s, 1)) ForListDo $(RemoveList) Debug-Output "Removing "$($) LibraryProcedure Status , $(!LIBHANDLE), DelFile $($) Debug-Output "Status is "$(Status) EndForListDo ForListDo $(RemoveList) Set DelStatus = "" Debug-Output "Deleting File "$($) Set FLibraryErrCtl = 1 ;LibraryProcedure DelStatus $(!UTILHANDLE), DelFile $($) ifstr(i) $(DelStatus) == "FAILED" Set DelOnRebootList = >($(DelOnRebootList), $($)) EndIf LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($) Set FLibraryErrCtl = 0 EndForListDo ForListDo $(DelOnRebootList) Debug-Output "File to remove on reboot = "$($) AddFileToDeleteList $($) Set FLibraryErrCtl = 1 ;LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($) Set FLibraryErrCtl = 0 EndForListDo else-ifint $(NICINSTANCE) == "1" ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) NONFATAL "No more instances of 3C98X detected so it's time to cleanup!" install "Clean_Up_Registry" Set RemoveList = {} Set DelOnRebootList = {} set RemoveList = >($(RemoveList), #(Files-RemoveList, srv_confe, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, srv_confh, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, srv_confu, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_fix, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, pci_data, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, oemel98x, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, el98xn4d, 1)) set RemoveList = >($(RemoveList), #(Files-RemoveList, el98xn4s, 1)) ForListDo $(RemoveList) Debug-Output "Removing "$($) LibraryProcedure Status , $(!LIBHANDLE), DelFile $($) Debug-Output "Status is "$(Status) EndForListDo ForListDo $(RemoveList) Set DelStatus = "" Debug-Output "Deleting File "$($) Set FLibraryErrCtl = 1 ;LibraryProcedure DelStatus $(!UTILHANDLE), DelFile $($) ifstr(i) $(DelStatus) == "FAILED" Set DelOnRebootList = >($(DelOnRebootList), $($)) EndIf LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($) Set FLibraryErrCtl = 0 EndForListDo ForListDo $(DelOnRebootList) Debug-Output "File to remove on reboot = "$($) AddFileToDeleteList $($) Set FLibraryErrCtl = 1 ;LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($) Set FLibraryErrCtl = 0 EndForListDo endif ; End Check_For_3C98X_Service ; **************************************************************************************************************************** ; Paul May - 12/04/99 9:35am ;;; Remove the Service Name held in DriverInstance from the RealNICs key OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG\RealNICs" $(!REG_KEY_ALL_ACCESS) RealNICsKey Ifstr(i) $(RealNICsKey) != "" ; key exists EnumRegValue $(RealNICsKey) RealNICsList set RealNICsValues = {} ForListDo $(RealNICsList) set RealNICsArray = *($($), 1) ForListDo $(RealNICsArray) set DriverInstanceName = *($($), 1) QueryListSize RealNICsValuesSize $(RealNICsValues) ifstr(i) $(RealNICsValuesSize) == 0 set RealNICsValues = {$(DriverInstanceName)} else set RealNICsValues = >($(RealNICsValues), $(DriverInstanceName)) endif EndForListDo EndForListDo set NewRealNICsValues = {} ForListDo $(RealNICsValues) ifstr(i) *($($), 1) != $(DriverInstance) set NewRealNICsValues = >($(NewRealNICsValues), *($($), 1)) endif EndForListDo CloseRegKey $(DiagKey) OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\TCAUDIAG" $(!REG_KEY_ALL_ACCESS) DiagKey Ifstr(i) $(DiagKey) != "" ; key exists DeleteRegTree $(DiagKey) "RealNICs" CreateRegKey $(DiagKey) {"RealNICs", 0, GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" NewRealNICsKey Ifstr(i) $(NewRealNICsKey) != "" ; key exists ForListDo $(NewRealNICsValues) SetRegValue $(NewRealNICsKey) {*($($), 1), 0, $(!REG_VT_SZ), ""} EndForListDo Endif Endif Endif CloseRegKey $(NewRealNICsKey) CloseRegKey $(RealNICsKey) CloseRegKey $(DiagKey) ; End Remove the Service Name held in DriverInstance from the RealNICs key goto end UpgradeSoftware = + set CurrentCardPath = $(!NTN_RegBase) set TitleValue = "" set CardTitle = "" set NameTokenList = "" OpenRegKey $(!REG_H_LOCAL) "" $(CurrentCardPath) $(!REG_KEY_READ) CurrentCardKey Ifstr(i) $(CurrentCardKey) != "" GetRegValue $(CurrentCardKey) "Title" TitleValue set CardTitle = *($(TitleValue), 4) Split-String $(CardTitle) "()" NameTokenList set NameCode = *($(NameTokenList), 3) CloseRegKey $(CurrentCardKey) Endif ; 980X CARD set CorrectProdHWName = $(ProdHWName) set CorrectProdSWName = $(ProdSWName) set CorrectNetRuleSWType = $(NetRuleSWType) set CorrectNetRuleSWBindForm = $(NetRuleSWBindForm) set CorrectNetRuleSWClass = $(NetRuleSWClass) set CorrectNetRuleSWBindable = $(NetRuleSWBindable) set CorrectNetRuleHWBindForm = $(NetRuleHWBindForm) set CorrectNetRuleHWType = $(NetRuleHWType) set CorrectNetRuleHWClass = $(NetRuleHWClass) set CorrectProdKeyName = $(ProdKeyName) set CorrectParamKeyName = $(ParamKeyName) ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant) set CorrectNetEventDLL = $(ND4NetEventDLL) set CorrectProdSWImagePath = $(ND4ProdSWImagePath) set CorrectProdSWUpgradePath = $(ND4ProdSWUpgradePath) else set CorrectNetEventDLL = $(ND3NetEventDLL) set CorrectProdSWImagePath = $(ND3ProdSWImagePath) set CorrectProdSWUpgradePath = $(ND3ProdSWUpgradePath) endif ;**************************************************************************************** OpenRegKey $(!REG_H_LOCAL) "" $(CorrectProdKeyName) $(!REG_KEY_ALL_ACCESS) KeyProduct Ifstr $(KeyProduct) != "" Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif set !UG_Filename = $($R0) install "Install-INF" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS goto fatal endif SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProdMajorVer)} SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProdMinorVer)} SetRegValue $(KeyProduct) {Review,$(NoTitle),$(!REG_VT_DWORD),$(ProdReview)} SetRegValue $(KeyProduct) {EDVersion,$(NoTitle),$(!REG_VT_SZ),$(EtherDiskVersion)} CloseRegKey $(KeyProduct) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(CorrectProdHWName) $(!REG_KEY_ALL_ACCESS) KeyService Ifstr $(KeyService) != "" SetRegValue $(KeyService) {ImagePath,$(NoTitle),$(!REG_VT_SZ),$(CorrectProdSWUpgradePath)} else goto fatalregistry endif CloseRegKey $(KeyService) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\EventLog\System\"$(CorrectProdHWName) $(!REG_KEY_ALL_ACCESS) KeyEventLog Ifstr $(KeyEventLog) != "" SetRegValue $(KeyEventLog) {EventMessageFile,$(NoTitle),$(!REG_VT_SZ),$(CorrectNetEventDLL)} else goto fatalregistry endif CloseRegKey $(KeyEventLog) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) $(!REG_KEY_ALL_ACCESS) KeyNt ;****************************************************************************************************************** ;Paul May 10/8/99 ;Update Loop set ValueEnable = ENABLE set Count = "0" set MaxLoop = "128" Begin_Upgrade_Loop =+ ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING "Count equals "$(Count) OpenRegKey $(KeyNt) "" $(CorrectProdHWName)$(Count)"\Parameters" $(!REG_KEY_ALL_ACCESS) TestKey ifstr $(TestKey) != $(KeyNull) OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKey)$(Count)"\NetRules" $(!REG_KEY_ALL_ACCESS) NetCardKey ifstr $(NetCardKey) != $(KeyNull) SetRegValue $(NetCardKey) {"InfName",$(NoTitle),$(!REG_VT_SZ),$(!UG_Filename)} CloseRegKey $(NetCardKey) else goto Emergency_Out endif CloseRegKey $(TestKey) endif ;Increment Loop counter then compare against maximum allowed value set-add Count = $(Count),"1" ifstr(i) $(Count) == $(MaxLoop) goto Emergency_Out else goto Begin_Upgrade_Loop endif ;****************************************************************************************************************** Emergency_Out =+ else goto fatalregistry endif install "Install-OptionNewNDIS" goto laststep upgradeOldNDIS =+ ifstr $(!STF_PLATFORM) == $(INF_PROCESSER) ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant) ;OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" + ;$(!REG_KEY_ALL_ACCESS) KeyNt ;set TrayIconList = {TCASUTIEXE,$(NoTitle),$(!REG_VT_SZ),$(TrayIconExe)" -off"} ;SetRegValue $(KeyNt) $(TrayIconList) ;DeleteRegValue $(KeyNt) "COMSMDEXE" ;CloseRegKey $(KeyNt) ifstr $(Install_3NIC_Diag) == "YES" Debug-Output "$(InfFile) : (Install_3NIC_Diag) == "YES"" ; Shell "", DiagRegistry ; *** ;install "Install-3nicdiag" set InstallMode_Save = $(!NTN_InstallMode) set !NTN_InstallMode = install set SRCDIR_OVERRIDE_Save = $(!STF_SRCDIR_OVERRIDE) set !STF_SRCDIR_OVERRIDE = $(SrcDir) Shell $(!STF_WINDOWSSYSPATH)\TCAITDI.INF, InstallOption, $(CurrLang), + "TCAITDI" ,$(SrcDir), YES, YES, YES, NO set !NTN_InstallMode = $(InstallMode_Save) set !STF_SRCDIR_OVERRIDE = $(SRCDIR_OVERRIDE_Save) ifstr(i) $(Install_Shortcuts) == "YES" Debug-Output "$(InfFile) : (Install_Shortcuts) == "YES"" ; *** Responsilibity of the MasterNavigator *** ; RunProgram ExitCode "Windows Directory" "" $(UnInstallerEXE).EXE "-setup" ;Debug-Output "$(InfFile) : Enabling Tray Icon" ;OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" + ;$(!REG_KEY_ALL_ACCESS) KeyNt ;set TrayIconList = {TCASUTIEXE,$(NoTitle),$(!REG_VT_SZ),$(TrayIconExe)" -off"} ;SetRegValue $(KeyNt) $(TrayIconList) ;DeleteRegValue $(KeyNt) "COMSMDEXE" ;CloseRegKey $(KeyNt) endif endif endif endif ;******************************************************************************** install "Install-Option" ;********************************************************************************* laststep =+ ;********************************************************************************* 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 ; *** Responsilibity of the MasterNavigator *** ; RunProgram ExitCode "Windows Directory" "" $(UnInstallerEXE).EXE "-upgrade" goto end successful = + Debug-Output "$(InfFile) : Successful" goto end abandon = + Debug-Output "$(InfFile) : Abandon" ForListDo $(OEM_ABANDON_OPTIONS) Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(CorrectProdSWName), $($) 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 Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(CorrectProdSWName), FALSE ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif detect checkFileExist set Uninst = *($(uninstFound), 1) set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end warning = + Debug-Output "$(InfFile) : 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 = + Debug-Output "$(InfFile) : nonfatalinfo" Set CommonStatus = STATUS_USERCANCEL Set Severity = STATUS goto nonfatalmsg nonfatal = + Debug-Output "$(InfFile) : nonfatal" Set Severity = NONFATAL goto nonfatalmsg nonfatalmsg = + Debug-Output "$(InfFile) : 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 "RemoveAdapter" endif fatalregistry = + Debug-Output "$(InfFile) : fatalregistry" Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal fatal = + Debug-Output "$(InfFile) : 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 = + ifint $($ShellCode) == $(!SHELL_CODE_NO_SUCH_INF) Debug-Output "$(InfFile) : ShellCodeError - SHELL_CODE_NO_SUCH_INF" else-ifint $($ShellCode) == $(!SHELL_CODE_NO_SUCH_SECTION) Debug-Output "$(InfFile) : ShellCodeError - SHELL_CODE_NO_SUCH_SECTION" else Debug-Output "$(InfFile) : ShellCodeError - SHELL_CODE_ERROR" endif set DlgType = "MessageBox" set STF_MB_TITLE = $(ShellCodeErrorTitle) set STF_MB_TEXT = $(ShellCodeErrorText) set STF_MB_TYPE = 1 set STF_MB_ICON = 3 set STF_MB_DEF = 1 ui start "Error Message" goto setfailed setfailed = + Debug-Output "$(InfFile) : 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) [checkFileExist] uninstFound = {} ? $(!LIBHANDLE) FindFileInstances $(!STF_WINDOWSSYSPATH)"\un3c90xa.exe" DiagFound = {} ? $(!LIBHANDLE) FindFileInstances $(!STF_WINDOWSSYSPATH)"\tcaudiag.exe" [Install-Option] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" Debug-Output $(InfName)"Adding files: Files-$(NDIS_VER), SrcDir=$(SrcDir)" AddSectionFilesToCopyList Files-$(NDIS_VER) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers ; DA installationn is now the responsibility of the Master Navigator ; ifstr(i) (*($(CurrentVersionValue),4)) == $(NT400VersionConstant) ; AddSectionFilesToCopyList Files-DA $(SrcDir) $(!STF_WINDOWSSYSPATH) ; endif set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit ;*********************************************************************************** [Install-OptionNewNDIS] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" Debug-Output $(InfName)"Adding files: Files-$(NDIS_VER), SrcDir=$(SrcDir)" AddSectionFilesToCopyList Files-980BC$(NDIS_VER) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit ;************************************************************************************** [Install-3nicdiag] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" ;AddSectionFilesToCopyList Files-3nicdiag $(SrcDir) $(!STF_WINDOWSSYSPATH) ;AddSectionFilesToCopyList Files-Cpl $(SrcDir) $(!STF_WINDOWSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit [Install-INF] set STF_VITAL = "" AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit [Install-Uninstaller] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" AddSectionFilesToCopyList Files-Uninstaller $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit [Install-OTHER] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" AddSectionFilesToCopyList Files-OTHER $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit [Install-SHD] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" AddSectionFilesToCopyList Files-SHD $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_OVERWRITE = TRUE set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit [Clean_Up_Registry] ; 1.) OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com" $(!REG_KEY_ALL_ACCESS) THIS_KEY DeleteRegTree $(THIS_KEY) "EL98X" CloseRegKey $(THIS_KEY) ; 2.) OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com" $(!REG_KEY_ALL_ACCESS) THIS_KEY DeleteRegTree $(THIS_KEY) "EL980N4" CloseRegKey $(THIS_KEY) ; 3.) OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\InstalledOptions" $(!REG_KEY_ALL_ACCESS) THIS_KEY DeleteRegTree $(THIS_KEY) "3Com Corporation" CloseRegKey $(THIS_KEY) ; 4.) ;OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\3Com\Update" $(!REG_KEY_ALL_ACCESS) THIS_KEY ;DeleteRegTree $(THIS_KEY) "3C980X" ;CloseRegKey $(THIS_KEY) ; 5.) Clean Up Compaq Hot plug support registry entries OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Compaq\Cpqrcmc\ClassDLLs\NicMiniPort" $(!REG_KEY_ALL_ACCESS) THIS_KEY DeleteRegTree $(THIS_KEY) "EL980N4" CloseRegKey $(THIS_KEY) Exit [Source Media Descriptions] 1 = "ECD210P980X", TAGFILE = 3CDdisk1 [ProductType] STF_PRODUCT = Winnt [Files-Inf] 1, oemsetup.inf,SIZE=36000, RENAME=$(!UG_Filename) [Files-980BCNDIS3] 1,EL98XN3.SYS , SIZE=25001 [Files-980BCNDIS4] 1,EL98XN4.SYS , SIZE=25001 [Files-NDIS3] 1,EL98XN3.SYS , SIZE=25001 [Files-NDIS4] 1,EL98XN4.SYS , SIZE=25001 [Files-Uninstaller] 1,UN3C90XA.EXE, SIZE=6617 [Files-SHD] 1,srv_conf.EXE, SIZE=307 1,srv_conf.HLP, SIZE=500 [Files-Other] 1,pci_fix.sys, SIZE=65 ; The file list below was requested by Certification Group team members [Files-RemoveList] srv_confe = $(!STF_WINDOWSSYSPATH)\srv_conf.exe srv_confh = $(!STF_WINDOWSSYSPATH)\srv_conf.hlp srv_confu = $(!STF_WINDOWSSYSPATH)\srv_conf.ex_ pci_fix = $(!STF_WINDOWSSYSPATH)\pci_fix.sys pci_data = $(!STF_WINDOWSSYSPATH)\pci_data.exe oemel98x = $(!STF_WINDOWSSYSPATH)\oemel98x.inf el98xn4d = $(!STF_WINDOWSSYSPATH)\driver\el98xn4.sys el98xn4s = $(!STF_WINDOWSSYSPATH)\el98xn4.sys ;3c980x = $(!STF_WINDOWSSYSPATH)\3c980x.ini ;instinfo = $(!STF_WINDOWSSYSPATH)\instinfo.ini [LanguagesSupported] ENG [OptionsTextENG] 3C980X = "3Com 3C98x 10/100 Server NIC" [FileConstantsENG] ProCaption = "Windows NT NIC 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:" ConnectionList = ^(ConnectionChoices, 1) ConnectionValues = ^(ConnectionChoices, 2) NoList = ^(NoChoices, 1) NoValues = ^(NoChoices, 2) ShellCodeErrorTitle = "Error: "$(Function$(Option)Title) ShellCodeErrorText = "Shell Code Error." CANNOT_FIND_ANY_CARD = "Network card is not present in the system" CANNOT_FIND_ANY_UNINSTALLED_CARD = "All the NICs supported by this product have already been installed." [DialogConstantsENG] Help = "&Help" Exit = "Cancel" OK = "OK" HelpContext = "" Continue = "Continue" Cancel = "Cancel" ;(%VER OEMSETUP.INF - Installation file for 3C98X - v2.1.0.57)