;*********************************************************************** ; ; OEMSETUP.INF ; ; Symbol Windows NT 4.0 Sla41 driver installation for Wireless LAN Cards ; ; ;----------------------------------------------------------------------- ; OPTION TYPE ; ----------- ; This identifies the Option type we are dealing with. The different ; possible types are: ; ; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ... ; ; Types specific to networking: ; ; NetAdapter, a netcard / adapter combination or just a netcard ; NetDriver, just a netcard driver ; NetTransport, a complete NDIS-compliant TDI transport stack ; NetService, an NT networking service ; NetWork, a complete network ensemble. ; NetProvider a complete network which supports NT MPR protocol ;============================================================================ ; Current Version %VER 2.2.5.10a ;============================================================================ [Identification] OptionType = NetAdapter ;----------------------------------------------------------------------- ; PlatformsSupported ; ------------------ ; This identifies the platforms supported by the adapter card. ; Possible types are: ; ; ISA, EISA, PCI, PCMCIA and MCA ;----------------------------------------------------------------------- [PlatformsSupported] ISA PCMCIA PCI ;----------------------------------------------------------------------- ; OPTION LIST ; ----------- ; This section lists the OEM Option key names. These keys are locale ; independent and used to represent the option in a locale independent ; manner. ; ;----------------------------------------------------------------------- [Options] Sla41 Sla41PCI ;*********************************************************************** ; CONSTANTS FOR USING DIALOGS ;*********************************************************************** [FileConstants] ; ; File names, etc. ; UtilityInf = "UTILITY.INF" ParamInf = "NCPARAM.INF" subroutineinf = "SUBROUTN.INF" SoftwareType = "driver" Exit_Code = 0 ; ; EventLog Message File ; NetEventDLL = "%SystemRoot%\System32\netevent.dll" IoLogMsgDLL = "%SystemRoot%\System32\IoLogMsg.dll" ; ; Product Info ; HKEY_LOCAL_MACHINE\SOFTWARE\Symbol\CurrentVersion ; Manufacturer = "Symbol" ProductMajorVersion = "2" ProductMinorVersion = "2" ProductEngVersion = "510" ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion) ProductInfName = "oemnadsy.inf" ; ; Software ; HKEY_LOCAL_MACHINE\SOFTWARE\Symbol\CurrentVersion\NetRules ; ProductSoftwareName = "Sla41ND4" ProductSoftwareImagePath = "\SystemRoot\System32\drivers\Sla41ND4.sys" NetRuleSoftwareType = "Sla41Sys ndisDriver Sla41Driver" NetRuleSoftwareUse = $(SoftwareType) NetRuleSoftwareBindForm = """Sla41Sys"" yes no container" NetRuleSoftwareClass = {"Sla41Driver basic"} NetRuleSoftwareBindable = {"Sla41Driver Sla41Adapter non exclusive 100"} ; ; Hardware ; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\n\NetRules ; ProductHardwareName = "Sla41ND4" ProductHardwareSla41Title = "Symbol LA-41x1 Spectrum24 Wireless LAN PC Card" ProductHardwareSla41Description = "Symbol LA-41x1 Spectrum24 Wireless LAN PC Card" ProductHardwareSla41PCITitle = "Symbol LA-41x3 Spectrum24 Wireless LAN PCI Card" ProductHardwareSla41PCIDescription = "Symbol LA-41x3 Spectrum24 Wireless LAN PCI Card" NetRuleHardwareType = "Sla41 Sla41Adapter" NetRuleHardwareBindForm = " yes yes container" NetRuleHardwareClass = {"Sla41Adapter basic"} ; ; Registry Key ; ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters" ; [GeneralConstants] ; ; Program flow control variables. ; from = "" to = "" ; ; Return codes; Exit_Code is set to one of these ; ExitCodeOk = 0 ExitCodeCancel = 1 ExitCodeFatal = 2 CurrentControlSet = "SYSTEM\CurrentControlSet" KeyNull = "" MAXIMUM_ALLOWED = 33554432 RegistryErrorIndex = NO_ERROR KeyProduct = "" KeyParameters = "" ProcessingMode = "0" ; Default = 0 (Install) SYMBOL_DS11_GUID = "{0501BD06-A25B-11d3-AD24-00A0F8FFFF62}" ; Adapter Model SLA4111_AdapterModel = "LA4111 Spectrum24 Wireless LAN PC Card" SLA4113_AdapterModel = "LA4123 Spectrum24 Wireless LAN PCI Card" TRUE = 1 FALSE = 0 NoTitle = 0 ExitState = "Active" OldVersionExisted = $(FALSE) DriverPath = $(!STF_NTPATH)\drivers ;******************************************************************************* ; Define Vendor/Device IDs for support adapters. Each support adapter is listed ; in the format {, }. ;******************************************************************************* [VendorDeviceIDs] {5474, 0001} ; 0x1562, 0x0001 [date] ; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour, ; Minute, Second } Now = {} ? $(!LIBHANDLE) GetSystemDate ;--------------------------------------------------------------------------- ; 1. Identify ; ; DESCRIPTION: To verify that this INF deals with the same type of options ; as we are choosing currently. ; ; INPUT: None ; ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL ; $($R1): Option Type (COMPUTER ...) ; $($R2): Diskette description ;--------------------------------------------------------------------------- [Identify] ; ; read-syms Identification set Status = STATUS_SUCCESSFUL set Identifier = $(OptionType) set Media = #("Source Media Descriptions", 1, 1) set !UG_Filename = $(ProductInfName) Return $(Status) $(Identifier) $(Media) ;------------------------------------------------------------------------ ; 2. ReturnOptions: ; ; DESCRIPTION: To return the option list supported by this INF and the ; localised text list representing the options. ; ; ; INPUT: $($0): Language used. ( ENG | FRN | ... ) ; ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL | ; STATUS_NOLANGUAGE ; STATUS_FAILED ; STATUS_NOTSUPPORTED ; ; $($R1): Option List ; $($R2): Option Text List ;------------------------------------------------------------------------ [ReturnOptions] ; ; Set Status = STATUS_FAILED Set OptionList = {} Set OptionTextList = {} ; ; Check if the language requested is supported ; set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) ; ; Check if the platforms requested is supported ; ifstr(i) $($1) == "" goto returnoptions endif set PlatformList = ^(PlatformsSupported, 1) Ifcontains(i) $($1) in $(PlatformList) goto returnoptions else Set Status = STATUS_NOTSUPPORTED goto finish_ReturnOptions endif else set Status = STATUS_NOLANGUAGE goto finish_ReturnOptions endif ; ; form a list of all the options and another of the text representing ; returnoptions = + set OptionList = ^(Options, 1) set OptionTextList = ^(OptionsText$($0), 1) set Status = STATUS_SUCCESSFUL finish_ReturnOptions = + Return $(Status) $(OptionList) $(OptionTextList) ;------------------------------------------------------------------------ ; ; InstallOption: ; ; This section is shelled to by main installation processing ; or by NCPASHEL.INF during reconfig, removal, update, etc. ; ; ; FUNCTION: To copy files representing Options ; To configure the installed option ; To update the registry for the installed option ; ; INPUT: $($0): Language to use ; $($1): OptionID to install ; $($2): SourceDirectory ; $($3): AddCopy (YES | NO) ; $($4): DoCopy (YES | NO) ; $($5): DoConfig (YES | NO) ; ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL | ; STATUS_NOLANGUAGE | ; STATUS_USERCANCEL | ; STATUS_FAILED ; ;------------------------------------------------------------------------ [InstallOption] Set !G:DebugOutputControl = 1 Set !DebugOutputControl = 1 Set !STF_DISPLAYDEBUGOUTPUT = 1 ; ; Set default values for ; set Status = STATUS_FAILED ; ; extract parameters ; set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) ; ; Check if the language requested is supported ; set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) NOT-IN $(LanguageList) Return STATUS_NOLANGUAGE endif set-subst LF = "\n" read-syms GeneralConstants read-syms FileConstants read-syms DialogConstants$(!STF_LANGUAGE) ifstr(i) $(!NTN_Origination) == "NCPA" set Continue = $(OK) endif read-syms FileConstants$(!STF_LANGUAGE) detect date set-title $(FunctionTitle) Set AdapterCardType = "PC Card" ;set default adapter type PCMCIA ifstr(i) $(Option) == Sla41PCI Set AdapterCardType = "PCI Card" endif set to = Begin set from = Begin ; ; Assume all is well. ; set CommonStatus = STATUS_SUCCESSFUL EndWait ; ; Set up the operation-mode-based variables and gaily welcome ; the user. If the "install mode" variable is improperly set, ; assume this is a new installation. ; Begin = + Debug-Output $(ProductInfName)": InstallOption: Begin label Entered" Set ActivateDetection = FALSE Ifstr(i) $(!NTN_InstallMode) == deinstall Set StartLabel = removeadapter else-Ifstr(i) $(!NTN_InstallMode) == Update Set StartLabel = UpgradeSoftware else-Ifstr(i) $(!NTN_InstallMode) == bind Set StartLabel = bindingadapter else-Ifstr(i) $(!NTN_InstallMode) == configure Set CommonStatus = STATUS_REBOOT Set ActivateDetection = TRUE Set StartLabel = configureadapter ; ; You cannot config the software component ; Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) Debug-Output "Cannot configure the Sla41 driver software." Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error: cannot get an error string." goto ShellCodeError endif Set Error = $($R0) Set from = end Set to = end goto nonfatalinfo endif else Set ActivateDetection = TRUE Set StartLabel = installadapter Set OEM_ABANDON_OPTIONS = {} Set OEM_ABANDON_SOFTWARE = FALSE Set OEM_ABANDON_ON = TRUE endif ;=================================================== ; Netcard Detection logic ; ; Initialize use of netcard detection; ; Construct require global parameter variables ; Debug-Output $(ProductInfName)": ==================================================" Debug-Output $(ProductInfName)": STF_CWDDIR is: "$(!STF_CWDDIR) Debug-Output $(ProductInfName)": SrcDir is: "$(SrcDir) Debug-Output $(ProductInfName)": STF_LANGUAGE is: "$(!STF_LANGUAGE) Debug-Output $(ProductInfName)": Option is: "$(Option) Debug-Output $(ProductInfName)": !STF_NCDETECT is: "$(!STF_NCDETECT) Debug-Output $(ProductInfName)": !STF_NCOPTION is: "$(!STF_NCOPTION) Debug-Output $(ProductInfName)": !STF_NCDETCARD is: "$(!STF_NCDETCARD) Debug-Output $(ProductInfName)": !STF_NCDETINFO is: "$(!STF_NCDETINFO) Debug-Output $(ProductInfName)": ==================================================" Set DetectedCard = FALSE Set szDLLPath = $(!STF_WINDOWSSYSPATH)\Sla4ncpa.dll Ifstr(i) $(ActivateDetection) != TRUE goto BeginTransport Endif ; ; Set !STF_NC_PARAMS and !STF_NC_PNAMES by calling ; PARAM.INF!Param_BuildTypeLists. ; Pass it a list of the form: ; ; { { , ; , ; }, ; ... ; } ; Debug-Output $(ProductInfName)": Bulding default Parm List " Set LibHand = "" ; DLL Handle Set FLibraryErrCtl = 1 Ifstr(i) $(!NTN_InstallMode) == "install" Debug-Output $(ProductInfName)" In Install mode" 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 Set SrcDir = $($R1) Endif Set szDLLPath = $(SrcDir)NDIS5\Sla4NCPA.dll LoadLibrary "Setup Disk #1" $(szDLLPath) LibHand Else-Ifstr(i) $(!NTN_InstallMode) == Update LoadLibrary "x" $(szDLLPath) LibHand Else-Ifstr(i) $(!NTN_InstallMode) == configure Debug-Output $(ProductInfName)" In Configure mode" LoadLibrary "x" $(szDLLPath) LibHand Debug-Output $(ProductInfName)" Just called LoadLibrary LibHand is "$(LibHand) Endif contproc = + ; for install get default parameters else dislay dialog and retrieve parameters LibraryProcedure ResultList, $(LibHand), CmdDoDialog $(AdapterCardType) ; Process any errors from dll ifstr $(ResultList) != "0" Debug-Output "Error returned from call to Sla4NCPA.dll - exiting" Set CommonStatus = STATUS_USERCANCEL FreeLibrary $(LibHand) Goto end endif ; free dll ;FreeLibrary $(LibHand) BeginTransport =+ Debug-Output $(ProductInfName)": Install Mode = "$(!NTN_InstallMode) Set from = $(fatal) Set to = $(fatal) goto $(StartLabel) ;----------------------------------------------- ; Installation Section ;----------------------------------------------- installadapter = + Debug-Output $(ProductInfName)": InstallOption: installadapter" ; ; First, check whether the same version of the software exists ; OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) ; ; Same version already existed in the local machine ; Popup the dialog and ask the user whether he wants to continue ; CloseRegKey $(KeyProduct) ifstr(i) !(NTN_RegBase) == $(ProductKeyName) ; ; Cannot Install the same software again ; Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle), $(ProductVersion) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error: cannot get an error string." goto ShellCodeError endif goto end else ; ; Add a new adapter card? ; Shell $(UtilityInf), CardExistedDlg ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error: cannot get an error string." goto ShellCodeError endif ifstr(i) $($R1) != "OK" set CommonStatus = STATUS_USERCANCEL goto end endif set OldVersionExisted = $(TRUE) endif endif goto adaptersetup ;----------------------------------------------- ; Configuration Section ;----------------------------------------------- ; ; Get the current values of all the parameters ; configureadapter = + Debug-Output $(ProductInfName)": InstallOption: configureadapter = Entered" Ifstr $(KeyProduct) == $(KeyNull) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE Debug-Output "Cannot find component product key" goto fatalregistry Endif Endif ; ; Get the other parameters; they're attached to the service parameters key ; Debug-Output "INF: Shelling to FindService" Shell $(UtilityInf) FindService, $(KeyProduct) Ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "INF: FindService shell failure" goto ShellCodeError Endif Ifstr(i) $($R0) != NO_ERROR Debug-Output "INF: FindService Shell error: "$($R0) goto fatalregistry endif Set KeyParameters = $($R2) ; ; We don't need the services key, so close it. ; CloseRegKey $($R1) Ifstr $(KeyParameters) == $(KeyNull) Set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE Debug-Output "Cannot find component service" goto fatalregistry endif set OldVersionExisted = $(TRUE) adaptersetup = + Debug-Output $(ProductInfName)": InstallOption: adaptersetup = label Entered" ; do this only for PCI card Ifstr(i) $(AdapterCardType) == "PCI Card" ;----------------------------------------------------------------------- ; Find Adapter(s) by doing a PCI scan (of registry) with Utility.inf. ; The bus/slot/function of each adapter found are returned in a list ; of lists:{{bus0,slot0,func0},{bus1,slot1,func1},...{busN,slotN,funcN}} ;----------------------------------------------------------------------- ; Since multiple Vendor/DeviceIDs are supported, call GetPCIInformation ; for each set, building the bus/slot/function list. Set BusDevFuncList = {} ForListDo ^(VendorDeviceIDs, 1) Shell "Utility.Inf", GetPCIInformation, *($($), 1), *($($), 2) ForListDo $($R0) Set BusDevFuncList = >($(BusDevFuncList), $($)) EndForListDo EndForListDo ; Check for an empty adapter list and abort with error if empty. IfStr $(BusDevFuncList) == {} Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "STATUS" + "No supported adapters were found in the system. "+ "Install the adapter in another PCI slot and try again." return STATUS_USERCANCEL EndIf ;----------------------------------------------------------------------- ; Search through the bus/slot/function list looking for previously ; installed adapters that match. A match is found by searching through ; the installed miniport instances and matching on bus/slot. If a match ; is found, assume that the adapter is already setup and remove the ; adapter from the bus/slot/function list. ;----------------------------------------------------------------------- Set NewBusDevFuncList = {} Debug-Output "Symbol BEGIN BusDevFuncList = $(BusDevFuncList)" ForListDo $(BusDevFuncList) Set BusNumber = *($($), 1) Set SlotNumber = *($($), 2) Debug-Output "Symbol PCI : BusNumber = $(BusNumber)" Debug-Output "Symbol PCI : SlotNumber = $(SlotNumber)" Shell "Utility.Inf", IsNetCardAlreadyInstalled, $(BusNumber), + $(SlotNumber), "", "", "YES" IfStr $($R1) != "YES" Debug-Output "Symbol PCI NOT FOUND on : BusNumber = $(BusNumber) SlotNumber = $(SlotNumber)" Set NewBusDevFuncList = >($(NewBusDevFuncList), $($)) EndIf EndForListDo Set BusDevFuncList = $(NewBusDevFuncList) Debug-Output "Symbol END BusDevFuncList = $(BusDevFuncList)" ; Check for an empty adapter list. If the list is empty, it means that ; all detected adapters already have a NetworkCard entry in the ; registry, or some rogue NetworkCard is pretending to be the software ; key for this adapter. In any case, we're done. The user can remove ; the rogue NetworkCard and reinstall with this software if they want. IfStr $(BusDevFuncList) == {} return STATUS_USERCANCEL EndIf EndIf Set from = adapteroptions adapteroptions = + Debug-Output $(ProductInfName)": InstallOption: adapteroptions = label Entered" read-syms FileDependentDlg$(!STF_LANGUAGE) ;***08-26-96 Greg White commented out ;adapterverify = + ; Debug-Output $(ProductInfName)": InstallOption: aqdapterverify = label Entered" ; ; ; Set from = adapteroptions ; Set to = skipoptions ; Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING ; ifint $($ShellCode) != $(!SHELL_CODE_OK) ; Debug-Output "ShellCode error: cannot get an error string." ; goto ShellCodeError ; endif ; set Error = $($R0) ; goto Warning ; ; If installing, go create the necessary keys; ; if configuring, they're already open. ; skipoptions =+ Debug-Output $(ProductInfName)": InstallOption: skipoptions = label Entered" ifint $(OldVersionExisted) == $(TRUE) ifstr(i) $(!NTN_InstallMode) == configure goto writeparameters endif endif StartWait ; ; Add Software Component ; ifint $(OldVersionExisted) == $(FALSE) Debug-Output $(ProductInfName)": About to execute install Install-Option" install "Install-Option" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal endif endif Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), + $(ProductSoftwareName), + $(ProductSoftwareTitle), + $(ProductInfName), + $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+ $(NetEventDLL) Set OEM_ABANDON_SOFTWARE = TRUE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif ; ; At this point: ; $R1 contains the product version key handle; ; $R2 contains the NetRules subkey handle; ; $R3 contains the new Services key handle; and ; $R4 contains the Parameters key ; $R5 contains the Linkage Key ; set RegistryErrorIndex = $($R0) set KeyProduct = $($R1) Set SoftNetRulesKey = $($R2) CloseRegKey $($R3) CloseRegKey $($R4) CloseRegKey $($R5) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "Registry error: add software components" CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) goto fatalregistry endif set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+ {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+ {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+ {EngVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductEngVersion)},+ {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "Registry error: add value list." CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) goto fatalregistry endif set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+ {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, + {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, + {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, + {Infname,$(NoTitle),$(!REG_VT_SZ),$(ProductInfName)}} Shell $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "Resgitry error: add value list." goto fatalregistry endif endif ; ; Create the HARDWARE\Netcard region and its corresponding service ; Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(ProductInfName),$(ProductKeyName) ifint $($R4) != -1 Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4)) endif ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "Cannot add hardware component" goto ShellCodeError endif Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "Registry error: add hardware component" CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) goto fatalregistry 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 \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 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),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif CloseRegKey $($R1) Set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)"""" Set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm) Set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+ {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, + {Infname,$(NoTitle),$(!REG_VT_SZ),$(ProductInfName)}} Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "Resgitry error: add value list." CloseRegKey $(KeyParameters) CloseRegKey $(KeyAdapterRules) goto fatalregistry endif CloseRegKey $(KeyAdapterRules) goto writeparameters ; ; REQUIRED: $(KeyParameters) contains service Parameters key handle ; writeparameters = + ; ; Add version label ; Ifstr(i) $(AdapterCardType) == "PCI Card" ;----------------------------------------------------------------------- ; For each detected adapter, create a hardware component (miniport ; instance). ;----------------------------------------------------------------------- ForListDo $(BusDevFuncList) ; Get Bus and Slot from PCI device information Set BusNumber = *($($), 1) Set SlotNumber = *($($), 2) Debug-Output "Symbol PCI WRITE REGITRY : BusNumber = $(BusNumber)" Debug-Output "Symbol PCI WRITE REGITRY : SlotNumber = $(SlotNumber)" Set NewValueList = {{CLSGUID,$(NoTitle),$(!REG_VT_SZ),$(SYMBOL_DS11_GUID)},+ {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+ {Slot,$(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)},+ {NetType,$(NoTitle),$(!REG_VT_SZ),"WLAN"},+ {AdapterModel,$(NoTitle),$(!REG_VT_SZ),$(SLA4113_AdapterModel)}} EndForListDo else Set NewValueList = {{CLSGUID,$(NoTitle),$(!REG_VT_SZ),$(SYMBOL_DS11_GUID)},+ {NetType,$(NoTitle),$(!REG_VT_SZ),"WLAN"},+ {AdapterModel,$(NoTitle),$(!REG_VT_SZ),$(SLA4111_AdapterModel)}} endif Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList) FlushRegKey $(KeyParameters) CloseRegKey $(KeyParameters) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error. (Add Value List)" goto ShellCodeError endif ; Notify Sla4NCPA to update it's stored parameters ;LoadLibrary "Setup Disk #1" $(szDLLPath) LibHand LibraryProcedure ResultList, $(LibHand), CmdWriteToRegistry $(KeyParameters) FreeLibrary $(LibHand) bail_out=+ Debug-Output "Just called AddValueList, KeyParameters" Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR Debug-Output "Registry error: Add value list" goto fatalregistry endif EndWait goto successful ;----------------------------------------------- ; Binding section ;----------------------------------------------- bindingadapter =+ set Error = "Binding: Sorry, not yet implemented." goto fatal ;----------------------------------------------- ; Removeadapter section ;----------------------------------------------- removeadapter = + Debug-Output "Remove Adapter ProductKeyName "$(ProductKeyName) Debug-Output "Remove Adapter NTN_RegBase "$(!NTN_RegBase) ; remove installed files AddfileToDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\Sla41ND4.SYS" AddfileToDeleteList $(!STF_WINDOWSSYSPATH)"\Sla4NCPA.DLL" AddfileToDeleteList $(!STF_WINDOWSSYSPATH)"\Sla4NCPA.HLP" AddfileToDeleteList $(!STF_WINDOWSSYSPATH)"\"$(ProductInfName) Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) ; Remove Software Component Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), $(ProductSoftwareName) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif else Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), $(ProductSoftwareName), $(!NTN_RegBase) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end ;----------------------------------------------- ; Upgrade Software section ;----------------------------------------------- UpgradeSoftware = + ; Upgrade software component ; OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) Debug-Output "Maximum_Allowed Key Product is NULL" endif Ifstr $(KeyProduct) != $(KeyNull) install "Install-Update" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS goto fatal endif ; Upgrade the version number ; SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)} SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)} SetRegValue $(KeyProduct) {EngVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductEngVersion)} SetRegValue $(KeyProduct) {SlaVersion,$(NoTitle),$(!REG_VT_SZ),$(SlaVersion)} ; ; do nothing for update ; CloseRegKey $(KeyProduct) ; Update Transport ;**08-20-96** Added remove diskette reminder message **** Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS" "Please remove the Spectrum24 WLAN Adapter Install diskette from the diskette drive" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif else ; ; Cannot Open software key, goto ERROR ; goto fatalregistry endif Goto end ; ; End of Upgrade Software ; ; ; Escape hatches ; successful = + goto end abandon = + ForListDo $(OEM_ABANDON_OPTIONS) Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), $(ProductSoftwareName), $($) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif EndForListDo Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE ; Remove Software Component Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), $(ProductSoftwareName), FALSE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error" goto ShellCodeError endif Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end ; ; warning display ; 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 ; ; non fatal error display ; nonfatalinfo = + Set Severity = STATUS Set CommonStatus = STATUS_USERCANCEL goto nonfatalmsg nonfatal = + Set Severity = NONFATAL goto nonfatalmsg nonfatalmsg = + ifstr(i) $(Error) == "" Set Severity = NONFATAL Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) endif Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr(i) $($R1) == "OK" goto $(from) else goto "end" endif ; ; Registry is broken ; fatalregistry = + Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal ; ; Netcard detection failure ; fataldetect = + Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "ShellCode error: cannot get an error string." goto ShellCodeError endif set Error = $($R0) goto fatal ; ; fatal error display ; 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 ; ; Shelling error ; ShellCodeError = + set DlgType = "MessageBox" set STF_MB_TITLE = $(ShellCodeErrorTitle) set STF_MB_TEXT = $(ShellCodeErrorText) set STF_MB_TYPE = 1 set STF_MB_ICON = 3 set STF_MB_DEF = 1 ui start "Error Message" goto setfailed setfailed = + set CommonStatus = STATUS_FAILED ; ; if OEM_ABANDON_ON == TRUE, then remove the registry entries ; ifstr(i) $(OEM_ABANDON_ON) == TRUE set OEM_ABANDON_ON = FALSE goto abandon endif goto end end = + goto term term = + Return $(CommonStatus) ;*************************************************************** ; INSTALL SECTIONS ;*************************************************************** [Install-Option] Set STF_VITAL = "" Ifstr(i) $(AddCopy) == "YES" ; ; Add the files to the copy list ; AddSectionFilesToCopyList Files-$(Option) $(SrcDir)WINNT\$(!STF_PLATFORM) $(!STF_WINDOWSSYSPATH)\drivers AddSectionFilesToCopyList Files-ncpa $(SrcDir)NDIS5 $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH) Endif ifstr(i) $(DoCopy) == "YES" ; ; Copy files in the copy list ; set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif exit [Install-Update] set STF_VITAL = "1" set STF_OVERWRITE = "ALWAYS" ;set SrcDir = "A:\" ;ClearCopyList ; ; Add the files to the copy list ; AddSectionFilesToCopyList Files-$(Option) $(SrcDir)WINNT\$(!STF_PLATFORM) $(!STF_WINDOWSSYSPATH)\drivers AddSectionFilesToCopyList Files-ncpa $(SrcDir)NDIS5 $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList exit ;------------------------------------------------ [Source Media Descriptions] ;------------------------------------------------ ; - This is a required detect section. ; - It is used to identify the disk where files are ; kept ; - Changing this from the original version did ; not cuase the "detect error" to go away. ;------------------------------------------------ 1 = "Symbol Technologies Wireless LAN Driver Installation Disk", TAGFILE = SLADISK ;------------------------------------------------ [Signature] ;------------------------------------------------ ; - This is used in an enumeration command ;------------------------------------------------ FileType = MICROSOFT_FILE ;------------------------------------------------ [GetSignature] ;------------------------------------------------ ; - Does not appear to be used. ;------------------------------------------------ read-syms Signature return $(FileType) ;------------------------------------------------ [ProductType] STF_PRODUCT = WINNT STF_PLATFORM = I386 ;------------------------------------------------ ; Format: Disk Id#, Filename, Options ;------------------------------------------------ [Files-Inf] 1,oemsetup.inf, SIZE=70000, RENAME=$(ProductInfName) ;------------------------------------------------ [Files-Sla41] 1,Sla41ND4.SYS, OVERWRITE=ALWAYS, COPY, DESTINATION=$(!STF_WINDOWSSYSPATH)\Drivers, SIZE=50000 [Files-ncpa] 1,Sla4NCPA.DLL, OVERWRITE=ALWAYS, COPY, DESTINATION=$(!STF_WINDOWSSYSPATH), SIZE=80000 1,Sla4NCPA.HLP, OVERWRITE=ALWAYS, COPY, DESTINATION=$(!STF_WINDOWSSYSPATH), SIZE=50000 [Files-Sla41PCI] 1,Sla41ND4.SYS, OVERWRITE=ALWAYS, COPY, DESTINATION=$(!STF_WINDOWSSYSPATH)\Drivers, SIZE=50000 ;------------------------------------------------ [LanguagesSupported] ;------------------------------------------------ ; - This is used in an enumeration command ; - The languages supported by the OEM INF, ; For every language supported we need to ; have a separate text section for every ; displayable text section. ; ;------------------------------------------------ ENG ;------------------------------------------------ [OptionsTextENG] ;------------------------------------------------ ; - Does not appear to be used. ; - These are text strings used to identify the ; option to the user. There are separate ; sections for each language supported. The format ; of the section name is "OptionsText" concatenated ; with the Language represented by the section. ; ;------------------------------------------------ Sla41 = "Symbol LA-41x1 Spectrum24 Wireless LAN PC Card" Sla41PCI = "Symbol LA-41x3 Spectrum24 Wireless LAN PCI Card" [Install-SeeIfFileIsPresent] LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck) exit ;------------------------------------------------ [FileConstantsENG] ;------------------------------------------------ ; - Language-Dependent Dialog Constants ;------------------------------------------------ ;--- Variables to support thermometer gauge and error dialogs ProCaption = "Windows NT Setup" ProCancel = "Cancel" ProCancelMsg = "Windows NT Networking is not correctly installed. "+ "Are you sure you want to cancel copying files?" ProCancelCap = "Network Setup Message" ProText1 = "Copying:" ProText2 = "To:" ;--- Product Info FunctionTitle = "Symbol Wireless LAN Adapter Setup" ;--- Software ProductSoftwareTitle = "Symbol Technologies Wireless LAN Adapter Driver" ProductSoftwareDescription = "Symbol Technologies Wireless LAN Adapter Driver" CANNOT_FIND_ANY_CARD = "Network card is not present in the system" ShellCodeErrorTitle = "Error: "$(FunctionTitle) ShellCodeErrorText = "Shell Code Error." [OemOptionFiles] OemFiles = {} ? $(!LIBHANDLE) FindFileInstances $(!STF_WINDOWSSYSPATH)"\oemnad*.inf" ;------------------------------------------------ [DialogConstantsENG] ;------------------------------------------------ ; - Does not appear to be used. ;------------------------------------------------ ;--- Common button names, etc. Help = "&Help" Exit = "Cancel" OK = "OK" HelpContext = "" Continue = "Continue" Cancel = "Cancel" ;------------------------------------------------ [FileDependentDlgENG] ;------------------------------------------------ ; - Does not appear to be used. ;------------------------------------------------