oemsetup.inf Driver File Contents (sp12779.exe)

; file version:  1.0.0.1

[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\netevent.dll"

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"
;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"

[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 is the binding review for the Transport Driver...
	;

;Debug:
;	Set DlgText = "oemsetup.INF:  bind=+ Section, NTN_RegBase ="$(!NTN_RegBase)
;	Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(DlgText)
;	ifint $($ShellCode) != $(!SHELL_CODE_OK)
;		set RegistryErrorIndex = ERROR
;	endif

   	ifstr(i) $(!NTN_RegBase) == $(TransportProductKeyName)

		;{ To fix TCP/IP problem: 02-26-98, HD
		Set RegKey = $(TransportParamKeyName)
		OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) DAParamKey

		;Check if installinprocess here. if it is, then don't disable other bindings.

		GetRegValue $(DAParamKey) $(InstallInProcess) InProcessRec
		set InProcessValue = *($(InProcessRec),4)

		ifstr(i) $(InProcessValue) == ""
			GetRegValue $(DAParamKey) $(DisableOtherReviewBindingsText) disableBindingRec
			set disableBindingValue = *($(disableBindingRec),4)
			ifstr(i) $(disableBindingRec) == ""
				SetRegValue $(DAParamKey) {$(DisableOtherReviewBindingsText),$(NoTitle),$(!REG_VT_DWORD),1}
				RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 5
			endif
		endif
		CloseRegKey $(DAParamKey)
		;} To fix TCP/IP problem: 02-26-98, HD

		;
		;	Open the Linkage Key and get the Bind Value
		;
		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 TempCardList = {}
		set CreateCardList = {}
		set NICIndex = 0
		ForListDo $(Binding)
			Split-String $($), "\", BindInfo
			QueryListSize BindListSize $(BindInfo)
			set CardName = *($(BindInfo),$(BindListSize))
			Debug-Output "PassThru: Cardname: "$(CardName)
			ifstr(i) $(TempCardList) == {}
				set TempCardList = {$(CardName)}
			else
				set TempCardList = >($(TempCardList),$(CardName))
			endif
		EndForListDo

		; 020998: For add new and remove last NIC error:  Inverting Binding List {
		QueryListSize NICIndex $(TempCardList)
		ForListDo $(TempCardList)
			ifstr(i) $(CardList) == {}
				set CardList = {*($(TempCardList),$(NICIndex))}
			else
				set CardList = >($(CardList),*($(TempCardList),$(NICIndex)))
			endif
			set-sub NICIndex = $(NICIndex),1
		EndForListDo
		; 020998: end of inverting binding list }
		

		;
		;  Getting total number of Virtual NIC
		;
		Set TotalVirtualNIC = 0
		Set LastCard = 1
		ForListDo $(CardList)
			Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\Signature"
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) VirtualNICKey
			ifstr(i) $(VirtualNICKey) == ""
			;  Real NIC, but check its media type.  If type 1, then lastCardRemoved=False.
				Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
				OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) RealNicParam
				GetRegValue $(RealNicParam) "MediaType" MediaTypeRec
				Set MediaTypeVal = *($(MediaTypeRec),4)
				ifstr(i) $(MediaTypeVal) == 1
					Set LastCard = 0
				endif
			else
				Set-add TotalVirtualNIC = $(TotalVirtualNIC), 1
			endif
		EndForListDo


		Debug-Output "PassThru: Cardlist: "$(CardList)

		;
		;  For each real LAN adapter the transport is bound to...
		;
		Set AddedNewVirtualAdapter = "No"
		Set RemovedNIC = "No"
		ForListDo $(CardList)
			Debug-Output "PassThru: Processing "$($)"..."
			;
			;	Check if this is a virtual adapter that WE created.
			;
			Set MediaTypeRecord = ""
			Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) CardParamKey
			GetRegValue $(CardParamKey) "MediaType" MediaTypeRecord
			ifstr(i) $(MediaTypeRecord) == ""
				goto continueCardList
			endif

			Set MediaTypeValue = *($(MediaTypeRecord),4)
			ifstr(i) $(MediaTypeValue) != 1
				;
				; Wedge supports only media type # 1 NIC
				;
				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
			Debug-Output "PassThru: NTN_ServiceBase: "$(!NTN_ServiceBase)
			Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\Signature"
			Debug-Output "PassThru: pre-check: about to open "$(RegKey)
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) PassThruKey
			ifstr(i) $(PassThruKey) == ""

				Debug-Output "PassThru: WILL bind to "$($)
				;020998 {
				;
				;	Open/Create the protocol specific key under the adapter's parameters key
				;
				Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\"$(TransportProductSoftwareName)
				Debug-Output "PassThru: about to open "$(RegKey)
				OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) PassThruKey
				ifstr(i) $(PassThruKey) == ""
					Debug-Output "PassThru: creating "$(TransportProductSoftwareName)" key under the adapter"
					CreateRegKey $(!REG_H_LOCAL) {$(RegKey),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" PassThruParamsKey
				else
					Debug-Output "PassThru: Have processed "$($)" already"
					CloseRegKey $(PassThruKey)
					goto continueCardList
				endif
				ifstr(i) $(PassThruParamsKey) == ""
					Debug-Output "PassThru: Failed to open/create the \Parameters\"$(TransportProductSoftwareName)" key under the adapter"
					goto fatalRegistry
				endif
				;
				;	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
					
	    		;
				;	Pair information of real and virtual NICs -- HD --
				;
				;	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)
				;
				;	End of getting Title field for mapped NIC
				;
	
		    	set KeyParameters = $($R3)
	    		set KeyAdapterRules = $($R2)
	   			set AdapterNumber = $($R4)
				set VirtNICTitle = "3Com Virtual NIC - DynamicAccess 1.5 ["$(NetCardTitle)"]"
				set VirtNICDesc = "3Com Virtual NIC - DynamicAccess 1.5 ["$(NetCardTitle)"]"
		    	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 = {{MappedNic,$(NoTitle),$(!REG_VT_SZ),"\Device\"$($)},+
									{virtualNicNumber,$(NoTitle),$(!REG_VT_SZ),$(AdapterNumber)},+
									{MediaType,$(NoTitle),$(!REG_VT_DWORD),$(MediaTypeValue)},+
									{MappedNICTitle,$(NoTitle),$(!REG_VT_SZ),$(NetCardTitle)}}
	    		Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
	
	    		; 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
		    	CloseRegKey $(KeyParameters)
				ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "PassThru: ShellCode error."
					goto ShellCodeError
				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.
				;
				Set AddedNewVirtualAdapter = "Yes"
	
;				ifstr(i) $(ElanKey) != ""
;					CloseRegKey $(ElanKey)
;				endif
;
				ifstr(i) $(PassThruParamsKey) != ""
					set NewValueList = {{Device,$(NoTitle),$(!REG_VT_SZ),$(AdapterProductHardwareName)$(AdapterNumber)},+
					                    {AdapterNumber,$(NoTitle),$(!REG_VT_SZ),$(AdapterNumber)}}
					Shell $(UtilityInf), AddValueList, $(PassThruParamsKey), $(NewValueList)
					CloseRegKey $(PassThruParamsKey)
				endif
				;020998 }

			else
				Debug-Output "PassThru: Skipping bind to ourselves "$($)
				;	Also, if the mappedNic is removed, then remove its virtual NIC.
				;	Check to see if the mappedNic exists!  -- HD --
				Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\"
				OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) virtualNicParams
				GetRegValue $(virtualNicParams) "MappedNic" mappedNicNameRecord
				Set mappedNicDeviceName = *($(mappedNicNameRecord),4)
				Split-String $(mappedNicDeviceName), "\", mappedNicInfo
				QueryListSize NicNameLength $(mappedNicInfo)
				set mappedNicName = *($(mappedNicInfo),$(NicNameLength))
				Set RegKey = $(!NTN_ServiceBase)"\"$(mappedNicName)

				OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) mappedNicEntry
				ifstr(i) $(mappedNicEntry) == ""
					;	mappedNic was removed; therefore, remove its virtual Nic as well -- HD --

					Set RemovedNIC = "Yes"
					;
					;	If last NIC was removed, remove Wedge also.
					;

					GetRegValue $(virtualNicParams) "virtualNicNumber" virtualNicNumberIndex
					set virtualNicNumberValue = *($(virtualNicNumberIndex),4)
					Set RegKey = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(virtualNicNumberValue)

					Shell $(UtilityInf), RemoveHardwareComponent,+
						  $(Manufacturer),$(AdapterProductSoftwareName),$(RegKey)

					Set RegKey = $(TransportParamKeyName)
					OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) DAParamKey
					GetRegValue $(DAParamKey) $(DisableOtherReviewBindingsText) disableBindingRec
					set DisableOtherReviewBindingValue = *($(disableBindingRec),4)
					ifint $(DisableOtherReviewBindingValue) == 1
						SetRegValue $(DAParamKey) {$(DisableOtherReviewBindingsText),$(NoTitle),$(!REG_VT_DWORD),2}
						RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 4
					endif
					CloseRegKey $(DAParamKey)
				endif
				goto continueCardList
			endif


continueCardList = +
			
		EndForListDo

		;
		;	If we added a virtual adapter, tell NCPA to review bindings
		;	again after this completes.
		;
		ifstr(i) $(AddedNewVirtualAdapter) == "Yes"

			Set RegKey = $(TransportParamKeyName)
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) DAParamKey

			;Check if installinprocess here. if it is, then don't disable other bindings.

			GetRegValue $(DAParamKey) $(InstallInProcess) InProcessRec
			set InProcessValue = *($(InProcessRec),4)

			ifstr(i) $(InProcessValue) == ""
				GetRegValue $(DAParamKey) $(DisableOtherReviewBindingsText) disableBindingRec
				set disableBindingValue = *($(disableBindingRec),4)
				ifint $(disableBindingValue) == 1
					SetRegValue $(DAParamKey) {$(DisableOtherReviewBindingsText),$(NoTitle),$(!REG_VT_DWORD),2}
					RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 4
				endif
				GetRegValue $(DAParamKey) $(StartDetachedText) StartDetachedRec
				ifstr(i) $(StartDetachedRec) == ""				
					SetRegValue $(DAParamKey) {$(StartDetachedText),$(NoTitle),$(!REG_VT_DWORD),1}
					StartDetachedProcess STATUS_SUCCESSFUL "" "" $(DASetupNT) 1
				endif
			endif

			CloseRegKey $(DAParamKey)

		endif


		ifstr(i) $(RemovedNIC) == "Yes"


			ifstr(i) $(LastCard) == 1
				goto LastCardRemoved
			endif


			Set RegKey = $(TransportParamKeyName)
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) DAParamKey

			;Check if installinprocess here. if it is, then don't disable other bindings.

			GetRegValue $(DAParamKey) $(InstallInProcess) InProcessRec
			set InProcessValue = *($(InProcessRec),4)

			ifstr(i) $(InProcessValue) == ""
				GetRegValue $(DAParamKey) $(DisableOtherReviewBindingsText) disableBindingRec
				set disableBindingValue = *($(disableBindingRec),4)
				ifint $(disableBindingValue) == 1
					SetRegValue $(DAParamKey) {$(DisableOtherReviewBindingsText),$(NoTitle),$(!REG_VT_DWORD),2}

					RunProgram ExitCode "" "" $(DisableOtherReviewBindings) 4
				endif
			endif

			GetRegValue $(DAParamKey) $(StartDetachedText) StartDetachedRec
			ifstr(i) $(StartDetachedRec) == ""				
				SetRegValue $(DAParamKey) {$(StartDetachedText),$(NoTitle),$(!REG_VT_DWORD),1}
				StartDetachedProcess STATUS_SUCCESSFUL "" "" $(DASetupNT) 1
			endif

			CloseRegKey $(DAParamKey)
		endif

	endif

    goto successful

deinstall =+

;
;	To synch TCP/IP configuration again with current setup.
;	
	RunProgram ExitCode "" "" $(DASetupNT) t
;	Done synch TCP/IP

	Split-String $(!NTN_RegBase), "\", RegLoc

	Ifcontains(i) "NetworkCards" in $(RegLoc)
	;	Removing just the virtual NIC is not allowed:
;dialog#1
		Set DlgText = "If you want to uninstall 3Com's DynamicAccess software, select the DAPassThru Driver Transport and click Remove."
		Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(DlgText)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			set RegistryErrorIndex = ERROR
		endif
		Return STATUS_SUCCESSFUL		
	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 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 Protocol!"
 	Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(DlgText)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		set RegistryErrorIndex = ERROR
	endif

	ifstr $($R1) == "CANCEL"
		Return STATUS_SUCCESSFUL
	endif

LastCardRemoved =+
;	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)

;	ifstr(i) $(NTVersion) == "4.0"
;		RunProgram ExitCode "" "" $(DASetupNT) d
;	else-ifstr(i) $(NTVersion) == "3.51"
;		Set DlgText = "oemsetup.INF:  Need to also run DASetup.exe d"
;		Shell "Subroutn.Inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(DlgText)
;		ifint $($ShellCode) != $(!SHELL_CODE_OK)
;			set RegistryErrorIndex = ERROR
;		endif
;	endif

;	AddfileToDeleteList $(ProductSoftwareImagePathTxt)
;	AddfileToDeleteList $(ProductMiniportSoftwareImagePathTxt)
;	AddfileToDeleteList $(PostProcessInf)
;	AddfileToDeleteList $(DASetupNT)
;;	AddfileToDeleteList $(DADeinstallNT)
;;	Return STATUS_SUCCESSFUL		
;;	endif


	;ifstr(i) $(TransportProductKey) == ""
	;	CloseRegKey $(TransportProductKey)
	;	set Error = "To uninstall this adapter, remove '"$(TransportProductSoftwareDescription)"' from Protocols"
	;	set from = end
	;	goto nonfatalinfo
   	;endif
	;CloseRegKey $(TransportProductKey)

	;
	;	Build a list of real LAN adapters that the transport is bound to
	;	

	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)
		;
		;	Open the Elan list key
		;
		;Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\"$(TransportProductSoftwareName)"\ElanList"
		;OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) ElanListKey

		Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\Signature"
		OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) DASignatureKey

		ifstr(i) $(DASignatureKey) != ""
			CloseRegKey $(DASignatureKey)
			Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) VirtNICParam
			GetRegValue $(VirtNICParam) "virtualNicNumber" VirtNICNoRec
			GetRegValue $(VirtNICParam) "MappedNic" RealNICRec
			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
			CloseRegKey $(VirtNICParam)
			set RealNIC = *($(RealNICRec),4)
			Split-String $(RealNIC), "\", RealNICInfo
			QueryListSize RealNICItems $(RealNICInfo)
			set RealCardName = *($(RealNICInfo),$(RealNICItems))
			Set RegKey = $(!NTN_ServiceBase)"\"$(RealCardName)"\Parameters"
			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) RealNICParam
			ifstr(i) $(RealNICParam) != ""
;
;Don't do this for Python + transfer current configuration back to real NIC.
;Will be deleted later in .c program.
;				DeleteRegTree $(RealNICParam) $(TransportProductSoftwareName)
				CloseRegKey $(RealNICParam)
			else
				Debug-Output "PassThru: Failed to delete "$(RegKey)
			endif
		endif

;		Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters\"$(TransportProductSoftwareName)
;		OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) ElanListKey
;		ifstr(i) $(ElanListKey) != ""
;			GetRegValue $(ElanListKey) "AdapterNumber" AdapterNoValue
;			;CloseRegKey $(ElanListKey)
;			Debug-Output "PassThru: AdapterNoValue:  "$(AdapterNoValue)
;			;
;			;	Open the Elan0 key and get the adapter number
;			;
;			;Set RegKey = $(RegKey)"\Elan0"
;			;OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) ElanKey
;			;ifstr(i) $(ElanKey) != ""
;			;	GetRegValue $(ElanKey) "AdapterNumber" AdapterNoValue
;			;	CloseRegKey $(ElanKey)
;			;else
;			;	Debug-Output "PassThru: failed to open key "$(RegKey)", skipping this adapter"
;			;	goto continueRemoveBindings
;			;endif
;			Set AdapterNo = *($(AdapterNoValue),4)
;
;			;
;			;	Remove the virtual hardware component that represents the ELAN.
;			;	This will remove the adapter software component as well.
;			;
;			Set AdapterRegBase = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$(AdapterNo)
;			Debug-Output "PassThru: removing adapter number "$(AdapterNo)" RegBase "$(AdapterRegBase)
;			Debug-Output "PassThru: Manufacturer: "$(Manufacturer)", AdapterProductSoftwareName: "$(AdapterProductSoftwareName)", AdpterRegBase: "$(AdpterRegBase)
;			Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
;				$(AdapterProductSoftwareName), $(AdapterRegBase)
;			ifint $($ShellCode) != $(!SHELL_CODE_OK)
;				Debug-Output "PassThru: ShellCode error"
;				goto ShellCodeError
;			endif
;
;			;
;			;	Close the Elan list key and
;			;	delete the whole PassThru transport specific key from the real LAN adapter
;			;
;			CloseRegKey $(ElanListKey)
;			Debug-Output "PassThru: NTN_ServiceBase: "$(!NTN_ServiceBase)
;			Set RegKey = $(!NTN_ServiceBase)"\"$($)"\Parameters"
;			Debug-Output "PassThru: Deleting protocol specific key from LAN adapter"
;			Debug-Output "PassThru: Key is "$(RegKey)
;			OpenRegKey $(!REG_H_LOCAL) "" $(RegKey) $(MAXIMUM_ALLOWED) ParamsKey
;			ifstr(i) $(ParamsKey) != ""
;				DeleteRegTree $(ParamsKey) $(TransportProductSoftwareName)
;				CloseRegKey $(ParamsKey)
;			else
;				Debug-Output "PassThru: Failed to delete "$(RegKey)
;			endif
;
;		endif

continueRemoveBindings =+
	
	EndForListDo

skipRemoveBindings =+

	Debug-Output "PassThru: Removing "$(TransportProductSoftwareName)" Software Component from Registry"

	Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
		$(TransportProductSoftwareName)

	; ignore errors for now

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	$(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 = "Configuration Not Implemented"
	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, 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

How To Update Drivers Manually

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

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

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

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

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

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

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

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

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

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

server: web1, load: 0.87