OEMSETUP.INF Driver File Contents (DE220PNP.ZIP)

;***********************************************************************
;
; OEMNADOA.INF
;
;       Novell NetWare ISA card INF for Novell ODI drivers
;
;
;***********************************************************************

[Identification]
        OptionType = NetAdapter

[PlatformsSupported]
        ISA
        EISA
        "Jazz-Internal Bus"

[LanguagesSupported]
        ENG


[FileConstants]

UtilityInf              = "UTILITY.INF"
ParamInf                = "NCPARAM.INF"
subroutineinf   = "SUBROUTN.INF"
NwSubsInf               = "NWSUBS.INF"
Exit_Code               = 0

NetEventDLL      = "%SystemRoot%\System32\netevent.dll"
IoLogMsgDLL      = "%SystemRoot%\System32\IoLogMsg.dll"

Manufacturer                    = ""
ClientProvider                  = "Novell"
ProductMajorVersion     = "1"
ProductMinorVersion     = "0"
ProductVersion                  = $(ProductMajorVersion)"."$(ProductMinorVersion)
DriverName                              = "OdiLoad"
OdiModules                              = "ODI_Modules"


NetRuleHardwareType               = "nwDriver nwAdapter"
NetRuleHardwareBindForm   = " yes yes container"
ProductKeyName = $(!NTN_SoftwareBase)"\"$(ClientProvider)"\"$(DriverName)"\CurrentVersion"
;
; ParamKeyname not used - not updated
; ParamKeyName  = $(!NTN_ServiceBase)"\"$(ProductHardware$(Option)Name)"\Parameters"
;

[GeneralConstants]
from    = ""
to              = ""
ExitCodeOk              = 0
ExitCodeCancel = 1
ExitCodeFatal  = 2

KeyNull                         = ""
MAXIMUM_ALLOWED = 33554432
RegistryErrorIndex = NO_ERROR
KeyProduct                      = ""
KeyParameters           = ""

TRUE                    = 1
FALSE                   = 0
NoTitle         = 0

ExitState       = "Active"
OldVersionExisted = $(FALSE)

DriverPath        = $(!STF_NTPATH)\netware

[ODIParameters]
        ODINodeAddress = ""
        ODIDriverAdditionalParms = {}
        ODICustomList = {}
        ODITokenRing            = ""
        ODITokenRingSnap        = ""
        ;
        ; File specific Parameters:
        ;   ISA LAN Driver file:
        ;               ODISlotList = {}
        ;               ODIDefaultSlot = ""
        ;        MCA and EISA LAN Driver files:
        ;               ODISlotList = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
        ;               ODIDefaultSlot = "2"
        ;
        ODISlotList = {}
        ODIDefaultSlot = ""

[date]
        Now = {} ? $(!LIBHANDLE) GetSystemDate


[Identify]

        read-syms Identification

        set Status              = STATUS_SUCCESSFUL
        set Identifier  = $(OptionType)
        set Media               = #("Source Media Descriptions", 1, 1)

        Return $(Status) $(Identifier) $(Media)

[ReturnOptions]

        read-syms ODIStrings$(!STF_LANGUAGE)

        set Status              = STATUS_FAILED
        set OptionList   = {}
        set OptionTextList = {}

        set LanguageList = ^(LanguagesSupported, 1)
        Ifcontains(i) $($0) in $(LanguageList)
                ifstr(i) $($1) == ""
                        goto returnoptions
                endif

                set PlatformList = ^(PlatformsSupported, 1)
                Ifcontains(i) $($1) in $(PlatformList)
                        goto returnoptions
                else
                        set Status = STATUS_NOTSUPPORTED
                        goto finish_ReturnOptions
                endif
        else
                set Status = STATUS_NOLANGUAGE
                goto finish_ReturnOptions
        endif

returnoptions = +
        set OptionList   = ^(Options, 1)
        set OptionTextList = {}

        ForListDo $(OptionList)
                set OptionTempString = " ODI "#($($),Title,1)$(AdapterForNetWare)
                set OptionTextList = >($(OptionTextList), $(OptionTempString) )
        EndForListDo

        set Status               = STATUS_SUCCESSFUL

Debug-Output "OEMNADOA.INF-[finish_ReturnOptions]:"
Debug-Output "OEMNADOA.INF-          Status = "$(Status)
Debug-Output "OEMNADOA.INF-      OptionList = "$(OptionList)
Debug-Output "OEMNADOA.INF-  OptionTextList = "$(OptionTextList)

finish_ReturnOptions = +
        Return $(Status) $(OptionList) $(OptionTextList)

[InstallOption]

        set Option      = $($1)
        set SrcDir      = $($2)
        set AddCopy  = $($3)
        set DoCopy      = $($4)
        set DoConfig = $($5)
        set NdisDriverParameters = $($6)

        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 ODIParameters
        read-syms DialogConstants$(!STF_LANGUAGE)
        read-syms ODIStrings$(!STF_LANGUAGE)
        ifstr(i) $(!NTN_Origination) == "NCPA"
                set Continue = "OK"
        endif
        read-syms FileConstants$(!STF_LANGUAGE)

        detect date

;       set-title  $(Function$(Option)Title)

        set to  = Begin
        set from = Begin
        set CommonStatus = STATUS_SUCCESSFUL

        EndWait

Begin = +

        set CurrentInstallMode = ""
        Ifstr(i) $(!NTN_InstallMode) == deinstall
                set StartLabel = removeadapter
                goto skipmakingthelists
        else-Ifstr(i) $(!NTN_InstallMode) == Update
                set StartLabel = UpgradeSoftware
                set CurrentInstallMode = configure
                set DoCopy = YES
                set AddCopy = YES
        else-Ifstr(i) $(!NTN_InstallMode) == bind
                set StartLabel = bindingadapter
                goto skipmakingthelists
        else-Ifstr(i) $(!NTN_InstallMode) == configure
                set StartLabel = configureadapter
                set CurrentInstallMode = configure
        else
                set DoCopy = YES
                set AddCopy = YES
                set StartLabel = installadapter
                set OEM_ABANDON_OPTIONS = {}
                set OEM_ABANDON_SOFTWARE = FALSE
                set OEM_ABANDON_ON = TRUE
        endif

        set ParameterListNames = ^(DefaultParameterLists, 1)    ; NWIRQList, NWMEMList1, etc.
        set ListNames = ^(ODIListNamesSection, 1)                                       ; List1, list2, ..., list6
        set ODIKeywordList = ^(ChoicesNamesList, 1)                             ; Int, mem, Port, etc.
        set ODITitleList = ^(ChoicesNamesList, 2)                                       ; Interrupt Number, Port, etc.
        set MSParameterList = ^(ChoicesNamesList, 3)                            ; InterruptNumber, IOBaseAddress, etc.

        set DriverListNames = {}
        set ODINumberofDriverLists = 0
        ForListDo ^($(Option),0 )
                ifcontains(i) $($) IN $(ListNames)
                        set DriverListNames = >($(DriverListNames), $($))
                else-ifstr(i) $($) == "CUSTOM"
                        set ODICustomList = #($(Option), Custom, 1)
                endif
        EndForListDo

        QueryListSize ODINumberofDriverLists $(DriverListNames)

;
; DriverListNames now contains the List names the selected ODI driver has (i.e. {List1, List2})
; ODINumberofDriverLists now contains the number of lists used
;

        Debug-Output "DriverListNames = "$(DriverListNames)
        Debug-Output "Size of DriverListNames = "$(ODINumberofDriverLists)

        Debug-Output "NdisDriverParameters = "$(NdisDriverParameters)

        ForListDo $(DriverListNames)
                set $($)Keyword = #($(Option), $($), 1)
                ifstr $($($)Keyword) != ""
                        set $($)Default = #($(Option), $($), 3)

                        ifcontains(i) $($($)Keyword) IN $(ODIKeywordList)
                                set $($)Title = *($(ODITitleList), ~($(ODIKeywordList), $($($)Keyword)))
                                set ThisListName = #($(Option), $($), 2)
                                set MSParameterName$(#) = *($(MSParameterList), ~($(ODIKeywordList), $($($)Keyword)))
                                set FinalList = {}

                                ifcontains(i) $(ThisListName) IN $(ParameterListNames)
                                        ifstr(i) #($(Option), $($), 4) == "ALL"
                                                set FinalList = ^($(ThisListName), 1)
                                        else
                                                set CountUpTo = #($(Option), $($), 5)

                                                ifstr(i) $(CountUpTo) == "END"
                                                        set CountUpTo = $(MAXIMUM_ALLOWED)
                                                endif

                                                set StartNumber = #($(Option), $($), 4))

                                                ForListDo ^($(ThisListName), 1)
                                                        ifint $(#) >= $(StartNumber)
                                                                ifint $(#) <= $(CountUpTo)
                                                                        set FinalList = >($(FinalList), $($))
                                                                endif
                                                        endif
                                                EndForListDo
                                        endif
                                else
                                        ;
                                        ; User passed in the list
                                        ;
                                        Debug-Output "User passed in a list"
                                        set $($)Title = #($(Option), $($), 2)
                                        set FinalList = #($(Option), $($), 4)
                                endif
                        else
                                ;
                                ; User passed in a new keyword
                                ;
                                Debug-Output "User passed in a new keyword"
                                set $($)Title = #($(Option), $($), 2)
                                set MSParameterName$(#) = ""
                                set FinalList = #($(Option), $($), 4)
                        endif
                        set $($)List = $(FinalList)
                endif

                Debug-Output "List"$(#)"Title = "$($($)Title)
                Debug-Output "List"$(#)"Default = "$($($)Default)
                Debug-Output "List"$(#)"Keyword = "$($($)Keyword)
                Debug-Output "List"$(#)"List = "$($($)List)
                Debug-Output "MSParameterName"$(#)" = "$(MSParameterName$(#))

                ;
                ; Get the card settings from the Ndis driver service
                ;
                Ifstr(i) $(NdisDriverParameters) != ""
                        set FoundValueName = "FALSE"
                        set ListNameDefault = $($)Default
                        set NdisParameterName = $(MSParameterName$(#))
                        ForListDo $(NdisDriverParameters)
                                set ValueList = $($)
                                Debug-Output "ValueList = "$(ValueList)
                                Ifstr(i) $(FoundValueName) == "FALSE"
                                        set NdisValueName = *($(ValueList), 1)
                                        Debug-Output "NdisValueName = "$(NdisValueName)
                                        Ifstr(i) $(NdisValueName) == $(NdisParameterName)
                                                Ifstr(i) $(NdisValueName) == "IOBaseAddress"
                                                        set-dectohex $(ListNameDefault) = *($(ValueList), 4)
                                                        Split-String $($(ListNameDefault)) "x" SplitList
                                                        set $(ListNameDefault) = *($(SplitList), 3)
                                                else-ifstr(i) $(NdisValueName) == "MemoryMappedBaseAddress"
                                                        set-dectohex $(ListNameDefault) = *($(ValueList), 4)
                                                        Split-String $($(ListNameDefault)) "x" SplitList
                                                        set $(ListNameDefault) = *($(SplitList), 3)
                                                else
                                                        set $(ListNameDefault) = *($(ValueList), 4)
                                                Endif
                                                set FoundValueName = "TRUE"
                                                Debug-Output "NEW: "$(ListNameDefault)" = "$($(ListNameDefault))
                                        Endif
                                Endif
                        EndForListDo
                Endif

        EndForListDo

skipmakingthelists = +

        set ODILANDriverTitle = #($(Option), Title, 1)
        Split-String #($(Option), DriverName, 2) "." SplitFileNameList
        set ODILANDriverName = *($(SplitFileNameList), 1)
        set ODIMediaType = #($(Option), MediaType, 1)
        Debug-Output "ODILANDriverName = "$(ODILANDriverName)
        Debug-Output "ODIMediaType = "$(ODIMediaType)

        ifstr(i) $(ODIMediaType) == "ETHERNET"
                set NdisMediaType = "1"
        else-ifstr(i) $(ODIMediaType) == "TOKEN-RING"
                set NdisMediaType = "2"
        else-ifstr(i) $(ODIMediaType) == "FDDI"
                set NdisMediaType = "4"
        else
                Debug-Output "OEMNADOA.INF: Unknown media type "$(ODIMediaType)
                set NdisMediaType = ""
        endif

        set from = $(fatal)
        set to = $(fatal)
        goto $(StartLabel)

installadapter = +

        install "Install-Option"

        goto adapteroptions

configureadapter = +
        Ifstr $(KeyProduct) == $(KeyNull)
                OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
                Ifstr $(KeyProduct) == $(KeyNull)
                        set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
                        Debug-Output "OEMNADOA.INF: Cannot find component product key "$(!NTN_RegBase)
                        goto fatalregistry
                Endif
        Endif

        Set AdapterNumber = ""

        Shell $(UtilityInf) FindService, $(KeyProduct)
        Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: FindService shell failure "$($ShellCode)
                Goto ShellCodeError
        Endif
        Ifstr(i) $($R0) != NO_ERROR
                Debug-Output "OEMNADOA.INF: FindService Error "$($R0)
                Goto fatalregistry
        endif

        set KeyParameters = $($R2)
        set ServiceAreaHandle = $($R1)

        Ifstr $(KeyParameters) == $(KeyNull)
                set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
                Debug-Output "OEMNADOA.INF: Cannot find component service "$(KeyProduct)
                goto fatalregistry
        endif

        set OldVersionExisted = $(TRUE)

        set ValueName = ""
        set ValueData = ""
        set ValueStr  = ""
        set ValueList = {}

        GetRegValue $(KeyParameters) ODILoadName ODILoadName
        Set CardInstanceName = *($(ODILoadName),4)

        Ifstr $(CardInstanceName) == $(KeyNull)
                set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
                Debug-Output "OEMNADOA.INF: Cannot find CardInstanceName"
                goto fatalregistry
        endif

        set KeyToFind = $(!NTN_ServiceBase)"\ODILOAD\ODI_MODULES\"$(CardInstanceName)
        OpenRegKey $(!REG_H_LOCAL) ""  $(KeyToFind) $(MAXIMUM_ALLOWED) DriverKey
        Ifstr $(DriverKey) == $(KeyNull)
                set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
                Debug-Output "OEMNADOA.INF: Cannot find component product key = "$(KeyToFind)
                goto fatalregistry
        Endif

        GetRegValue $(DriverKey) Parameters ParameterList

        ;  get the data portion
        set ParameterList = *($(ParameterList), 4)

        Debug-Output "parameter list = "$(ParameterList)

        ForListDo $(ParameterList)
                set ThisParameterList = $($)
                Split-String $($) " " SplitList
                set KeyToSearchFor = *($(SplitList), 1)
                set ValueToUse = *($(SplitList), 3)
                Debug-Output "Keytosearchfor = "$(KeyToSearchFor)
                Debug-Output "ValueToUse = "$(ValueToUse)
                ;
                ;   #1    #2     #3
                ; "Parm"  " "    "Value"
                ;
                set ValueFound = 0

                ;
                ; check frametypes for TOKEN-RING, TOKEN-RING_SNAP
                ;
                ifstr(i) $(KeyToSearchFor) == "FRAME"
                        ;
                        ; Don't append Frametypes to ODIAdditionalParms, so set ValueFound = 1
                        ;
                        set ValueFound = 1
                        QueryListSize SplitListSize $(SplitList)
                        ifstr(i) *($(SplitList), 3) == "TOKEN-RING"
                                set LastParameter = *($(SplitList), $(SplitListSize))
                                ifstr(i) $(LastParameter) == "MSB"
                                        set ODITokenRing = "MSB"
                                else-ifstr(i) $(LastParameter) == "LSB"
                                        set ODITokenRing = "LSB"
                                else
                                        ;
                                        ; Not there, so default to MSB
                                        ;
                                        set ODITokenRing = "MSB"
                                endif
                        else-ifstr(i) *($(SplitList), 3) == "TOKEN-RING_SNAP"
                                set LastParameter = *($(SplitList), $(SplitListSize))
                                ifstr(i) $(LastParameter) == "MSB"
                                        set ODITokenRingSnap = "MSB"
                                else-ifstr(i) $(LastParameter) == "LSB"
                                        set ODITokenRingSnap = "LSB"
                                else
                                        ;
                                        ; Not there, so default to MSB
                                        ;
                                        set ODITokenRingSnap = "MSB"
                                endif
                        endif
                ;
                ; Check for NODE parameter
                ;
                else-ifstr(i) $(KeyToSearchFor) == "NODE"
                        set ODINodeAddress = $(ValueToUse)
                        set ValueFound = 1
                ;
                ; Check for SLOT parameter
                ;
                else-ifstr(i) $(KeyToSearchFor) == "SLOT"
                        set ODIDefaultSlot = $(ValueToUse)
                        set ValueFound = 1
                ;
                ; Check for BUSNAME parameter - ignore it
                ;
                else-ifstr(i) $(KeyToSearchFor) == "BUSNAME"
                        set ValueFound = 1
                ;
                ; Check for BUSTYPE parameter
                ;
                else-ifstr(i) $(KeyToSearchFor) == "BUSTYPE"
                        set ValueFound = 1
                        set BusInterfaceType = $(ValueToUse)
                ;
                ; Check for BUS parameter
                ;
                else-ifstr(i) $(KeyToSearchFor) == "BUS"
                        set ValueFound = 1
                        set BusNumber = $(ValueToUse)
                endif

                ForListDo $(DriverListNames)
                        ifstr(i) $(KeyToSearchFor) == $($($)Keyword)
                                set $($)Default = $(ValueToUse)
                                set ValueFound = 1
                                ifcontains(i) $(ValueToUse) NOT-IN $($($)List)
                                        set $($)List = >($($($)List), $(ValueToUse))
                                endif
                        endif
                EndForListDo

                Debug-Output "Value Found = "$(ValueFound)

                ifint $(ValueFound) == 0
                        set FoundInCustom = 0

                        ForListDo $(ODICustomList)
                                ifstr(i) $($) == $(ThisParameterList)
                                        set FoundInCustom = 1
                                endif
                        EndForListDo

                        Debug-Output "Found in Custom = "$(FoundInCustom)

                        ifint $(FoundInCustom) == 0
                                ifstr $(ODIDriverAdditionalParms) == {}
                                        set ODIDriverAdditionalParms = $(KeyToSearchFor)" "$(ValueToUse)
                                else
                                        set ODIDriverAdditionalParms = >($(ODIDriverAdditionalParms), $(KeyToSearchFor)" "$(ValueToUse))
                                endif
                        endif
                endif
        EndForListDo

        Debug-Output "AdditionalParms = "$(ODIDriverAdditionalParms)
        Debug-Output "CustomList = "$(ODICustomList)
        Debug-Output "BusType = "$(BusInterfaceType)
        Debug-Output "Bus = "$(BusNumber)


adaptersetup =+

        goto adapteroptions
adapteroptions = +
        set from = adapteroptions

        ;
        ; Find what NLS directory is being used
        ;

        set NovellParameters = $(!NTN_SoftwareBase)"\"$(ClientProvider)"\Parameters"
        OpenRegKey $(!REG_H_LOCAL) "" $(NovellParameters) $(MAXIMUM_ALLOWED) KeyNovellParameters
        ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
                GetRegValue $(KeyNovellParameters) "NWLanguage" LanguageList
                ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
                        set NLSDirName = *($(LanguageList), 4)
                        LoadLibrary $(NetWareForWindowsNT) $(!STF_WINDOWSSYSPATH)"\nls\"$(NLSDirName)"\nwsetupr.dll" NwLibHandle
                        SetHelpFile $(!STF_WINDOWSSYSPATH)"\nls\"$(NLSDirName)"\nwnthelp.hlp" $(!MinimumID) $(!MaximumID)
                else
                        goto fatalregistry
                endif
                CloseRegKey $(KeyNovellParameters)
        else
                goto fatalregistry
        Endif

dothedialog = +
        ifint $(ODINumberofDriverLists) == 0
                ifstr(i) $(CurrentInstallMode) == configure
                        read-syms NoParms$(!STF_LANGUAGE)
                        ui start "WorkstationDLG" $(NwLibHandle)

                        ifstr(i) $(DLGEVENT) == "CONTINUE"
                                Debug-Output "OK hit"
                        else-ifstr(i) $(DLGEVENT) == "EXIT"
                        ;
                        ; user selected the advanced button
                        ;
                                goto doadvancedsettings
                        endif
                endif
        else
                read-syms LANDriverDlg$(!STF_LANGUAGE)

                set NotifyFields = {}
                set ComboListItemsIn = {}
                set ComboListItemsOut = {}
                ForListDo $(DriverListNames)
                        set NotifyFields = >($(NotifyFields), "NO")
                        set ComboListItemsIn = >($(ComboListItemsIn), $($)List)
                        ifstr $($($)Value) == ""
                                set $($)Value = $($($)Default)
                        endif
                        set ComboListItemsOut = >($(ComboListItemsOut), $($)Value)
                EndForListDo

                ui start "LANDriverParms" $(NwLibHandle)

                ifstr(i) $(DLGEVENT) == "CONTINUE"
                        Debug-Output "Continue hit"
                else-ifstr(i) $(DLGEVENT) == "BACK"
                        Debug-Output "Action: CANCEL. Bye."
                        set CommonStatus = STATUS_USERCANCEL
                        ui pop 1
                        FreeLibrary $(NwLibHandle)
                        goto end
                else-ifstr(i) $(DLGEVENT) == "EXIT"

doadvancedsettings =+
                ;
                ; user selected the advanced button
                ;
                        Debug-Output "Action: ADVANCED DIALOG"
                        read-syms AdvancedDialog$(!STF_LANGUAGE)
                        set RadioIn = {}
                        set ComboListItemsIn = {}
                        set ComboListItemsOut = {}
                        set ComboOut = $(ODIDefaultSlot)

                        ifstr(i) $(ODIMediaType) == "TOKEN-RING"
                                ifstr(i) $(ODISlotList) == {}
                                        set DlgTemplate = "DLG_ADVANCEDDRIVER3"
                                else
                                        set ComboListItemsIn = { ODISlotList }
                                        set ComboListItemsOut = { ComboOut }
                                        set DlgTemplate = "DLG_ADVANCEDDRIVER1"
                                endif

                                ifstr(i) $(ODITokenRing) == "LSB"
                                        set RadioIn = { 2 }
                                else
                                        set RadioIn = { 1 }
                                endif

                                ifstr(i) $(ODITokenRingSnap) == "LSB"
                                        set RadioIn = >($(RadioIn), "4")
                                else
                                        set RadioIn = >($(RadioIn), "3")
                                endif
                        else
                                ifstr(i) $(ODISlotList) == {}
                                        set DlgTemplate = "DLG_ADVANCEDDRIVER4"
                                else
                                        set ComboListItemsIn = { ODISlotList }
                                        set ComboListItemsOut = { ComboOut }
                                        set DlgTemplate = "DLG_ADVANCEDDRIVER2"
                                endif
                        endif

                        ui start "AdvancedDialog" $(NwLibHandle)
                        ui pop 1

                        ifstr(i) $(DLGEVENT) == "CONTINUE"
                                set ODINodeAddress = *($(EditTextOut), 1)
                                set ODIDefaultSlot = *($(ComboOut), 1)
                                ifcontains "2" IN $(RadioOut)
                                        set ODITokenRing = "LSB"
                                else
                                        set ODITokenRing = "MSB"
                                endif
                                ifcontains "4" IN $(RadioOut)
                                        set ODITokenRingSnap = "LSB"
                                else
                                        set ODITokenRingSnap = "MSB"
                                endif
                        else-ifstr(i) $(DLGEVENT) == "BACK"
                                Debug-Output "Action: CANCEL. Bye."
                        endif

                        goto dothedialog
                else
                        Debug-Output "Action: unknown. Bye."
                        ui pop 1
                        FreeLibrary $(NwLibHandle)
                        goto end
                endif

                ui pop 1


                ForListDo $(DriverListNames)
                        Debug-Output "List"$(#)"Value = "$($($)Value)
                EndForListDo
        endif

        FreeLibrary $(NwLibHandle)

        ifint $(OldVersionExisted) == $(TRUE)
                ifstr(i) $(CurrentInstallMode) == configure
                        goto writeparameters
                endif
        endif

        StartWait
        Shell $(UtilityInf), AddHardwareComponent, $(ODILANDriverName),$(STF_CONTEXTINFNAME),$(ProductKeyName)

        ifint $($R4) != -1
                Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
        endif

        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: Cannot add hardware component "$($ShellCode)
                goto ShellCodeError
        endif

        set RegistryErrorIndex = $($R0)

        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
                EndWait
                Debug-Output "OEMNADOA.INF: Registry error: add hardware component "$(RegistryErrorIndex)
                CloseRegKey $($R1)
                CloseRegKey $($R2)
                CloseRegKey $($R3)
                goto fatalregistry
        endif

        set KeyParameters = $($R3)
        set KeyAdapterRules = $($R2)
        set AdapterNumber = $($R4)

        Set-add TempAdapterNumber = $(AdapterNumber),0

        set CardInstanceName = $(ODILANDriverName)" #"$(TempAdapterNumber)

        set NewValueList = {{ClientProvider,$(NoTitle),$(!REG_VT_SZ),$(ClientProvider)},+
                                                {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] ODI "$(ODILANDriverTitle)$(AdapterForNetWare)},+
                                                {Description,$(NoTitle),$(!REG_VT_SZ),"ODI "$(ODILANDriverTitle)$(AdapterForNetWare)},+
                                                {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ODILANDriverName)},+
                                                {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
                                                {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)},+
                                                {OdiAdapter,$(NoTitle),$(!REG_VT_DWORD),1}}

        Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: AddValueList ShellCode error "$($ShellCode)
                goto ShellCodeError
        endif

        CloseRegKey $($R1)

        set TempProdName = """"$(ODILANDriverName)$(AdapterNumber)""""
        set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)

        set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
                                                {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
                                                {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}

        Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: AddValueList ShellCode error "$($ShellCode)
                goto ShellCodeError
        endif

        set RegistryErrorIndex = $($R0)

        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
                EndWait
                Debug-Output "OEMNADOA.INF: AddValueList Registry error "$(RegistryErrorIndex)
                CloseRegKey $(KeyParameters)
                CloseRegKey $(KeyAdapterRules)
                goto fatalregistry
        endif

        CloseRegKey $(KeyAdapterRules)

        SetRegValue $(KeyParameters) {OdiLoadName,$(NoTitle),$(!REG_VT_SZ),$(CardInstanceName)}
        
        goto writeparameters

writeparameters = +

        Shell $(NwSubsInf), NwGetNICBusInfo, $(CardInstanceName) $(BusInterfaceType) $(BusNumber)

        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: NwGetNICBusInfo ShellCode error "$($ShellCode)
                goto ShellCodeError
        endif
        ifint $($R0) != $(!SHELL_CODE_OK)
                goto ShellCodeError
        endif

        set BusNumber = $($R1)  
        set BusTypeName = $($R2)
        set BusInterfaceType = $($R3)
        
        ifstr(i) $(NdisMediaType) == ""
                set NdisMediaType = "1"
                Debug-Output "OEMNADOA.INF: Media type NOT set"
        endif

        set NewValueList = {{MediaType,$(NoTitle),$(!REG_VT_DWORD),$(NdisMediaType)}}

        ForListDo $(DriverListNames)
                ifstr $(MSParameterName$(#)) != ""
                        set-hextodec DecValue = $($($)Value)
                        set ValueToAdd = {$(MSParameterName$(#)),$(NoTitle),$(!REG_VT_DWORD), $(DecValue)}
                        set NewValueList = >($(NewValueList), $(ValueToAdd))
                endif
        EndForListDo
        
        Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)

        CloseRegKey $(KeyParameters)

        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: AddValueList ShellCode error "$($ShellCode)
                goto ShellCodeError
        endif

        set RegistryErrorIndex = $($R0)

        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
                Debug-Output "OEMNADOA.INF: AddValueList Registry error "$($ShellCode)
                goto fatalregistry
        endif

        EndWait

        set PromptForSrcRouting = "FALSE"

        Ifstr(i) $(ODIMediaType) == "ETHERNET"
                set ODIParmList = {"Frame ETHERNET_802.2", +
                                                   "Frame ETHERNET_802.3", +
                                                   "Frame ETHERNET_II", +
                                                   "Frame ETHERNET_SNAP" +
                                                   "BusName "$(BusTypeName) +
                                                   "BusType "$(BusInterfaceType) +
                                                   "Bus "$(BusNumber) }
        else-Ifstr(i) $(ODIMediaType) == "TOKEN-RING"
                set ODIParmList = {"Frame TOKEN-RING "$(ODITokenRing), +
                                                   "Frame TOKEN-RING_SNAP "$(ODITokenRingSnap) +
                                                   "BusName "$(BusTypeName) +
                                                   "BusType "$(BusInterfaceType) +
                                                   "Bus "$(BusNumber) }

                ;If there is an ODI stack available remove the comment on the next line.
                ;set PromptForSrcRouting = "TRUE"

        else-Ifstr(i) $(ODIMediaType) == "FDDI"
                set ODIParmList = {"Frame FDDI_802.2", +
                                                   "Frame FDDI_SNAP" +
                                                   "BusName "$(BusTypeName) +
                                                   "BusType "$(BusInterfaceType) +
                                                   "Bus "$(BusNumber) }

                ;If there is an ODI stack available remove the comment on the next line.
                ;set PromptForSrcRouting = "TRUE"

        else
                set ODIParmList = {}
        endif

        Debug-Output "Framenames = "$(ODIParmList)


        ;
        ; Build List to send to ODI_MODULES\CARDNAME
        ;
        ForListDo $(DriverListNames)
                ifstr $($($)Value) == $(Present)
                        set ODIParmList = >($(ODIParmList), $($($)Keyword))
                else-ifstr $($($)Value) != $(NotPresent)
                        set ODIParmList = >($(ODIParmList), $($($)Keyword)" "$($($)Value))
                endif
        EndForListDo

        ifstr $(ODINodeAddress) != ""
                set ODIParmList = >($(ODIParmList), "Node "$(ODINodeAddress))
        endif

        ifstr $(ODIDefaultSlot) != ""
                set ODIParmList = >($(ODIParmList), "Slot "$(ODIDefaultSlot))
        endif

        ForListDo $(ODIDriverAdditionalParms)
                ifstr $($) != ""
                        set ODIParmList = >($(ODIParmList), $($))
                endif
        EndForListDo

        ForListDo $(ODICustomList)
                ifstr $($) != ""
                        set ODIParmList = >($(ODIParmList), $($))
                endif
        EndForListDo


        Debug-Output "ODIParmList = "$(ODIParmList)


        Shell $(NwSubsInf) NwAddOdiLoadModule $(CardInstanceName) $(AdapterNumber) $(ODIParmList)

        Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: NwAddOdiLoadModule failure "$($ShellCode)
                Goto ShellCodeError
        Endif

        Set ErrorString = $($R0)
        Ifstr(i) $(ErrorString) != NO_ERROR
                Debug-Output "OEMNADOA.INF: NwAddOdiLoadModule "$(ErrorString)
                goto fatalregistry
        Endif

        Debug-Output "PromptForSrcRouting = "$(PromptForSrcRouting)
        Ifstr(i) $(PromptForSrcRouting) == "TRUE"
                Shell $(NwSubsInf) NwConfigureSourceRouting
        Endif

        Ifstr(i) $(!NTN_InstallMode) == install
                Set OdiAdapterInstalledOkay = "1"
        Endif
        goto successful

bindingadapter =+
        set Error = $(BindingError)
        goto fatal

removeadapter = +
        Shell $(NwSubsInf) NwRemoveAdapter $(!NTN_RegBase)
        Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: Shell Error NwRemoveAdapter "$($ShellCode)
        Endif

        Shell $(NwSubsInf) NwRemoveNtAdapter $(ProductKeyName) $(ClientProvider)
        Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: NwRemoveNtAdapter "$($ShellCode)
                goto ShellCodeError
        Endif

        set RegistryErrorIndex = $($R0)

        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
                Debug-Output "OEMNADOA.INF: NwRemoveNtAdapter "$(RegistryErrorIndex)
                Ifstr(i) $(RegistryErrorIndex) == "SHELL_CODE_ERROR"
                        goto ShellCodeError
                Endif
                goto fatalregistry
        Endif

        goto end

UpgradeSoftware = +
        Ifstr(i) $(DoCopy) == "YES"
                Ifstr(i) $(SrcDir) == ""

                        ;
                        ;  Get source location
                        ;

                        Shell $(NwSubsInf), DoAskLANSource, $(!STF_CWDDIR), $(SrcDir) YES

                        Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                                Goto ShellCodeError
                        Else-Ifstr(i) $($R0) == STATUS_FAILED
                                Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
                                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                                        goto ShellCodeError
                                endif
                                set Error = $($R0)
                                Goto fatal
                        Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
                                Goto end
                        Endif

                        Set SrcDir = $($R1)
                Endif
        Endif

        install "Install-Option"

        Ifstr(i) $(DoConfig) == "YES"
                goto configureadapter
        else
                goto end
        endif

successful = +
        goto end

abandon = +
        ForListDo $(OEM_ABANDON_OPTIONS)
        Shell $(NwSubsInf) NwRemoveNtAdapter $(ProductKeyName) $(ClientProvider) $($)
        Ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: NwRemoveNtAdapter "$($ShellCode)
                goto ShellCodeError
        Endif

                set RegistryErrorIndex = $($R0)

                Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
                        goto fatalregistry
                endif
        EndForListDo

        goto end

warning = +
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
        endif
        ifstr(i) $($R1) == "OK"
                goto $(to)
        else-ifstr(i) $($R1) == "CANCEL"
                goto $(from)
        else
                goto "end"
        endif


nonfatalinfo = +
        Set CommonStatus = STATUS_USERCANCEL
        Set Severity = STATUS
        goto nonfatalmsg
nonfatal = +
        Set Severity = NONFATAL
        goto nonfatalmsg
nonfatalmsg = +
        ifstr(i) $(Error) == ""
                Set Severity = NONFATAL
                Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                        goto ShellCodeError
                endif
                set Error = $($R0)
        endif
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
        endif
        ifstr(i) $($R1) == "OK"
                goto $(from)
        else
                goto "end"
        endif

fatalregistry = +
        Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
        endif
        set Error = $($R0)
        goto fatal

fataldetect = +
        Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "OEMNADOA.INF: ShellCode error: cannot get an error string."
                goto ShellCodeError
        endif
        set Error = $($R0)
        Goto fatal
fatal = +
        ifstr(i) $(Error) == ""
                Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
                ifint $($ShellCode) != $(!SHELL_CODE_OK)
                        goto ShellCodeError
                endif
                set Error = $($R0)
        endif
        Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
        endif

        goto setfailed

ShellCodeError = +
        set DlgType       = "MessageBox"
        set STF_MB_TITLE = "Error: "$(Function$(Option)Title)
        set STF_MB_TEXT  = "Shell Code Error"
        set STF_MB_TYPE  = 1
        set STF_MB_ICON  = 3
        set STF_MB_DEF  = 1
        ui start "Error Message"
        goto setfailed

setfailed = +
        set CommonStatus = STATUS_FAILED
        ifstr(i) $(OEM_ABANDON_ON) == TRUE
                set OEM_ABANDON_ON = FALSE
                goto abandon
        endif
        goto end

end = +
        goto term

term = +
;       Ifstr(i) $(OdiAdapterInstalledOkay) == "1"
;               Shell $(NwSubsInf) GetOdiAdapterList
;               ifint $($R3) < 2
;                       Set DlgType = "MessageBox"
;                       Set STF_MB_TITLE = "NetWare ODI LAN Drivers Setup"
;                       Set STF_MB_TEXT  = "The NetWare ODI Adapter was successfully installed.  "+
;                                                       "Your NetWare installation is COMPLETE."
;                       Set STF_MB_TYPE  = 1
;                       Set STF_MB_ICON  = 2
;                       Set STF_MB_DEF  = 1
;                       ui start "Error Message"
;               Endif
;       Endif

        ;
        ; Check if ODINSUP needs to be installed
        ;

        Shell $(NwSubsInf), CheckIfODINSUPIsNeeded

        Return $(CommonStatus)

[Install-Option]
        set STF_VITAL = ""

        ifstr(i) $(AddCopy) == "YES"
                AddSectionKeyFileToCopyList $(Option) DriverName $(SrcDir) $(!STF_WINDOWSSYSPATH)\netware
        endif

        ifstr(i) $(DoCopy) == "YES"
                set !STF_NCPA_FLUSH_COPYLIST = TRUE
                CopyFilesInCopyList
        endif

        ifstr(i) $(DoConfig) == "YES"
        endif

        Exit

;[Install-Update]
;       set STF_VITAL           = ""
;       set STF_OVERWRITE       = "VERIFYSOURCEOLDER"
;
;       AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\netware
;       AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
;
;       set !STF_NCPA_FLUSH_COPYLIST = TRUE
;       CopyFilesInCopyList
;
;       exit

[Source Media Descriptions]
        1  = $(NetWareODILANDriversDisk)
[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386


[ChoicesNamesList]
"Int",                          "Interrupt Number",         "InterruptNumber"
"PORT",                         "I/O Base Address",         "IOBaseAddress"
"SearchOff",                    "Disable SearchCard",       ""
"ISA",                          "Legacy ISA Card",          ""
"Media",                        "Media Type",               ""

[ODIListNamesSection]
        List1
        List2
        List3
        List4
        List5

[DefaultParameterLists]
        IntList
        PortList
        SearchList
        ISAList

[IntList]
Num1 = 3
Num2 = 5
Num3 = 9
Num4 = A
Num5 = B
Num6 = C
Num7 = F

[PortList]
Num1  = 200
Num2  = 220
Num3  = 240
Num4  = 260
Num5  = 280
Num6  = 2A0
Num7  = 2C0
Num8  = 2E0
Num9  = 300
Num10  = 320
Num11  = 340
Num12  = 360
Num13  = 380
Num14  = 3A0
Num15  = 3C0
Num16  = 3E0

[SearchList]
Num1 = "Present"
Num2 = "Not Present"

[ISAList]
Num1 = "Present"
Num2 = "Not Present"

;
;       See the documentation on "Building your own OEMSETUP.INF" for more information.
;

[Options]
        ODI_DE22X

[ODI_DE22X]
Title = "D-Link DE-220 Family Ethernet "
DriverName = 1, DE22X.LAN
MediaType = "ETHERNET"
Custom = {NT,"JITI 0"}
List1 = "Int",IntList,"3",ALL
List2 = "Port",PortList,"300",ALL
List3 = "SearchOff",SearchList,"Not Present",ALL
List4 = "ISA",ISAList,"Not Present",ALL
List5 = "Media","Media Type","AUTODETECT",{"AUTODETECT","AUI","BNC","UTP"}


[Strings]
        ;
        ; Every string that is in quotes from this point to the end of the
        ; file will be pulled out and put into the translation teams database.
        ; There parser looks for the section [Strings] and then goes to the
        ; end of the file.  DO NOT put strings below this point in the file
        ; that should not be translated.  Likewise, all strings that need to
        ; be translated should be in quotes and below this point in the file.
        ;

[ODIStringsENG]
AdapterForNetWare = " Adapter for NetWare"
NetWareForWindowsNT = "NetWare for Windows NT"
Present = "Present"
NotPresent = "Not Present"
NetWareODILANDriversDisk = "NetWare ODI LAN Drivers Disk"
BindingError = "Binding: Sorry, not yet implemented."

[DialogConstantsENG]
Help            = "&Help"
;Exit           = "&Cancel"
OK                = "OK"
HelpContext = ""
Continue        = "&Continue"
Cancel    = "&Cancel"
Advanced = "&Advanced"
IDH_NETWAREWRKSTATIONPARMS =  901
IDH_NETWAREIPXBIND         =  902
IDH_IPXSPXPARMS            =  903
IDH_NETWORKPROTOCOL        =  904
IDH_NETWAREODISETTINGS     =  905
IDH_NETWARECLIENTINSTALL   =  906
IDH_NETWARENDISODI         =  907
IDH_NODEADDRESSOVERIDE     =  908
IDH_RESMGRCONFIG                        =  951

[LANDriverDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "List"$(ODINumberofDriverLists)
Caption = "ODI "$(ODILANDriverTitle)" Adapter Configuration"
EditTextIn = ""
EditTextLim = ""
CBOptionsGreyed = {}
HelpContext = $(IDH_NETWAREODISETTINGS)


[NoParmsENG]
DlgType = "RadioCombination"
DlgTemplate = "NO_PARAMETERS"
Caption = "ODI "$(ODILANDriverTitle)" Adapter Configuration"
EditTextIn = ""
EditTextLim = ""
CBOptionsGreyed = {}
HelpContext = ""
CBOptionsGreyed = {}
ComboListItemsIn = {}
ComboListItemsOut = {}
NotifyFields = {}


[AdvancedDialogENG]
DlgType = "RadioCombination"
Caption = "Advanced Settings"
EditTextIn = $(ODINodeAddress)
EditTextLim = 13
CBOptionsGreyed = {}
HelpContext = $(IDH_NODEADDRESSOVERIDE)
NotifyFields = {}


[FileConstantsENG]
ProCaption      = "NetWare ODI LAN Drivers Setup"
ProCancel       = "Cancel"
ProCancelMsg = "NetWare for Windows NT is not correctly installed.  "+
                                "Are you sure you want to cancel copying files?"
ProCancelCap = "Network Setup Message"
ProText1         = "Copying:"
ProText2         = "To:"
Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web3, load: 2.10