oemsetup.inf Driver File Contents (DOMSA01.exe)

;*******************************************************************************
; Module Description:
;    Oemsetup.inf for Broadcom Gigabit Ethernet adapter.
;
; History:
;    06/03/00 Hav Khauv         Inception.
;*******************************************************************************

[Identification]
    OptionType = NetAdapter


[Options]
    B57NT4


[PlatformsSupported]
    PCI


[LanguagesSupported]
    ENG, English


[RequestedMediaTypeB57NT4]
    "Auto",                                 0
    "UTP 10 Mbps Half Duplex",              3
    "UTP 10 Mbps Full Duplex",              4
    "UTP 100 Mbps Half Duplex",             5
    "UTP 100 Mbps Full Duplex",             6
;    "UTP 1000 Mbps Half Duplex",            7
;    "UTP 1000 Mbps Full Duplex",            8


[OptionsTextENG]
    B57NT4 = "Broadcom Gigabit Ethernet NDIS 4.0 Driver"


[FileConstants]
    UtilityInf      = "UTILITY.INF"
    SubroutineInf   = "SUBROUTN.INF"

    MAXIMUM_ALLOWED = 33554432
    NoTitle         = 0

    PciVendorId = 5348
    PciDeviceId = 5700

    Manufacturer        = "Broadcom"
    ProductMajorVersion = "1"
    ProductMinorVersion = "15"
    ProductVersion      = $(ProductMajorVersion)"."$(ProductMinorVersion)

    NetEventDll              = "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\drivers\B57NT4.sys"
    ProductSoftwareImagePath = "\SystemRoot\System32\drivers\B57NT4.sys"

    MiniportProductName              = "B57NT4"
    MiniportProductKeyName           = $(!NTN_SoftwareBase)"\"$(Manufacturer)+
                                       "\"$(MiniportProductName)+
                                       "\CurrentVersion"
    MiniportSoftwareType             = "driver"

    MiniportNetRuleSoftwareUse       = $(MiniportSoftwareType)
    MiniportNetRuleSoftwareClass     = {"B57NT4Driver basic"}
    MiniportNetRuleSoftwareType      = "B57NT4Sys ndisDriver B57NT4Driver"
    MiniportNetRuleSoftwareBindForm  = """B57NT4Sys"" yes no container"
    MiniportNetRuleSoftwareBindable  = {"B57NT4Driver B57NT4Adapter non "+
                                        "exclusive 100"}

    MiniportNetRuleHardwareType      = "B57NT4 B57NT4Adapter"
    MiniportNetRuleHardwareBindForm  = " yes yes container"
    MiniportNetRuleHardwareClass     = {"B57NT4Adapter basic"}

    B57NT4HelpId                     = 100
    B57NT4HelpFile                   = "b57nt4.hlp"

    IBM_HPP_ServiceKey               = "SYSTEM\CurrentControlSet\Services\"+
        "HotSrv\SupportedDevices\14E4-1644-14E4-1644"
    CPQ_HPP_Key                      = "SOFTWARE\Compaq\Cpqrcmc\ClassDLLs\"+
        "NicMiniPort"


[FileConstantsENG]
    FunctionB57NT4Title = "Broadcom Gigabit Ethernet NDIS 4.0 Driver"

    MiniportProductSoftwareTitle       = $(FunctionB57NT4Title)
    MiniportProductSoftwareDisplayName = "Broadcom Gigabit Ethernet Adapter"

    MiniportB57NT4HardwareTitle = "Broadcom Gigabit Ethernet Driver"
    MiniportB57NT4Description   = "Broadcom Gigabit Ethernet NDIS 4.0 Driver "+
        "Version "$(ProductVersion)"."

    MsgShellErrorTitle  = "Error: "$(Function$(OptionId)Title)
    MsgShellErrorText   = "Shell Code Error."
    MsgRegistryKeyDoesNotExist = "Open registry key failed."
    MsgNoAdapterFound = "Network card is not present in the system."
    MsgDowngrade = "Cannot downgrade to an older driver.  To downgrade, "+
        "you must uninstall first and then re-install the older driver."
    MsgUpdateDone = "Driver update will take effect on the next reboot."


[DialogConstantsENG]
    Help        = "&Help"
    Exit        = "C&ancel"
    OK          = "&OK"
    HelpContext = ""
    Continue    = "&Continue"
    Cancel      = "C&ancel"


[RequestedMediaTypeDlgENG]
    DlgText     = "Select the line speed and duplex mode to connect "+
                  "to the network.  The recommended selection is 'Auto' "+
                  "which sets up the adapter to auto detect the optimal "+
                  "connection."
    DlgTemplate = "ADAP_PROTO_COMBO"
    DlgType     = "Combination"
    Caption     = $(Function$(OptionId)Title)
    Combo1Label = "&Link Selection"
    Combo1List  = $(ConnectionList)
    Combo1Out   = $(ConnectionValue)
    ComboListItemsIn  = { Combo1List }
    ComboListItemsOut = { Combo1Out }
    EditTextLim = ""
    CBOptionsGreyed = {}
    MinHelpId = 100
    MaxHelpId = 1000
    HelpContext = $($(OptionId)HelpId)


[DebugControl]
    !DebugOutputControl = 0


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


[Source Media Descriptions]
    1 = "Broadcom Driver Installation Disk"


[Files-B57NT4Driver]
    1, b57nt4.sys, SIZE=999


[Files-B57NT4Help]
    1, b57nt4.hlp, SIZE=999



;*******************************************************************************
; Description:
;    
; Input:
;    None.
;
; Output:
;    None.
;*******************************************************************************
[ShowShellErrorMessage]
    read-syms DebugControl
    debug-output "### ShowShellErrorMessage"

    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    set DlgType      = "MessageBox"
    set STF_MB_TITLE = $(MsgShellErrorTitle)
    set STF_MB_TEXT  = $(MsgShellErrorText)
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1

    ui start "Error Message"

    return



;*******************************************************************************
; Description:
;    
; Input:
;    $($0) = "WARNING", "FATAL", "NONFATAL", or "STATUS"
;    $($1) = Registery fatal text code.
;
; Output:
;    STATUS_FAILED
;    STATUS_SUCCESSFUL
;*******************************************************************************
[ShowRegistryErrorMessage]
    read-syms DebugControl
    debug-output "### ShowRegistryErrorMessage"

    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    set Severity = $($0)
    set RegStrCode = $($1)

    shell $(UtilityInf) RegistryErrorString $(RegStrCode)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        shell "" ShowShellErrorMessage
        return STATUS_FAILED
    endif

    set RegText = $($R0)

    shell $(SubroutineInf) SetupMessage $(!STF_LANGUAGE) $(Severity) $(RegText)

    return STATUS_SUCCESSFUL



;*******************************************************************************
; Description:
;    Displays shell error message.
;    
; Input:
;    $($0) = "WARNING", "FATAL", "NONFATAL", or "STATUS"
;    $($1) = Fatal text string.
;
; Output:
;    None.
;*******************************************************************************
[ShowErrorMessage]
    read-syms DebugControl
    debug-output "### ShowErrorMessage"

    read-syms FileConstants

    shell $(SubroutineInf) SetupMessage $(!STF_LANGUAGE) $($0) $($1)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        shell "" ShowShellErrorMessage
    endif

    return



;*******************************************************************************
; Description:
;    
; Input:
;
; Output:
;*******************************************************************************
[Install-Help]
    debug-output "### Install-Help"

    set STF_VITAL = ""

    AddSectionFilesToCopyList Files-$(OptionId)Help $(SrcDir) +
        $(!STF_WINDOWSSYSPATH)

    set !STF_NCPA_FLUSH_COPYLIST = TRUE

    CopyFilesInCopyList

    exit



;*******************************************************************************
; Description:
;    
; Input:
;
; Output:
;*******************************************************************************
[Install-Update]
    debug-output "### Install-Update"

    set STF_VITAL     = ""
    set STF_OVERWRITE = "VERIFYSOURCEOLDER"

    AddSectionFilesToCopyList Files-$(OptionId)Driver $(SrcDir) +
        $(!STF_WINDOWSSYSPATH)\drivers
    AddSectionFilesToCopyList Files-$(OptionId)Help $(SrcDir) +
        $(!STF_WINDOWSSYSPATH)

    set !STF_NCPA_FLUSH_COPYLIST = TRUE

    CopyFilesInCopyList

    exit



;*******************************************************************************
; Description:
;    
; Input:
;    None.
;
; Output:
;    None.
;*******************************************************************************
[Install-Option]
    debug-output "### Install-Option"

    ; Copy files.
    set STF_VITAL = ""
    ifstr(i) $(AddCopy) == "YES"
        debug-output "Add driver file to copy list."
        AddSectionFilesToCopyList Files-$(OptionId)Driver $(SrcDir) +
            $(!STF_WINDOWSSYSPATH)\drivers
    endif

    ifstr(i) $(DoCopy) == "YES"
        debug-output "copy files in copy list."
        set !STF_NCPA_FLUSH_COPYLIST = TRUE
        CopyFilesInCopyList
    endif

    exit



;*******************************************************************************
; Description:
;    
; Input:
;    None.
;
; Output:
;    $($R0): STATUS: STATUS_SUCCESSFUL
;    $($R1): Option Type (COMPUTER ...)
;    $($R2): Diskette description
;*******************************************************************************
[Identify]
    read-syms DebugControl
    debug-output "### Identify"

    read-syms Identification

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

    return $(Status) $(Identifier) $(Media)



;*******************************************************************************
; Description:
;
; Input:
;    $($0):  Language used.  (ENG|FRN|...)
;
; Output:
;    $($R0): STATUS: STATUS_SUCCESSFUL
;                    STATUS_NOLANGUAGE
;                    STATUS_FAILED
;                    STATUS_NOTSUPPORTED
;
;    $($R1): Option List
;    $($R2): Option Text List
;*******************************************************************************
[ReturnOptions]
    read-syms DebugControl
    debug-output "### ReturnOptions"

    set OptionList     = {}
    set OptionTextList = {}
    set LanguageList   = ^(LanguagesSupported, 1)

    ifcontains(i) $($0) in $(LanguageList)
        set Status         = STATUS_SUCCESSFUL
        set OptionList     = ^(Options, 1)
        set OptionTextList = ^(OptionsText$($0), 1)

        ifstr(i) $($1) != ""
            set PlatformList = ^(PlatformsSupported, 1)
            ifcontains(i) $($1) not-in $(PlatformList)
                debug-output "Unknown platform:  "$($1)
                set Status = STATUS_NOLANGUAGE
            endif
        endif
    else
        debug-output "Language not supported."
        set Status = STATUS_NOLANGUAGE
    endif

    return $(Status) $(OptionList) $(OptionTextList)



;*******************************************************************************
; Description:
;    This section performs the following tasks:
;       Copy files representing Options.
;       Configure the installed option.
;       Update the registry for the installed option
;
; Input:
;    $($0):  Language to use
;    $($1):  OptionID to install
;    $($2):  SourceDirectory
;    $($3):  AddCopy  (YES | NO)
;    $($4):  DoCopy   (YES | NO)
;    $($5):  DoConfig (YES | NO)
;
; Output:
;    $($R0): STATUS: STATUS_SUCCESSFUL |
;                    STATUS_NOLANGUAGE |
;                    STATUS_USERCANCEL |
;                    STATUS_FAILED
;*******************************************************************************
[InstallOption]
    read-syms DebugControl
    debug-output "### InstallOption"

    Set LanguageList = ^(LanguagesSupported, 1)
    ifcontains(i) $($0) not-in $(LanguageList)
        return STATUS_NOLANGUAGE
    endif

    set OptionId = $($1)
    set SrcDir = $($2)

    read-syms FileConstants$(!STF_LANGUAGE)
    read-syms FileConstants

    set-title $(Function$(OptionId)Title)

    ifstr(i) $(!NTN_InstallMode) == Deinstall
        shell "" RemoveSection $(OptionId)
    else-ifstr(i) $(!NTN_InstallMode) == Update
        shell "" UpdateSection $(OptionId) $(SrcDir)
    else-ifstr(i) $(!NTN_InstallMode) == Bind
        shell "" BindSection $(OptionId)
    else-ifstr(i) $(!NTN_InstallMode) == Configure
        shell "" ConfigureSection $(OptionId)
    else
        startwait
        shell "" InstallSection $($1) $($2) $($3) $($4) $($5)
        endwait

        ifstr(i) $($R0) != STATUS_SUCCESSFUL
            shell "" RemoveSection
        endif
    endif

    debug-output "Final status: "$($R0)

    return $($R0)



;*******************************************************************************
; Description:
;    
; Input:
;    $($0): OptionId
;
; Output:
;    $($R0) Status
;*******************************************************************************
[RemoveSection]
    read-syms DebugControl
    debug-output "### RemoveSection"

    set OptionId = $($0)

    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    ifstr(i) $(MiniportProductKeyName) == $(!NTN_RegBase)
        debug-output "Removing software component."
        shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
            $(MiniportProductName)
    else
        debug-output "Removing hardware component."
        shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
            $(MiniportProductName), $(!NTN_RegBase)
    endif

    return STATUS_SUCCESSFUL



;*******************************************************************************
; Description:
;    
; Input:
;    $($0):  OptionId
;    $($1):  SourceDirectory
;
; Output:
;    $($R0) Status
;*******************************************************************************
[UpdateSection]
    read-syms DebugControl
    debug-output "### UpdateSection"

    set OptionId = $($0)
    set SrcDir = $($1)

    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    openregkey $(!REG_H_LOCAL) "" $(MiniportProductKeyName) $(MAXIMUM_ALLOWED) +
        ProductKey
    ifstr $(ProductKey) == ""
        debug-output "Cannot get registry key."
        shell "" ShowErrorMessage "FATAL" $(MsgRegistryKeyDoesNotExist)
        return STATUS_FAILED
    endif

    getregvalue $(ProductKey), "MajorVersion", VersionInfo
    set MajorVersion = *($(VersionInfo), 4)
    debug-output "Major version: "$(MajorVersion)
    getregvalue $(ProductKey), "MinorVersion", VersionInfo
    set MinorVersion = *($(VersionInfo), 4)
    debug-output "Minor version: "$(MinorVersion)

    set-mul OldVersion = $(MajorVersion), 1000
    set-add OldVersion = $(OldVersion), $(MinorVersion)

    set-mul NewVersion = $(ProductMajorVersion), 1000
    set-add NewVersion = $(NewVersion), $(ProductMinorVersion)

    ifint $(OldVersion) > $(NewVersion)
        debug-output "Oldversion: "$(OldVersion)",   NewVersion: "$(NewVersion)
        shell "" ShowErrorMessage "FATAL" $(MsgDowngrade)
        return STATUS_USERCANCEL
    endif

    install "Install-Update"

    setregvalue $(ProductKey) { MajorVersion, $(NoTitle), $(!REG_VT_SZ), +
        $(ProductMajorVersion) }
    setregvalue $(ProductKey) { MinorVersion, $(NoTitle), $(!REG_VT_SZ), +
        $(ProductMinorVersion) }

    closeregkey $(ProductKey)

    ; Enumerate all netcards installed of this type and update them
    set iSearch = 1

    nextnetcard = +
        shell $(UtilityInf), FindNextNetworkCard, $(MiniportProductName), +
            $(iSearch)
        set KeyNetcard = $($R0)
        set iSearch = $($R1)

        ifstr $(KeyNetcard) != $(KeyNull)
            setregvalue $(KeyNetcard) { Description, $(NoTitle), +
                $(!REG_VT_SZ), $(Miniport$(OptionId)Description) }
            closeregkey $(KeyNetcard)
            goto nextnetcard
        Endif

    
    shell "" ShowErrorMessage "NONFATAL" $(MsgUpdateDone)

    return STATUS_SUCCESSFUL



;*******************************************************************************
; Description:
;    
; Input:
;    $($0):  OptionId
;
; Output:
;    $($R0) Status
;*******************************************************************************
[BindSection]
    read-syms DebugControl
    debug-output "### BindSection"

    set OptionId = $($0)

    return STATUS_SUCCESSFUL



;*******************************************************************************
; Description:
;    
; Input:
;    $($0):  OptionId
;
; Output:
;    $($R0)  STATUS_FAILED or STATUS_SUCCESSFUL
;*******************************************************************************
[ConfigureSection]
    read-syms DebugControl
    debug-output "### ConfigureSection"

    set OptionId = $($0)

    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    openregkey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) ProductKey
    ifstr $(ProductKey) == ""
        debug-output "Component not installed."
        shell "" ShowRegistryErrorMessage "FATAL" CANNOT_FIND_COMPONENT_SERVICE
        return STATUS_FAILED
    Endif

    shell $(UtilityInf) FindService $(ProductKey)
    ifstr(i) $($R0) != NO_ERROR
        debug-output "Canot not find the component."
        closeregkey $(ProductKey)
        shell "" ShowRegistryErrorMessage "FATAL" $($R0)
        return STATUS_FAILED
    endif

    closeregkey $($R1)
    closeregkey $(ProductKey)

    set ParameterKey = $($R2)

    ifstr $(ParameterKey) == ""
        shell "" ShowRegistryErrorMessage "FATAL" CANNOT_FIND_COMPONENT_SERVICE
        return STATUS_FAILED
    endif

    EnumRegValue $(ParameterKey) ValueList

    set ConnectionIndex = 1
    ForListDo $(ValueList)
        set ValueItem = $($)
        set ValueName = *($(ValueItem), 1)
        set ValueData = *($(ValueItem), 4)
        ifstr(i) $(ValueName) == "RequestedMediaType"
            set ConnectionIndex = $(ValueData)
        endif
    EndForListDo

    set OldConnectionValue = $(ValueData)

    set ConnectionList = ^(RequestedMediaType$(OptionId), 1)
    set ConnectionValueList = ^(RequestedMediaType$(OptionId), 2)
    debug-output "ConnectionList: "$(ConnectionList)
    debug-output "ConnectionValueList: "$(ConnectionValueList)

    set ConnectionValue = *($(ConnectionList), ~($(ConnectionValueList), +
        $(ConnectionIndex)))
    ifstr(i) $(ConnectionValue) == ""
        set ConnectionValue = *($(ConnectionList), 1)
    endif

    read-syms DialogConstants$(!STF_LANGUAGE)
    read-syms RequestedMediaTypeDlg$(!STF_LANGUAGE)

    debug-output "HelpContext = "$(HelpContext)

    sethelpfile $(!STF_WINDOWSSYSPATH)"\"$($(OptionId)HelpFile) +
        $(MinHelpId) $(MaxHelpId) $($(OptionId)HelpId)

    set ConnectionIndex = *($(ConnectionList), 1)

    set RetStatus = STATUS_SUCCESSFUL

    ui start "InputDlg"
    ifstr(i) $(DLGEVENT) == "CONTINUE"
        set ConnectionIndex = $(Combo1Out)
    else-ifstr(i) $(DLGEVENT) == "BACK"
        set RetStatus = STATUS_USERCANCEL
    endif
    ui pop 1

    set NewConnectionValue = *($(ConnectionValueList), +
        ~($(ConnectionList), $(ConnectionIndex)))
    debug-output "NewConnection value = "$(NewConnectionValue)
    debug-output "OldConnection value = "$(OldConnectionValue)

    ifstr(i) $(NewConnectionValue) == $(OldConnectionValue)
        set RetStatus = STATUS_USERCANCEL
    endif

    ifstr(i) $(RetStatus) == "STATUS_SUCCESSFUL"
        set NewValueList = {                                        +
            { RequestedMediaType, $(NoTitle), $(!REG_VT_DWORD),     +
                $(NewConnectionValue)} }
        shell $(UtilityInf), AddValueList, $(ParameterKey), $(NewValueList)
    endif

    closeregkey $(ParameterKey)

    return $(RetStatus)



;*******************************************************************************
; Description:
;    
; Input:
;    $($0):  OptionId
;    $($1):  SourceDirectory
;    $($2):  AddCopy  (YES | NO)
;    $($3):  DoCopy   (YES | NO)
;    $($4):  DoConfig (YES | NO)
;
; Output:
;    $($R0)  STATUS_FAILED or STATUS_SUCCESSFUL
;*******************************************************************************
[InstallSection]
    read-syms DebugControl
    debug-output "### InstallSection"

    set OptionId = $($0)
    set SrcDir   = $($1)
    set AddCopy  = $($2)
    set DoCopy   = $($3)
    set DoConfig = $($4)

    read-syms FileConstants
    read-syms FileConstants$(!STF_LANGUAGE)

    detect CurrentDate

    ; Get the adapter list.
    shell $(UtilityInf), GetPCIInformation, $(PciVendorId) $(PciDeviceId)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        shell "" ShowShellErrorMessage
        return STATUS_FAILED
    endif
    ifstr(i) $($R0) == {}
        shell "" ShowErrorMessage "NONFATAL" $(MsgNoAdapterFound)
        return STATUS_USERCANCEL
    endif

    set AdapterList = $($R0)
    debug-output "AdapterList: "$(AdapterList)

    ; Get installation source directory.
    ifstr(i) $(DoCopy) == "YES"
        debug-output "DoCopy"

        shell $(UtilityInf) DoAskSource $(!STF_CWDDIR) $(SrcDir) YES
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            shell "" ShowShellErrorMessage
            return STATUS_FAILED
        else-ifstr(i) $($R0) == STATUS_FAILED
            shell "" ShowRegistryErrorMessage "FATAL" ASK_SOURCE_FAIL
            return STATUS_FAILED
        else-ifstr(i) $($R0) == STATUS_USERCANCEL
            debug-output "User cancelled."
            return STATUS_USERCANCEL
        endif

        set SrcDir = $($R1)
    endif

    ; Default line setting.
    set ConnectionValue = 1
    
    ; First time installation -- we need to install the software component.
    openregkey $(!REG_H_LOCAL) "" $(MiniportProductKeyName) $(MAXIMUM_ALLOWED) +
        ProductKey
    ifstr $(ProductKey) == ""
        debug-output "First time installation"

        install "Install-Help"

        ; Pop up a GUI to allow the user to configure the line setting.
        ifstr(i) $(!STF_GUI_UNATTENDED) != "YES"
            set ConnectionList = ^(RequestedMediaType$(OptionId), 1)
            set ConnectionValueList = ^(RequestedMediaType$(OptionId), 2)
            debug-output "ConnectionList = "$(ConnectionList)
            debug-output "ConnectionValueList = "$(ConnectionValueList)

            set ConnectionValue = *($(ConnectionList), +
                ~($(ConnectionValueList), $(ConnectionIndex)))

            read-syms DialogConstants$(!STF_LANGUAGE)
            read-syms RequestedMediaTypeDlg$(!STF_LANGUAGE)

            sethelpfile $(!STF_WINDOWSSYSPATH)"\"$($(OptionId)HelpFile) +
                $(MinHelpId) $(MaxHelpId) $($(OptionId)HelpId)

            ui start "InputDlg"

            ifstr(i) $(DLGEVENT) == "CONTINUE"
                set ConnectionIndex = $(Combo1Out)
                debug-output "Connection Index = "$(ConnectionIndex)
            else-ifstr(i) $(DLGEVENT) == "BACK"
                debug-output "gui cancelled"
                ui pop 1
                return STATUS_USERCANCEL
            endif
            ui pop 1
        endif

        ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
            debug-output "Copy file failed."
            shell "" ShowRegistryErrorMessage "FATAL" UNABLE_COPY_FILE
            return STATUS_FAILED
        endif

        install "Install-Option"

        debug-output "Create the software component."

        shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
            $(MiniportProductName), $(MiniportProductName), +
            $(MiniportProductSoftwareDisplayName), $(STF_CONTEXTINFNAME), +
            $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "", +
            $(NetEventDll)
        ifstr(i) $($R0) != NO_ERROR
            debug-output "Add miniport software component failed."

            closeregkey $($R1)
            closeregkey $($R2)
            closeregkey $($R3)
            closeregkey $($R4)
            closeregkey $($R5)

            shell "" ShowRegistryErrorMessage "FATAL" $($R0)
            return STATUS_FAILED
        endif

        ; $R1 contains handle to "SOFTWARE\Broadcom\CurrentVersion".
        ; $R2 contains handle to "SOFTWARE\Broadcom\CurrentVersion\NetRules".
        ; $R3 contains handle to "SYSTEM\CurrentControlSet\Blfp".
        ; $R4 contains handle to "SYSTEM\CurrentControlSet\Blfp\Parameters".
        ; $R5 contains handle to "SYSTEM\CurrentControlSet\Blfp\Linkage".

        set ProductKey   = $($R1)
        set NetRuleKey   = $($R2)
        set ServiceKey   = $($R3)
        set ParameterKey = $($R4)
        set LinkageKey   = $($R5)

        set NewValueList = {                                +
            { SoftwareType, $(NoTitle), $(!REG_VT_SZ),      +
                $(MiniportSoftwareType) },                  +
            { MajorVersion, $(NoTitle), $(!REG_VT_DWORD),   +
                $(ProductMajorVersion) },                   +
            { MinorVersion, $(NoTitle), $(!REG_VT_DWORD),   +
                $(ProductMinorVersion) },                   +
            { Title,        $(NoTitle), $(!REG_VT_SZ),      +
                $(MiniportProductSoftwareTitle) },          +
            { Description,  $(NoTitle), $(!REG_VT_SZ),      +
                $(MiniportProductDescription) },            +
            { ServiceName,  $(NoTitle), $(!REG_VT_SZ),      +
                $(MiniportProductName) },                   +
            { InstallDate,  $(NoTitle), $(!REG_VT_DWORD),   +
                *($(Now),1) } }

        shell $(UtilityInf), AddValueList, $(ProductKey), $(NewValueList)
        ifstr(i) $($R0) != NO_ERROR
            debug-output "Cannot create miniport software key."

            closeregkey $(ProductKey)
            closeregkey $(NetRuleKey)
            closeregkey $(ServiceKey)
            closeregkey $(ParameterKey)
            closeregkey $(LinkageKey)

            shell "" ShowRegistryErrorMessage "FATAL" $($R0)
            return STATUS_FAILED
        endif

        set NewValueList = {                                                +
            { type,         $(NoTitle), $(!REG_VT_SZ),                      +
                $(MiniportNetRuleSoftwareType) },                           +
            { use,          $(NoTitle), $(!REG_VT_SZ),                      +
                $(MiniportNetRuleSoftwareUse) },                            +
            { bindform,     $(NoTitle), $(!REG_VT_SZ),                      +
                $(MiniportNetRuleSoftwareBindForm) },                       +
            { class,        $(NoTitle), $(!REG_VT_MULTI_SZ),                +
                $(MiniportNetRuleSoftwareClass) },                          +
            { bindable,     $(NoTitle), $(!REG_VT_MULTI_SZ),                +
                $(MiniportNetRuleSoftwareBindable) },                       +
            { InfOption,    $(NoTitle), $(!REG_VT_SZ), $(OptionId) } }

        shell $(UtilityInf), AddValueList, $(NetRuleKey), $(NewValueList)
        ifstr(i) $($R0) != NO_ERROR
            debug-output "### Cannot create the miniport netrules."

            closeregkey $(ProductKey)
            closeregkey $(NetRuleKey)
            closeregkey $(ServiceKey)
            closeregkey $(ParameterKey)
            closeregkey $(LinkageKey)

            shell "" ShowRegistryErrorMessage "FATAL" $($R0)
            return STATUS_FAILED
        endif

        closeregkey $(NetRuleKey)
        closeregkey $(ServiceKey)
        closeregkey $(ParameterKey)
        closeregkey $(LinkageKey)
    endif
    closeregkey $(ProductKey)

    forlistdo $(AdapterList)
        debug-output "Installing adapter "$($)"."
        set BusNum = *($($), 1)
        set DeviceNum = *($($), 2)
        set FunctionNum = *($($), 3)

        shell $(UtilityInf), IsNetCardAlreadyInstalled, $(BusNum),          +
            $(DeviceNum), $(Miniport$(OptionId)Description),                +
            $(MiniportProductName) "YES"
        ifstr $($R0) != NO_ERROR
            shell "" ShowRegistryErrorMessage "FATAL" $($R0)
            return STATUS_FAILED
        endif

        ifstr(i) $($R1) != YES
            debug-output "add hardware component."

            shell $(UtilityInf), AddHardwareComponent, $(MiniportProductName), +
                $(STF_CONTEXTINFNAME), $(MiniportProductKeyName)
            ifstr(i) $($R0) != NO_ERROR
                debug-output "### Add hardware component error."

                closeregkey $($R1)
                closeregkey $($R2)
                closeregkey $($R3)

                shell "" ShowRegistryErrorMessage "FATAL" $($R0)
                return STATUS_FAILED
            endif

            set HardNetCardKey   = $($R1)
            set HardNetRuleKey   = $($R2)
            set HardParameterKey = $($R3)

            set AdapterNumber    = $($R4)

            debug-output "Write adapter info."
            set NewValueList = { +
                { Manufacturer, $(NoTitle), $(!REG_VT_SZ), $(Manufacturer) }, +
                { Title, $(NoTitle), $(!REG_VT_SZ), +
                    "["$($R4)"] "$(Miniport$(OptionId)HardwareTitle)" "+
                    "(Bus "$(BusNum)", Slot "$(DeviceNum)")." }, +
                { Description, $(NoTitle), $(!REG_VT_SZ), +
                    $(Miniport$(OptionId)Description) }, +
                { ProductName, $(NoTitle), $(!REG_VT_SZ), +
                    $(MiniportProductName) }, +
                { ServiceName, $(NoTitle), $(!REG_VT_SZ), $($R5) }, +
                { InstallDate, $(NoTitle), $(!REG_VT_DWORD), *($(Now), 1) } }

            shell $(UtilityInf), AddValueList, $(HardNetCardKey), +
                $(NewValueList)
            ifstr(i) $($R0) != NO_ERROR
                closeregkey $(HardNetCardKey)
                closeregkey $(HardNetRuleKey)
                closeregkey $(HardParameterKey)

                shell "" ShowRegistryErrorMessage "FATAL" $($R0)

                return STATUS_FAILED
            endif

            set ConnectionValue = *($(ConnectionValueList), +
                ~($(ConnectionList), $(ConnectionIndex)))
            debug-output "Connection value = "$(ConnectionValue)

            debug-output "Write driver params."
            set NewValueList = { +
                { BusType, $(NoTitle), $(!REG_VT_DWORD), 5 }, +
                { BusNumber, $(NoTitle), $(!REG_VT_DWORD), $(BusNum) }, +
                { SlotNumber, $(NoTitle), $(!REG_VT_DWORD), $(DeviceNum) }, +
                { FunctionNumber, $(NoTitle), $(!REG_VT_DWORD), +
                    $(FunctionNum) }, +
                { MediaType, $(NoTitle), $(!REG_VT_DWORD), 1 }, +
                { RxPacketDescLowWaterMark, $(NoTitle), $(!REG_VT_DWORD), 40}, +
                { VlanEnable, $(NoTitle), $(!REG_VT_DWORD), 0 }, +
                { NumOfMapRegisters, $(NoTitle), $(!REG_VT_DWORD), 100 }, +
                { TxPacketDescCnt, $(NoTitle), $(!REG_VT_DWORD), 100 }, +
                { RxStdDescCnt, $(NoTitle), $(!REG_VT_DWORD), 200 }, +
                { RxCoalescingTicks, $(NoTitle), $(!REG_VT_DWORD), 150 }, +
                { TxCoalescingTicks, $(NoTitle), $(!REG_VT_DWORD), 150 }, +
                { RxMaxCoalescedFrames, $(NoTitle), $(!REG_VT_DWORD), 10 }, +
                { TxMaxCoalescedFrames, $(NoTitle), $(!REG_VT_DWORD), 10 }, +
                { RxCoalescingTicksDuringInt, $(NoTitle), $(!REG_VT_DWORD), +
                    0 }, +
                { TxCoalescingTicksDuringInt, $(NoTitle), $(!REG_VT_DWORD), +
                    0 }, +
                { RxMaxCoalescedFramesDuringInt, $(NoTitle), $(!REG_VT_DWORD), +
                    0 }, +
                { TxMaxCoalescedFramesDuringInt, $(NoTitle), $(!REG_VT_DWORD), +
                    0 }, +
                { StatsCoalescingTicks, $(NoTitle), $(!REG_VT_DWORD), 1000000},+
                { TxBufferSize, $(NoTitle), $(!REG_VT_DWORD), 0 }, +
                { RxJumboDescCnt, $(NoTitle), $(!REG_VT_DWORD), 0 }, +
                { TxMtu, $(NoTitle), $(!REG_VT_DWORD), 1514 }, +
                { RxMtu, $(NoTitle), $(!REG_VT_DWORD), 1514 }, +
                { DisableAutoNeg, $(NoTitle), $(!REG_VT_DWORD), 1 }, +
                { FlowControlCap, $(NoTitle), $(!REG_VT_DWORD), 0 }, +
                { RequestedMediaType, $(NoTitle), $(!REG_VT_DWORD), +
                    $(ConnectionValue) } }

            shell $(UtilityInf), AddValueList, $(HardParameterKey), +
                $(NewValueList)
            ifstr(i) $($R0) != NO_ERROR
                debug-output "### Add parameter shell error."

                closeregkey $(HardNetCardKey)
                closeregkey $(HardNetRuleKey)
                closeregkey $(HardParameterKey)

                shell "" ShowRegistryErrorMessage "FATAL" $($R0)

                return STATUS_FAILED
            endif

            set TempProdName = """"$(MiniportProductName)$(AdapterNumber)""""
            set TempBindForm = $(TempProdName)$(MiniportNetRuleHardwareBindForm)

            debug-output "updating netrules."
            set NewValueList = {                                            +
                { type,      $(NoTitle), $(!REG_VT_SZ),                     +
                    $(MiniportNetRuleHardwareType) },                       +
                { bindform,  $(NoTitle), $(!REG_VT_SZ), $(TempBindForm) },  +
                { class,     $(NoTitle), $(!REG_VT_MULTI_SZ),               +
                    $(MiniportNetRuleHardwareClass) },                      +
                { InfOption, $(NoTitle), $(!REG_VT_SZ), $(OptionId)} }

            shell $(UtilityInf), AddValueList, $(HardNetRuleKey), +
                $(NewValueList)
            ifstr(i) $($R0) != NO_ERROR
                debug-output "### Add hardware component error."

                closeregkey $(HardNetCardKey)
                closeregkey $(HardNetRuleKey)
                closeregkey $(HardParameterKey)

                shell "" ShowRegistryErrorMessage "FATAL" $($R0)

                return STATUS_FAILED
            endif

            closeregkey $(HardNetCardKey)
            closeregkey $(HardNetRuleKey)

            ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
                Shell $(UtilityInf), AddDefaultNetCardParameters, +
                    $(HardParameterKey)
            endif

            closeregkey $(HardParameterKey)
        endif
    endforlistdo

    ; Create IBM hot plug PCI service key.
    createregkey $(!REG_H_LOCAL) { $(IBM_HPP_ServiceKey), $(NoTitle), +
        GenericClass } "" $(MAXIMUM_ALLOWED) "" HppKey 
    ifstr(i) $(HppKey) != ""
        set NewValueList = {                                            +
            { DriverServices, $(NoTitle), $(!REG_VT_SZ),                +
                $(MiniportProductName) },                               +
            { FriendlyName,   $(NoTitle), $(!REG_VT_SZ),                +
                $(MiniportProductSoftwareDisplayName) } }

        shell $(UtilityInf), AddValueList, $(HppKey), $(NewValueList)

        closeregkey $(HppKey)
    endif

    ; Create Compaq hot plug PCI key.
    openregkey $(!REG_H_LOCAL) "" $(CPQ_HPP_Key) $(MAXIMUM_ALLOWED) HppKey
    ifstr $(HppKey) == ""
        createregkey $(!REG_H_LOCAL) { $(CPQ_HPP_Key), $(NoTitle), +
            GenericClass } "" $(MAXIMUM_ALLOWED) "" HppKey 

        set NewValueList = {                                            +
            { ClassID, $(NoTitle), $(!REG_VT_SZ), 0 },                  +
            { DLLName,   $(NoTitle), $(!REG_VT_SZ), "CQRNICMN.DLL" } }

        shell $(UtilityInf), AddValueList, $(HppKey), $(NewValueList)
    endif
    closeregkey $(HppKey)

    createregkey $(!REG_H_LOCAL) { $(CPQ_HPP_Key)"\"$(MiniportProductName), +
        $(NoTitle), GenericClass } "" $(MAXIMUM_ALLOWED) "" HppKey 

    set NewValueList = {                                                +
        { BaseOIDAddress, $(NoTitle), $(!REG_VT_DWORD), 4278322176 },   +
        { SetOIDAddress,  $(NoTitle), $(!REG_VT_DWORD), 4278321933 } }

    shell $(UtilityInf), AddValueList, $(HppKey), $(NewValueList)

    closeregkey $(HppKey)

    return STATUS_SUCCESSFUL

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: web1, load: 0.98