; file version: 1.7.5.4
;%VER 3Com OEMSETUP.INF 1.7.5.4
[Identification]
OptionType = NetTransport
[LanguagesSupported]
ENG
[Options]
DAPassThru
[OptionsTextENG]
PassThru = "DynamicAccess Intermediate Driver"
[FileConstants]
UtilityInf = "UTILITY.INF"
subroutineinf = "SUBROUTN.INF"
TransportSoftwareType = "transport"
AdapterSoftwareType = "driver"
Exit_Code = 0
NetEventDLL = "%SystemRoot%\System32\drivers\daprot.sys"
Manufacturer = "3Com"
ProductMajorVersion = "1"
ProductMinorVersion = "5.0"
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)
TransportProductSoftwareName = "DAPassThruTransport"
AdapterProductSoftwareName = "DAPassThru"
AdapterProductHardwareName = "DAPassThru"
ProductSoftwareImagePath = "\SystemRoot\System32\drivers\DAprot.sys"
ProductMiniportSoftwareImagePath = "\SystemRoot\System32\drivers\DAmini.sys"
TransportNetRuleSoftwareType = "DAPassThruTransport DAPassThruTransport"
TransportNetRuleSoftwareClass = {"DAPassThruTransport basic"}
TransportNetRuleSoftwareUse = $(TransportSoftwareType)" none none"
TransportNetRuleSoftwareBindForm = """DAPassThruTransport"" yes yes container"
TransportNetRuleSoftwareBindable = {"DAPassThruTransport ndisDriver non non 100"}
AdapterNetRuleSoftwareType = "DAPassThruSys ndisDriver DAPassThruDriver"
AdapterNetRuleSoftwareUse = $(AdapterSoftwareType)
AdapterNetRuleSoftwareBindForm = """DAPROT"" yes no container"
AdapterNetRuleSoftwareClass = {"DAPassThruDriver basic"}
AdapterNetRuleSoftwareBindable = {"DAPassThruDriver DAPassThruAdapter non exclusive 100"}
AdapterNetRuleHardwareType = "DAPassThru DAPassThruAdapter"
AdapterNetRuleHardwareBindForm = " yes yes container"
AdapterNetRuleHardwareClass = {"DAPassThruAdapter basic"}
TransportProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(TransportProductSoftwareName)"\CurrentVersion"
TransportParamKeyName = $(!NTN_ServiceBase)"\"$(TransportProductSoftwareName)"\Parameters"
TransportServiceKeyName = $(!NTN_ServiceBase)"\"$(TransportProductSoftwareName)
TransportLinkageKeyName = $(!NTN_ServiceBase)"\"$(TransportProductSoftwareName)"\Linkage"
TransportLinkageDisabledKeyName = $(!NTN_ServiceBase)"\"$(TransportProductSoftwareName)"\Linkage\Disabled"
AdapterProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(AdapterProductSoftwareName)"\CurrentVersion"
AdapterParamKeyName = $(!NTN_ServiceBase)"\"$(AdapterProductSoftwareName)"\Parameters"
AdapterServiceKeyName = $(!NTN_ServiceBase)"\"$(AdapterProductSoftwareName)
AdapterLinkageKeyName = $(!NTN_ServiceBase)"\"$(AdapterProductSoftwareName)"\Linkage"
[FileConstantsENG]
ProCaption = "Windows NT Setup"
ProCancel = "Cancel"
ProCancelMsg = "Windows NT Networking is not correctly installed. "+
"Are you sure you want to cancel copying files?"
ProCancelCap = "Network Setup Message"
ProText1 = "Copying:"
ProText2 = "To:"
FunctionTitle = "DAPassThru Driver"
TransportProductSoftwareDescription = "DAPassThru Driver Transport"
TransportProductSoftwareDisplayName = "DAPassThru Driver Transport"
TransportProductSoftwareTitle = "DAPassThru Driver Transport"
AdapterProductSoftwareDescription = "DAPassThru Driver Adapter"
AdapterProductSoftwareDisplayName = "DAPassThru Driver Adapter"
AdapterProductSoftwareTitle = "DAPassThru Driver Adapter"
ProductHardwareDescription = "DAPassThru Driver Virtual Adapter"
ProductHardwareDisplayName = "DAPassThru Driver Virtual Adapter"
ProductHardwareTitle = "DAPassThru Driver Virtual Adapter"
ShellCodeErrorTitle = "Error: "$(FunctionTitle)
ShellCodeErrorText = "Shell Code Error."
[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)\drivers
DisableOtherReviewBindings = $(!STF_WINDOWSPATH)"\System32\DASetup.exe"
DisableOtherReviewBindingsText = "DisableOtherReviews"
StartDetachedText = "StartDetachedReview"
DASetupNT = $(!STF_WINDOWSPATH)"\System32\DASetup.exe"
SetupINFName = $(!STF_WINDOWSPATH)"\System32\oemsetup.INF"
DASmartN = $(!STF_WINDOWSPATH)"\System32\DASmartN.exe"
PostProcessInf = $(!STF_WINDOWSPATH)"\System32\PRUN.INF"
DA15CFGEXE = $(!STF_WINDOWSPATH)"\System32\da15cfg.exe"
DASERVERCPL = $(!STF_WINDOWSPATH)"\System32\daserver.cpl"
DASERVEREXE = $(!STF_WINDOWSPATH)"\System32\daserver.exe"
DASERVERHLP = $(!STF_WINDOWSPATH)"\System32\daserver.hlp"
;DA15CFGINI = $(!STF_WINDOWSPATH)"\System32\da15cfg.ini"
DACFGCPL = $(!STF_WINDOWSPATH)"\System32\Pacecfg.cpl"
DACFGCPLSAV= $(!STF_WINDOWSPATH)"\System32\Pacecfg.sav"
DACFGHLP = $(!STF_WINDOWSPATH)"\System32\dacfg.hlp"
;DACFGAPPLST= $(!STF_WINDOWSPATH)"\System32\dacfgapp.lst"
ReviewProgramsTxt = "ReviewPrograms"
ProductSoftwareImagePathTxt = $(!STF_WINDOWSPATH)"\System32\drivers\DAprot.sys"
ProductMiniportSoftwareImagePathTxt = $(!STF_WINDOWSPATH)"\System32\drivers\DAmini.sys"
InstallInProcess = "DAInstallInProcess"
TotalNumberOfNICs = 64
TotalNumberOfGroups = 32 ;half of the TotalNumberOfNICs
[date]
Now = {} ? $(!LIBHANDLE) GetSystemDate
[platform]
STF_PLATFORM = "" ? $(!LIBHANDLE) GetPlatform
[Identify]
read-syms Identification
set Status = STATUS_SUCCESSFUL
set Identifier = $(OptionType)
set Media = #("Source Media Descriptions", 1, 1)
Return $(Status) $(Identifier) $(Media)
[ReturnOptions]
set Status = STATUS_FAILED
set OptionList = {}
set OptionTextList = {}
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) in $(LanguageList)
goto returnoptions
else
set Status = STATUS_NOLANGUAGE
goto finish_ReturnOptions
endif
returnoptions = +
set OptionList = ^(Options, 1)
set OptionTextList = ^(OptionsText$($0), 1)
set Status = STATUS_SUCCESSFUL
finish_ReturnOptions = +
Return $(Status) $(OptionList) $(OptionTextList)
[InstallOption]
set !DebugOutputControl = 1
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) NOT-IN $(LanguageList)
Return STATUS_NOLANGUAGE
endif
set-subst LF = "\n"
read-syms GeneralConstants
read-syms FileConstants
read-syms DialogConstants$(!STF_LANGUAGE)
ifstr(i) $(!NTN_Origination) == "NCPA"
set Continue = $(OK)
endif
read-syms FileConstants$(!STF_LANGUAGE)
detect date
detect platform
set-title $(FunctionTitle)
set to = Begin
set from = Begin
set CommonStatus = STATUS_SUCCESSFUL
EndWait
Begin = +
Ifstr(i) $(!NTN_InstallMode) == deinstall
set StartLabel = deinstall
else-Ifstr(i) $(!NTN_InstallMode) == update
set StartLabel = update
else-Ifstr(i) $(!NTN_InstallMode) == bind
set StartLabel = bind
else-Ifstr(i) $(!NTN_InstallMode) == configure
set StartLabel = configure
else
set StartLabel = install
endif
set RadioDefault = 2
set RadioIn = {$(RadioDefault)}
set from = $(fatal)
set to = $(fatal)
goto $(StartLabel)
install =+
;Debug:
; Set DlgText = "oemsetup.INF: install=+ Section"
; Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(DlgText)
; ifint $($ShellCode) != $(!SHELL_CODE_OK)
; set RegistryErrorIndex = ERROR
; endif
OpenRegKey $(!REG_H_LOCAL) "" $(TransportProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
CloseRegKey $(KeyProduct)
Shell $(UtilityInf), VerExistedDlg, $(TransportProductSoftwareTitle),+
$(ProductVersion)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
goto end
endif
CloseRegKey $(KeyProduct)
goto installproduct
installproduct = +
StartWait
ifint $(OldVersionExisted) == $(FALSE)
Ifstr(i) $(DoCopy) == "YES"
Shell $(UtilityInf), DoAskSource, $(!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
Goto fatal
Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
Goto successful
Endif
Set SrcDir = $($R1)
Debug-Output "PassThru: oemsetup.inf: SrcDir "$(SrcDir)
Endif
Shell "" StripTrailSlash $(SrcDir)
set PlatformDir = $($R0)"\"$(STF_PLATFORM)
set InfDir = $($R0)"\"
install "Install-Option"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
goto fatal
endif
set OEM_ABANDON_ON = TRUE
Debug-Output "PassThru: Adding Transport Software Component to Registry"
Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
$(TransportProductSoftwareName), +
$(TransportProductSoftwareName), +
$(TransportProductSoftwareDisplayName), $(STF_CONTEXTINFNAME), +
$(ProductSoftwareImagePath), "transport", "NDIS", {}, "",+
$(NetEventDLL)
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
EndWait
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalregistry
endif
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
Set SoftServiceKey = $($R3)
Set SoftParameterKey = $($R4)
Set SoftLinkageKey = $($R5)
set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(TransportSoftwareType)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(TransportProductSoftwareTitle)},+
{Description,$(NoTitle),$(!REG_VT_SZ),$(TransportProductSoftwareDescription)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$(TransportProductSoftwareName)},+
{Review,$(NoTitle),$(!REG_VT_DWORD),1},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
Shell $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
set RegistryErrorIndex = $($R0)
Ifstr $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftParameterKey)
CloseRegKey $(SoftLinkageKey)
goto fatalregistry
endif
set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(TransportNetRuleSoftwareType)}, +
{use,$(NoTitle),$(!REG_VT_SZ),$(TransportNetRuleSoftwareUse)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TransportNetRuleSoftwareClass)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TransportNetRuleSoftwareBindForm)}, +
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TransportNetRuleSoftwareBindable)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
Shell $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
set RegistryErrorIndex = $($R0)
Ifstr $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftParameterKey)
CloseRegKey $(SoftLinkageKey)
goto fatalregistry
endif
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftParameterKey)
CloseRegKey $(SoftLinkageKey)
Debug-Output "PassThru: Adding Adapter Software Component to Registry"
Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
$(AdapterProductSoftwareName), +
$(AdapterProductSoftwareName), +
$(AdapterProductSoftwareDisplayName), $(STF_CONTEXTINFNAME), +
$(ProductMiniportSoftwareImagePath), "kernel", "NDIS", {}, "",+
$(NetEventDLL)
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
EndWait
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalregistry
endif
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
Set SoftServiceKey = $($R3)
Set SoftParameterKey = $($R4)
Set SoftLinkageKey = $($R5)
set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(AdapterSoftwareType)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(AdapterProductSoftwareTitle)},+
{Description,$(NoTitle),$(!REG_VT_SZ),$(AdapterProductSoftwareDescription)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$(AdapterProductSoftwareName)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
Shell $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
set RegistryErrorIndex = $($R0)
Ifstr $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftParameterKey)
CloseRegKey $(SoftLinkageKey)
goto fatalregistry
endif
set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(AdapterNetRuleSoftwareType)}, +
{use,$(NoTitle),$(!REG_VT_SZ),$(AdapterNetRuleSoftwareUse)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(AdapterNetRuleSoftwareClass)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),$(AdapterNetRuleSoftwareBindForm)}, +
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(AdapterNetRuleSoftwareBindable)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
Shell $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
set RegistryErrorIndex = $($R0)
Ifstr $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftParameterKey)
CloseRegKey $(SoftLinkageKey)
goto fatalregistry
endif
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftParameterKey)
CloseRegKey $(SoftLinkageKey)
OpenRegKey $(!REG_H_LOCAL) "" $(TransportParamKeyName) $(MAXIMUM_ALLOWED) DAParamKey
SetRegValue $(DAParamKey) {$(InstallInProcess),$(NoTitle),$(!REG_VT_DWORD),2}
endif
EndWait
goto successful
bind =+
;
; When user terminates NCPA, bind is invoked. Therefore, without knowing
; what the user has done to the NCPA (add new card, remove a card, etc.),
; bind has to find out and does things accordingly.
; If this not the binding review for the Transport Driver exit out
ifstr(i) $(!NTN_RegBase) != $(TransportProductKeyName)
goto successful
endif
; Open the Group_Info Key in the registry and set the Registry_Lock Key
Set RegKey = "SOFTWARE\3Com\DA\Server\Group_Info"
Debug-Output "CreateList: about to open "$(RegKey)
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) GroupInfoKey
ifstr(i) $(GroupInfoKey) == ""
Debug-Output "PassThru: creating "$(RegKey)" key under the Software"
CreateRegKey $(!REG_H_LOCAL) {$(RegKey),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupInfoKey
ifstr(i) $(GroupInfoKey) == ""
Debug-Output "Create List: failed to open and create the Group_info Key"
goto fatalregistry
endif
endif
;**** Copy TCP info from the Primary Virtuals to the Primary Reals
RunProgram ExitCode "" "" $(DASetupNT) t
;
; Open the Linkage Key of the Virtual Protocol and get the Bind Value
; to get the entire list of cards bound to the Virtual Protocol
;
Debug-Output "PassThru: Reviewing bindings in "$(TransportLinkageKeyName)
OpenRegKey $(!REG_H_LOCAL) "" $(TransportLinkageKeyName) $(MAXIMUM_ALLOWED) TransportLinkageKey
ifstr(i) $(TransportLinkageKey) != ""
GetRegValue $(TransportLinkageKey) "Bind" BindList
Debug-Output "PassThru: BindList: "$(BindList)
Set Binding = *($(BindList),4)
Debug-Output "PassThru: Binding: "$(Binding)
CloseRegKey $(TransportLinkageKey)
else
Debug-Output "PassThru: failed to open Linkage Key for "$(TransportServiceKeyName)
goto fatalregistry
endif
;
; Parse the Bindings to create a list of Adapter cards
;
set CardList = {}
set NICIndex = 0
ForListDo $(Binding)
Split-String $($), "\", BindInfo
QueryListSize BindListSize $(BindInfo)
set CardName = *($(BindInfo),$(BindListSize))
Debug-Output "PassThru: Cardname: "$(CardName)
ifstr(i) $(CardList) == {}
set CardList = {$(CardName)}
else
set CardList = >($(CardList),$(CardName))
endif
EndForListDo
;************************** Beginning of read in Group_info key from registry *******************
; Create Group list for holding virtual and real nics in their groups
Set MasterGroupList = {}
set RealNICsThatNeedAGroupList = {}
set VirtualNICsToBeCreatedList = {}
set VirtualNICsToBeCreatedVLAN_IDsList = {}
set VirtualNICsToBeDeletedList = {}
Set GlobalAssignedRealNICList = {}
Set GlobalAssignedVirtualNICList = {}
Set CreateGroupIndex = 1
BuildNextGroup = +
Debug-Output "PassThru: BuildNextGroup: "$(CreateGroupIndex)
OpenRegKey $(GroupInfoKey) "" $(CreateGroupIndex) $(MAXIMUM_ALLOWED) GroupKey
ifstr(i) $(GroupKey) == ""
Debug-Output "PassThru: BuildNextGroup: This group Does not exist in the registry"
; if The group does not exist in the registry create a null entry
ifstr(i) $(MasterGroupList) == {}
set MasterGroupList = {{0,{},{}}}
else
set MasterGroupList = >($(MasterGroupList),{0,{},{}})
endif
else
Debug-Output "PassThru: BuildNextGroup: This group is in the registry"
set RealNICList = {}
set VirtualNICList = {}
set AddedVirtualNIC = NO
;########################## Begin Processing of the Real Adapters Group info key ##########################
OpenRegKey $(GroupKey) "" Real_NICs $(MAXIMUM_ALLOWED) GroupRealNICKey
ifstr(i) $(GroupRealNICKey) != ""
;Enumerate all of the values in the Registry key, add them to the list and change thier group IDs
EnumRegValue $(GroupRealNICKey) GroupRealNICKeyList
ForListDo $(GroupRealNICKeyList)
Set NICServiceName = *( $($), 1 )
Set RegKey = $(!NTN_ServiceBase)"\"$(NICServiceName)"\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) NICServiceNameKey
ifstr(i) $(NICServiceNameKey) != ""
SetRegValue $(NICServiceNameKey) {"DA_Group_ID",$(NoTitle),$(!REG_VT_DWORD),$(CreateGroupIndex)}
ifstr(i) $(RegLastError) != 0
; if we can't set the DA_Group_ID key we must fail
goto fatalregistry
endif
CloseRegKey $(NICServiceNameKey)
; add this NIC to the Group list for this group
ifstr(i) $(RealNICList) == {}
set RealNICList = {$(NICServiceName)}
else
set RealNICList = >($(RealNICList),$(NICServiceName))
endif
; Add this NIC to the global NIC list to match it to the bind enumeration
ifstr(i) $(GlobalAssignedRealNICList) == {}
set GlobalAssignedRealNICList = {$(NICServiceName)}
else
set GlobalAssignedRealNICList = >($(GlobalAssignedRealNICList),$(NICServiceName))
endif
else
;The card does not exist anymore and needs to be removed from the Group
DeleteRegValue $(GroupRealNICKey) *( $($), 1)
endif
EndForListDo
CloseRegKey $(GroupRealNICKey)
endif
;########################## End Processing of the Real Adapters Group info key ##########################
;@@@@@@@@@@@@@@@@@@@@@@@@@@ Begin Processing of the Virtual Adapters Group info key @@@@@@@@@@@@@@@@@@@@@@@@@@
OpenRegKey $(GroupKey) "" Virtual_NICs $(MAXIMUM_ALLOWED) GroupVirtualNICKey
ifstr(i) $(GroupVirtualNICKey) != ""
;Enumerate all of the values in this group Registry key, add them to the list and change thier group IDs
EnumRegValue $(GroupVirtualNICKey) GroupVirtualNICKeyList
ForListDo $(GroupVirtualNICKeyList)
Set NICServiceName = *( $($), 1 )
Set VLAN_ID = *( $($), 4 )
Set RegKey = $(!NTN_ServiceBase)"\"$(NICServiceName)"\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) NICServiceNameKey
ifstr(i) $(NICServiceNameKey) != ""
ifstr(i) $(RealNICList) != {}
; We need to place the DA_Group_ID key in the registry and place the VNIC in the VirtualNICList
SetRegValue $(NICServiceNameKey) {"DA_Group_ID",$(NoTitle),$(!REG_VT_DWORD),$(CreateGroupIndex)}
ifstr(i) $(RegLastError) != 0
; if we can't set the DA_Group_ID key we must fail
goto fatalregistry
endif
CloseRegKey $(NICServiceNameKey)
; add this NIC to the Group list for this group
ifstr(i) $(VirtualNICList) == {}
set VirtualNICList = {$(NICServiceName)}
else
set VirtualNICList = >($(VirtualNICList),$(NICServiceName))
endif
; Add this NIC to the global NIC list to match it to the bind enumeration
ifstr(i) $(GlobalAssignedVirtualNICList) == {}
set GlobalAssignedVirtualNICList = {$(NICServiceName)}
else
set GlobalAssignedVirtualNICList = >($(GlobalAssignedVirtualNICList),$(NICServiceName))
endif
else
; Since there are no real NICs in the group we must place it into the VirtualNICsToBeDeletedList
ifstr(i) $(VirtualNICsToBeDeletedList) == {}
set VirtualNICsToBeDeletedList = {$(NICServiceName))}
else
set VirtualNICsToBeDeletedList = >($(VirtualNICsToBeDeletedList),$(NICServiceName))
endif
endif
else
;The virtual NIC does not exist anymore and needs to be readded or it is a new VLAN
; and needs to be added if there are any real NICs
ifstr(i) $(RealNICList) != {}
set AddedVirtualNIC = YES
ifstr(i) $(VirtualNICsToBeCreatedList) == {}
set VirtualNICsToBeCreatedList = {$(CreateGroupIndex)}
set VirtualNICsToBeCreatedVLAN_IDsList = {$(VLAN_ID)}
else
set VirtualNICsToBeCreatedList = >($(VirtualNICsToBeCreatedList),$(CreateGroupIndex))
set VirtualNICsToBeCreatedVLAN_IDsList = >($(VirtualNICsToBeCreatedVLAN_IDsList),$(VLAN_ID))
endif
DeleteRegValue $(GroupVirtualNICKey) $(NICServiceName)
endif
endif
EndForListDo
CloseRegKey $(GroupVirtualNICKey)
endif
;@@@@@@@@@@@@@@@@@@@@@@@@@@ End Processing of the Virtual Adapters Group info key @@@@@@@@@@@@@@@@@@@@@@@@@@
;
;Finish processing this group by adding it to the master list or Deleteing the Group Key if all of the Real NICs were removed
;
CloseRegKey $(GroupKey)
ifstr(i) $(RealNICList) != {}
; If there are any real adapters left in the group
ifstr(i) $(VirtualNICList) == {}
ifstr(i) $(AddedVirtualNIC) == NO
; if there are no Virtual Adapters for this group and none were added Create a new Virtual
ifstr(i) $(VirtualNICsToBeCreatedList) == {}
set VirtualNICsToBeCreatedList = {$(CreateGroupIndex)}
else
set VirtualNICsToBeCreatedList = >($(VirtualNICsToBeCreatedList),$(CreateGroupIndex))
endif
endif
endif
ifstr(i) $(MasterGroupList) == {}
set MasterGroupList = {{1,$(RealNICList),$(VirtualNICList)}}
else
set MasterGroupList = >($(MasterGroupList),{1,$(RealNICList),$(VirtualNICList)})
endif
Debug-Output "PassThru: Processing RealNICList "$(RealNICList)"..."
Debug-Output "PassThru: Processing VirtualNICList "$(VirtualNICList)"..."
else
Debug-Output "PassThru: There were no real adapters in this group in the registry"
; If there are no real adapters left in the group
DeleteRegTree $(GroupInfoKey) $(CreateGroupIndex)
ifstr(i) $(MasterGroupList) == {}
set MasterGroupList = {{0,{},{}}}
else
set MasterGroupList = >($(MasterGroupList),{0,{},{}})
endif
endif
endif
ifstr(i) $(CreateGroupIndex) != $(TotalNumberOfGroups)
;If we haven't tried all of the possible groups then goto the top of the loop
Set-add CreateGroupIndex = $(CreateGroupIndex), 1
goto BuildNextGroup
endif
Debug-Output "PassThru: Processing GlobalAssignedRealNICList "$(GlobalAssignedRealNICList)"..."
Debug-Output "PassThru: Processing GlobalAssignedVirtualNICList "$(GlobalAssignedVirtualNICList)"..."
;************************** End of read in Group_Info key from registry *****************************
;************************** Beginning of the section to transverse the Binding tree *****************
; For each real and virtual NIC process them correctly and place them in the correct list
;
Set CardParamKey = ""
ForListDo $(CardList)
Debug-Output "PassThru: Processing "$($)"..."
ifstr(i) $(CardParamKey) != ""
CloseRegKey $(CardParamKey)
Set CardParamKey = ""
endif
Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) CardParamKey
ifstr(i) $(CardParamKey) == ""
CreateRegKey $(!REG_H_LOCAL) {$(RegKey),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" CardParamKey
ifstr(i) $(CardParamKey) == ""
Debug-Output "Create List: failed to open or create $($) parameters Key"
goto fatalregistry
endif
endif
;
; Check if this is a virtual adapter that WE created.
; and process it if it is
;
Split-String $($), "1234567890", ServiceNameSplitList
Ifcontains(i) "DAPassThru" in $(ServiceNameSplitList)
;*********************** Begin Processing of Virtual Adapter in Bind list ******************
Debug-Output "PassThru: Processing "$($)" as a virtual adapter"
Set GroupIDRecord = ""
GetRegValue $(CardParamKey) "DA_Group_ID" GroupIDRecord
ifstr(i) $(GroupIDRecord) == ""
Debug-Output "PassThru: Processing "$($)" has no DA_Group_ID"
; The DA_Group_ID Value is not in the registry and we need to remove this Virtual NIC
ifstr(i) $(VirtualNICsToBeDeletedList) == {}
set VirtualNICsToBeDeletedList = {$($)}
else
set VirtualNICsToBeDeletedList = >($(VirtualNICsToBeDeletedList),$($))
endif
Debug-Output "PassThru: no Group_ID "$($)" added to VirtualNICsToBeDeletedList "$(VirtualNICsToBeDeletedList)
goto continueCardList
else
;Check if the card is in the GlobalAssignedVirtualNICList
Ifcontains(i) $($) not-in $(GlobalAssignedVirtualNICList)
; if the card is not in the list then put it in the VirtualNICsToBeDeletedList
ifstr(i) $(VirtualNICsToBeDeletedList) == {}
set VirtualNICsToBeDeletedList = {$($)}
else
set VirtualNICsToBeDeletedList = >($(VirtualNICsToBeDeletedList),$($))
endif
Debug-Output "PassThru: not in GlobalAssignedVirtualNICList "$($)" added to VirtualNICsToBeDeletedList "$(VirtualNICsToBeDeletedList)
endif
goto continueCardList
endif
;*********************** End Processing of Virtual Adapter in Bind list ******************
endif
;
; Wedge supports only media type # 1 NICs
; We must see if the NIC is not media Type 1 and if it is not don't touch it
;
; ################### Begin search for non-ethernet NICs ####################################
Set MediaTypeRecord = ""
GetRegValue $(CardParamKey) "MediaType" MediaTypeRecord
ifstr(i) $(MediaTypeRecord) == ""
goto continueCardList
endif
Set MediaTypeValue = *($(MediaTypeRecord),4)
ifstr(i) $(MediaTypeValue) != 1
goto continueCardList
else-ifstr(i) $(MediaTypeValue) == 1
Set MediaTypeValue = *($(MediaTypeRecord),4)
;
;if ATM mediatype, don't create virtual NIC
;
; Get Title field of mapped Nic:
;
Set RealNICCard = $($)
Set RegKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) NetCardKey
ifstr(i) $(NetCardKey) != ""
EnumRegKey $(NetCardKey) NetCardKeyList
ForListDo $(NetCardKeyList)
Set NetCardNum = *( $($), 1 )
Set RegKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(NetCardNum)
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) NetCardNumKey
GetRegValue $(NetCardNumKey) "ServiceName" NetCardServiceNameValue
Set NetCardServiceName = *( $(NetCardServiceNameValue), 4 )
ifstr(i) $(NetCardServiceName) == $(RealNICCard)
GetRegValue $(NetCardNumKey) "Title" NetCardTitleRec
Set NetCardTitle = *( $(NetCardTitleRec), 4 )
endif
EndForListDo
endif
CloseRegKey $(NetCardKey)
CloseRegKey $(NetCardNumKey)
Split-String $(NetCardTitle), " ", itemizedTitle
Ifcontains "ATM" in $(itemizedTitle)
goto continueCardList
else
set anATMCard = 0
ForListDo $(itemizedTitle)
Split-String $($), "M", ATMPrependTitle
Ifcontains "AT" in $(ATMPrependTitle)
set anATMCard = 1
endif
Split-String $($), "A", ATMAppendTitle
Ifcontains "TM" in $(ATMAppendTitle)
set anATMCard = 1
else
ForListDo $(ATMAppendTitle)
Split-String $($), "M", ATMInsideTitle
Ifcontains "T" in $(ATMInsideTitle)
set anATMCard = 1
endif
EndForListDo
endif
EndForListDo
ifstr(i) $(anATMCard) == "1"
goto continueCardList
endif
endif
endif
; ################### End search for non-ethernet NICs ####################################
;*** We now know that this is an EtherNet NIC and a adapter that we support and that
;*** it is not a virtual Adapter that we created
;*********************** Begin Processing of a Real Adapter in Bind list ******************
Debug-Output "PassThru: Processing "$($)" as a real adapter"
Set GroupIDRecord = ""
GetRegValue $(CardParamKey) "DA_Group_ID" GroupIDRecord
ifstr(i) $(GroupIDRecord) == ""
; If the DA_Group_ID Key is not in the registry then we must add this Real Adapter to the
; RealNICsThatNeedAGroupList
ifstr(i) $(RealNICsThatNeedAGroupList) == {}
set RealNICsThatNeedAGroupList = {$($)}
else
set RealNICsThatNeedAGroupList = >($(RealNICsThatNeedAGroupList),$($))
endif
Debug-Output "PassThru: no group_id key "$($)" added to RealNICsThatNeedAGroupList "$(RealNICsThatNeedAGroupList)
goto continueCardList
else
;Check if the card is in the GlobalAssignedRealNICList
Ifcontains(i) $($) not-in $(GlobalAssignedRealNICList)
; if the card is not in the list then put it in the RealNICsThatNeedAGroupList
ifstr(i) $(RealNICsThatNeedAGroupList) == {}
set RealNICsThatNeedAGroupList = {$($)}
else
set RealNICsThatNeedAGroupList = >($(RealNICsThatNeedAGroupList),$($))
endif
Debug-Output "PassThru: not in GlobalAssignedRealNICList "$($)" added to RealNICsThatNeedAGroupList "$(RealNICsThatNeedAGroupList)
endif
goto continueCardList
endif
;*********************** End Processing of a Real Adapter in Bind list ******************
continueCardList = +
EndForListDo
;************************** end of the section to transverse the Binding tree *****************
;&&&&&&&&&&&&&&&&&&&&&&&&&& Begining of Processing RealNICsThatNeedAGroupList &&&&&&&&&&&&&&&&&
; For each real NIC in this list we must first find a group that is not in use. Then we
; add it to that group and create a Virtual Adapter to go with it.
Set RealNICsThatNeedAGroupListAlreadyProcessed = {}
Set RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs = {}
Set searchgroupindex = 1
Debug-Output "PassThru: Processing RealNICsThatNeedAGroupList "$(RealNICsThatNeedAGroupList)
ForListDo $(RealNICsThatNeedAGroupList)
Ifcontains(i) $($) not-in $(RealNICsThatNeedAGroupListAlreadyProcessed)
RealSearchNextGroup = +
; &&& find a group that has not already been used in the MasterGroupList
ifstr(i) *(*($(MasterGroupList), $(searchgroupindex)),1) == 0
Debug-Output "PassThru: Processing RealSearchNextGroup found empty group "$(searchgroupindex)
ifstr(i) $(CardParamKey) != ""
CloseRegKey $(CardParamKey)
Set CardParamKey = ""
endif
Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) CardParamKey
ifstr(i) $(CardParamKey) == ""
CreateRegKey $(!REG_H_LOCAL) {$(RegKey),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" CardParamKey
ifstr(i) $(CardParamKey) == ""
Debug-Output "Create List: failed to open and create $($) parameters Key"
goto fatalregistry
endif
endif
; &&& give this Real nic that DA_Group_ID
SetRegValue $(CardParamKey) {"DA_Group_ID",$(NoTitle),$(!REG_VT_DWORD),$(searchgroupindex)}
ifstr(i) $(RegLastError) != 0
; if we can't set the DA_Group_ID key we must fail
goto fatalregistry
endif
;&&& add a virtual nic to the list of virtual Nics to be added
ifstr(i) $(VirtualNICsToBeCreatedList) == {}
set VirtualNICsToBeCreatedList = {$(searchgroupindex)}
else
set VirtualNICsToBeCreatedList = >($(VirtualNICsToBeCreatedList), $(searchgroupindex))
endif
;&&& add the Nic to the RealNICsThatNeedAGroupListAlreadyProcessed so it does not get processed again
ifstr(i) $(RealNICsThatNeedAGroupListAlreadyProcessed) == {}
set RealNICsThatNeedAGroupListAlreadyProcessed = {$($)}
set RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs = {$(searchgroupindex)}
else
set RealNICsThatNeedAGroupListAlreadyProcessed = >($(RealNICsThatNeedAGroupListAlreadyProcessed),$($))
set RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs = >($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs),$(searchgroupindex))
endif
; increment to the next group because the registry will not be set yet
ifstr(i) $(searchgroupindex) != $(TotalNumberOfGroups)
;If we haven't tried all of the possible groups then goto the top of the loop
Set-add searchgroupindex = $(searchgroupindex), 1
else
Set searchgroupindex = $(TotalNumberOfGroups)
endif
else
Debug-Output "PassThru: Processing RealSearchNextGroup found used group "$(searchgroupindex)
; the DA_Group_ID is already in use and cannot be used so move to the next DA_Group_ID
ifstr(i) $(searchgroupindex) != $(TotalNumberOfGroups)
;If we haven't tried all of the possible groups then goto the top of the loop
Set-add searchgroupindex = $(searchgroupindex), 1
goto RealSearchNextGroup
else
Set searchgroupindex = $(TotalNumberOfGroups)
endif
endif
endif
EndForListDo
Debug-Output "PassThru: Processing RealNICsThatNeedAGroupList "$(RealNICsThatNeedAGroupList)" -> "$(RealNICsThatNeedAGroupListAlreadyProcessed)
;&&&&&&&&&&&&&&&&&&&&&&&&&& End of Processing RealNICsThatNeedAGroupList &&&&&&&&&&&&&&&&&
;%%%%%%%%%%%%%%%%%%%%%%%%%% Begin of Processing VirtualNICsToBeCreatedList %%%%%%%%%%%%%%%%%%%%%
; For each entry in this list we must create a Virtual Adapter
Set VirtualNICsToBeCreatedListAlreadyProcessed = {}
Set VirtualNICsToBeCreatedListAlreadyProcessedDA_Group_IDs = {}
Set VirtualNICsToBeCreatedListAlreadyProcessedVLAN_IDs = $(VirtualNICsToBeCreatedVLAN_IDsList)
Debug-Output "PassThru: Processing VirtualNICsToBeCreatedList "$(VirtualNICsToBeCreatedList)
ForListDo $(VirtualNICsToBeCreatedList)
;
; Now add a virtual hardware component to represent the ELAN
;
Debug-Output "PassThru: Adding Adapter Hardware Component to Registry"
Shell $(UtilityInf), AddHardwareComponent, +
$(AdapterProductHardwareName), +
$(STF_CONTEXTINFNAME), +
$(AdapterProductKeyName)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "PassThru: ShellCode error."
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "PassThru: Failed to Add Hardware Component"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto fatalregistry
endif
;
; Add Basic information for virtual NICs
set KeyParameters = $($R3)
set KeyAdapterRules = $($R2)
set AdapterNumber = $($R4)
set VirtNICTitle = "3Com DynamicAccess Virtual NIC"
set VirtNICDesc = "3Com DynamicAccess Virtual NIC"
set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
{Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(VirtNICTitle)},+
{Description,$(NoTitle),$(!REG_VT_SZ),$(VirtNICDesc)},+
{ProductName,$(NoTitle),$(!REG_VT_SZ),$(AdapterProductHardwareName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "PassThru: ShellCode error"
goto ShellCodeError
endif
CloseRegKey $($R1)
set TempProdName = """"$(AdapterProductHardwareName)$(AdapterNumber)""""
set TempBindForm = $(TempProdName)$(AdapterNetRuleHardwareBindForm)
set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(AdapterNetRuleHardwareType)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(AdapterNetRuleHardwareClass)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "PassThru: ShellCode error."
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
EndWait
Debug-Output "PassThru: Registry error: add value list."
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyAdapterRules)
goto fatalregistry
endif
CloseRegKey $(KeyAdapterRules)
Set NewValueList = {{DA_Group_ID,$(NoTitle),$(!REG_VT_SZ),$($)},+
{virtualNicNumber,$(NoTitle),$(!REG_VT_SZ),$(AdapterNumber)},+
{MediaType,$(NoTitle),$(!REG_VT_DWORD),$(MediaTypeValue)}}
Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
CloseRegKey $(KeyParameters)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "PassThru: ShellCode error."
goto ShellCodeError
endif
; Create a key of the type
; PassThru2\Parameters\Signature\
;
Set SigRegKey = $(!NTN_ServiceBase)"\"$(AdapterProductHardwareName)$(AdapterNumber)"\Parameters\Signature"
Debug-Output "SigRegKey is "$(SigRegKey)
CreateRegKey $(!REG_H_LOCAL) {$(SigRegKey),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" SigKey
ifstr(i) $(SigKey) == ""
Debug-Output "Failed to create "$(SigRegKey)
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "PassThru: Registry error: Add value list"
goto fatalregistry
endif
;
; Note that a virtual adapter was added by adding it to the correct lists so we can add these to
; the registry later
;
ifstr(i) $(VirtualNICsToBeCreatedListAlreadyProcessed) == {}
set VirtualNICsToBeCreatedListAlreadyProcessed = {$(AdapterProductHardwareName)$(AdapterNumber)}
set VirtualNICsToBeCreatedListAlreadyProcessedDA_Group_IDs = {$($)}
else
set VirtualNICsToBeCreatedListAlreadyProcessed = >($(VirtualNICsToBeCreatedListAlreadyProcessed), $(AdapterProductHardwareName)$(AdapterNumber))
set VirtualNICsToBeCreatedListAlreadyProcessedDA_Group_IDs = >($(VirtualNICsToBeCreatedListAlreadyProcessedDA_Group_IDs), $($))
endif
EndForListDo
;%%%%%%%%%%%%%%%%%%%%%%%%%% END of Processing VirtualNICsToBeCreatedList %%%%%%%%%%%%%%%%%%%%%
;@@@@@@@@@@@@@@@@@@@@@@ Begining of Writing the MasterGroupList into the registry @@@@@@@@@@@@@@@@@@@
; For each group in the MasterGroupList we want to write the information back to the registry
Set WriteGroupIndex = 1
WriteNextGroup = +
ifstr(i) *(*($(MasterGroupList), $(WriteGroupIndex)),1) == 0
; if the group is not in the list and the key is in the registry Delete the Whole key becuase it should not be there
OpenRegKey $(GroupInfoKey) "" $(WriteGroupIndex) $(MAXIMUM_ALLOWED) GroupKey
ifstr $(GroupKey) != ""
CloseRegKey $(GroupKey)
DeleteRegTree $(GroupInfoKey) $(WriteGroupIndex)
endif
else
OpenRegKey $(GroupInfoKey) "" $(WriteGroupIndex) $(MAXIMUM_ALLOWED) GroupKey
ifstr $(GroupKey) == ""
CreateRegKey $(GroupInfoKey) {$(WriteGroupIndex),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupKey
ifstr(i) $(GroupKey) == ""
Debug-Output "Create List: failed to open and create $(WriteGroupIndex) group Key"
goto fatalregistry
else
SetRegValue $(GroupKey) {DA_Group_Number,$(NoTitle),$(!REG_VT_DWORD),$(WriteGroupIndex)}
SetRegValue $(GroupKey) {DA_Group_Name,$(NoTitle),$(!REG_VT_SZ),"Group "$(WriteGroupIndex)}
endif
endif
;For each Real Nic in the RealNicsInThisGroupList Check if it already in the registry and if it is not, add it
set RealNicsInThisGroupList = *(*($(MasterGroupList), $(WriteGroupIndex)),2)
OpenRegKey $(GroupKey) "" Real_NICs $(MAXIMUM_ALLOWED) GroupRealNICKey
ifstr $(GroupRealNICKey) == ""
CreateRegKey $(GroupKey) {Real_NICs,$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupRealNICKey
ifstr(i) $(GroupRealNICKey) == ""
Debug-Output "Create List: failed to open and create $(WriteGroupIndex) Real_NICs Key"
goto fatalregistry
endif
endif
ForListDo $(RealNicsInThisGroupList)
set RealNicRecord = ""
GetRegValue $(GroupRealNICKey) $($) RealNicRecord
ifstr(i) $(RealNicRecord) == ""
;This means that this Real Nic is not in the Group key for this group
; We will add it
SetRegValue $(GroupRealNICKey) {$($),$(NoTitle),$(!REG_VT_SZ),""}
endif
EndForListDo
CloseRegKey $(GroupRealNICKey)
;For each Virtual Nic in the VirtualNicsInThisGroupList Check if it already in the registry and if it is not, add it
set VirtualNicsInThisGroupList = *(*($(MasterGroupList), $(WriteGroupIndex)),3)
OpenRegKey $(GroupKey) "" Virtual_NICs $(MAXIMUM_ALLOWED) GroupVirtualNICKey
ifstr $(GroupVirtualNICKey) == ""
CreateRegKey $(GroupKey) {Virtual_NICs,$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupVirtualNICKey
ifstr(i) $(GroupVirtualNICKey) == ""
Debug-Output "Create List: failed to open and create $(WriteGroupIndex) group Key"
goto fatalregistry
endif
endif
ForListDo $(VirtualNicsInThisGroupList)
set VirtualNicRecord = ""
GetRegValue $(GroupVirtualNICKey) $($) VirtualNicRecord
ifstr(i) $(VirtualNicRecord) == ""
;This means that this Virtual Nic is not in the Group key for this group
; We will add it
SetRegValue $(GroupVirtualNICKey) {$($),$(NoTitle),$(!REG_VT_SZ),""}
endif
EndForListDo
CloseRegKey $(GroupVirtualNICKey)
CloseRegKey $(GroupKey)
endif
ifstr(i) $(WriteGroupIndex) != $(TotalNumberOfGroups)
;If we haven't tried all of the possible groups then goto the top of the loop
Set-add WriteGroupIndex = $(WriteGroupIndex), 1
goto WriteNextGroup
endif
;@@@@@@@@@@@@@@@@@@@@@@ END of Writing the MasterGroupList into the registry @@@@@@@@@@@@@@@@@@@@@@@@
;!!!!!!!!!!!!!!!!!!!!!! Beginging of writing RealNICsThatNeedAGroupListAlreadyProcessed into the registry !!!!!!!!!!!!!!!!!!!
; For each real NIC in this list we must create a group key in the registry and add the information to that key
ForListDo $(RealNICsThatNeedAGroupListAlreadyProcessed)
OpenRegKey $(GroupInfoKey) "" *($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs), $(#)) $(MAXIMUM_ALLOWED) GroupKey
ifstr $(GroupKey) != ""
;This should never happen but if it does we should Delete the Key
Debug-Output "The Group key in the registry is the same that was given to a New NIC found"
CloseRegKey $(GroupKey)
DeleteRegTree $(GroupInfoKey) *($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs), $(#))
endif
;!!!Create the Key and Place the Basic Group Informatin into the registry
CreateRegKey $(GroupInfoKey) {*($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs), $(#)),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupKey
ifstr(i) $(GroupKey) == ""
Debug-Output "Create List: failed to open and create *($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs), $(#)) GroupKey"
goto fatalregistry
else
SetRegValue $(GroupKey) {DA_Group_Number,$(NoTitle),$(!REG_VT_DWORD),*($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs), $(#))}
SetRegValue $(GroupKey) {DA_Group_Name,$(NoTitle),$(!REG_VT_SZ),"Group "*($(RealNICsThatNeedAGroupListAlreadyProcessedDA_Group_IDs), $(#))}
endif
;Place the Real NIC in the Registry
OpenRegKey $(GroupKey) "" Real_NICs $(MAXIMUM_ALLOWED) GroupRealNICKey
ifstr $(GroupRealNICKey) == ""
CreateRegKey $(GroupKey) {Real_NICs,$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupRealNICKey
ifstr(i) $(GroupKey) == ""
Debug-Output "Create List: failed to open and create $(WriteGroupIndex) group Key"
goto fatalregistry
endif
endif
SetRegValue $(GroupRealNICKey) {$($),$(NoTitle),$(!REG_VT_SZ),""}
CloseRegKey $(GroupRealNICKey)
CloseRegKey $(GroupKey)
EndForListDo
;!!!!!!!!!!!!!!!!!!!!!! END of writing RealNICsThatNeedAGroupListAlreadyProcessed into the registry !!!!!!!!!!!!!!!!!!!
;%%%%%%%%%%%%%%%%%%%%%%%%%% Beginging of writing VirtualNICsToBeCreatedListAlreadyProcessed into the registry %%%%%%%%%%%%%%%%%%%%%
; For each virtual NIC that was created we must add the information to the registry
Debug-Output "PassThru: adding to reg VirtualNICsToBeCreatedListAlreadyProcessed "$(VirtualNICsToBeCreatedListAlreadyProcessed)
ForListDo $(VirtualNICsToBeCreatedListAlreadyProcessed)
OpenRegKey $(GroupInfoKey) "" *($(VirtualNICsToBeCreatedListAlreadyProcessedDA_Group_IDs), $(#)) $(MAXIMUM_ALLOWED) GroupKey
ifstr $(GroupKey) == ""
;This should never happen but if it does we shouldDelete the Virtual NIC
Debug-Output "The Group key in the registry we were going to add a virtual NIC to does not exist, so we are deleting this VNIC"
ifstr(i) $(VirtualNICsToBeDeletedList) == {}
set VirtualNICsToBeDeletedList = {$($)}
else
set VirtualNICsToBeDeletedList = >($(VirtualNICsToBeDeletedList),$($))
endif
else
;Place the Virtual NIC in the Registry
OpenRegKey $(GroupKey) "" Virtual_NICs $(MAXIMUM_ALLOWED) GroupVirtualNICKey
ifstr $(GroupVirtualNICKey) == ""
CreateRegKey $(GroupKey) {Virtual_NICs,$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" GroupVirtualNICKey
ifstr(i) $(GroupVirtualNICKey) == ""
Debug-Output "Create List: failed to open and create $(WriteGroupIndex) group Key"
goto fatalregistry
endif
endif
set VirtualNicRecord = ""
GetRegValue $(GroupVirtualNICKey) $($) VirtualNicRecord
Debug-Output "PassThru: $(VirtualNicRecord) $($)"
ifstr(i) $(VirtualNicRecord) == ""
;This means that this Virtual Nic is not in the Group key for this group and we should add it
Debug-Output "PassThru: adding "$($)" to group "*($(VirtualNICsToBeCreatedListAlreadyProcessedDA_Group_IDs), $(#))" in reg"
SetRegValue $(GroupVirtualNICKey) {$($),$(NoTitle),$(!REG_VT_DWORD),*($(VirtualNICsToBeCreatedListAlreadyProcessedVLAN_IDs), $(#))}
endif
CloseRegKey $(GroupVirtualNICKey)
CloseRegKey $(GroupKey)
endif
EndForListDo
;%%%%%%%%%%%%%%%%%%%%%%%%%% END of writing VirtualNICsToBeCreatedListAlreadyProcessed into the registry %%%%%%%%%%%%%%%%%%%%%
;************************ Begining of Processing VirtualNICsToBeDeletedList **********************
; For each real NIC in this list we must first find a group that is not in use. Then we
; add it to that group and create a Virtual Adapter to go with it.
Set VirtualNICsToBeDeletedListAlreadyProcessed = {}
Debug-Output "PassThru: Processing VirtualNICsToBeDeletedList "$(VirtualNICsToBeDeletedList)
ForListDo $(VirtualNICsToBeDeletedList)
Ifcontains(i) $($) not-in $(VirtualNICsToBeCreatedListAlreadyProcessed)
Ifcontains(i) $($) not-in $(VirtualNICsToBeDeletedListAlreadyProcessed)
Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) virtualNicParams
ifstr(i) $(virtualNicParams) != ""
; The virtual Nic is really there so remove it
GetRegValue $(virtualNicParams) "virtualNicNumber" virtualNicNumberIndex
set virtualNicNumberValue = *($(virtualNicNumberIndex),4)
Set RegKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(virtualNicNumberValue)
Shell $(UtilityInf), RemoveHardwareComponent,+
$(Manufacturer),$(AdapterProductSoftwareName),$(RegKey)
;*** add this NIC to the Already Processed List
ifstr(i) $(VirtualNICsToBeDeletedListAlreadyProcessed) == {}
set VirtualNICsToBeDeletedListAlreadyProcessed = {$($)}
else
set VirtualNICsToBeDeletedListAlreadyProcessed = >($(VirtualNICsToBeDeletedListAlreadyProcessed), $($))
endif
endif
endif
endif
EndForListDo
;************************ END of Processing VirtualNICsToBeDeletedList **********************
; update the Group_Info key with all the latest info
RunProgram ExitCode "" "" $(DASetupNT) g
; if this is not during DA install check on whether to disable review bindings and cause extra bindings
Set RegKey = $(TransportParamKeyName)
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) DAParamKey
set InProcessRec = ""
GetRegValue $(DAParamKey) $(InstallInProcess) InProcessRec
ifstr(i) $(InProcessRec) == ""
; This is not during install
;Call DAsetup 1 for the Extra review binding if it has not already been started
GetRegValue $(DAParamKey) $(StartDetachedText) StartDetachedRec
ifstr(i) $(StartDetachedRec) == ""
SetRegValue $(DAParamKey) {$(StartDetachedText),$(NoTitle),$(!REG_VT_DWORD),1}
StartDetachedProcess STATUS_SUCCESSFUL "" "" $(DASetupNT) 1
endif
set CurrentBindingPassRec = ""
GetRegValue $(DAParamKey) CurrentBindingPass CurrentBindingPassRec
ifstr(i) $(CurrentBindingPassRec) == ""
;This is first pass and so we will remove all Real NICs from the protcols Bind key
; and set the CurrentBindingPass value to 2
RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 4
SetRegValue $(DAParamKey) {"CurrentBindingPass",$(NoTitle),$(!REG_VT_SZ),2}
else
set CurrentBindingPassValue = *($(CurrentBindingPassRec),4)
ifstr(i) $(CurrentBindingPassValue) == "1"
;This is first pass and so we will remove all Real NICs from the protcols Bind key
; and set the CurrentBindingPass value to 2
RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 4
SetRegValue $(DAParamKey) {"CurrentBindingPass",$(NoTitle),$(!REG_VT_SZ),2}
else-ifstr(i) $(CurrentBindingPassValue) == "2"
;This is the second pass. Remove the real NICs from TCP/IPs bind key
; and set the CurrentBindingPass value to 3
RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 5
SetRegValue $(DAParamKey) {"CurrentBindingPass",$(NoTitle),$(!REG_VT_SZ),3}
else-ifstr(i) $(CurrentBindingPassValue) == "3"
;This is the Third Pass and the extra review pass so don't do anything,
; but set the CurrentBindingPass value to 1
SetRegValue $(DAParamKey) {"CurrentBindingPass",$(NoTitle),$(!REG_VT_SZ),1}
endif
endif
;
; If we added or removed a virtual adapter, tell NCPA to review bindings
; again after this completes.
;
ifstr(i) $(VirtualNICsToBeCreatedListAlreadyProcessed) == {}
ifstr(i) $(GlobalAssignedVirtualNICList) == {}
;If all of the Virtual NICs were deleted we should remove DA
goto LastCardRemoved
endif
endif
endif
goto successful
deinstall =+
;
; To synch TCP/IP configuration again with current setup.
;
RunProgram ExitCode "" "" $(DASetupNT) t
; Done synch TCP/IP
OpenRegKey $(!REG_H_LOCAL) "" $(TransportProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
set RemoveDAValue = ""
GetRegValue $(KeyProduct) "RemoveDA" RemoveDAValue
Split-String $(!NTN_RegBase), "\", RegLoc
Ifcontains(i) "NetworkCards" in $(RegLoc)
; Removing just the virtual NIC is not allowed, but first
; make sure we are not ACTUALLY removing DA:
ifstr(i) $(RemoveDAValue) == ""
;and only if there is NO "RemoveDA" value under HKLM\software\3com\DAPassThruTransport\CurrentVersion
;dialog#1
Set DlgText = "If you want to uninstall 3Com's DynamicAccess software, select DynamicAccess, on the Add/Remove Programs Properties page, and click Add/Remove."
Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(DlgText)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = ERROR
endif
Return STATUS_SUCCESSFUL
endif
DeleteRegValue $(KeyProduct) "RemoveDA"
endif
Ifcontains(i) "DAPassThru" in $(RegLoc)
; Removing just the virtual NIC is not allowed:
;dialog#2
Set DlgText = "What do you want to do? (1) If you want to remove 3Com's DynamicAccess software, select DAPassThru Transport protocol, on the Protocol Page, and click Remove. (2) If you want to remove your Adapter, select the adapter and click Remove. Do no remove the 3Com's virtual NIC."
Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(DlgText)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = ERROR
endif
Return STATUS_SUCCESSFUL
endif
;dialog0
Set DlgText = "You are about to uninstall the 3Com DynamicAccess!"
Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(DlgText)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = ERROR
endif
ifstr $($R1) == "CANCEL"
Return STATUS_USERCANCEL
endif
LastCardRemoved =+
; Open the Linkage Key of the Virtual Protocol and get the Bind Value
; to get the entire list of cards bound to the Virtual Protocol
;
OpenRegKey $(!REG_H_LOCAL) "" $(TransportLinkageKeyName) $(MAXIMUM_ALLOWED) TransportLinkageKey
ifstr(i) $(TransportLinkageKey) != ""
GetRegValue $(TransportLinkageKey) "Bind" BindList
Debug-Output "PassThru: Remove: BindList: "$(BindList)
Set Binding = *($(BindList),4)
Debug-Output "PassThru: Remove: Binding: "$(Binding)
CloseRegKey $(TransportLinkageKey)
else
Debug-Output "PassThru: failed to open key "$(TransportLinkageKeyName)
goto skipRemoveBindings
endif
set CardList = {}
set CreateCardList = {}
ForListDo $(Binding)
Split-String $($), "\", BindInfo
QueryListSize BindListSize $(BindInfo)
set CardName = *($(BindInfo),$(BindListSize))
Debug-Output "PassThru: Remove: Cardname: "$(CardName)
ifstr(i) $(CardList) == {}
set CardList = {$(CardName)}
else
set CardList = >($(CardList),$(CardName))
endif
EndForListDo
Debug-Output "PassThru: Cardlist: "$(CardList)
;
; For each real LAN adapter in the list...
;
ForListDo $(CardList)
Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) NICparamkey
ifstr(i) $(NICparamkey) != ""
Split-String $($), "1234567890", ServiceNameSplitList
Ifcontains(i) "DAPassThru" in $(ServiceNameSplitList)
;For each virtual adapter remove its Hardware component and delete its
; mappedNics
GetRegValue $(NICparamkey) "virtualNicNumber" VirtNICNoRec
Set VirtNICNo = *($(VirtNICNoRec),4)
Set AdapterRegBase = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(VirtNICNo)
Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
$(AdapterProductSoftwareName), $(AdapterRegBase)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "PassThru: ShellCode error"
goto ShellCodeError
endif
else
;Remove the FT LB network address
set DANetworkAddressRec = ""
GetRegValue $(NICparamkey) "DA_NETWORKADDRESS" DANetworkAddressRec
ifstr(i) $(DANetworkAddressRec) != ""
set DANetworkAddressValue = *($(DANetworkAddressRec),4)
SetRegValue $(NICparamkey) {"NETWORKADDRESS",$(NoTitle),$(!REG_VT_SZ),$(DANetworkAddressValue)}
DeleteRegValue $(NICparamkey) "DA_NETWORKADDRESS"
else
set NetworkAddressRec = ""
GetRegValue $(NICparamkey) "NETWORKADDRESS" NetworkAddressRec
ifstr(i) $(NetworkAddressRec) != ""
set NetworkAddressValue = *($(NetworkAddressRec),4)
ifstr(i) $(NetworkAddressValue) == "00A024CC6981"
DeleteRegValue $(NICparamkey) "NETWORKADDRESS"
endif
endif
endif
;** remove the DA registry values under the real NIC
DeleteRegValue $(NICparamkey) "DA_Group_ID"
DeleteRegValue $(NICparamkey) "DA_Primary_NIC"
endif
CloseRegKey $(NICparamkey)
endif
continueRemoveBindings =+
EndForListDo
skipRemoveBindings =+
Set RegKey = "SOFTWARE\3Com\DA"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) SoftwareDAKey
ifstr(i) $(SoftwareDAKey) != ""
Debug-Output "PassThru: about to delete $(RegKey)\Server"
DeleteRegTree $(SoftwareDAKey) "Server"
CloseRegKey $(SoftwareDAKey)
else
Debug-Output "PassThru: Failed to delete $(RegKey)\Server"
endif
Debug-Output "PassThru: Removing "$(TransportProductSoftwareName)" Software Component from Registry"
Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
$(TransportProductSoftwareName)
RemovePassThru = +
Set RegKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion"
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) NTVersionKey
GetRegValue $(NTVersionKey) "CurrentVersion" NTVersionRec
Set NTVersion = *($(NTVersionRec),4)
CloseRegKey $(NTVersionKey)
RunProgram ExitCode "" "" $(DASetupNT) d
AddfileToDeleteList $(ProductSoftwareImagePathTxt)
AddfileToDeleteList $(ProductMiniportSoftwareImagePathTxt)
AddfileToDeleteList $(PostProcessInf)
AddfileToDeleteList $(DASetupNT)
AddfileToDeleteList $(SetupINFName)
AddfileToDeleteList $(DASmartN)
AddfileToDeleteList $(DA15CFGEXE)
AddfileToDeleteList $(DASERVERCPL)
AddfileToDeleteList $(DASERVERHLP)
AddfileToDeleteList $(DASERVEREXE)
;AddfileToDeleteList $(DA15CFGINI)
AddfileToDeleteList $(DACFGHLP)
;AddfileToDeleteList $(DACFGCPL) ;done in restore pacecfg in .c program
AddfileToDeleteList $(DACFGCPLSAV)
;AddfileToDeleteList $(DACFGAPPLST)
Set RegKey = $(!NTN_ServiceBase)
OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) PassThru_Key
ifstr(i) $(PassThru_Key) != ""
Debug-Output "PassThru: about to delete "$(RegKey)
DeleteRegTree $(PassThru_Key) $(AdapterProductSoftwareName)
CloseRegKey $(PassThru_Key)
else
Debug-Output "PassThru: Failed to delete "$(RegKey)
endif
goto end
configure =+
set Error = "To configure the server features you must close the Network Control Panel, select start, settings, control panel then double click on the DynamicAccess Server Icon."
set from = end
goto nonfatalinfo
update = +
set Error = "Update Not Implemented, Remove and Reinstall"
set from = end
goto nonfatalinfo
successful = +
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) == ""
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
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 = $(ShellCodeErrorTitle)
set STF_MB_TEXT = $(ShellCodeErrorText)
set STF_MB_TYPE = 1
set STF_MB_ICON = 3
set STF_MB_DEF = 1
ui start "Error Message"
goto setfailed
setfailed = +
set CommonStatus = STATUS_FAILED
ifstr(i) $(OEM_ABANDON_ON) == TRUE
set OEM_ABANDON_ON = FALSE
goto deinstall
endif
goto end
end = +
goto term
term = +
Return $(CommonStatus)
[StripTrailSlash]
Split-String $($0) "\" InList
QueryListSize InListSize, $(InList)
Ifint $(InListSize) <= 1
Return $($0)
Endif
Set NewString = ""
ForListDo $(InList)
ifint $(#) < $(InListSize)
Set NewString = $(NewString)$($)
else-ifstr $($) != "\"
Set NewString = $(NewString)$($)
endif
EndForListDo
Return $(NewString)
[Install-Option]
set STF_VITAL = ""
ifstr(i) $(AddCopy) == "YES"
Debug-Output "PassThru: oemsetup.inf: PlatformDir "$(PlatformDir)
;AddSectionFilesToCopyList Files-Platform-Drivers $(PlatformDir) $(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Files-Platform-Drivers $(InfDir) $(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Post-Process-Program $(InfDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Platform-Utility $(InfDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Inf $(InfDir) $(!STF_WINDOWSSYSPATH)
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-Platform-Drivers $(PlatformDir) $(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Files-Platform-Drivers $(InfDir) $(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Files-Platform-Utility $(InfDir) $(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Inf $(InfDir) $(!STF_WINDOWSSYSPATH)
exit
[Source Media Descriptions]
1 = "DAPassThru Driver Installation Disk", TAGFILE = disk1
[ProductType]
STF_PRODUCT = Winnt
[Files-Inf]
;1, oemsetup.INF, SIZE=999, RENAME=$(!UG_Filename)
1, oemsetup.INF, SIZE=999
[Files-Platform-Drivers]
;1, passthru.SYS , SIZE=999
1, DAMINI.SYS , SIZE=999
1, DAPROT.SYS, SIZE=999
[Files-Platform-Utility]
1, DASetup.EXE, SIZE=999
1, DA15cfg.EXE, SIZE=999
1, DAcfg.hlp, SIZE=999
1, DASmartN.EXE, SIZE=999
1, DAServer.hlp, SIZE=999
1, DAServer.cpl, SIZE=999
;1, DA15cfg.INI, SIZE=999
;1, Pacecfg.cpl, SIZE=999
;1, DAcfgApp.lst, SIZE=999
;1, DADeinstallNT.EXE, SIZE=999
[Post-Process-Program]
1, PRUN.INF, SIZE=999
[DialogConstantsENG]
Help = "&Help"
Exit = "Cancel"
OK = "OK"
HelpContext = ""
Continue = "Continue"
Cancel = "Cancel"
Download Driver Pack
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.