windows-nt/Source/XPSP1/NT/base/ntsetup/inf/beta/oemnadma.inf
2020-09-26 16:20:57 +08:00

2255 lines
58 KiB
INI
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; **********************************************************************
;
; OEMSETUP.INF
;
; Copyright (c) Madge Networks Ltd. 1994
;
; MADGE Smart Ringnode Driver installer for MdgMPort.SYS
;
; VeRsIoN=OEMSETUP.INF 3.04.30 (for use with MdgMPort.SYS 2.04.30)
;
; **********************************************************************
; ----------------------------------------------------------------------
; Mandatory configuration information.
; ----------------------------------------------------------------------
[Identification]
OptionType = NetAdapter
[PlatformsSupported]
MCA
ISA
EISA
PCI
PCMCIA
"Jazz-Internal Bus"
[Options]
;MSMDGMPAUTO
MSMDGMPISA
MSMDGMPATP
MSMDGMPISAC
MSMDGMPISACP
MSMDGMPPC
MSMDGMPSM16
MSMDGMPPNP
MSMDGMPMCA
MSMDGMPMC32
MSMDGMPEISA
MSMDGMPPCI
MSMDGMPPCIBM
MSMDGMPPCMCIA
[OptionsISA]
;MSMDGMPAUTO
MSMDGMPISA
MSMDGMPATP
MSMDGMPISAC
MSMDGMPISACP
MSMDGMPPC
MSMDGMPSM16
MSMDGMPPNP
[OptionsMCA]
;MSMDGMPAUTO
MSMDGMPMCA
MSMDGMPMC32
[OptionsEISA]
;MSMDGMPAUTO
MSMDGMPEISA
MSMDGMPISA
MSMDGMPATP
MSMDGMPISAC
MSMDGMPISACP
MSMDGMPPC
MSMDGMPSM16
MSMDGMPPNP
[OptionsPCI]
;MSMDGMPAUTO
MSMDGMPPCI
MSMDGMPPCIBM
[OptionsPCMCIA]
;MSMDGMPAUTO
MSMDGMPPCMCIA
;-----------------------------------------------------------------------
; Adapter options that require a slot number and a transfer method.
; Others require an IO location a transfer method and an IRQ number.
;-----------------------------------------------------------------------
[SlotNumberOnlyOptions]
MSMDGMPEISA
MSMDGMPMCA
MSMDGMPMC32
MSMDGMPPCI
MSMDGMPPCIBM
;-----------------------------------------------------------------------
; Adapter options that support MMIO.
;-----------------------------------------------------------------------
[MmioOptions]
MSMDGMPPCI
; ----------------------------------------------------------------------
; Constants specific to the driver.
; ----------------------------------------------------------------------
[FileConstants]
;
; File names, etc.
;
DialogDllName = "MDGMPDLG.DLL"
SoftwareType = "driver"
Exit_Code = 0
;
; Product Information.
;
Manufacturer = "Madge"
ProductMajorVersion = "4"
ProductMinorVersion = "0"
ProductRevision = ".00"
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)$(ProductRevision)
;
; Software information.
;
ProductSoftwareName = "MadgeMPort"
ProductSoftwareImagePath = "%SystemRoot%\system32\drivers\MdgMPort.sys"
NetRuleSoftwareType = "mdgtrSys ndisDriver mdgtrDriver"
NetRuleSoftwareUse = $(SoftwareType)
NetRuleSoftwareBindForm = """mdgtrSys"" yes no container"
NetRuleSoftwareClass = {"mdgtrDriver basic"}
NetRuleSoftwareBindable = {"mdgtrDriver mdgtrAdapter non exclusive 100"}
;
; Hardware information.
;
ProductHardwareName = "MadgeMPort"
NetRuleHardwareType = "mdgtr mdgtrAdapter"
NetRuleHardwareBindForm = " yes yes container"
NetRuleHardwareClass = {"mdgtrAdapter basic"}
ProductOpSupport = 134 ; 0x0086 ; Display,Removable,Properties,Not Updatable
;
; Registry Key.
;
ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
;
; EventLog Message File.
;
MadgeEventLogFile = $(ProductSoftwareImagePath)
; ---------------------------------------------------------------------
; General constants.
; ---------------------------------------------------------------------
[GeneralConstants]
;
; File names, etc.
;
UtilityInf = "UTILITY.INF"
SubroutineInf = "SUBROUTN.INF"
ParamInf = "NCPARAM.INF"
;
; Program flow control variables.
;
From = ""
To = ""
;
; Return codes; Exit_Code is set to one of these
;
ExitCodeOk = 0
ExitCodeCancel = 1
ExitCodeFatal = 2
;
; Miscellaneous.
;
MAXIMUM_ALLOWED = 33554432
RegistryErrorIndex = NO_ERROR
KeyNull = ""
KeyProduct = ""
KeyParameters = ""
TRUE = 1
FALSE = 0
NoTitle = 0
ExitState = "Active"
OldVersionExisted = $(FALSE)
DriverPath = $(!STF_NTPATH)\drivers
;
; Resource values returned by the detection DLL, so do not change them.
;
VALUE_UNKNOWN = 65535
GENERAL_PIO = 0
GENERAL_DMA = 500
GENERAL_MMIO = 501
;
; Transfer types on the registry.
;
TRANSFER_UNKNOWN = 65535
TRANSFER_PIO = 0
TRANSFER_DMA = 1
TRANSFER_MMIO = 2
;
; Lists used to the raw internal form of parameters to and from
; the form shown to users.
;
IoUserList = ^(IoLocationChoices, 1)
IoRawList = ^(IoLocationChoices, 2)
SlotUserList = ^(SlotNumberChoices, 1)
SlotRawList = ^(SlotNumberChoices, 2)
DmaUserList = ^(DmaChannelChoices, 1)
DmaRawList = ^(DmaChannelChoices, 2)
IrqUserList = ^(IrqNumberChoices, 1)
IrqRawList = ^(IrqNumberChoices, 2)
RxTxUserList = ^(RxTxSlotsChoices,1)
RxTxRawList = ^(RxTxSlotsChoices,2)
StatsUserList = ^(StatsChoices,1)
StatsRawList = ^(StatsChoices,2)
MpUserList = ^(MpChoices,1)
MpRawList = ^(MpChoices,2)
;
; Adapter classification lists.
;
MadgeAdapterOptions = ^(Options,1)
SlotNumberAdapters = ^(SlotNumberOnlyOptions,1)
MmioAdapters = ^(MmioOptions,1)
;
; Help identifiers.
;
MadgeHelpIdMin = 6000
MadgeHelpIdMax = 6003
MadgeHelpIdMDGMPISA = 6001
MadgeHelpIdMDGMPATP = 6001
MadgeHelpIdMDGMPISAC = 6001
MadgeHelpIdMDGMPISACP = 6001
MadgeHelpIdMDGMPPC = 6001
MadgeHelpIdMDGMPSM16 = 6001
MadgeHelpIdMDGMPPNP = 6001
MadgeHelpIdMDGMPPCMCIA = 6001
MadgeHelpIdMDGMPEISA = 6002
MadgeHelpIdMDGMPMCA = 6002
MadgeHelpIdMDGMPMC32 = 6002
MadgeHelpIdMDGMPPCI = 6003
MadgeHelpIdMDGMPPCIBM = 6003
;
; card ids
;
IDMSMDGMPPCI = 135350; 210B6
IDVMSMDGMPPCI = AdapterCFID
IDMSMDGMPPCIBM = 266422 ; 410B6
IDVMSMDGMPPCIBM = AdapterCFID
IDMSMDGMPEISA = 34612
IDVMSMDGMPEISA = EisaCompressedId
IDMSMDGMPMCA = 45
IDVMSMDGMPMCA = McaPosId
IDMSMDGMPMC32 = 116
IDVMSMDGMPMC32 = McaPosId
[date]
; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
; Minute, Second }
Now = {} ? $(!LIBHANDLE) GetSystemDate
;---------------------------------------------------------------------------
; Identify the INF file to NT.
;
; DESCRIPTION: To verify that this INF deals with the same type of options
; as we are choosing currently.
;
; INPUT: None
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Option Type (COMPUTER ...)
; $($R2): Diskette description
;---------------------------------------------------------------------------
[Identify]
read-syms Identification
set Status = STATUS_SUCCESSFUL
set Identifier = $(OptionType)
set Media = #("Source Media Descriptions", 1, 1)
return $(Status) $(Identifier) $(Media)
;------------------------------------------------------------------------
; Return the options supported by this INF file.
;
; DESCRIPTION: To return the option list supported by this INF and the
; localised text list representing the options.
;
;
; INPUT: $($0): Language used. ( ENG | FRN | ... )
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
; STATUS_NOTSUPPORTED
;
; $($R1): Option List
; $($R2): Option Text List
;------------------------------------------------------------------------
[ReturnOptions]
set Status = STATUS_FAILED
set OptionList = {}
set OptionTextList = {}
;
; Check if the language requested is supported.
;
set LanguageList = ^(LanguagesSupported, 1)
ifcontains(i) $($0) in $(LanguageList)
;
;
; Check if the platforms requested is supported
;
ifstr(i) $($1) == ""
;
goto Return_Options
;
endif
set PlatformList = ^(PlatformsSupported, 1)
ifcontains(i) $($1) in $(PlatformList)
;
goto Return_Options
;
else
;
set Status = STATUS_NOTSUPPORTED
goto Finish_ReturnOptions
;
endif
;
else
;
set Status = STATUS_NOLANGUAGE
goto Finish_ReturnOptions
;
endif
;
; form a list of all the options and another of the text representing
;
Return_Options = +
set OptionList = ^(Options$($1), 1)
set OptionTextList = ^(OptionsText$($1)$($0), 1)
set Status = STATUS_SUCCESSFUL
Finish_ReturnOptions = +
return $(Status) $(OptionList) $(OptionTextList)
;------------------------------------------------------------------------
; InstallOption:
;
; This section is shelled to by main installation processing
; or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION: To copy files representing Options
; To configure the installed option
; To update the registry for the installed option
;
; INPUT: $($0): Language to use
; $($1): OptionID to install
; $($2): SourceDirectory
; $($3): AddCopy (YES | NO)
; $($4): DoCopy (YES | NO)
; $($5): DoConfig (YES | NO)
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_USERCANCEL |
; STATUS_FAILED
;------------------------------------------------------------------------
[InstallOption]
StartWait
;
; Un-comment for debugging.
;
; set !DebugOutputControl = 1
;
; Set default values.
;
set Status = STATUS_FAILED
;
; extract parameters
;
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
Debug-Output "MADGE: STF_CWDIR = "$(!STF_CWDIR)
Debug-Output "MADGE: STF_LANGUAGE = "$(!STF_LANGUAGE)
Debug-Output "MADGE: Option = "$(Option)
Debug-Output "MADGE: SrcDir = "$(SrcDir)
Debug-Output "MADGE: AddCopy = "$(AddCopy)
Debug-Output "MADGE: DoCopy = "$(DoCopy)
Debug-Output "MADGE: DoConfig = "$(DoConfig)
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
ifcontains(i) $($0) NOT-IN $(LanguageList)
;
return STATUS_NOLANGUAGE
;
endif
;
; Define all the constants
;
set-subst LF = "\n"
read-syms GeneralConstants
read-syms FileConstants
read-syms DialogConstants$(!STF_LANGUAGE)
ifstr(i) $(!NTN_Origination) == "NCPA"
;
set Continue = $(OK)
;
endif
read-syms FileConstants$(!STF_LANGUAGE)
SetHelpFile "mdgmpdlg.hlp" $(MadgeHelpIdMin) $(MadgeHelpIdMax)
detect date
set-title $(FunctionTitle)
set To = Begin
set From = Begin
;
; Assume all is well.
;
set CommonStatus = STATUS_SUCCESSFUL
EndWait
; -----------------------------------------------------------------------
; Set up the operation-mode-based variables and gaily welcome
; the user. If the "install mode" variable is improperly set,
; assume this is a new installation.
; -----------------------------------------------------------------------
Begin = +
;
; Until proven otherwise we assume that the adapter has not been
; detected by our NetDetect DLL and we have not done any raw->user
; mapping of parameter lists.
;
set AdapterDetected = FALSE
set MappedRawParameters = FALSE
ifstr(i) $(!NTN_InstallMode) == deinstall
;
set StartLabel = Remove_Adapter
;
else-ifstr(i) $(!NTN_InstallMode) == Update
;
set StartLabel = Upgrade_Software
;
else-ifstr(i) $(!NTN_InstallMode) == bind
;
set StartLabel = Binding_Adapter
;
else-ifstr(i) $(!NTN_InstallMode) == configure
set CommonStatus = STATUS_REBOOT
set StartLabel = Configure_Adapter
;
; You cannot config the software component
;
ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set Error = $($R0)
set From = End
set To = End
goto Non_Fatal_Info
endif
else
set StartLabel = Install_Adapter
set OEM_ABANDON_OPTIONS = {}
set OEM_ABANDON_SOFTWARE = FALSE
set OEM_ABANDON_ON = TRUE
endif
set From = Fatal
set To = Fatal
goto $(StartLabel)
; ----------------------------------------------------------------------
; Installation Section
; ----------------------------------------------------------------------
Install_Adapter = +
;
; First, check whether the same version of the software exists
;
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
;
;
; Same version already existed in the local machine
; Popup the dialog and ask the user whether he wants to continue
;
CloseRegKey $(KeyProduct)
ifstr(i) $(!NTN_RegBase) == $(ProductKeyName)
;
; Cannot Install the same software again
;
Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
$(ProductVersion)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
goto End
else
;
; Make sure the user really wants to add a new adapter.
; Don't bother for automatic installation.
;
ifstr(i) $(Option) != "MSMDGMPAUTO"
;
; Add a new adapter card?
;
Shell $(UtilityInf), CardExistedDlg
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
ifstr(i) $($R1) != "OK"
goto End
endif
endif
set OldVersionExisted = $(TRUE)
endif
endif
; -----------------------------------------------------------------------
; Copy the driver and helper files from the distribution disk.
; -----------------------------------------------------------------------
Install_Files = +
Debug-Output "OEMNADMA.INF: Install Files"
ifint $(OldVersionExisted) == $(FALSE)
ifstr(i) $(!NTN_InstallMode) == "install"
Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(!STF_SRCDIR), "YES"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
else-ifstr(i) $($R0) == STATUS_FAILED
shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set Error = $($R0)
goto Fatal
else-ifstr(i) $($R0) == STATUS_USERCANCEL
goto Successful
endif
set SrcDir = $($R1) ; Referenced in install sections.
install "Install-Option"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set Error = $($R0)
goto Fatal
endif
endif
endif
; -----------------------------------------------------------------------
; If the adapter option is MSMDGMPAUTO then we need to perform some adapter
; detection. In addition, we may not have been asked to detect the
; adapter but NCPA may have already done it for use. If it has then set
; up the detection variables from the values passed by NCPA.
; -----------------------------------------------------------------------
ifstr(i) $(!STF_NCDETECT) == YES
ifstr(i) $(!STF_NCOPTION) == $(Option)
set AdapterDetected = TRUE
set DetectOption = $(!STF_NCOPTION)
set DetectIndex = $(!STF_NCDETCARD)
goto Set_Installation_Defaults
endif
endif
; -----------------------------------------------------------------------
; Set some defaults that apply to all card types
; -----------------------------------------------------------------------
Set_Installation_Defaults = +
Debug-Output "OEMNADMA.INF: Set Install Defaults"
StartWait
;
; Set up some defaults that are not affected by automatic detection.
;
set MaxFrameSize = 4096
set LAA = ""
set RxTxSlots = *($(RxTxRawList),3)
set StatsFlag = *($(StatsRawList),1)
set SpeedFlag = 0
set OldIrqNumber = $(VALUE_UNKNOWN)
set OldDmaChannel = $(VALUE_UNKNOWN)
set OldIoLocation = $(VALUE_UNKNOWN)
set OldSlotNumber = $(VALUE_UNKNOWN)
set OldMpFlag = $(VALUE_UNKNOWN)
;
; Now set up the options for adapter options.
;
ifcontains(i) $(Option) in $(SlotNumberAdapters)
set TypeList = {{SLOTNUMBER,SlotList,SlotNumber},+
{DMACHANNEL,DmaList,DmaChannel},+
{MULTIPROCESSOR,MpList,MpFlag}}
else
set TypeList = {{IOLOCATION,IoList,IoLocation},+
{DMACHANNEL,DmaList,DmaChannel},+
{INTERRUPTNUMBER,IrqList,IrqNumber},+
{MULTIPROCESSOR,MpList,MpFlag}}
endif
Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList)
set Status = $($R0)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
Debug-Output "OEMNADMA.INF: Param_BuildTypeLists returned "$(Status)
goto Fatal
endif
;
; If the adapter was automatically detected then call the
; DLL to find out what the parameters are.
;
ifstr(i) $(AdapterDetected) == TRUE
Debug-Output "OEMNADMA.INF: Calling Param_QueryCard"
Shell $(ParamInf) Param_QueryCard $(DetectIndex)
set Status = $($R0)
set ParamList = $($R1)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto Fatal
endif
endif
;
; And set the defaults. This will be the automatically detected
; value if the adapter was detected or the first allowable choice
; otherwise.
;
Debug-Output "OEMNADMA.INF: Calling Param_SetDefaults"
Shell $(ParamInf) Param_SetDefaults $(ParamList)
Debug-Output "MADGE: SlotNumber = "$(SlotNumber)
Debug-Output "MADGE: IoLocation = "$(IoLocation)
Debug-Output "MADGE: IrqNumber = "$(IrqNumber)
Debug-Output "MADGE: DmaChannel = "$(DmaChannel)
Debug-Output "MADGE: MpFlag = "$(MpFlag)
Debug-Output "MADGE: SlotList = "$(SlotList)
Debug-Output "MADGE: IoList = "$(IoList)
Debug-Output "MADGE: IrqList = "$(IrqList)
Debug-Output "MADGE: DmaList = "$(DmaList)
Debug-Output "MADGE: MpList = "$(MpList)
;
; Note what the hardware detectable values are for later.
;
ifstr(i) $(AdapterDetected) == TRUE
set OldSlotNumber = $(SlotNumber)
set OldIoLocation = $(IoLocation)
set OldIrqNumber = $(IrqNumber)
set OldDmaChannel = $(DmaChannel)
set OldMpFlag = $(MpFlag)
endif
set OldValueTitle = $(OldValueTitleInstall)
EndWait
goto Get_Adapter_Options
; -----------------------------------------------------------------------
; Configuration Section
; -----------------------------------------------------------------------
Configure_Adapter = +
StartWait
;
; Now set up the options for adapter options.
;
ifcontains(i) $(Option) in $(SlotNumberAdapters)
set TypeList = {{SLOTNUMBER,SlotList,SlotNumber},+
{DMACHANNEL,DmaList,DmaChannel},+
{MULTIPROCESSOR,MpList,MpFlag}}
else
set TypeList = {{IOLOCATION,IoList,IoLocation},+
{DMACHANNEL,DmaList,DmaChannel},+
{INTERRUPTNUMBER,IrqList,IrqNumber},+
{MULTIPROCESSOR,MpList,MpFlag}}
endif
Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList)
set Status = $($R0)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto fataldetect
endif
;
; And set the defaults.
;
Shell $(ParamInf) Param_SetDefaults $(ParamList)
;
; Set up the defaults not done by the help interface the
; detection DLL above.
;
set MaxFrameSize = 4096
set LAA = ""
set RxTxSlots = *($(RxTxRawList),3)
set StatsFlag = *($(StatsRawList),1)
set NoMmioFlag = 0
set SpeedFlag = 0
set TransferType = $(TRANSFER_UNKNOWN)
;
; NB !NTN_RegBase, for hardware components, is :
; \SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\0x
;
;
; This next IF is redundant - it will always be NULL
;
ifstr $(KeyProduct) == $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
ifstr $(KeyProduct) == $(KeyNull)
set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
goto Fatal_Registry
endif
endif
;
; Get the other parameters; they're attached to the service
; parameters key
;
Shell $(UtilityInf) FindService, $(KeyProduct)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
ifstr(i) $($R0) != NO_ERROR
goto Fatal_Registry
endif
set KeyParameters = $($R2)
;
; We don't need the services key, so close it.
;
CloseRegKey $($R1)
ifstr $(KeyParameters) == $(KeyNull)
set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
goto Fatal_Registry
endif
set OldVersionExisted = $(TRUE)
;
; Get the old values
;
set ValueName = ""
set ValueData = ""
set ValueStr = ""
set ValueList = {}
EnumRegValue $(KeyParameters) ValueList
ForListDo $(ValueList)
set ValueItem = $($)
set ValueName = *($(ValueItem),1)
set ValueData = *($(ValueItem),4)
ifstr(i) $(ValueName) == "InterruptNumber"
set IrqNumber = $(ValueData)
else-ifstr(i) $(ValueName) == "IoLocation"
set IoLocation = $(ValueData)
else-ifstr(i) $(ValueName) == "IoBaseAddress"
set IoLocation = $(ValueData)
else-ifstr(i) $(ValueName) == "DmaChannel"
set DmaChannel = $(ValueData)
else-ifstr(i) $(ValueName) == "SlotNumber"
set SlotNumber = $(ValueData)
else-ifstr(i) $(ValueName) == $(McaEisaKeyword)
set McaEisaId = $(ValueData)
else-ifstr(i) $(ValueName) == "MaxFrameSize"
set MaxFrameSize = $(ValueData)
else-ifstr(i) $(ValueName) == "NetworkAddress"
set LAA = $(ValueData)
else-ifstr(i) $(ValueName) == "RxTxSlots"
set RxTxSlots = $(ValueData)
else-ifstr(i) $(ValueName) == "PromiscuousModeX"
set StatsFlag = $(ValueData)
else-ifstr(i) $(ValueName) == "Multiprocessor"
set MpFlag = $(ValueData)
else-ifstr(i) $(ValueName) == "NoMmio"
set NoMmioFlag = $(ValueData)
else-ifstr(i) $(ValueName) == "Force16"
set SpeedFlag = 2
else-ifstr(i) $(ValueName) == "Force4"
set SpeedFlag = 1
else-ifstr(i) $(ValueName) == "TransferType"
set TransferType = $(ValueData)
endif
EndForListDo
;
; For backward compatibility we translate a DMA channel of 0x8000
; into a DMA channel of $(GENERAL_PIO) and a multiprocessor flag of 1.
;
ifint $(DmaChannel) == 32768
set DmaChannel = $(GENERAL_PIO)
set MpFlag = 1
endif
;
; We now need to merge the DmaChannel and NoMmioFlag to produce a
; DmaChannel that completely specifies the transfer mode. When
; we called the detection DLL to get the defaults DmaChannel will
; have been set up properly, including setting unspecific DMA for
; EISA, MC and PCI. If we have an MMIO supporting adapter the rule is
; as follows.
;
; If the NoMmio flag is set then we must not use so MMIO we force
; the transfer type to be PIO.
;
; If the NoMmio flag is not set then we use MMIO.
;
ifcontains(i) $(GENERAL_MMIO) in $(DmaList)
ifint $(NoMmioFlag) != 0
set DmaChannel = $(GENERAL_PIO)
else
set DmaChannel = $(GENERAL_MMIO)
endif
endif
;
; If the TransferType flag is set to PIO and this adapter supports
; PIO then force PIO irrespective of the current value of DmaChannel.
;
ifint $(TransferType) == $(TRANSFER_PIO)
ifcontains(i) $(GENERAL_PIO) in $(DmaList)
set DmaChannel = $(GENERAL_PIO)
endif
endif
;
; If the TransferType flag is set to unspecified DMA and this
; adapter supports unspecified DMA then force unspecified DMA
; irrespective of the current value of DMA channel. This
; code is needed for adapters like PCI (BM) where both
; PIO and unspecific DMA is supported (EISA and MC adapters
; only support unspecific DMA and ISA devices have DmaChannel
; set to a specific value.)
;
ifint $(TransferType) == $(TRANSFER_DMA)
ifcontains(i) $(GENERAL_DMA) in $(DmaList)
set DmaChannel = $(GENERAL_DMA)
endif
endif
;
; Make a note of the current values.
;
set OldSlotNumber = $(SlotNumber)
set OldIoLocation = $(IoLocation)
set OldIrqNumber = $(IrqNumber)
set OldDmaChannel = $(DmaChannel)
set OldMpFlag = $(MpFlag)
set OldValueTitle = $(OldValueTitleConfigure)
EndWait
; -----------------------------------------------------------------------
; Let the user set options.
; -----------------------------------------------------------------------
Get_Adapter_Options = +
Debug-Output "OEMNADMA.INF: Get_Adapter_Options"
StartWait
ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
ifstr(i) $(!STF_NCDETINFO) == {}
ifstr(i) $(!AutoNetInterfaceType) != ""
set BusInterfaceType = $(!AutoNetInterfaceType)
else
set BusInterfaceType = 1 ;ISA
endif
ifstr(i) $(!AutoNetBusNumber) != ""
set BusNumber = $(!AutoNetBusNumber)
else
set BusNumber = 0
endif
else
ifstr(i) $(!AutoNetInterfaceType) != ""
set BusInterfaceType = $(!AutoNetInterfaceType)
else
set BusInterfaceType = *($(!STF_NCDETINFO),5)
endif
ifstr(i) $(!AutoNetBusNumber) != ""
set BusNumber = $(!AutoNetBusNumber)
else
set BusNumber = *($(!STF_NCDETINFO),6)
endif
endif
goto adapterverify
endif
;
; Need to be able to tell if the LAA or statistics gathering
; flag have changed.
;
set OldLAA = $(LAA)
set OldStatsFlag = $(StatsFlag)
set OldSpeedFlag = $(SpeedFlag)
;
; Set up the list of adapter ring speeds.
;
set SpeedRawList = $(SpeedRawList$(Option))
set SpeedUserList = $(SpeedUserList$(Option))
;
; Map the parameter lists into the form we present to the user.
; We only ever do this once.
;
ifstr(i) $(MappedRawParameters) == FALSE
ifcontains(i) $(Option) not-in $(SlotNumberAdapters)
set TempList = $(IoList)
set IoList = {}
ForListDo $(TempList)
set IoList = >($(IoList), *($(IoUserList),~($(IoRawList),$($))))
EndForListDo
set TempList = $(IrqList)
set IrqList = {}
ForListDo $(TempList)
set IrqList = >($(IrqList), *($(IrqUserList),~($(IrqRawList),$($))))
EndForListDo
else
set TempList = $(SlotList)
set SlotList = {}
ForListDo $(TempList)
set SlotList = >($(SlotList), *($(SlotUserList),~($(SlotRawList),$($))))
EndForListDo
endif
set TempList = $(DmaList)
set DmaList = {}
ForListDo $(TempList)
set DmaList = >($(DmaList), *($(DmaUserList),~($(DmaRawList),$($))))
EndForListDo
set TempList = $(MpList)
set MpList = {}
ForListDo $(TempList)
set MpList = >($(MpList), *($(MpUserList),~($(MpRawList),$($))))
EndForListDo
set MappedRawParameters = TRUE
endif
EndWait
Get_Adapter_Options_Restart = +
;
; We will start here if parameter validation fails.
;
StartWait
set From = Get_Adapter_Options_Restart
;
; Map the currently selected values into user from.
;
ifcontains(i) $(Option) not-in $(SlotNumberAdapters)
set IoLocation = *($(IoUserList),~($(IoRawList),$(IoLocation)))
set OldIoLocation = *($(IoUserList),~($(IoRawList),$(OldIoLocation)))
set IrqNumber = *($(IrqUserList),~($(IrqRawList),$(IrqNumber)))
set OldIrqNumber = *($(IrqUserList),~($(IrqRawList),$(OldIrqNumber)))
else
set SlotNumber = *($(SlotUserList),~($(SlotRawList),$(SlotNumber)))
set OldSlotNumber = *($(SlotUserList),~($(SlotRawList),$(OldSlotNumber)))
endif
set DmaChannel = *($(DmaUserList),~($(DmaRawList),$(DmaChannel)))
set OldDmaChannel = *($(DmaUserList),~($(DmaRawList),$(OldDmaChannel)))
set MpFlag = *($(MpUserList),~($(MpRawList),$(MpFlag)))
set OldMpFlag = *($(MpUserList),~($(MpRawList),$(OldMpFlag)))
set StatsFlag = *($(StatsUserList),~($(StatsRawList),$(StatsFlag)))
set RxTxSlots = *($(RxTxUserList),~($(RxTxRawList),$(RxTxSlots)))
set SpeedFlag = *($(SpeedUserList),~($(SpeedRawList),$(SpeedFlag)))
;
; Set up the input dialog box text and lists.
;
read-syms FileDependentDlg$(!STF_LANGUAGE)
;
; Decide which dialog box to use.
;
Debug-Output "MADGE: Option = "$(Option)
Debug-Output "MADGE: SlotNumberAdapters = "$(SlotNumberAdapters)
ifcontains(i) $(Option) in $(SlotNumberAdapters)
set DlgTemplate = "MDGEISA"
else
set DlgTemplate = "MDGISA"
endif
Debug-Output "MADGE: DlgTemplate = "$(DlgTemplate)
;
; To allow us to re-use the EISA/MCA dialog box for PCI we need
; to change Combo8Label.
;
ifstr(i) $(Option) == "MSMDGMPPCI"
set Combo8Label = $(PciCombo8Label)
endif
;
; Let the user press some keys.
;
LoadLibrary "x" $(DialogDllName) MdgDialog
EndWait
ui start "InputDlg" $(MdgDialog)
StartWait
ifstr(i) $(DLGEVENT) == "EXIT"
set CommonStatus = STATUS_USERCANCEL
ui pop 1
FreeLibrary $(MdgDialog)
goto End
else-ifstr(i) $(DLGEVENT) != "CONTINUE"
ui pop 1
FreeLibrary $(MdgDialog)
goto End
endif
;
; Get the values the user selected out of the dialog box.
;
set IrqNumber = $(Combo1Out)
set IoLocation = $(Combo2Out)
set DmaChannel = $(Combo3Out)
set RxTxSlots = $(Combo4Out)
set StatsFlag = $(Combo5Out)
set MpFlag = $(Combo7Out)
set SlotNumber = $(Combo8Out)
set SpeedFlag = $(Combo9Out)
set MaxFrameSize = *($(EditTextOut), 1)
set LAA = *($(EditTextOut), 2)
ui pop 1
FreeLibrary $(MdgDialog)
Debug-Output "MADGE: SlotNumber = "$(SlotNumber)
Debug-Output "MADGE: IoLocation = "$(IoLocation)
Debug-Output "MADGE: IrqNumber = "$(IrqNumber)
Debug-Output "MADGE: DmaChannel = "$(DmaChannel)
Debug-Output "MADGE: MpFlag = "$(MpFlag)
Debug-Output "MADGE: RxTxSlots = "$(RxTxSlots)
Debug-Output "MADGE: StatsFlag = "$(StatsFlag)
;
; Convert the values the user has chosen into internal form.
;
ifcontains(i) $(Option) not-in $(SlotNumberAdapters)
set IoLocation = *($(IoRawList),~($(IoUserList),$(IoLocation)))
set OldIoLocation = *($(IoRawList),~($(IoUserList),$(OldIoLocation)))
set IrqNumber = *($(IrqRawList),~($(IrqUserList),$(IrqNumber)))
set OldIrqNumber = *($(IrqRawList),~($(IrqUserList),$(OldIrqNumber)))
else
set SlotNumber = *($(SlotRawList),~($(SlotUserList),$(SlotNumber)))
set OldSlotNumber = *($(SlotRawList),~($(SlotUserList),$(OldSlotNumber)))
endif
set DmaChannel = *($(DmaRawList),~($(DmaUserList),$(DmaChannel)))
set OldDmaChannel = *($(DmaRawList),~($(DmaUserList),$(OldDmaChannel)))
set MpFlag = *($(MpRawList),~($(MpUserList),$(MpFlag)))
set OldMpFlag = *($(MpRawList),~($(MpUserList),$(OldMpFlag)))
set StatsFlag = *($(StatsRawList),~($(StatsUserList),$(StatsFlag)))
set RxTxSlots = *($(RxTxRawList),~($(RxTxUserList),$(RxTxSlots)))
set SpeedFlag = *($(SpeedRawList),~($(SpeedUserList),$(SpeedFlag)))
Debug-Output "MADGE: SlotNumber = "$(SlotNumber)
Debug-Output "MADGE: IoLocation = "$(IoLocation)
Debug-Output "MADGE: IrqNumber = "$(IrqNumber)
Debug-Output "MADGE: DmaChannel = "$(DmaChannel)
Debug-Output "MADGE: MpFlag = "$(MpFlag)
Debug-Output "MADGE: RxTxSlots = "$(RxTxSlots)
Debug-Output "MADGE: StatsFlag = "$(StatsFlag)
EndWait
; -----------------------------------------------------------------------
; Verify the adapter options.
; -----------------------------------------------------------------------
Adapter_Verify = +
StartWait
;
; If the user entered an LAA then validate it.
;
ifstr $(LAA) != ""
;
; NB A line of spaces will come through here, and will fail the
; check - do we want this?
;
LoadLibrary "x" $(DialogDllName) MdgDialog
set FLibraryErrCtl = 1
LibraryProcedure MdgResult $(MdgDialog) MadgeLAACheck $(LAA)
set FLibraryErrCtl = 0
FreeLibrary $(MdgDialog)
ifstr $(MdgResult) != "MADGE_STATUS_SUCCESS"
;
;
; Illegal LAA supplied in the install dialog
; Display error message and go around again
;
set Error = $(MdgResult)
;
; This will go back to Get_Adapter_Options or to end.
;
goto Non_Fatal
endif
endif
ifint $(MaxFrameSize) > 17839
;
; 17839 is the maximum frame size at 16Mbps, while at 4Mbps it is 4472.
; Unfortunately, we can't tell here what the ring speed is, so guess at
; 16Mbps, which is the most sensible.
;
set MaxFrameSize = 17839
set Error = $(TRIMMED_MFS)
set From = Update_Registry
goto Non_Fatal_Info
endif
ifstr(i) $(!STF_NCDETINFO) == {}
Shell $(UtilityInf), GetBusTypeDialog, $(ProductHardware$(Option)Description) $(BusNumber)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set BusInterfaceType = $($R1)
set BusNumber = $($R2)
else
set BusInterfaceType = *($(!STF_NCDETINFO),5)
set BusNumber = *($(!STF_NCDETINFO),6)
endif
adapterverify = +
Debug-Output "At adapterverify"
Shell "" DebugConfiguration "after running dialog"
;===================================================
; Netcard Detection logic
;
; If this is a detected card, attempt to validate the options
;
Ifstr(i) $(AdapterDetected) != TRUE
Goto Update_Registry
Endif
Debug-Output "OEMNADMA.INF: Calling Param_VerifyCard"
Shell $(ParamInf) Param_VerifyCard $(!STF_NCDETCARD)
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
Debug-Output "OEMNADMA.INF: Param_VerifyCard succeeded"
Goto Update_Registry
Endif
;
; Give the user a chance to retry or force the options given.
;
Set from = Get_Adapter_Options
Set to = Update_Registry
Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error: cannot get an error string."
goto ShellCodeError
endif
set Error = $($R0)
Goto Warning
;
; End Netcard Detection logic
;===================================================
EndWait
; -----------------------------------------------------------------------
; We have checked the options so add the software parameters to the
; registry.
; -----------------------------------------------------------------------
Update_Registry = +
;
; If installing, go create the necessary keys;
; if configuring, they're already open.
;
ifint $(OldVersionExisted) == $(TRUE)
ifstr(i) $(!NTN_InstallMode) == configure
goto Write_Parameters
endif
endif
StartWait
;
; Add Software Component.
;
ifint $(OldVersionExisted) == $(FALSE)
Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
$(ProductSoftwareName), +
$(ProductSoftwareName), +
$(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
$(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
$(MadgeEventLogFile)
Set OEM_ABANDON_SOFTWARE = TRUE
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage Key
;
set RegistryErrorIndex = $($R0)
set KeyProduct = $($R1)
Set SoftNetRulesKey = $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
goto Fatal_Registry
;
endif
set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
{Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),$(!STF_CWDDIR)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
goto Fatal_Registry
endif
set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(STF_CONTEXTINFNAME)} }
Shell $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(KeyProduct)
CloseRegKey $(SoftNetRulesKey)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
goto Fatal_Registry
endif
endif
;
; Create the HARDWARE\Netcard region and its corresponding service
;
Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(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)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto Fatal_Registry
endif
;
; At this point:
; $R1 Registry key variable for HARDWARE\Netcard\(n)
; $R2 Registry key variable for HARDWARE\Netcard\(n)\\NetRules
; $R3 Registry key handle for <service>\Parameters key
; $R4 Adapter number assigned to adapter
; $R5 Service name generated by combining svc name with adapter number
;
set KeyParameters = $($R3)
set KeyAdapterRules = $($R2)
set AdapterNumber = $($R4)
set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
{Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
{ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
{OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
CloseRegKey $($R1)
set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(STF_CONTEXTINFNAME)}}
Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyAdapterRules)
goto Fatal_Registry
endif
CloseRegKey $(KeyAdapterRules)
EndWait
; ----------------------------------------------------------------------
; Write the adapter parameters into the registry.
; ----------------------------------------------------------------------
;
; REQUIRED: $(KeyParameters) contains service Parameters key handle.
;
Write_Parameters = +
StartWait
;
; It would appear that when installing a PCMCIA adapter
; one should give the bus type of the PCMCIA controller
; rather than PCMCIA itself.
;
ifstr(i) $(Option) == "MSMDGMPPCMCIA"
set BusInterfaceType = 1
endif
;
; We need to examine DmaChannel to decide on how to set DmaChannel
; and NoMmio. We use a very simple test - if DmaChannel is not
; $(GENERAL_MMIO) then we set NoMmio, otherwise we clear it. We
; probably should abandon this flag since we can convey the same
; information in a more consistent form in the TransferType
; parameter below. We'll keep it for backwards compatability.
;
ifint $(DmaChannel) == $(GENERAL_MMIO)
set NoMmioFlag = 0
else
set NoMmioFlag = 1
endif
;
; Work out the general transfer type.
;
ifint $(DmaChannel) == $(GENERAL_PIO)
set TransferType = $(TRANSFER_PIO)
else-ifint $(DmaChannel) == $(GENERAL_MMIO)
set TransferType = $(TRANSFER_MMIO)
else
set TransferType = $(TRANSFER_DMA)
endif
;
; Derive the adapter type.
;
set AdapterTypeFlag = $(AdapterTypeFlag$(Option))
;
; Add the rest of the parameters to the Services adapter area.
;
ifcontains(i) $(Option) not-in $(SlotNumberAdapters)
set NewValueList = {{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IrqNumber)},+
{BusType, $(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
{BusNumber, $(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
{MediaType, $(NoTitle),$(!REG_VT_DWORD),2},+
{IoLocation, $(NoTitle),$(!REG_VT_DWORD),$(IoLocation)},+
{IoBaseAddress, $(NoTitle),$(!REG_VT_DWORD),$(IoLocation)},+
{DmaChannel, $(NoTitle),$(!REG_VT_DWORD),$(DmaChannel)},+
{NoMmio, $(NoTitle),$(!REG_VT_DWORD),$(NoMmioFlag)},+
{TransferType, $(NoTitle),$(!REG_VT_DWORD),$(TransferType)},+
{RxTxSlots, $(NoTitle),$(!REG_VT_DWORD),$(RxTxSlots)},+
{Multiprocessor, $(NoTitle),$(!REG_VT_DWORD),$(MpFlag)},+
{MaxFrameSize, $(NoTitle),$(!REG_VT_DWORD),$(MaxFrameSize)},+
{AdapterType, $(NoTitle),$(!REG_VT_DWORD),$(AdapterTypeFlag)}}
else
set NewValueList = {+
{BusType, $(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
{BusNumber, $(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
{MediaType, $(NoTitle),$(!REG_VT_DWORD),2},+
{SlotNumber, $(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)},+
{NoMmio, $(NoTitle),$(!REG_VT_DWORD),$(NoMmioFlag)},+
{TransferType, $(NoTitle),$(!REG_VT_DWORD),$(TransferType)},+
{RxTxSlots, $(NoTitle),$(!REG_VT_DWORD),$(RxTxSlots)},+
{Multiprocessor, $(NoTitle),$(!REG_VT_DWORD),$(MpFlag)},+
{MaxFrameSize, $(NoTitle),$(!REG_VT_DWORD),$(MaxFrameSize)},+
{AdapterType, $(NoTitle),$(!REG_VT_DWORD),$(AdapterTypeFlag)}}
endif
;
; Add specific card ID
;
ifstr(i) $(ID$(Option)) != ""
set NewValueList = >($(NewValueList),+
{$(IDV$(Option)), $(NoTitle), $(!REG_VT_DWORD), $(ID$(Option))})
endif
;
; Add the LAA if there is one.
;
ifstr $(LAA) != ""
set NewValueList = >($(NewValueList),+
{NetworkAddress, $(NoTitle), $(!REG_VT_SZ), $(LAA)})
endif
;
; Enable promiscuous mode if required.
;
ifstr $(StatsFlag) == "1"
set NewValueList = >($(NewValueList),+
{PromiscuousModeX, $(NoTitle), $(!REG_VT_DWORD), $(StatsFlag)})
endif
;
; Enable Force4 mode if required.
;
ifstr $(SpeedFlag) == "1"
set NewValueList = >($(NewValueList),+
{Force4, $(NoTitle), $(!REG_VT_DWORD), 1})
endif
;
; Enable Force16 mode if required.
;
ifstr $(SpeedFlag) == "2"
set NewValueList = >($(NewValueList),+
{Force16, $(NoTitle), $(!REG_VT_DWORD), 1})
endif
;
; If this is a PCMCIA adapter we need to a PCMCIA flag.
;
ifstr(i) $(Option) == "MSMDGMPPCMCIA"
set NewValueList = >($(NewValueList),+
{Pcmcia, $(NoTitle), $(!REG_VT_DWORD), 1})
endif
;
; And add the parameters to the registry.
;
Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(KeyParameters)
goto Fatal_Registry
endif
ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
Shell $(UtilityInf),AddDefaultNetCardParameters,$(KeyParameters)
endif
;
; If the old LAA has been cleared then so delete the key
; from registry.
;
ifstr $(OldLAA) != ""
ifstr $(LAA) == ""
DeleteRegValue $(KeyParameters) NetworkAddress
endif
endif
;
; If Force4 mode has been disabled then delete the key.
;
ifstr $(OldSpeedFlag) == "1"
ifstr $(SpeedFlag) != "1"
DeleteRegValue $(KeyParameters) Force4
endif
endif
;
; If Force16 mode has been disabled then delete the key.
;
ifstr $(OldSpeedFlag) == "2"
ifstr $(SpeedFlag) != "2"
DeleteRegValue $(KeyParameters) Force16
endif
endif
;
; If promiscuous mode has been disabled then delete the key.
;
ifstr $(OldStatsFlag) != "0"
ifstr $(StatsFlag) == "0"
DeleteRegValue $(KeyParameters) PromiscuousModeX
endif
endif
CloseRegKey $(KeyParameters)
EndWait
goto Successful
; -----------------------------------------------------------------------
; Binding section
; -----------------------------------------------------------------------
Binding_Adapter =+
set Error = "Binding: Sorry, not yet implemented."
goto Fatal
; -----------------------------------------------------------------------
; Removal section
; -----------------------------------------------------------------------
Remove_Adapter = +
StartWait
;
; Remove the software component if required.
;
ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
$(ProductSoftwareName)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
goto Fatal_Registry
endif
;
; Or, the hardware component.
;
else
Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
$(ProductSoftwareName), $(!NTN_RegBase)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
goto Fatal_Registry
endif
endif
EndWait
goto End
; -----------------------------------------------------------------------
; Upgrade Software section.
; -----------------------------------------------------------------------
Upgrade_Software = +
StartWait
;
; First determine whether we want to do upgrade or update for software
; or hardware component. Then we will determine whether the Mode is
; update or upgrade.
;
ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
;
;
; Upgrade software component
;
; see whether the same version exist or not
;
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
ifstr $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
set Version = *($(VersionInfo), 4)
;
; Update the binaries
;
shell $(UtilityInf) GetInfFileNameFromRegistry $(KeyProduct)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto Shell_Code_Error
endif
set !UG_Filename = $($R0)
ifstr(i) $(!UG_Filename) != ""
install "Install-Update"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
goto Fatal
endif
endif
CloseRegKey $(KeyProduct)
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
;
; Upgrade the version number
;
SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
ifint $(Version) != $(ProductMajorVersion)
;
;
; If the major version number is not the same,
; it is major upgrade. So let Upgrade the product
;
;
; make other upgrade change if necessary
;
;
endif
CloseRegKey $(KeyProduct)
else
;
;
; Cannot Open software key, goto ERROR
;
goto Fatal_Registry
;
endif
;
; Enumerate all netcards installed of this type and update them
;
set iSearch = 1
nextnetcard = +
Shell $(UtilityInf), FindNextNetworkCard, $(ProductHardwareName), $(iSearch)
set KeyNetcard = $($R0)
set iSearch = $($R1)
Debug-Output "OemNadEp.Inf: FindNextNetworkCard "$(KeyNetcard)","$(iSearch)
Ifstr $(KeyNetcard) != $(KeyNull)
Debug-Output "OemNadEp.Inf: Setting OperationsSupport value"
SetRegValue $(KeyNetcard) {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)}
CloseRegKey $(KeyNetcard)
goto nextnetcard
Endif
else
;
; We cannot upgrade the hardware component.
;
set Error = ""
set OEM_ABANDON_ON = FALSE
goto Not_Supported
endif
EndWait
goto End
; -----------------------------------------------------------------------
; Escape hatches
; -----------------------------------------------------------------------
Successful = +
goto End
; -----------------------------------------------------------------------
Abandon = +
ForListDo $(OEM_ABANDON_OPTIONS)
;
Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
$(ProductSoftwareName), $($)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;
goto Fatal_Registry
;
endif
;
EndForListDo
ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
;
;
; Remove Software Component
;
Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
$(ProductSoftwareName), FALSE
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
set RegistryErrorIndex = $($R0)
ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;
goto Fatal_Registry
;
endif
;
endif
goto End
; -----------------------------------------------------------------------
Warning = +
EndWait
Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
ifstr(i) $($R1) == "OK"
;
goto $(To)
;
else-ifstr(i) $($R1) == "CANCEL"
;
goto $(From)
;
endif
goto End
; -----------------------------------------------------------------------
Non_Fatal_Info = +
set Severity = STATUS
set CommonStatus = STATUS_USERCANCEL
goto Non_Fatal_Msg
; -----------------------------------------------------------------------
Non_Fatal = +
set Severity = NONFATAL
goto Non_Fatal_Msg
; -----------------------------------------------------------------------
Non_Fatal_Msg = +
EndWait
ifstr(i) $(Error) == ""
;
set Severity = NONFATAL
Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
set Error = $($R0)
;
endif
Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
ifstr(i) $($R1) == "OK"
;
goto $(From)
;
endif
goto End
; -----------------------------------------------------------------------
Fatal_Registry = +
Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
set Error = $($R0)
goto Fatal
; -----------------------------------------------------------------------
;
; Netcard detection failure
;
fataldetect = +
Debug-Output "At fataldetect"
Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error: cannot get an error string."
goto ShellCodeError
endif
set Error = $($R0)
Goto fatal
; -----------------------------------------------------------------------
Fatal = +
EndWait
ifstr(i) $(Error) == ""
;
Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
set Error = $($R0)
;
endif
Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
goto Set_Failed
; -----------------------------------------------------------------------
Not_Supported = +
EndWait
ifstr(i) $(Error) == ""
;
Shell $(UtilityInf) RegistryErrorString "OPERATION_UNIMPLEMENTED"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
set Error = $($R0)
;
endif
Shell $(SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
;
goto Shell_Code_Error
;
endif
goto End
; -----------------------------------------------------------------------
Shell_Code_Error = +
EndWait
set DlgType = "MessageBox"
set STF_MB_TITLE = $(ShellCodeErrorTitle)
set STF_MB_TEXT = $(ShellCodeErrorText)
set STF_MB_TYPE = 1
set STF_MB_ICON = 3
set STF_MB_DEF = 1
ui start "Error Message"
goto Set_Failed
; -----------------------------------------------------------------------
Set_Failed = +
set CommonStatus = STATUS_FAILED
;
; if OEM_ABANDON_ON == TRUE, then remove the registry entries
;
ifstr(i) $(OEM_ABANDON_ON) == TRUE
;
set OEM_ABANDON_ON = FALSE
goto Abandon
;
endif
goto End
; -----------------------------------------------------------------------
End = +
goto Term
; -----------------------------------------------------------------------
Term = +
Return $(CommonStatus)
; -----------------------------------------------------------------------
; Install sections
; -----------------------------------------------------------------------
[Install-Update]
set STF_VITAL = ""
set STF_OVERWRITE = "VERIFYSOURCEOLDER"
AddSectionFilesToCopyList Files-Helper $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Driver $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
exit
[Install-Option]
set STF_VITAL = ""
AddSectionFilesToCopyList Files-Helper $(SrcDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Driver $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
ifstr(i) $(DoCopy) == "YES"
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
else
LibraryProcedure STATUS,$(!NCPA_HANDLE), CopySingleFile $(!STF_HWND) $(SrcDir)\mdgmpdlg.DLL $(!STF_WINDOWSSYSPATH)\mdgmpdlg.DLL
LibraryProcedure STATUS,$(!NCPA_HANDLE), CopySingleFile $(!STF_HWND) $(SrcDir)\mdgmpdlg.HLP $(!STF_WINDOWSSYSPATH)\mdgmpdlg.HLP
Endif
exit
; ******** End of file OEMSETUP.INF *****************************************