Annotation of ntddk/src/setup/inf/ndis/oemnade2.inf, revision 1.1

1.1     ! root        1: ;***********************************************************************
        !             2: ;
        !             3: ; OEMNADE2.INF
        !             4: ;
        !             5: ;       Elink II network card and driver SETUP INF file.
        !             6: ;
        !             7: ; History:
        !             8: ;       davidhov        00-Feb-1992     Created
        !             9: ;       terryk          27-Feb-1992     Reorganize section location
        !            10: ;                                       added comment
        !            11: ;       terryk          03-Mar-1992     Changed to Elink II setup
        !            12: ;       terryk          02-Apr-1992     Code review changed
        !            13: ;       davidhov        03-Apr-1992     Enhanced to use new INF section
        !            14: ;                                       structure from SunilP, et al.
        !            15: ;       davidhov        06-Dec-1992     Netcard Detection
        !            16: ;***********************************************************************
        !            17: 
        !            18: ;-----------------------------------------------------------------------
        !            19: ; OPTION TYPE
        !            20: ; -----------
        !            21: ; This identifies the Option type we are dealing with.  The different
        !            22: ; possible types are:
        !            23: ;
        !            24: ; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
        !            25: ;
        !            26: ;  Types specific to networking:
        !            27: ;
        !            28: ; NetAdapter,        a netcard / adapter combination or just a netcard
        !            29: ; NetDriver,         just a netcard driver
        !            30: ; NetTransport,      a complete NDIS-compliant TDI transport stack
        !            31: ; NetService,        an NT networking service
        !            32: ; NetWork,           a complete network ensemble.
        !            33: ; NetProvider        a complete network which supports NT MPR protocol
        !            34: ;-----------------------------------------------------------------------
        !            35: 
        !            36: [Identification]
        !            37:     OptionType = NetAdapter
        !            38: 
        !            39: ;-----------------------------------------------------------------------
        !            40: ; PlatformsSupported
        !            41: ; ------------------
        !            42: ; This identifies the platforms supported by the adapter card.
        !            43: ; Possible types are:
        !            44: ;
        !            45: ; ISA, EISA and MCA
        !            46: ;-----------------------------------------------------------------------
        !            47: 
        !            48: [PlatformsSupported]
        !            49:     ISA
        !            50:     EISA
        !            51:     "Jazz-Internal Bus"
        !            52: 
        !            53: ;-----------------------------------------------------------------------
        !            54: ; OPTION LIST
        !            55: ; -----------
        !            56: ; This section lists the OEM Option key names.  These keys are locale
        !            57: ; independent and used to represent the option in a locale independent
        !            58: ; manner.
        !            59: ;
        !            60: ;-----------------------------------------------------------------------
        !            61: 
        !            62: [Options]
        !            63:     ELNKII
        !            64: 
        !            65: ;***********************************************************************
        !            66: ; CONSTANTS FOR USING DIALOGS
        !            67: ;***********************************************************************
        !            68: 
        !            69: [FileConstants]
        !            70: ;
        !            71: ;  File names, etc.
        !            72: ;
        !            73: UtilityInf      = "UTILITY.INF"
        !            74: ParamInf        = "NCPARAM.INF"
        !            75: subroutineinf   = "SUBROUTN.INF"
        !            76: SoftwareType    = "driver"
        !            77: Exit_Code       = 0
        !            78: 
        !            79: ;
        !            80: ; EventLog Message File
        !            81: ;
        !            82: NetEventDLL     = "%SystemRoot%\System32\netevent.dll"
        !            83: IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"
        !            84: 
        !            85: ; Product Info
        !            86: ;
        !            87: Manufacturer    = "Microsoft"
        !            88: ProductMajorVersion     = "3"
        !            89: ProductMinorVersion     = "1"
        !            90: ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)
        !            91: ;
        !            92: ; Software
        !            93: ;
        !            94: ProductSoftwareName     = "Elnkii"
        !            95: ProductSoftwareImagePath = "\SystemRoot\System32\drivers\elnkii.sys"
        !            96: NetRuleSoftwareType     = "elnkiiSys ndisDriver elnkiiDriver"
        !            97: NetRuleSoftwareUse      = $(SoftwareType)
        !            98: NetRuleSoftwareBindForm = """ElnkIISys"" yes no container"
        !            99: NetRuleSoftwareClass    = {"elnkiiDriver basic"}
        !           100: NetRuleSoftwareBindable = {"elnkiiDriver elnkiiAdapter non exclusive 100"}
        !           101: ;
        !           102: ; Hardware
        !           103: ;
        !           104: ProductHardwareName     = "Elnkii"
        !           105: NetRuleHardwareType     = "elnkii elnkiiAdapter"
        !           106: NetRuleHardwareBindForm = " yes yes container"
        !           107: NetRuleHardwareClass    = {"elnkiiAdapter basic"}
        !           108: ;
        !           109: ; Registry Key
        !           110: ;
        !           111: ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
        !           112: ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
        !           113: 
        !           114: 
        !           115: [GeneralConstants]
        !           116: ;
        !           117: ;  Program flow control variables.
        !           118: ;
        !           119: from      = ""
        !           120: to        = ""
        !           121: ;
        !           122: ;  Return codes; Exit_Code is set to one of these
        !           123: ;
        !           124: ExitCodeOk     = 0
        !           125: ExitCodeCancel = 1
        !           126: ExitCodeFatal  = 2
        !           127: 
        !           128: KeyNull         = ""
        !           129: MAXIMUM_ALLOWED   = 33554432
        !           130: RegistryErrorIndex = NO_ERROR
        !           131: KeyProduct      = ""
        !           132: KeyParameters   = ""
        !           133: 
        !           134: TRUE            = 1
        !           135: FALSE           = 0
        !           136: NoTitle            = 0
        !           137: 
        !           138: ExitState   = "Active"
        !           139: OldVersionExisted = $(FALSE)
        !           140: 
        !           141: DriverPath      = $(!STF_NTPATH)\drivers
        !           142: 
        !           143: [date]
        !           144:     ; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
        !           145:     ; Minute, Second }
        !           146:     Now = {} ? $(!LIBHANDLE) GetSystemDate
        !           147: 
        !           148: 
        !           149: ;---------------------------------------------------------------------------
        !           150: ; 1. Identify
        !           151: ;
        !           152: ; DESCRIPTION:   To verify that this INF deals with the same type of options
        !           153: ;                as we are choosing currently.
        !           154: ;
        !           155: ; INPUT:         None
        !           156: ;
        !           157: ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
        !           158: ;                $($R1): Option Type (COMPUTER ...)
        !           159: ;                $($R2): Diskette description
        !           160: ;---------------------------------------------------------------------------
        !           161: 
        !           162: [Identify]
        !           163:     ;
        !           164:     ;
        !           165:     read-syms Identification
        !           166: 
        !           167:     set Status     = STATUS_SUCCESSFUL
        !           168:     set Identifier = $(OptionType)
        !           169:     set Media      = #("Source Media Descriptions", 1, 1)
        !           170: 
        !           171:     Return $(Status) $(Identifier) $(Media)
        !           172: 
        !           173: ;------------------------------------------------------------------------
        !           174: ; 2. ReturnOptions:
        !           175: ;
        !           176: ; DESCRIPTION:   To return the option list supported by this INF and the
        !           177: ;                localised text list representing the options.
        !           178: ;
        !           179: ;
        !           180: ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
        !           181: ;
        !           182: ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
        !           183: ;                                STATUS_NOLANGUAGE
        !           184: ;                                STATUS_FAILED
        !           185: ;                                STATUS_NOTSUPPORTED
        !           186: ;
        !           187: ;                $($R1): Option List
        !           188: ;                $($R2): Option Text List
        !           189: ;------------------------------------------------------------------------
        !           190: 
        !           191: [ReturnOptions]
        !           192:     ;
        !           193:     ;
        !           194:     set Status        = STATUS_FAILED
        !           195:     set OptionList     = {}
        !           196:     set OptionTextList = {}
        !           197: 
        !           198:     ;
        !           199:     ; Check if the language requested is supported
        !           200:     ;
        !           201:     set LanguageList = ^(LanguagesSupported, 1)
        !           202:     Ifcontains(i) $($0) in $(LanguageList)
        !           203:         ;
        !           204:         ; Check if the platforms requested is supported
        !           205:         ;
        !           206:         ifstr(i) $($1) == ""
        !           207:                         goto returnoptions
        !           208:         endif
        !           209: 
        !           210:         set PlatformList = ^(PlatformsSupported, 1)
        !           211:         Ifcontains(i) $($1) in $(PlatformList)
        !           212:                         goto returnoptions
        !           213:         else
        !           214:                         set Status = STATUS_NOTSUPPORTED
        !           215:                         goto finish_ReturnOptions
        !           216:         endif
        !           217:     else
        !           218:                 set Status = STATUS_NOLANGUAGE
        !           219:                 goto finish_ReturnOptions
        !           220:     endif
        !           221: 
        !           222:     ;
        !           223:     ; form a list of all the options and another of the text representing
        !           224:     ;
        !           225: 
        !           226: returnoptions = +
        !           227:     set OptionList     = ^(Options, 1)
        !           228:     set OptionTextList = ^(OptionsText$($0), 1)
        !           229:     set Status         = STATUS_SUCCESSFUL
        !           230: 
        !           231: finish_ReturnOptions = +
        !           232:     Return $(Status) $(OptionList) $(OptionTextList)
        !           233: 
        !           234: ;------------------------------------------------------------------------
        !           235: ;
        !           236: ; InstallOption:
        !           237: ;
        !           238: ;      This section is shelled to by main installation processing
        !           239: ;      or by NCPASHEL.INF during reconfig, removal, update, etc.
        !           240: ;
        !           241: ;
        !           242: ; FUNCTION:  To copy files representing Options
        !           243: ;            To configure the installed option
        !           244: ;            To update the registry for the installed option
        !           245: ;
        !           246: ; INPUT:     $($0):  Language to use
        !           247: ;            $($1):  OptionID to install
        !           248: ;            $($2):  SourceDirectory
        !           249: ;            $($3):  AddCopy  (YES | NO)
        !           250: ;            $($4):  DoCopy   (YES | NO)
        !           251: ;            $($5):  DoConfig (YES | NO)
        !           252: ;
        !           253: ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
        !           254: ;                            STATUS_NOLANGUAGE |
        !           255: ;                            STATUS_USERCANCEL |
        !           256: ;                            STATUS_FAILED
        !           257: ;
        !           258: ;------------------------------------------------------------------------
        !           259: [InstallOption]
        !           260:     ;
        !           261:     ; Set default values for
        !           262:     ;
        !           263:     set Status   = STATUS_FAILED
        !           264:     ;
        !           265:     ; extract parameters
        !           266:     ;
        !           267:     set Option   = $($1)
        !           268:     set SrcDir   = $($2)
        !           269:     set AddCopy  = $($3)
        !           270:     set DoCopy   = $($4)
        !           271:     set DoConfig = $($5)
        !           272: 
        !           273:     ;
        !           274:     ; Check if the language requested is supported
        !           275:     ;
        !           276:     set LanguageList = ^(LanguagesSupported, 1)
        !           277:     Ifcontains(i) $($0) NOT-IN $(LanguageList)
        !           278:         Return STATUS_NOLANGUAGE
        !           279:     endif
        !           280: 
        !           281:     set-subst LF = "\n"
        !           282: 
        !           283:     read-syms GeneralConstants
        !           284:     read-syms FileConstants
        !           285: 
        !           286:     read-syms DialogConstants$(!STF_LANGUAGE)
        !           287:     ifstr(i) $(!NTN_Origination) == "NCPA"
        !           288:         set Continue = $(OK)
        !           289:     endif
        !           290:     read-syms FileConstants$(!STF_LANGUAGE)
        !           291: 
        !           292:     detect date
        !           293: 
        !           294:     set-title  $(FunctionTitle)
        !           295: 
        !           296:     set to   = Begin
        !           297:     set from = Begin
        !           298: ;
        !           299: ;  Assume all is well.
        !           300: ;
        !           301:     set CommonStatus = STATUS_SUCCESSFUL
        !           302: 
        !           303:     EndWait
        !           304: 
        !           305: ;
        !           306: ;   Set up the operation-mode-based variables and gaily welcome
        !           307: ;   the user.  If the "install mode" variable is improperly set,
        !           308: ;   assume this is a new installation.
        !           309: ;
        !           310: 
        !           311: Begin = +
        !           312:     Set ActivateDetection = FALSE
        !           313: 
        !           314:     Ifstr(i) $(!NTN_InstallMode) == deinstall
        !           315:         set StartLabel = removeadapter
        !           316:     else-Ifstr(i) $(!NTN_InstallMode) == Update
        !           317:         set StartLabel = UpgradeSoftware
        !           318:     else-Ifstr(i) $(!NTN_InstallMode) == bind
        !           319:         set StartLabel = bindingadapter
        !           320:     else-Ifstr(i) $(!NTN_InstallMode) == configure
        !           321:         set CommonStatus = STATUS_REBOOT
        !           322:         set ActivateDetection = TRUE
        !           323:         set StartLabel = configureadapter
        !           324:         ;
        !           325:         ;   You cannot config the software component
        !           326:         ;
        !           327:         Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
        !           328:             Debug-Output "Cannot configure the Elink II driver software."
        !           329:             Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
        !           330:             ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           331:                 Debug-Output "ShellCode error: cannot get an error string."
        !           332:                 goto ShellCodeError
        !           333:             endif
        !           334:             set Error = $($R0)
        !           335:             set from = end
        !           336:             set to = end
        !           337:             goto nonfatalinfo
        !           338:         endif
        !           339:     else
        !           340:         set ActivateDetection = TRUE
        !           341:         set StartLabel = installadapter
        !           342:         set OEM_ABANDON_OPTIONS = {}
        !           343:         set OEM_ABANDON_SOFTWARE = FALSE
        !           344:         set OEM_ABANDON_ON = TRUE
        !           345:     endif
        !           346: 
        !           347: 
        !           348:     ;===================================================
        !           349:     ;  Netcard Detection logic
        !           350:     ;
        !           351:     ;  Initialize use of netcard detection;
        !           352:     ;  Construct require global parameter variables
        !           353:     ;
        !           354:     Debug-Output "OEMNADE2.INF: =================================================="
        !           355:     Debug-Output "OEMNADE2.INF: STF_CWDIR is: "$(!STF_CWDIR)
        !           356:     Debug-Output "OEMNADE2.INF: STF_LANGUAGE is: "$(!STF_LANGUAGE)
        !           357:     Debug-Output "OEMNADE2.INF: Option is: "$(Option)
        !           358:     Debug-Output "OEMNADE2.INF: !STF_NCDETECT  is: "$(!STF_NCDETECT)
        !           359:     Debug-Output "OEMNADE2.INF: !STF_NCOPTION  is: "$(!STF_NCOPTION)
        !           360:     Debug-Output "OEMNADE2.INF: !STF_NCDETCARD is: "$(!STF_NCDETCARD)
        !           361:     Debug-Output "OEMNADE2.INF: !STF_NCDETINFO is: "$(!STF_NCDETINFO)
        !           362:     Debug-Output "OEMNADE2.INF: =================================================="
        !           363: 
        !           364:     Set DetectedCard = FALSE
        !           365: 
        !           366:     Ifstr(i) $(ActivateDetection) != TRUE
        !           367:         Goto $(StartLabel)
        !           368:     Endif
        !           369:     ;
        !           370:     ;  Set !STF_NC_PARAMS and !STF_NC_PNAMES by calling
        !           371:     ;    PARAM.INF!Param_BuildTypeLists.
        !           372:     ;   Pass it a list of the form:
        !           373:     ;
        !           374:     ;   {  { <param name>,
        !           375:     ;        <name of choice list var>,
        !           376:     ;        <name of default var> },
        !           377:     ;      ...
        !           378:     ;   }
        !           379:     ;
        !           380:     Set TypeList = {{IRQ, IRQ_List, IRQ_Level},+
        !           381:                     {IOADDR, IOADDR_Addr_List, IOBaseAddrValue},+
        !           382:                     {MEMADDR, MemBaseAddrDecList, MemBaseAddrDec},+
        !           383:                     {TRANSCEIVER, TranceiverValueList, TransceiverValue}+
        !           384:                     {MEMLENGTH, MemLengthList, NONE}}
        !           385: 
        !           386:     Debug-Output "OEMNADE2.INF: Calling Param_BuildTypeLists"
        !           387:     Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList)
        !           388:     Set Status = $($R0)
        !           389:     ifstr(i) $(Status) != STATUS_SUCCESSFUL
        !           390:         Goto fataldetect
        !           391:     Endif
        !           392: 
        !           393:     Debug-Output "OEMNADE2.INF: Calling Param_SetDefaults"
        !           394:     Shell $(ParamInf) Param_SetDefaults {}
        !           395: 
        !           396:     ;  Establish presentation versions of choice lists.
        !           397: 
        !           398:     Shell $(ParamInf) HexListFromDecList $(IOADDR_Addr_List)
        !           399:     Set IOADDR_Hex_List = $($R0)
        !           400: 
        !           401:     Shell $(UtilityInf) SortList $(IRQ_List) TRUE FALSE
        !           402:     Set IRQ_List = $($R0)
        !           403: 
        !           404:     ;  If this is a detected card, set the flag.
        !           405: 
        !           406:     Ifstr(i) $(!STF_NCDETECT) == YES
        !           407:         Ifstr(i) $(!STF_NCOPTION) == $(Option)
        !           408:            Set DetectedCard = TRUE
        !           409:            Debug-Output "OEMNADE2.INF: Setting DetectedCard to TRUE"
        !           410:         Endif
        !           411:     Endif
        !           412:     ;
        !           413:     ;  End Netcard Detection logic
        !           414:     ;===================================================
        !           415: 
        !           416:     Set MappedValue = 1
        !           417:     Ifint $(MemBaseAddrDec) == 0
        !           418:        Set MappedValue = 0
        !           419:     Endif
        !           420: 
        !           421:     Shell "" DebugConfiguration "After parameter querying"
        !           422: 
        !           423:     Set from = $(fatal)
        !           424:     Set to = $(fatal)
        !           425:     Goto $(StartLabel)
        !           426: 
        !           427: ;-----------------------------------------------
        !           428: ; Installation Section
        !           429: ;-----------------------------------------------
        !           430: 
        !           431: installadapter = +
        !           432: ;
        !           433: ;   First, check whether the same version of the software exists
        !           434: ;
        !           435:     OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
        !           436: 
        !           437:     Ifstr $(KeyProduct) != $(KeyNull)
        !           438:         ;
        !           439:         ; Same version already existed in the local machine
        !           440:         ; Popup the dialog and ask the user whether he wants to continue
        !           441:         ;
        !           442:         CloseRegKey $(KeyProduct)
        !           443: 
        !           444:         ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
        !           445:            ;
        !           446:            ; Cannot Install the same software again
        !           447:            ;
        !           448:            Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
        !           449:                $(ProductVersion)
        !           450:            ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           451:                Debug-Output "ShellCode error: cannot get an error string."
        !           452:                goto ShellCodeError
        !           453:            endif
        !           454: 
        !           455:            goto end
        !           456:         else
        !           457:            ;
        !           458:            ; Add a new adapter card?
        !           459:            ;
        !           460:            Shell $(UtilityInf), CardExistedDlg
        !           461: 
        !           462:            ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           463:                Debug-Output "ShellCode error: cannot get an error string."
        !           464:                goto ShellCodeError
        !           465:            endif
        !           466: 
        !           467:            ifstr(i) $($R1) != "OK"
        !           468:                set CommonStatus = STATUS_USERCANCEL
        !           469:                goto end
        !           470:            endif
        !           471:            set OldVersionExisted = $(TRUE)
        !           472:         endif
        !           473:     endif
        !           474: 
        !           475:     ;===================================================
        !           476:     ;  Netcard Detection logic
        !           477:     ;
        !           478:     ;   If this is a detected card, query its parameters
        !           479:     ;   and merge them into the default list.
        !           480:     ;
        !           481: 
        !           482:     ;  Indicate that there are no old parameter settings.
        !           483: 
        !           484:     Set CurrParamSettings = {}
        !           485: 
        !           486:     Ifstr(i) $(DetectedCard) != TRUE
        !           487:         Goto adaptersetup
        !           488:     Endif
        !           489:     ;
        !           490:     ;   Get the detected parameters
        !           491:     ;
        !           492:     StartWait
        !           493:     Shell $(ParamInf) Param_QueryCard $(!STF_NCDETCARD)
        !           494:     EndWait
        !           495:     Ifstr(i) $($R0) != STATUS_SUCCESSFUL
        !           496:         Goto adaptersetup
        !           497:     Endif
        !           498:     ;
        !           499:     ;   Merge the detected values in.
        !           500:     ;
        !           501:     Set DetectedParams = $($R1)
        !           502:     Debug-Output "OEMNADE2.INF: Calling Param_SetDefaults to merge detected params"
        !           503:     Shell $(ParamInf) Param_SetDefaults $(DetectedParams)
        !           504:     ;
        !           505:     ;  End Netcard Detection logic
        !           506:     ;===================================================
        !           507: 
        !           508:     goto adaptersetup
        !           509: 
        !           510: ;-----------------------------------------------
        !           511: ; Configuration Section
        !           512: ;-----------------------------------------------
        !           513: ;
        !           514: ;   Get the current values of all the parameters
        !           515: ;
        !           516: configureadapter = +
        !           517:     Ifstr $(KeyProduct) == $(KeyNull)
        !           518:         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
        !           519:         Ifstr $(KeyProduct) == $(KeyNull)
        !           520:             set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
        !           521:             Debug-Output "Cannot find component product key"
        !           522:             goto fatalregistry
        !           523:         Endif
        !           524:     Endif
        !           525: 
        !           526:     ;
        !           527:     ; Get the other parameters;  they're attached to the service parameters key
        !           528:     ;
        !           529:     Debug-Output "INF: Shelling to FindService"
        !           530:     Shell $(UtilityInf) FindService, $(KeyProduct)
        !           531:     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           532:         Debug-Output "INF: FindService shell failure"
        !           533:         Goto ShellCodeError
        !           534:     Endif
        !           535:     Ifstr(i) $($R0) != NO_ERROR
        !           536:         Debug-Output "INF: FindService Shell error: "$($R0)
        !           537:         Goto fatalregistry
        !           538:     endif
        !           539: 
        !           540:     Set KeyParameters = $($R2)
        !           541: 
        !           542:     ;
        !           543:     ;  We don't need the services key, so close it.
        !           544:     ;
        !           545:     CloseRegKey $($R1)
        !           546: 
        !           547:     Ifstr $(KeyParameters) == $(KeyNull)
        !           548:         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
        !           549:         Debug-Output "Cannot find component service"
        !           550:         goto fatalregistry
        !           551:     endif
        !           552: 
        !           553:     set OldVersionExisted = $(TRUE)
        !           554: 
        !           555:     set ValueName = ""
        !           556:     set ValueData = ""
        !           557:     set ValueStr  = ""
        !           558:     set ValueList = {}
        !           559: 
        !           560:     ;
        !           561:     ; Get the old values
        !           562:     ;
        !           563:     EnumRegValue $(KeyParameters) ValueList
        !           564: 
        !           565:     ForListDo $(ValueList)
        !           566:         set ValueItem = $($)
        !           567:         set ValueName = *($(ValueItem),1)
        !           568:         set ValueData = *($(ValueItem),4)
        !           569:         Ifstr(i) $(ValueName) == "Transceiver"
        !           570:             set TransceiverValue = $(ValueData)
        !           571:         else-ifstr(i) $(ValueName) == "MemoryMapped"
        !           572:             set MappedValue = $(ValueData)
        !           573:         else-ifstr(i) $(ValueName) == "InterruptNumber"
        !           574:             set IRQ_Level = $(ValueData)
        !           575:         else-ifstr(i) $(ValueName) == "IoBaseAddress"
        !           576:             set IOBaseAddrValue = $(ValueData)
        !           577:         else-ifstr(i) $(ValueName) == "BusType"
        !           578:             set BusInterfaceType = $(ValueData)
        !           579:         else-ifstr(i) $(ValueName) == "BusNumber"
        !           580:             set BusNumber = $(ValueData)
        !           581:         endif
        !           582: 
        !           583:     EndForListDo
        !           584: 
        !           585:     ;  Save the settings as they were read from the Registry.
        !           586: 
        !           587:     Shell $(ParamInf) Param_SaveValues
        !           588:     Set CurrParamSettings = $($R0)
        !           589: ;
        !           590: ;   Put up the adapter configuration dialog if necessary.
        !           591: ;
        !           592: ;   Note that $(CurrParamSettings) has the old known parameter values.
        !           593: ;
        !           594: adaptersetup = +
        !           595: 
        !           596:     Shell "" DebugConfiguration "before displaying dialog"
        !           597: 
        !           598:     Set from = adapteroptions
        !           599: 
        !           600:     Set IOADDR_Hex_Value = *($(IOADDR_Hex_List), ~($(IOADDR_Addr_List),$(IOBaseAddrValue)))
        !           601: 
        !           602:     Ifint $(MappedValue) == 0
        !           603:         Set CheckItemsIn = {"OFF"}
        !           604:     Else
        !           605:         Set CheckItemsIn = {"ON"}
        !           606:     Endif
        !           607: 
        !           608:     Ifint $(TransceiverValue) == 1
        !           609:         Set RadioIn = {1}
        !           610:     Else
        !           611:         Set RadioIn = {2}
        !           612:     Endif
        !           613: 
        !           614:     ;===================================================
        !           615:     ;  Netcard Detection logic
        !           616:     ;
        !           617:     ;   Check that this card's parameters can be
        !           618:     ;   fully detected.
        !           619:     ;
        !           620:     Shell $(ParamInf) Param_ParameterConfidence
        !           621:     Ifstr(i) $($R0) != STATUS_SUCCESSFUL
        !           622:         Debug-Output "OEMNADE2.INF: parameter confidence too low to bypass configuration"
        !           623:         Goto adapteroptions
        !           624:     Endif
        !           625:     ;
        !           626:     ;   If this is a detected card and we're in EXPRESS mode,
        !           627:     ;   see if the parameters as they currently exist are
        !           628:     ;   verifiably correct.
        !           629:     ;
        !           630:     Ifstr(i) $(DetectedCard) == TRUE
        !           631:         Ifstr(i) $(!STF_INSTALL_MODE) != CUSTOM
        !           632:             Goto adapterverify
        !           633:         Endif
        !           634:     Endif
        !           635:     ;
        !           636:     ;  End Netcard Detection logic
        !           637:     ;===================================================
        !           638: 
        !           639: adapteroptions = +
        !           640: 
        !           641:     read-syms FileDependentDlg$(!STF_LANGUAGE)
        !           642: 
        !           643:     ui start "InputDlg"
        !           644: 
        !           645:     ifstr(i) $(DLGEVENT) == "CONTINUE"
        !           646:         set IRQ_Level = $(Combo1Out)
        !           647:         set IOADDR_Hex_Value = $(Combo2Out)
        !           648:         set TransceiverTypeIndex = *($(RadioOut),1)
        !           649:         Ifint $(TransceiverTypeIndex) == 1
        !           650:             Set TransceiverValue = 1
        !           651:         Else
        !           652:             Set TransceiverValue = 2
        !           653:         Endif
        !           654:         Set Chk = *($(CheckItemsOut), 1)
        !           655:         Ifstr(i) $(Chk) == "ON"
        !           656:             Set MappedValue = 1
        !           657:         Else
        !           658:             Set MappedValue = 0
        !           659:         Endif
        !           660: 
        !           661:         Ifint $(MappedValue) == 0
        !           662:             Set MemBaseAddrDec = 0
        !           663:         Else
        !           664:             Set MemBaseAddrDec = *($(MemBaseAddrDecList),2)
        !           665:         Endif
        !           666: 
        !           667:         Set IOBaseAddrValue = *($(IOADDR_Addr_List), ~($(IOADDR_Hex_List),$(IOADDR_Hex_Value)))
        !           668: 
        !           669:         ui pop 1
        !           670:     else-ifstr(i) $(DLGEVENT) == "BACK"
        !           671:         set CommonStatus = STATUS_USERCANCEL
        !           672:         Debug-Output "Action: exit. Bye."
        !           673:         ui pop 1
        !           674:         goto end
        !           675:     else
        !           676:         Debug-Output "Action: unknown. Bye."
        !           677:         ui pop 1
        !           678:         goto end
        !           679:     endif
        !           680: 
        !           681:     ifstr(i) $(!STF_NCDETINFO) == {}
        !           682:         ; not detect. popup dialog.
        !           683:         Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardware$(Option)Description) $(BusInterfaceType) $(BusNumber)
        !           684:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           685:             Debug-Output "ShellCode error."
        !           686:             goto ShellCodeError
        !           687:         endif
        !           688:     
        !           689:         set BusInterfaceType = $($R1)
        !           690:         set BusNumber = $($R2)
        !           691:     else
        !           692:         ; use the STF_NCDETINFO information
        !           693:         set BusInterfaceType = *($(!STF_NCDETINFO),5)
        !           694:         set BusNumber = *($(!STF_NCDETINFO),6)
        !           695:     endif
        !           696: 
        !           697: 
        !           698: 
        !           699: adapterverify = +
        !           700: 
        !           701:     Shell "" DebugConfiguration "after running dialog"
        !           702: 
        !           703:     ;===================================================
        !           704:     ;  Netcard Detection logic
        !           705:     ;
        !           706:     ;   If this is a detected card, attempt to validate the options
        !           707:     ;   If just a normal card, try to claim the resources which have
        !           708:     ;     changed.
        !           709:     ;
        !           710:     Ifstr(i) $(DetectedCard) != TRUE
        !           711: 
        !           712:         ;  Build the current parameter list.  If this is an installation,
        !           713:         ;  (indicated by the fact that the current settings list is empty)
        !           714:         ;  claim all the parameters; otherwise, just claim those which
        !           715:         ;  have changed.
        !           716: 
        !           717:         Shell $(ParamInf) Param_SaveValues
        !           718:         Set NewParamSettings = $($R0)
        !           719:         Ifstr(i) $(CurrParamSettings) == {}
        !           720:             Set DiffParamSettings = $(NewParamSettings)
        !           721:         Else
        !           722:             Shell $(ParamInf) Param_DiffValues $(CurrParamSettings)
        !           723:             Set DiffParamSettings = $($R0)
        !           724:         Endif
        !           725: 
        !           726:         Debug-Output "OEMNADE2.INF: Calling Param_VerifyResources"
        !           727:         Shell $(ParamInf) Param_VerifyResources $(DiffParamSettings)
        !           728:         Ifstr(i) $($R0) == STATUS_SUCCESSFUL
        !           729:             Debug-Output "OEMNADE2.INF: Param_VerifyResources succeeded"
        !           730:             Goto skipoptions
        !           731:         Endif
        !           732:     Else
        !           733:         Set CardVerifyIndex = $(!STF_NCDETCARD)
        !           734:         Debug-Output "OEMNADE2.INF: Calling Param_VerifyCard"
        !           735:         Shell $(ParamInf) Param_VerifyCard $(!STF_NCDETCARD)
        !           736:         Ifstr(i) $($R0) == STATUS_SUCCESSFUL
        !           737:             Debug-Output "OEMNADE2.INF: Param_VerifyCard succeeded"
        !           738:             Goto skipoptions
        !           739:         Endif
        !           740:     Endif
        !           741:     ;
        !           742:     ;   Give the user a chance to retry or force the options given.
        !           743:     ;
        !           744:     Set from = adapteroptions
        !           745:     Set to = skipoptions
        !           746:     Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING
        !           747:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           748:         Debug-Output "ShellCode error: cannot get an error string."
        !           749:         goto ShellCodeError
        !           750:     endif
        !           751:     set Error = $($R0)
        !           752:     Goto Warning
        !           753:     ;
        !           754:     ;  End Netcard Detection logic
        !           755:     ;===================================================
        !           756: 
        !           757: ;
        !           758: ;   If installing, go create the necessary keys;
        !           759: ;   if configuring, they're already open.
        !           760: ;
        !           761: skipoptions =+
        !           762: 
        !           763:     ifint $(OldVersionExisted) == $(TRUE)
        !           764:         ifstr(i) $(!NTN_InstallMode) == configure
        !           765:             goto writeparameters
        !           766:         endif
        !           767:     endif
        !           768:     StartWait
        !           769:     ;
        !           770:     ; Add Software Component
        !           771:     ;
        !           772:     ifint $(OldVersionExisted) == $(FALSE)
        !           773:         ifstr(i) $(!NTN_InstallMode) == "install"
        !           774:            Ifstr(i) $(DoCopy) == "YES"
        !           775: 
        !           776:               Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
        !           777: 
        !           778:               Ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           779:                   Goto ShellCodeError
        !           780:               Else-Ifstr(i) $($R0) == STATUS_FAILED
        !           781:                   Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
        !           782:                   ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           783:                       goto ShellCodeError
        !           784:                   endif
        !           785:                   set Error = $($R0)
        !           786:                   Goto fatal
        !           787:               Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
        !           788:                   Goto successful
        !           789:               Endif
        !           790: 
        !           791:               Set SrcDir = $($R1)
        !           792: 
        !           793:            Endif
        !           794: 
        !           795:            install "Install-Option"
        !           796:            ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
        !           797:               Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
        !           798:               ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           799:                   goto ShellCodeError
        !           800:               endif
        !           801:               set Error = $($R0)
        !           802:               goto fatal
        !           803:            endif
        !           804:         endif
        !           805: 
        !           806:         Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
        !           807:             $(ProductSoftwareName), +
        !           808:             $(ProductSoftwareName), +
        !           809:             $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
        !           810:             $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
        !           811:             $(NetEventDLL)
        !           812: 
        !           813:         Set OEM_ABANDON_SOFTWARE = TRUE
        !           814: 
        !           815:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           816:             Debug-Output "ShellCode error"
        !           817:             goto ShellCodeError
        !           818:         endif
        !           819:         ;
        !           820:         ;   At this point:
        !           821:         ;     $R1 contains the product version key handle;
        !           822:         ;     $R2 contains the NetRules subkey handle;
        !           823:         ;     $R3 contains the new Services key handle; and
        !           824:         ;     $R4 contains the Parameters key
        !           825:         ;     $R5 contains the Linkage Key
        !           826:         ;
        !           827:         set RegistryErrorIndex = $($R0)
        !           828:         set KeyProduct      = $($R1)
        !           829:         Set SoftNetRulesKey = $($R2)
        !           830:         CloseRegKey $($R3)
        !           831:         CloseRegKey $($R4)
        !           832:         CloseRegKey $($R5)
        !           833: 
        !           834:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !           835:             EndWait
        !           836:             Debug-Output "Registry error: add software components"
        !           837:             CloseRegKey $(KeyProduct)
        !           838:             CloseRegKey $(SoftNetRulesKey)
        !           839:             goto fatalregistry
        !           840:         endif
        !           841: 
        !           842:         set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
        !           843:                            {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
        !           844:                            {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
        !           845:                            {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
        !           846:                            {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
        !           847:                            {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
        !           848:                            {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
        !           849: 
        !           850:         Shell  $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
        !           851:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           852:             Debug-Output "ShellCode error."
        !           853:             goto ShellCodeError
        !           854:         endif
        !           855: 
        !           856:         set RegistryErrorIndex = $($R0)
        !           857: 
        !           858:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !           859:             EndWait
        !           860:             Debug-Output "Registry error: add value list."
        !           861:             CloseRegKey $(KeyProduct)
        !           862:             CloseRegKey $(SoftNetRulesKey)
        !           863:             goto fatalregistry
        !           864:         endif
        !           865: 
        !           866:         set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
        !           867:                             {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
        !           868:                             {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
        !           869:                             {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
        !           870:                             {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
        !           871:                             {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
        !           872: 
        !           873:         Shell  $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList)
        !           874:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           875:             Debug-Output "ShellCode error."
        !           876:             goto ShellCodeError
        !           877:         endif
        !           878: 
        !           879:         set RegistryErrorIndex = $($R0)
        !           880: 
        !           881:         CloseRegKey $(KeyProduct)
        !           882:         CloseRegKey $(SoftNetRulesKey)
        !           883: 
        !           884:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !           885:             EndWait
        !           886:             Debug-Output "Resgitry error: add value list."
        !           887:             goto fatalregistry
        !           888:         endif
        !           889:     endif
        !           890: ;
        !           891: ;   Create the HARDWARE\Netcard region and its corresponding service
        !           892: ;
        !           893:     Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
        !           894: 
        !           895:     ifint $($R4) != -1
        !           896:         Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
        !           897:     endif
        !           898: 
        !           899:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           900:         Debug-Output "Cannot add hardware component"
        !           901:         goto ShellCodeError
        !           902:     endif
        !           903: 
        !           904:     set RegistryErrorIndex = $($R0)
        !           905: 
        !           906:     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !           907:         EndWait
        !           908:         Debug-Output "Registry error: add hardware component"
        !           909:         CloseRegKey $($R1)
        !           910:         CloseRegKey $($R2)
        !           911:         CloseRegKey $($R3)
        !           912:         goto fatalregistry
        !           913:     endif
        !           914: 
        !           915: ;
        !           916: ;   At this point:
        !           917: ;     $R1  Registry key variable for HARDWARE\Netcard\(n)
        !           918: ;     $R2  Registry key variable for HARDWARE\Netcard\(n)\\NetRules
        !           919: ;     $R3  Registry key handle for <service>\Parameters key
        !           920: ;     $R4  Adapter number assigned to adapter
        !           921: ;     $R5  Service name generated by combining svc name with adapter number
        !           922: ;
        !           923:     set KeyParameters = $($R3)
        !           924:     set KeyAdapterRules = $($R2)
        !           925:     set AdapterNumber = $($R4)
        !           926: 
        !           927:     set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
        !           928:                        {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
        !           929:                        {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
        !           930:                        {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
        !           931:                        {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
        !           932:                        {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
        !           933: 
        !           934:     Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
        !           935:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           936:         Debug-Output "ShellCode error"
        !           937:         goto ShellCodeError
        !           938:     endif
        !           939: 
        !           940:     CloseRegKey $($R1)
        !           941: 
        !           942:     set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
        !           943:     set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
        !           944: 
        !           945:     set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
        !           946:                         {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
        !           947:                         {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
        !           948:                         {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
        !           949: 
        !           950:     Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
        !           951:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           952:         Debug-Output "ShellCode error."
        !           953:         goto ShellCodeError
        !           954:     endif
        !           955: 
        !           956:     set RegistryErrorIndex = $($R0)
        !           957: 
        !           958:     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !           959:         EndWait
        !           960:         Debug-Output "Resgitry error: add value list."
        !           961:         CloseRegKey $(KeyParameters)
        !           962:         CloseRegKey $(KeyAdapterRules)
        !           963:         goto fatalregistry
        !           964:     endif
        !           965: 
        !           966:     CloseRegKey $(KeyAdapterRules)
        !           967: 
        !           968:     goto writeparameters
        !           969: ;
        !           970: ;   REQUIRED:   $(KeyParameters) contains service Parameters key handle
        !           971: ;
        !           972: writeparameters = +
        !           973: ;
        !           974: ;   Add the rest of the parameters to the Services area
        !           975: ;
        !           976:     Set NewValueList = {{Transceiver,$(NoTitle),$(!REG_VT_DWORD),$(TransceiverValue)},+
        !           977:                        {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
        !           978:                        {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
        !           979:                        {MediaType,$(NoTitle),$(!REG_VT_DWORD),1},+
        !           980:                        {MemoryMapped,$(NoTitle),$(!REG_VT_DWORD),$(MappedValue)},+
        !           981:                        {InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQ_Level)},+
        !           982:                        {IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)}}
        !           983: 
        !           984:     Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
        !           985: 
        !           986:     CloseRegKey $(KeyParameters)
        !           987: 
        !           988:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !           989:         Debug-Output "ShellCode error."
        !           990:         goto ShellCodeError
        !           991:     endif
        !           992: 
        !           993:     set RegistryErrorIndex = $($R0)
        !           994: 
        !           995:     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !           996:         Debug-Output "Registry error: Add value list"
        !           997:         goto fatalregistry
        !           998:     endif
        !           999: 
        !          1000:     EndWait
        !          1001: 
        !          1002:     goto successful
        !          1003: 
        !          1004: ;-----------------------------------------------
        !          1005: ; Binding section
        !          1006: ;-----------------------------------------------
        !          1007: bindingadapter =+
        !          1008:     set Error = "Binding: Sorry, not yet implemented."
        !          1009:     goto fatal
        !          1010: 
        !          1011: ;-----------------------------------------------
        !          1012: ; Removeadapter section
        !          1013: ;-----------------------------------------------
        !          1014: 
        !          1015: removeadapter = +
        !          1016:     Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
        !          1017:         ; Remove Software Component
        !          1018:         Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
        !          1019:             $(ProductSoftwareName)
        !          1020:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1021:             Debug-Output "ShellCode error"
        !          1022:             goto ShellCodeError
        !          1023:         endif
        !          1024: 
        !          1025:         set RegistryErrorIndex = $($R0)
        !          1026: 
        !          1027:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !          1028:             goto fatalregistry
        !          1029:         endif
        !          1030:     else
        !          1031:         Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
        !          1032:             $(ProductSoftwareName), $(!NTN_RegBase)
        !          1033:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1034:             Debug-Output "ShellCode error"
        !          1035:             goto ShellCodeError
        !          1036:         endif
        !          1037: 
        !          1038:         set RegistryErrorIndex = $($R0)
        !          1039: 
        !          1040:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !          1041:             goto fatalregistry
        !          1042:         endif
        !          1043:     endif
        !          1044: 
        !          1045:     goto end
        !          1046: 
        !          1047: ;-----------------------------------------------
        !          1048: ; Upgrade Software section
        !          1049: ;-----------------------------------------------
        !          1050: 
        !          1051: UpgradeSoftware = +
        !          1052:     ;
        !          1053:     ; First determine whether we want to do upgrade or update for software
        !          1054:     ; or hardware component. Then we will determine whether the Mode is
        !          1055:     ; update or upgrade.
        !          1056:     ;
        !          1057:     ; If the same version of the product existed in the registry, we do
        !          1058:     ; update. Otherwise, we will do a upgrade
        !          1059:     ;
        !          1060:     ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
        !          1061:         ; Upgrade software component
        !          1062:         ;
        !          1063:         ; see whether the same version exist or not
        !          1064:         ;
        !          1065:         OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
        !          1066: 
        !          1067:         Ifstr $(KeyProduct) != $(KeyNull)
        !          1068:             GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
        !          1069:             set Version = *($(VersionInfo), 4)
        !          1070: 
        !          1071:             ;
        !          1072:             ; Update the binaries
        !          1073:             ;
        !          1074:             Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
        !          1075: 
        !          1076:             ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1077:                 Debug-Output "ShellCode error"
        !          1078:                 goto ShellCodeError
        !          1079:             endif
        !          1080: 
        !          1081:             set !UG_Filename = $($R0)
        !          1082: 
        !          1083:             ifstr(i) $(!UG_Filename) != ""
        !          1084:                 install "Install-Update"
        !          1085:                 ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
        !          1086:                     goto fatal
        !          1087:                 endif
        !          1088:             endif
        !          1089: 
        !          1090:             ; Upgrade the version number
        !          1091:             ;
        !          1092:             SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
        !          1093:             SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
        !          1094: 
        !          1095:             ;
        !          1096:             ; do nothing for update
        !          1097:             ;
        !          1098:             ifint $(Version) != $(ProductVersion)
        !          1099:                ;
        !          1100:                ; If the major version number is not the same,
        !          1101:                ; it is major upgrade. So let Upgrade the product
        !          1102:                ;
        !          1103:                ;
        !          1104:                ; make other upgrade change if necessary
        !          1105:                ;
        !          1106:             endif
        !          1107:             CloseRegKey $(KeyProduct)
        !          1108:         else
        !          1109:             ;
        !          1110:             ; Cannot Open software key, goto ERROR
        !          1111:             ;
        !          1112:             goto fatalregistry
        !          1113:         endif
        !          1114:     else
        !          1115:         ;
        !          1116:         ; upgrade/update hardware component
        !          1117:         ; There is no different between upgrade and update for hardware
        !          1118:         ; component
        !          1119:         ;
        !          1120:         ; 1. Get the Service Name
        !          1121:         ; 2. Change the NetRule section if necessary
        !          1122:         ;
        !          1123:         OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
        !          1124:               $(MAXIMUM_ALLOWED) NetworkCardKey
        !          1125:         Ifstr(i) $(NetworkCardKey) != $(KeyNull)
        !          1126:             ;
        !          1127:             ; Get Service name
        !          1128:             ;
        !          1129:             GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
        !          1130:             set ServiceName = *($(ServiceNameInfo), 4)
        !          1131: 
        !          1132:             ;
        !          1133:             ; Change the NetRule if necessary
        !          1134:             ;
        !          1135:             OpenRegKey $(NetworkCardKey) "" "NetRules" +
        !          1136:                 $(MAXIMUM_ALLOWED) NetRuleKey
        !          1137:             Ifstr(i) $(NetRuleKey) != $(KeyNull)
        !          1138:                 ;
        !          1139:                 ; Make the change....
        !          1140:                 ;
        !          1141:             else
        !          1142:                 ;
        !          1143:                 ; Error, cannot open net rules key
        !          1144:                 ;
        !          1145:                 goto fatalregistry
        !          1146:             endif
        !          1147: 
        !          1148:             CloseRegKey $(NetRules)
        !          1149:             CloseRegKey $(NetworkCardKey)
        !          1150:         else
        !          1151:             ;
        !          1152:             ; Error, cannot open network card key
        !          1153:             ;
        !          1154:             goto fatalregistry
        !          1155:         endif
        !          1156:         ;
        !          1157:         ; 3. Change the service section of the hardware. i.e.,
        !          1158:         ;    ParameterName change, value change, etc.
        !          1159:         ;
        !          1160:         OpenRegKey $(!REG_H_LOCAL) "" +
        !          1161:               $(!NTN_ServiceBase)"\"$(ServiceName) +
        !          1162:               $(MAXIMUM_ALLOWED) ServiceKey
        !          1163: 
        !          1164:         Ifstr(i) $(ServiceKey) != $(KeyNull)
        !          1165:             ;
        !          1166:             ; Get the ServiceKey to change the Start value
        !          1167:             ; or Type value. Or open Parameters key to
        !          1168:             ; change the hardware parameters if necessary.
        !          1169:             ;
        !          1170:             CloseRegKey $(ServiceKey)
        !          1171:         else
        !          1172:             ;
        !          1173:             ; Error, cannot open network card key
        !          1174:             ;
        !          1175:             goto fatalregistry
        !          1176:         endif
        !          1177:     endif
        !          1178: 
        !          1179:     goto end
        !          1180:     ;
        !          1181:     ; End of Upgrade Software
        !          1182:     ;
        !          1183: 
        !          1184: ;
        !          1185: ;  Escape hatches
        !          1186: ;
        !          1187: successful = +
        !          1188:     goto end
        !          1189: 
        !          1190: abandon = +
        !          1191:     ForListDo $(OEM_ABANDON_OPTIONS)
        !          1192:         Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
        !          1193:             $(ProductSoftwareName), $($)
        !          1194:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1195:             Debug-Output "ShellCode error"
        !          1196:             goto ShellCodeError
        !          1197:         endif
        !          1198: 
        !          1199:         set RegistryErrorIndex = $($R0)
        !          1200: 
        !          1201:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !          1202:             goto fatalregistry
        !          1203:         endif
        !          1204:     EndForListDo
        !          1205: 
        !          1206:     Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
        !          1207:         ; Remove Software Component
        !          1208:         Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
        !          1209:             $(ProductSoftwareName), FALSE
        !          1210:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1211:             Debug-Output "ShellCode error"
        !          1212:             goto ShellCodeError
        !          1213:         endif
        !          1214: 
        !          1215:         set RegistryErrorIndex = $($R0)
        !          1216: 
        !          1217:         Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
        !          1218:             goto fatalregistry
        !          1219:         endif
        !          1220:     endif
        !          1221: 
        !          1222:     goto end
        !          1223: 
        !          1224: ;
        !          1225: ; warning display
        !          1226: ;
        !          1227: warning = +
        !          1228:     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
        !          1229:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1230:         goto ShellCodeError
        !          1231:     endif
        !          1232:     ifstr(i) $($R1) == "OK"
        !          1233:         goto $(to)
        !          1234:     else-ifstr(i) $($R1) == "CANCEL"
        !          1235:         goto $(from)
        !          1236:     else
        !          1237:         goto "end"
        !          1238:     endif
        !          1239: ;
        !          1240: ; non fatal error display
        !          1241: ;
        !          1242: nonfatalinfo = +
        !          1243:     Set Severity = STATUS
        !          1244:     Set CommonStatus = STATUS_USERCANCEL
        !          1245:     goto nonfatalmsg
        !          1246: nonfatal = +
        !          1247:     Set Severity = NONFATAL
        !          1248:     goto nonfatalmsg
        !          1249: nonfatalmsg = +
        !          1250:     ifstr(i) $(Error) == ""
        !          1251:         Set Severity = NONFATAL
        !          1252:         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
        !          1253:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1254:             goto ShellCodeError
        !          1255:         endif
        !          1256:         set Error = $($R0)
        !          1257:     endif
        !          1258:     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
        !          1259:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1260:         goto ShellCodeError
        !          1261:     endif
        !          1262:     ifstr(i) $($R1) == "OK"
        !          1263:         goto $(from)
        !          1264:     else
        !          1265:         goto "end"
        !          1266:     endif
        !          1267: 
        !          1268: ;
        !          1269: ;  Registry is broken
        !          1270: ;
        !          1271: fatalregistry = +
        !          1272:     Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
        !          1273:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1274:         goto ShellCodeError
        !          1275:     endif
        !          1276:     set Error = $($R0)
        !          1277:     goto fatal
        !          1278: ;
        !          1279: ;  Netcard detection failure
        !          1280: ;
        !          1281: fataldetect = +
        !          1282:     Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
        !          1283:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1284:         Debug-Output "ShellCode error: cannot get an error string."
        !          1285:         goto ShellCodeError
        !          1286:     endif
        !          1287:     set Error = $($R0)
        !          1288:     Goto fatal
        !          1289: ;
        !          1290: ; fatal error display
        !          1291: ;
        !          1292: fatal = +
        !          1293:     ifstr(i) $(Error) == ""
        !          1294:         Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
        !          1295:         ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1296:             goto ShellCodeError
        !          1297:         endif
        !          1298:         set Error = $($R0)
        !          1299:     endif
        !          1300:     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
        !          1301:     ifint $($ShellCode) != $(!SHELL_CODE_OK)
        !          1302:         goto ShellCodeError
        !          1303:     endif
        !          1304: 
        !          1305:     goto setfailed
        !          1306: 
        !          1307: ;
        !          1308: ;  Shelling error
        !          1309: ;
        !          1310: ShellCodeError = +
        !          1311:     set DlgType      = "MessageBox"
        !          1312:     set STF_MB_TITLE = $(ShellCodeErrorTitle)
        !          1313:     set STF_MB_TEXT  = $(ShellCodeErrorText)
        !          1314:     set STF_MB_TYPE  = 1
        !          1315:     set STF_MB_ICON  = 3
        !          1316:     set STF_MB_DEF   = 1
        !          1317:     ui start "Error Message"
        !          1318:     goto setfailed
        !          1319: 
        !          1320: setfailed = +
        !          1321:     set CommonStatus = STATUS_FAILED
        !          1322:     ;
        !          1323:     ; if OEM_ABANDON_ON == TRUE, then remove the registry entries
        !          1324:     ;
        !          1325:     ifstr(i) $(OEM_ABANDON_ON) == TRUE
        !          1326:         set OEM_ABANDON_ON = FALSE
        !          1327:         goto abandon
        !          1328:     endif
        !          1329:     goto end
        !          1330: 
        !          1331: end = +
        !          1332:     goto term
        !          1333: 
        !          1334: term = +
        !          1335: 
        !          1336:     Return $(CommonStatus)
        !          1337: 
        !          1338: [DebugConfiguration]
        !          1339: 
        !          1340:     Set InfName = "OEMNADE2.INF"
        !          1341:     Debug-Output $(InfName)" **CONFIGURATION STATE: "$($0)
        !          1342:     Debug-Output $(InfName)" IRQ_Level is "$(!p:IRQ_Level)
        !          1343:     Debug-Output $(InfName)" IOBaseAddrValue is "$(!p:IOBaseAddrValue)
        !          1344:     Debug-Output $(InfName)" TransceiverValue is "$(!p:TransceiverValue)
        !          1345:     Debug-Output $(InfName)" MemBaseAddrDec is "$(!p:MemBaseAddrDec)
        !          1346:     Debug-Output $(InfName)" MappedValue is "$(!p:MappedValue)
        !          1347: 
        !          1348:     return
        !          1349: 
        !          1350: 
        !          1351: ;***************************************************************
        !          1352: ;  INSTALL SECTIONS
        !          1353: ;***************************************************************
        !          1354: [Install-Option]
        !          1355:     set STF_VITAL = ""
        !          1356: 
        !          1357:     ifstr(i) $(AddCopy) == "YES"
        !          1358: 
        !          1359:         ;
        !          1360:         ; Add the files to the copy list
        !          1361:         ;
        !          1362:         ;  BUGBUG: eliminate the "nt2" in the next line when Sunil fixes
        !          1363:         ;      the other INF files
        !          1364:         ;
        !          1365:         AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
        !          1366: 
        !          1367:     endif
        !          1368: 
        !          1369:     ifstr(i) $(DoCopy) == "YES"
        !          1370: 
        !          1371:        ;
        !          1372:        ; Copy files in the copy list
        !          1373:        ;
        !          1374:        set !STF_NCPA_FLUSH_COPYLIST = TRUE
        !          1375:        CopyFilesInCopyList
        !          1376: 
        !          1377:     endif
        !          1378: 
        !          1379:     Exit
        !          1380: 
        !          1381: [Install-Update]
        !          1382:    set STF_VITAL        = ""
        !          1383:    set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
        !          1384:    ;set STF_VERSION     = "YES"
        !          1385: 
        !          1386:    AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
        !          1387:    AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
        !          1388: 
        !          1389:    set !STF_NCPA_FLUSH_COPYLIST = TRUE
        !          1390:    CopyFilesInCopyList
        !          1391: 
        !          1392:    exit

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.