Oemprism.inf Driver File Contents (wlan100.zip)

;***********************************************************************
;
; OEMPRISM.INF  (OEMSETUP.INF)
;
;		Intersil Corp. 802.11 Client Driver - PRISM Version
;
;	Version 1.9:  Add section for PCI adapter.
;	Version 1.8:  Add entries for PRISM Freedom and 2.5 cards.
;	Version 1.7:  Add entry for Mini-PCI card, remove Compaq cards.
;	Version 1.6:  Add registry entries for Preamble IBSS and Poll in Driver.
;				  Disable IRQ display in Advance properties for PCI card.
;	Version 1.5:  Add additional ranges for the IO address.
;	              Add registry entries for Encrypt in Driver.
;	Version 1.4:  Add registry entries for Decrypt in Driver and Wep Factor.
;	Version 1.3:  Change Compaq ManKey name to replace spaces with _.
;	Version 1.2:  Added RTS threshold of 0 to always use RTS/CTS
;					Removed enhanced mode from PSMode, and renumbered to match driver
;					Changed default TxRate to Fully Auto.
;					Added Choice PRISM 2 CIS and Intersil CIS
;					Renamed PseudoIBSS to Ad Hoc.
;					Added Compaq PCMCIA and PCI cards.
;					Removed DSChannel from Advanced Properties.
;
;	Version 1.1:  Added new parameters to the Advavnced Properties
;				  Added: DS Channel, RTS and Frag thresholds, Power Save
;						 WEP, ATIM Window, Listen Interval parameters.
;				  Don't show the Advanced Properties window during install.
;
;	Version 1.0:  Initial Release
;
;***********************************************************************

;***********************************************************************
; 1. Identify
;
; DESCRIPTION:	To verify that this INF deals with the same type of options
;				as we are choosing currently.
;
; INPUT:		None
;
; OUTPUT:		$($R0): STATUS: STATUS_SUCCESSFUL
;				$($R1): Option Type (COMPUTER ...)
;				$($R2): Diskette description
;***********************************************************************
;
;
;---------------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with.  The different
; possible types are:
;
; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;
;  Types specific to networking:
;
; NetAdapter,		a netcard / adapter combination or just a netcard
; NetDriver,		just a netcard driver
; NetTransport,		a complete NDIS-compliant TDI transport stack
; NetService,		an NT networking service
; NetWork,			a complete network ensemble.
; NetProvider		a complete network which supports NT MPR protocol
;---------------------------------------------------------------------------

[Identify]
	set Status		= STATUS_SUCCESSFUL
	set Identifier	= NetAdapter
	set Media		= #("Source Media Descriptions", 1, 1)

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


;***********************************************************************
;
;	End Indentify
;
;***********************************************************************



;***********************************************************************
; 2. ReturnOptions:
;
; DESCRIPTION:	To return the option list supported by this INF and the
;				localised text list representing the options.
;
;
; INPUT:		$($0):  Language used. ( ENG | FRN | ... )
;
; OUTPUT:		$($R0): STATUS: STATUS_SUCCESSFUL |
;								STATUS_NOLANGUAGE
;								STATUS_FAILED
;								STATUS_NOTSUPPORTED
;
;				$($R1): Option List
;				$($R2): Option Text List
;***********************************************************************

[ReturnOptions]
	;
	;
	set Status		= STATUS_FAILED
	set OptionList		= {}
	set OptionTextList	= {}

	;
	; Check if the language requested is supported
	;
	set LanguageList = ^(LanguagesSupported, 1)
	Ifcontains(i) $($0) in $(LanguageList)
		;
		; Check if the platforms requested is supported
		;
		ifstr(i) $($1) == ""
			goto returnoptions
		endif

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

	;
	; form a list of all the options and another of the text representing
	;
returnoptions = +
	set OptionList		= ^(Options, 1)
	set OptionTextList	= ^(OptionsText$($0), 1)
	set Status			= STATUS_SUCCESSFUL

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



;=======================================================================
;
;	ReturnOptions related symbols
;
;=======================================================================

;-----------------------------------------------------------------------
; PlatformsSupported
; ------------------
; This identifies the platforms supported by the adapter card.
; Possible types are:
;
; ISA, EISA, MCA and PCMCIA
;-----------------------------------------------------------------------

[PlatformsSupported]
	ISA
	PCMCIA
 	PCI

;-----------------------------------------------------------------------
;
;	Languages Supported in INF File
; Possible types are:
;
; ENG, FRN, SPN, ...
;-----------------------------------------------------------------------
[LanguagesSupported]
	ENG

;-----------------------------------------------------------------------
; OPTION LIST
; -----------
; This section lists the OEM Option key names.  These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
;-----------------------------------------------------------------------

[Options]
	PRISM1_EVB_PCMCIA
	PRISM2_EVB_PCMCIA
	PRISM1_PCMCIA
	PRISM2_PCMCIA
	PRISM2_MINI_PCI
	PRISM_FREEDOM_PCMCIA
	PRISM2_5_PCMCIA

[OptionsTextENG]
	PRISM1_EVB_PCMCIA	="PRISM1 IEEE 802.11 PC CARD Adapter/EVB"
	PRISM2_EVB_PCMCIA	="PRISM2 IEEE 802.11 PC CARD Adapter/EVB"
	PRISM1_PCMCIA		="PRISM1 IEEE 802.11 PC CARD Adapter"
	PRISM2_PCMCIA		="PRISM2 IEEE 802.11 PC CARD Adapter"
	PRISM2_MINI_PCI		="Intersil PRSIM2 Mini-PCI Adapter"
	PRISM_FREEDOM_PCMCIA="Intersil PRISM Freedom PCMCIA Adapter"
	PRISM2_5_PCMCIA     ="Itnersil PRISM2.5 PCMCIA Adapter"

;***********************************************************************
;
;	End ReturnOptions
;
;***********************************************************************


;***********************************************************************
; 4. Source Media Descriptions:
;
; DESCRIPTION:	A detect section required in all oemsetup.inf files. It
;				consists of a lied for each floppy disk that is part of
;				the distribution set. The format is as follows:
;		
;				LineKey = [DiskDescription, TAGFILE = TagFileName]
;
; EXAMPLE:		1 = "Driver Disk #1", TAGFILE = disk1
;				
;
; INPUT:		None
;
; OUTPUT:		None
;
;***********************************************************************

[Source Media Descriptions]
	1  = "PRISM IEEE 802.11 drivers"


;***********************************************************************
;
;	End Source Media Descriptions
;
;***********************************************************************




;***********************************************************************
;
; InstallOption:
;
;		This section is shelled to by main installation processing
;		or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION:	To copy files representing Options
;			To configure the installed option
;			To update the registry for the installed option
;
; INPUT:	$($0):  Language to use
;			$($1):  OptionID to install
;			$($2):  SourceDirectory
;			$($3):  AddCopy  (YES | NO)
;			$($4):  DoCopy	(YES | NO)
;			$($5):  DoConfig (YES | NO)
;
; OUTPUT:	$($R0): STATUS: STATUS_SUCCESSFUL |
;							STATUS_NOLANGUAGE |
;							STATUS_USERCANCEL |
;							STATUS_FAILED
;
;***********************************************************************


;------------------------------------------------------------------------
; CONSTANTS FOR USING DIALOGS
;------------------------------------------------------------------------
[IntersilPrism25FileConstants]
	GenericAdapterName	= "Intersil PRISM2.5 PCMCIA Adapter"

[IntersilFreedomFileConstants]
	GenericAdapterName	= "Intersil PRISM Freedom PCMCIA Adapter"

[IntersilPrism2FileConstants]
	GenericAdapterName	= "PRISM IEEE 802.11b Adapter"

[Prism2MiniPCIFileConstants]
	GenericAdapterName	= "Intersil PRISM2 Mini-PCI Adapter"

[IntersilPrismEVBFileConstants]
	GenericAdapterName	= "PRISM IEEE 802.11b EVB Adapter"

[FileConstants]
	GenericDriverName	= "PRISM IEEE 802.11b Client driver"
	GenericSysName		= "cw10.sys"
	GenericName			= "CW10"

	;
	;  File names, etc.
	;
	UtilityInf			= "UTILITY.INF"
	ParamInf			= "NCPARAM.INF"
	subroutineinf		= "SUBROUTN.INF"
	SoftwareType		= "driver"
	Exit_Code			= 0

	;
	; EventLog Message File
	;
	NetEventDLL			= "%SystemRoot%\System32\netevent.dll"
	IoLogMsgDLL			= "%SystemRoot%\System32\IoLogMsg.dll"

	;
	; Product Info
	;
	Manufacturer		= "Intersil Corporation"
	ProductMajorVersion	= "0"
	ProductMinorVersion	= "3"
	ProductVersion		= $(ProductMajorVersion)"."$(ProductMinorVersion)

	;
	; Software
	;
	ProductSoftwareName			= "CW10"
	ProductSoftwareImagePath	= "\SystemRoot\System32\drivers\"$(GenericSysName)
	NetRuleSoftwareType			= "cw10Sys ndisDriver cw10Driver"

	NetRuleSoftwareUse			= $(SoftwareType)
	NetRuleSoftwareBindForm		= """cw10Sys"" yes no container"

	NetRuleSoftwareClass		= {"cw10Driver basic"}
	NetRuleSoftwareBindable		= {"cw10Driver cw10Adapter non exclusive 100"}
	;
	; Hardware
	;
	ProductHardwareName			= "CW10"
	NetRuleHardwareType			= "cw10 cw10Adapter"
	NetRuleHardwareBindForm		= " yes yes container"
	NetRuleHardwareClass		= {"cw10Adapter basic"}

	;
	; Registry Key
	;
	ProductKeyName			= $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
	ParamKeyName			= $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
	PcmciaDataBaseKeyName	= $(!NTN_ServiceBase)"\Pcmcia\Database"

[GeneralConstants]
	;
	;  Program flow control variables.
	;
	from		= ""
	to			= ""
	;
	;  Return codes; Exit_Code is set to one of these
	;
	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

[date]
	; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
	; Minute, Second }
	Now	= {} ? $(!LIBHANDLE) GetSystemDate


;------------------------------------------------------------------------
;
; InstallOption:
;
;		This section is shelled to by main installation processing
;		or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION:  To copy files representing Options
;			To configure the installed option
;			To update the registry for the installed option
;
; INPUT:	$($0):  Language to use
;			$($1):  OptionID to install
;			$($2):  SourceDirectory
;			$($3):  AddCopy  (YES | NO)
;			$($4):  DoCopy	(YES | NO)
;			$($5):  DoConfig (YES | NO)
;
; OUTPUT:	$($R0): STATUS: STATUS_SUCCESSFUL |
;							STATUS_NOLANGUAGE |
;							STATUS_USERCANCEL |
;							STATUS_FAILED
;
;------------------------------------------------------------------------
[InstallOption]
	;
	; Set default values for
	;
	set Status	= STATUS_FAILED
	;
	; extract parameters
	;
	set Option		= $($1)
	set SrcDir		= $($2)
	set AddCopy 	= $($3)
	set DoCopy		= $($4)
	set DoConfig	= $($5)

	; Enable debugging output
	Set !G:DebugOutputControl = 1

	;
	; Check if the language requested is supported
	;
	set LanguageList = ^(LanguagesSupported, 1)
	Ifcontains(i) $($0) NOT-IN $(LanguageList)
		Return STATUS_NOLANGUAGE
	endif

	read-syms GeneralConstants

	Ifcontains(i) $(Option) in { "PRISM2_PCMCIA", "PRISM1_PCMCIA" }
		read-syms IntersilPrism2FileConstants
	else-Ifcontains(i) $(Option) in { "PRISM2_EVB_PCMCIA", "PRISM1_EVB_PCMCIA" }
		read-syms IntersilPrismEVBFileConstants
	endif

	ifstr(i) $(Option) == "PRISM2_5_PCMCIA" 
		read-syms IntersilPrism25FileConstants
	endif
	ifstr(i) $(Option) == "PRISM_FREEDOM_PCMCIA" 
		read-syms IntersilFreedomFileConstants
	endif
	ifstr(i) $(Option) == "PRISM2_MINI_PCI"
		set IsPCICard = $(TRUE)
		read-syms Prism2MiniPCIFileConstants
	endif

	read-syms FileConstants

	read-syms DialogConstants$(!STF_LANGUAGE)
	ifstr(i) $(!NTN_Origination) == "NCPA"
		set Continue = $(OK)
	endif
	read-syms FileConstants$(!STF_LANGUAGE)

	detect date

	set-title  $(FunctionTitle)

	set to		= Begin
	set from	= Begin
	;
	;  Assume all is well.
	;
	set CommonStatus = STATUS_SUCCESSFUL

	EndWait

	;
	;	Set up the operation-mode-based variables and gaily welcome
	;	the user.  If the "install mode" variable is improperly set,
	;	assume this is a new installation.
	;

Begin = +
	Set ActivateDetection = FALSE

	Ifstr(i) $(!NTN_InstallMode) == deinstall
		set StartLabel = removeadapter
	else-Ifstr(i) $(!NTN_InstallMode) == Update
		set StartLabel = UpgradeSoftware
	else-Ifstr(i) $(!NTN_InstallMode) == bind
		set StartLabel = bindingadapter
	else-Ifstr(i) $(!NTN_InstallMode) == configure
;		set ActivateDetection = TRUE
		set StartLabel = configureadapter
		;
		;	You cannot config the software component
		;
		Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
			Debug-Output "Cannot configure the PRISM II driver."
			Shell $(UtilityInf), RegistryErrorString, "CANNOT_CONFIGURE_SOFTWARE"
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "ShellCode error: cannot get an error string."
				goto ShellCodeError
			endif
			set Error	= $($R0)
			set from	= end
			set to		= end
			goto nonfatalinfo
		endif
	else
;		set ActivateDetection		= TRUE
		set StartLabel				= installadapter
		set OEM_ABANDON_OPTIONS		= {}
		set OEM_ABANDON_SOFTWARE	= FALSE
		set OEM_ABANDON_ON			= TRUE
	endif

	Ifcontains(i) $(Option) in { "PRISM2_MINI_PCI" }
		install "PCI-Defaults"
	else
		install "PCMCIA-Defaults"
	endif

	install "Read-Defaults"
	install "Parm-WriteReg"

	Set from	= $(fatal)
	Set to		= $(fatal)
	Goto $(StartLabel)

;-----------------------------------------------
; Installation Section
;-----------------------------------------------

installadapter = +
	;
	; Create/recreate the Registry's PCMCIA database entry for the CW10 adapter
	;
	Debug-Output "*** installadapter ***"
	Debug-Output "PcmciaDataBaseKeyName = "$(PcmciaDataBaseKeyName)

	Ifcontains(i) $(Option) in { "PRISM2_MINI_PCI" }
		; 
		; PCI card so go to PCI card detection section.
		;
		set IsPCICard = $(TRUE)
		Debug-Output "IsPCICard is set to: TRUE"
		goto PCIInstall
	endif

	Ifcontains(i) $(Option) in { "PRISM2_PCMCIA", "PRISM1_PCMCIA" }
		set ManKeyName = "INTERSIL\HFA384X/IEEE";
	else-Ifcontains(i) $(Option) in { "PRISM_FREEDOM_PCMCIA" }
		set ManKeyName = "INTERSIL\PRISM FREEDOM PCMCIA ADAPTER"
	else-Ifcontains(i) $(Option) in { "PRISM2_5_PCMCIA" }
		set ManKeyName = "INTERSIL-PRISM 2 5 PCMCIA ADAPTER"
	else
		set ManKeyName = "CHOICE MICROSYSTEMS\CW10/IEEE";
	endif
	Debug-Output "ManKeyName = "$(ManKeyName)

	set KeyPcmciaDataBase = ""
	OpenRegKey $(!REG_H_LOCAL) "" $(PcmciaDataBaseKeyName) $(MAXIMUM_ALLOWED) KeyPcmciaDataBase
	Shell "" ExCreateRegKey $(KeyPcmciaDataBase) $(ManKeyName)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		CloseRegKey $(KeyPcmciaDataBase)
		goto ShellCodeError
	endif

	OpenRegKey $(KeyPcmciaDataBase) "" $(ManKeyName) $(MAXIMUM_ALLOWED) KeyTemp
	SetRegValue $(KeyTemp) {Driver,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)}
	CloseRegKey $(KeyTemp)
	CloseRegKey $(KeyPcmciaDataBase)

	Debug-Output "Driver Value set in ManKey"
	;
	; Check whether the same version of the software exists
	;

	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

	Ifstr $(KeyProduct) != $(KeyNull)
		;
		; Same version already existed in the local machine
		; Popup the dialog and ask the user whether he wants to continue
		;
		Debug-Output "ProductKeyName already exists = "$(ProductKeyName)
		CloseRegKey $(KeyProduct)

		ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
			Debug-Output "Cannot Install the same software again"

			Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
				$(ProductVersion)
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "ShellCode error: cannot get an error string."
				goto ShellCodeError
			endif

			goto end
		else
			Debug-Output "Add a new adapter card?"

			Shell $(UtilityInf), CardExistedDlg

			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "ShellCode error: cannot get an error string."
				goto ShellCodeError
			endif

			ifstr(i) $($R1) != "OK"
				goto end
			endif
			set OldVersionExisted = $(TRUE)
		endif
	endif
 
	goto ContinuePCMCIA

PCIInstall =+

;	set Vendor = 0x1260   
;	set DeviceID = 0x3873
 	set Vendor = 4704   
	set DeviceID = 14451
	Debug-Output "$(InfFile) : VendorID = $(Vendor)"
	Debug-Output "$(InfFile) : CFID = $(DeviceID)"
	set AdapterList = {}

	Shell $(UtilityInf), GetPCIInformation, $(Vendor), $(DeviceID)

 	ifint $($ShellCode) != $(!SHELL_CODE_OK)
 		goto ShellCodeError
 	endif

 	ForListDo $($R0)
		Debug-Output "$(InfFile) : "*($($),1)"---"*($($),2)
     	set AdapterList = >($(AdapterList), {*($($),1), *($($),2), $(DeviceID)})
 	EndForListDo
 

	ifstr(i) $(AdapterList) == {}                 
 		set Error = $(CantFindACard)
 		set CommonStatus = STATUS_USERCANCEL
 		set from = end
 		goto end
 	endif

	set CardsToInstall = {}
    Debug-Output "$(InfFile) : Adapterlist = $(AdatperList)"

	ForListDo $(AdapterList)
 		set DetectedBusNum = *($($),1)
 		set DetectedSlotNum = *($($),2)
 		set DeviceID = *($($),3)
 		Debug-Output "$(InfFile) : DetectedBusNumber = $(DetectedBusNum)"
 		Debug-Output "$(InfFile) : DetectedSlotNum = $(DetectedSlotNum)"

		Shell $(UtilityInf), IsNetCardAlreadyInstalled, $(DetectedBusNum), +
 				$(DetectedSlotNum), $(GenericDriverName), $(ProductHardwareName)

		ifstr(i) $($R1) != "YES"
      		set CardsToInstall = >($(CardsToInstall), $($))
   		endif 

	EndForListDo

	ifstr(i) $(CardsToInstall) == {}
 		set Error = $(CardsAreAllInstalled)
 		set CommonStatus = STATUS_USERCANCEL
 		set from = end
 		goto end
 	endif

ContinuePCMCIA =+
 
;
;  dll load addition
;
	Debug-Output "Calling DoAskSource."

	Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO

	Ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		Goto ShellCodeError
	Else-Ifstr(i) $($R0) == STATUS_FAILED
		Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error: cannot get an error string."
			goto ShellCodeError
		endif
		set Error = $($R0)
		Goto fatal
	Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
		Goto successful
	Endif
	Set SrcDir = $($R1)

	Debug-Output "Done DoAskSource, calling Install-Dll."
;
;	Run Dll for updating parameters
;
	install "Install-Dll"

	Debug-Output "Done Install-Dll, going to adaptersetup."

;	Don't want to show Advance properties during install.
;	goto adaptersetup
	goto skipoptions

;-----------------------------------------------
; Configuration Section
;-----------------------------------------------
;
;	Get the current values of all the parameters
;
configureadapter = +

	Debug-Output "Starting configureadapter."

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

	;
	; Get the other parameters;  they're attached to the service parameters key
	;
	Debug-Output "INF: Shelling to FindService"
	Shell $(UtilityInf) FindService, $(KeyProduct)
	Ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "INF: FindService shell failure"
		Goto ShellCodeError
	Endif
	Ifstr(i) $($R0) != NO_ERROR
		Debug-Output "INF: FindService Shell error: "$($R0)
		Goto fatalregistry
	endif

	Set KeyParameters = $($R2)

	;
	;  We don't need the services key, so close it.
	;
	CloseRegKey $($R1)

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

	set OldVersionExisted = $(TRUE)

	install "Parm-ReadReg"


;	Shell $(ParamInf) Param_SaveValues
;	Set CurrParamSettings = $($R0)
;
;	Put up the adapter configuration dialog if necessary.
;
;	Note that $(CurrParamSettings) has the old known parameter values.
;
adaptersetup = +

;	Shell "" DebugConfiguration "before displaying dialog"

	Debug-Output "Starting adaptersetup"

	Set from = adapteroptions


adapteroptions = +

	Debug-Output "Starting adapteroptions"

	LoadLibrary "Disk 1" $(!STF_WINDOWSSYSPATH)\$(DialogDllName) hLib

	read-syms FileDependentDlg$(!STF_LANGUAGE)

	ui start "InputDlg"  $(hLib)

	set ExitButton  = $(ButtonPressed)

	Debug-Output " ButtonPressed "$(ButtonPressed)

	FreeLibrary $(hLib)

	ifstr(i) $(DLGEVENT) == "CONTINUE"
		Debug-Output "Action: Continue"

		install "Parm-UI-values"
		set ExitButton			= $(ButtonPressed)

		ui pop 1
;		goto nextstep
	else-ifstr(i) $(DLGEVENT) == "EXIT"
		set CommonStatus = STATUS_USERCANCEL
		Debug-Output "Action: exit. Bye."
		ui pop 1
		goto end
	else
		;
		; Unknow command
		;
		ui pop 1

		Debug-Output "Action: unknown. Bye."
		goto end
	endif

	Debug-Output " Combo list out "$(ComboListItemsOut)

;
;	If installing, go create the necessary keys;
;	if configuring, they're already open.
;
skipoptions =+

	Debug-Output "Starting skipoptions."

	ifint $(OldVersionExisted) == $(TRUE)
		Debug-Output "Older version existed."

		ifstr(i) $(!NTN_InstallMode) == configure
			goto writeparameters
		endif
	endif
	StartWait
	;
	; Add Software Component
	;
	ifint $(OldVersionExisted) == $(FALSE)

		Debug-Output "No older version."

		ifstr(i) $(!NTN_InstallMode) == "install"
			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
					set Error = $($R0)
					Goto fatal
				Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
					Goto successful
				Endif

				Set SrcDir = $($R1)

			Endif

			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
		endif



		Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), +
			$(ProductSoftwareName), +
			$(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
			$(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
			$(NetEventDLL)

		Set OEM_ABANDON_SOFTWARE = TRUE

		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error"
			goto ShellCodeError
		endif
		;
		;	At this point:
		;		$R1 contains the product version key handle;
		;		$R2 contains the NetRules subkey handle;
		;		$R3 contains the new Services key handle; and
		;		$R4 contains the Parameters key
		;		$R5 contains the Linkage Key
		;
		set RegistryErrorIndex	= $($R0)
		set KeyProduct			= $($R1)
		Set SoftNetRulesKey		= $($R2)
		CloseRegKey $($R3)
		CloseRegKey $($R4)
		CloseRegKey $($R5)

		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			EndWait
			Debug-Output "Registry error: add software components"
			CloseRegKey $(KeyProduct)
			CloseRegKey $(SoftNetRulesKey)
			goto fatalregistry
		endif

		set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
					{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
					{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
					{Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
					{Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
					{ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
					{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}

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

		set RegistryErrorIndex = $($R0)

		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			EndWait
			Debug-Output "Registry error: add value list."
			CloseRegKey $(KeyProduct)
			CloseRegKey $(SoftNetRulesKey)
			goto fatalregistry
		endif

		set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
					{use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
					{bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
					{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
					{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
					{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}

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

		set RegistryErrorIndex = $($R0)

		CloseRegKey $(KeyProduct)
		CloseRegKey $(SoftNetRulesKey)

		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			EndWait
			Debug-Output "Resgitry error: add value list."
			goto fatalregistry
		endif
	endif
;
;	Create the HARDWARE\Netcard region and its corresponding service
;
	Debug-Output "Calling AddHardwareComponent."

	Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)

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

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "Cannot add hardware component"
		goto ShellCodeError
	endif
	set RegistryErrorIndex = $($R0)

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

;
;	At this point:
;		$R1  Registry key variable for HARDWARE\Netcard\(n)
;		$R2  Registry key variable for HARDWARE\Netcard\(n)\\NetRules
;		$R3  Registry key handle for <service>\Parameters key
;		$R4  Adapter number assigned to adapter
;		$R5  Service name generated by combining svc name with adapter number
;
	set KeyParameters		= $($R3)
	set KeyAdapterRules		= $($R2)
	set AdapterNumber		= $($R4)

	set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
						{Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+
						{Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+
				{ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
				{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 "ShellCode error"
		goto ShellCodeError
	endif

	CloseRegKey $($R1)

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

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

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

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		EndWait
		Debug-Output "Resgitry error: add value list."
		CloseRegKey $(KeyParameters)
		CloseRegKey $(KeyAdapterRules)
		goto fatalregistry
	endif

	CloseRegKey $(KeyAdapterRules)

	;
	;	Only create Defaults key when installing driver
	;	Write defaults to registry before updating values in lists
	;
	Debug-Output "Starting Install-Defaults."

	CreateRegKey $(KeyParameters) {"defaults",0,GenericClass} "" $(MAXIMUM_ALLOWED) "" DefaultsKey
	Ifstr(i) $(DefaultsKey) == $(KeyNull)
		Debug-Output "Registry error: Create defaults subkey"
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	Endif
	
	Debug-Output "CreateKey successful."

	Shell  $(UtilityInf), AddValueList, $(DefaultsKey), $(PRISMValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(DefaultsKey)
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	Debug-Output "Adding PRISM defaults successful."

	Shell  $(UtilityInf), AddValueList, $(DefaultsKey), $(NetTypeValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(DefaultsKey)
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	Debug-Output "Adding defaults based on NetworkType, successful."

	Shell  $(UtilityInf), AddValueList, $(DefaultsKey), $(PHYTypeValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(DefaultsKey)
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	Debug-Output "Adding defaults based on PHYType, successful."

	goto writeparameters

;
;	REQUIRED:	$(KeyParameters) contains service Parameters key handle
;
writeparameters = +

	Debug-Output "Starting writeparameters."

	ifint $(IsPCICard) == $(TRUE)
		set BusTypeNum		= 5
		set BusNumber		= $(DetectedBusNum)
 		set SlotNumber		= $(DetectedSlotNum) 
 	else
		set BusTypeNum		= 1
		set BusNumber		= 0
	endif

;
;	Add the rest of the parameters to the Services area
;

	install "Parm-WriteReg"

	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NetValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	ifint $(IsPCICard) != $(TRUE)
		Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NetResourceList)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error."
			goto ShellCodeError
		endif
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(PRISMValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NetTypeValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(PHYTypeValueList)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error."
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)
	Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
		Debug-Output "Registry error: Add value list"
		CloseRegKey $(KeyParameters)
		goto fatalregistry
	endif

	CloseRegKey $(KeyParameters)

	EndWait

	goto successful

;-----------------------------------------------
; Binding section
;-----------------------------------------------
bindingadapter =+
	set Error = "Binding: Sorry, not yet implemented."
	goto fatal

;-----------------------------------------------
; Removeadapter section
;-----------------------------------------------

removeadapter = +
	Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
		; Remove Software Component
		Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
			$(ProductSoftwareName)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error"
			goto ShellCodeError
		endif

		set RegistryErrorIndex = $($R0)

		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			goto fatalregistry
		endif
		else
		Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), $(!NTN_RegBase)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error"
			goto ShellCodeError
		endif

		set RegistryErrorIndex = $($R0)

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

	goto end

;-----------------------------------------------
; Upgrade Software section
;-----------------------------------------------

UpgradeSoftware = +
	;
	; First determine whether we want to do upgrade or update for software
	; or hardware component. Then we will determine whether the Mode is
	; update or upgrade.
	;
	; If the same version of the product existed in the registry, we do
	; update. Otherwise, we will do a upgrade
	;
	ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
		; Upgrade software component
		;
		; see whether the same version exist or not
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

		Ifstr $(KeyProduct) != $(KeyNull)
			GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
			set Version = *($(VersionInfo), 4)

			;
			; Update the binaries
			;
			Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)

			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "ShellCode error"
				goto ShellCodeError
			endif

			set !UG_Filename = $($R0)

			ifstr(i) $(!UG_Filename) != ""
				install "Install-Update"
				ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
					goto fatal
				endif
			endif

			; Upgrade the version number
			;
			SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
			SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}

			;
			; do nothing for update
			;
			ifint $(Version) != $(ProductVersion)
				;
				; If the major version number is not the same,
				; it is major upgrade. So let Upgrade the product
				;
				;
				; make other upgrade change if necessary
				;
			endif
			CloseRegKey $(KeyProduct)
		else
			;
			; Cannot Open software key, goto ERROR
			;
			goto fatalregistry
		endif
	else
		;
		; upgrade/update hardware component
		; There is no different between upgrade and update for hardware
		; component
		;
		; 1. Get the Service Name
		; 2. Change the NetRule section if necessary
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) +
				$(MAXIMUM_ALLOWED) NetworkCardKey
		Ifstr(i) $(NetworkCardKey) != $(KeyNull)
			;
			; Get Service name
			;
			GetRegValue $(NetworkCardKey),"ServiceName", ServiceNameInfo
			set ServiceName = *($(ServiceNameInfo), 4)

			;
			; Change the NetRule if necessary
			;
			OpenRegKey $(NetworkCardKey) "" "NetRules" +
			$(MAXIMUM_ALLOWED) NetRuleKey
			Ifstr(i) $(NetRuleKey) != $(KeyNull)
				;
				; Make the change....
				;
			else
				;
				; Error, cannot open net rules key
				;
				goto fatalregistry
			endif

			CloseRegKey $(NetRules)
			CloseRegKey $(NetworkCardKey)
		else
			;
			; Error, cannot open network card key
			;
			goto fatalregistry
		endif
		;
		; 3. Change the service section of the hardware. i.e.,
		;	ParameterName change, value change, etc.
		;
		OpenRegKey $(!REG_H_LOCAL) "" +
				$(!NTN_ServiceBase)"\"$(ServiceName) +
				$(MAXIMUM_ALLOWED) ServiceKey

		Ifstr(i) $(ServiceKey) != $(KeyNull)
			;
			; Get the ServiceKey to change the Start value
			; or Type value. Or open Parameters key to
			; change the hardware parameters if necessary.
			;
			CloseRegKey $(ServiceKey)
		else
			;
			; Error, cannot open network card key
			;
			goto fatalregistry
		endif
	endif

	goto end
	;
	; End of Upgrade Software
	;

;
;  Escape hatches
;
successful = +
	goto end

abandon = +
	ForListDo $(OEM_ABANDON_OPTIONS)
	Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
		$(ProductSoftwareName), $($)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error"
		goto ShellCodeError
	endif

	set RegistryErrorIndex = $($R0)

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

	Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
		; Remove Software Component
		Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
			$(ProductSoftwareName), FALSE
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "ShellCode error"
			goto ShellCodeError
		endif

		set RegistryErrorIndex = $($R0)

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

	goto end

;
; warning display
;
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
;
; non fatal error display
;
nonfatalinfo = +
	Set Severity = STATUS
	Set CommonStatus = STATUS_USERCANCEL
	goto nonfatalmsg
nonfatal = +
	Set Severity = NONFATAL
	goto nonfatalmsg
nonfatalmsg = +
	ifstr(i) $(Error) == ""
		Set Severity = NONFATAL
		Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		set Error = $($R0)
	endif
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	ifstr(i) $($R1) == "OK"
		goto $(from)
	else
		goto "end"
	endif

;
;  Registry is broken
;
fatalregistry = +
	Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	set Error = $($R0)
	goto fatal
;
;  Netcard detection failure
;
fataldetect = +
	Shell $(UtilityInf), RegistryErrorString, "CANNOT_DETECT"
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "ShellCode error: cannot get an error string."
		goto ShellCodeError
	endif
	set Error = $($R0)
	Goto fatal
;
; fatal error display
;
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

;
;  Shelling error
;
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
	;
	; if OEM_ABANDON_ON == TRUE, then remove the registry entries
	;
	ifstr(i) $(OEM_ABANDON_ON) == TRUE
		set OEM_ABANDON_ON = FALSE
		goto abandon
	endif
	goto end

end = +
	goto term

term = +

	Return $(CommonStatus)

[DebugConfiguration]

	Set InfName = "OEMNANDC.INF"
	Debug-Output $(InfName)" **CONFIGURATION STATE: "$($0)
	Debug-Output $(InfName)" IRQ_Level is "$(!p:IRQ_Level)
	Debug-Output $(InfName)" IOBaseAddrValue is "$(!p:IOBaseAddrValue)
	Debug-Output $(InfName)" TransceiverValue is "$(!p:TransceiverValue)
	Debug-Output $(InfName)" MappedValue is "$(!p:MappedValue)

	return


;***************************************************************
;  INSTALL SECTIONS
;***************************************************************
[Install-Option]
	set STF_VITAL = ""

	ifstr(i) $(AddCopy) == "YES"

		;
		; Add the files to the copy list
		;
		;  BUGBUG: eliminate the "nt2" in the next line when Sunil fixes
		;		the other INF files
		;
;		AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
;		AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)

	endif

	ifstr(i) $(DoCopy) == "YES"

		;
		; Copy files in the copy list
		;
;		set !STF_NCPA_FLUSH_COPYLIST = TRUE
;		CopyFilesInCopyList

	endif

	Exit

[Install-Update]
	set STF_VITAL		= ""
	set STF_OVERWRITE	= "VERIFYSOURCEOLDER"
	;set STF_VERSION		= "YES"

	AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
	AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)

	set !STF_NCPA_FLUSH_COPYLIST = TRUE
	CopyFilesInCopyList

	exit

[Install-Dll]
;	set STF_VITAL		= ""
;	AddSectionFilesToCopyList Files-Dll $(SrcDir) $(!STF_WINDOWSSYSPATH)
;	set !STF_NCPA_FLUSH_COPYLIST = TRUE
;	CopyFilesInCopyList
	exit

;***************************************************************
;  Parameter SECTIONS
;***************************************************************

[Parm-ReadReg]
	set ValueName	= ""
	set ValueData	= ""
	set ValueStr 	= ""
	set ValueList	= {}
	;
	; Get the old values
	;
	EnumRegValue $(KeyParameters) ValueList

	ForListDo $(ValueList)
		set ValueItem	= $($)
		set ValueName	= *($(ValueItem),1)
		set ValueData	= *($(ValueItem),4)

  ; resources
		ifstr(i) $(ValueName) == "IoBaseAddress"
			set IOBaseAddrItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "InterruptNumber"
			set IRQValueItem = $(ValueData)
  ; general - combo
		else-ifstr(i) $(ValueName) == "DSChannel"
			set PHYParmItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "NetworkType"
			set NetTypeItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "TxRate"
			set TxRateItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "ATIMWindow"
			set ATIMWindowItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "ListenInterval"
			set ListenIntervalItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "RTSThresh"
			set RTSThreshItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "FragThresh"
			set FragThreshItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "PSMode"
			set PSModeItem = $(ValueData)
		else-ifstr(i) $(ValueName) == "WepReq"
			set WepReqItem = $(ValueData)
  ; checkbox
		else-ifstr(i) $(ValueName) == "Pcmcia"
			set PcmciaValue = $(ValueData)
  ; edit
		else-ifstr(i) $(ValueName) == "SSID"
			set SSIDValue = $(ValueData)

		endif

	EndForListDo


	ifint $(PcmciaValue) == 1
		set Chk1 = "ON"
	else
		set Chk1 = "OFF"
	endif

	set IOBaseAddrUIVal = *($(IOBaseAddrList), ~($(IOBaseAddrValues),$(IOBaseAddrItem)))
	ifstr(i) $(IOBaseAddrUIVal) == ""
		set IOBaseAddrUIVal = *($(IOBaseAddrList), 1)
	endif

	set IRQValueUIVal = *($(IRQList), ~($(IRQValues),$(IRQValueItem)))
	ifstr(i) $(IRQValueUIVal) == ""
		set IRQValueUIVal = *($(IRQList), 1)
	endif

	set PHYParmUIVal = *($(PHYParmList), ~($(PHYParmValues),$(PHYParmItem)))
	ifstr(i) $(PHYParmUIVal) == ""
		set PHYParmUIVal = *($(PHYParmList), 1)
	endif

	set NetTypeUIVal = *($(NetTypeList), ~($(NetTypeValues),$(NetTypeItem)))
	ifstr(i) $(NetTypeUIVal) == ""
		set NetTypeUIVal = *($(NetTypeList), 1)
	endif

	set TxRateUIVal = *($(TxRateList), ~($(TxRateValues),$(TxRateItem)))
	ifstr(i) $(TxRateUIVal) == ""
		set TxRateUIVal = *($(TxRateList), 1)
	endif

	set ATIMWindowUIVal = *($(ATIMWindowList), ~($(ATIMWindowValues),$(ATIMWindowItem)))
	ifstr(i) $(ATIMWindowUIVal) == ""
		set ATIMWindowUIVal = *($(ATIMWindowList), 1)
	endif

	set ListenIntervalUIVal = *($(ListenIntervalList), ~($(ListenIntervalValues),$(ListenIntervalItem)))
	ifstr(i) $(ListenIntervalUIVal) == ""
		set ListenIntervalUIVal = *($(ListenIntervalList), 6)
	endif

	set RTSThreshUIVal = *($(RTSThreshList), ~($(RTSThreshValues),$(RTSThreshItem)))
	ifstr(i) $(RTSThreshUIVal) == ""
		set RTSThreshUIVal = *($(RTSThreshList), 6)
	endif

	set FragThreshUIVal = *($(FragThreshList), ~($(FragThreshValues),$(FragThreshItem)))
	ifstr(i) $(FragThreshUIVal) == ""
		set FragThreshUIVal = *($(FragThreshList), 6)
	endif

	set PSModeUIVal = *($(PSModeList), ~($(PSModeValues),$(PSModeItem)))
	ifstr(i) $(PSModeUIVal) == ""
		set PSModeUIVal = *($(PSModeList), 1)
	endif

	set WepReqUIVal = *($(WepReqList), ~($(WepReqValues),$(WepReqItem)))
	ifstr(i) $(WepReqUIVal) == ""
		set WepReqUIVal = *($(WepReqList), 1)
	endif

	;  Save the settings as they were read from the Registry.
exit

[Parm-UI-values]
		set IOBaseAddrUIVal		= $(Combo1Out)
		set IRQValueUIVal		= $(Combo2Out)
		set TxRateUIVal			= $(Combo3Out)
		set PHYParmUIVal		= $(Combo4Out)
		set NetTypeUIVal		= $(Combo5Out)
		set RTSThreshUIVal		= $(Combo6Out)
		set FragThreshUIVal		= $(Combo7Out)
		set PSModeUIVal			= $(Combo8Out)
		set WepReqUIVal			= $(Combo9Out)
		set ATIMWindowUIVal		= $(Combo10Out)
		set ListenIntervalUIVal	= $(Combo11Out)

		set SSIDValue			= *($(EditTextOut),1)

		Set Chk = *($(CheckItemsOut), 1)
		Ifstr(i) $(Chk) == "ON"
			Set PcmciaValue = 1
			set Chk1 = "ON"
		Else
			Set PcmciaValue = 0
			set Chk1 = "OFF"
		Endif
exit
[Parm-WriteReg]

	Debug-Output "Starting Parm-WriteReg."

	set IOBaseAddrValue		= *($(IOBaseAddrValues), ~($(IOBaseAddrList),$(IOBaseAddrUIVal)))
	set IRQValue			= *($(IRQValues), ~($(IRQList),$(IRQValueUIVal)))
	set PHYParmValue		= *($(PHYParmValues), ~($(PHYParmList),$(PHYParmUIVal)))
	set NetTypeValue		= *($(NetTypeValues), ~($(NetTypeList),$(NetTypeUIVal)))
	set TxRateValue			= *($(TxRateValues), ~($(TxRateList),$(TxRateUIVal)))
	set ATIMWindowValue		= *($(ATIMWindowValues), ~($(ATIMWindowList),$(ATIMWindowUIVal)))
	set ListenIntervalValue	= *($(ListenIntervalValues), ~($(ListenIntervalList),$(ListenIntervalUIVal)))
	set RTSThreshValue		= *($(RTSThreshValues), ~($(RTSThreshList),$(RTSThreshUIVal)))
	set FragThreshValue		= *($(FragThreshValues), ~($(FragThreshList),$(FragThreshUIVal)))
	set PSModeValue			= *($(PSModeValues), ~($(PSModeList),$(PSModeUIVal)))
	set WepReqValue			= *($(WepReqValues), ~($(WepReqList),$(WepReqUIVal)))


	set NetValueList = {+
			{MediaType,		$(NoTitle),$(!REG_VT_DWORD),1},+
			{BusNumber,		$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
			{BusType,		$(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+
			{MajorVersion,	$(NoTitle),$(!REG_VT_SZ),2},+
			{MinorVersion,	$(NoTitle),$(!REG_VT_SZ),0},+
			}
	set NetResourceList = {+
			{IoBaseAddress, $(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddrValue)},+
			{IoLength,		$(NoTitle),$(!REG_VT_DWORD),64},+
			}
;
;	If n/a then don't write InterruptNumber registry value.
;
	ifstr(i) $(IRQValueUIVal) != "n/a"
		ifint $(IsPCICard) != $(TRUE)
			set NetResourceList = >($(NetResourceList), +
							{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)})
		endif
	endif

	ifint $(IsPCICard) == $(TRUE)
		set NetValueList = >($(NetValueList), +
							{SlotNumber,$(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)})
	else
		set NetValueList = >($(NetValueList), +
							{Pcmcia,$(NoTitle),$(!REG_VT_DWORD),$(PcmciaValue)})
	endif

	set PRISMValueList = {+
			{SSID,			$(NoTitle),$(!REG_VT_SZ),	$(SSIDValue)},+
			{RTSThresh,		$(NoTitle),$(!REG_VT_DWORD),$(RTSThreshValue)},+
			{FragThresh,	$(NoTitle),$(!REG_VT_DWORD),$(FragThreshValue)},+
			{Encapsulation,	$(NoTitle),$(!REG_VT_DWORD),$(EthConvValue)},+
			{TxRate,		$(NoTitle),$(!REG_VT_DWORD),$(TxRateValue)},+
			{WepReq,		$(NoTitle),$(!REG_VT_DWORD),$(WepReqValue)},+
			{ATIMWindow,	$(NoTitle),$(!REG_VT_DWORD),$(ATIMWindowValue)},+
			{ListenInterval,$(NoTitle),$(!REG_VT_DWORD),$(ListenIntervalValue)},+
			{DecryptInDriver,$(NoTitle),$(!REG_VT_DWORD),$(DecryptInDriverValue)},+
			{EncryptInDriver,$(NoTitle),$(!REG_VT_DWORD),$(EncryptInDriverValue)},+
			{WEPFactor,		$(NoTitle),$(!REG_VT_DWORD),$(WEPFactorValue)},+
			{PollInDriver,	$(NoTitle),$(!REG_VT_DWORD),$(PollInDriverValue)},+
			{IBSSInDriver,	$(NoTitle),$(!REG_VT_DWORD),$(IBSSInDriverValue)},+
			{PreambleMode,	$(NoTitle),$(!REG_VT_DWORD),$(PreambleModeValue)},+
			}
	set NetTypeValueList = {+
			{NetworkType,	$(NoTitle),$(!REG_VT_DWORD),$(NetTypeValue)},+
			{PSMode,		$(NoTitle),$(!REG_VT_DWORD),$(PSModeValue)},+
			{PSLevel,		$(NoTitle),$(!REG_VT_DWORD),$(PSLevelValue)},+
			}
	set PHYTypeValueList = {+
			{DSChannel,		$(NoTitle),$(!REG_VT_DWORD),$(PHYParmValue)},+
			}

exit

;***************************************************************
;  Symbol SECTIONS
;***************************************************************

[ProductType]
	STF_PRODUCT  = Winnt
	STF_PLATFORM = I386

[Files-Inf]
	1, oemsetup.inf, SIZE=40558, RENAME=$(!UG_Filename)

[Files-PRISM1_EVB_PCMCIA]
	1, cw10.sys, SIZE=12800

[Files-PRISM2_EVB_PCMCIA]
	1, cw10.sys, SIZE=12800

[Files-PRISM1_PCMCIA]
	1, cw10.sys, SIZE=12800

[Files-PRISM2_PCMCIA]
	1, cw10.sys, SIZE=12800

[Files-PRISM2_MINI_PCI]
	1, cw10.sys, SIZE=12800

[Files-PRISM_FREEDOM_PCMCIA]
	1, cw10.sys, SIZE=12800

[Files-PRISM2_5_PCMCIA]
	1, cw10.sys, SIZE=12800

[Files-Dll]
	1, cw10.dll , SIZE=7168

[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		= $(GenericAdapterName)" Setup"

	ProductSoftwareDescription	= $(GenericDriverName)
	ProductHardwareDescription	= $(GenericAdapterName)

	ProductSoftwareTitle		= $(GenericDriverName)
	ProductHardwareTitle		= $(GenericAdapterName)

	DialogDllName		= "cw10.dll"

	IOBaseAddrList		= ^(IOBaseAddrChoices, 1)
	IOBaseAddrValues	= ^(IOBaseAddrChoices, 2)

;	IRQList 			= ^(IRQChoices, 1)
;	IRQValues			= ^(IRQChoices, 2)

	DSChanList 			= ^(DSChanChoices, 1)
	DSChanValues		= ^(DSChanChoices, 2)

	STA_NetTypeList 	= ^(STA_NetTypeChoices, 1)
	STA_NetTypeValues	= ^(STA_NetTypeChoices, 2)

	STA_TxRateList 		= ^(STA_TxRateChoices, 1)
	STA_TxRateValues	= ^(STA_TxRateChoices, 2)

	STA_ATIMWindowList 	= ^(STA_ATIMWindowChoices, 1)
	STA_ATIMWindowValues= ^(STA_ATIMWindowChoices, 2)

	STA_ListenIntervalList	= ^(STA_ListenIntervalChoices, 1)
	STA_ListenIntervalValues= ^(STA_ListenIntervalChoices, 2)

	RTSThreshList 		= ^(RTSThreshChoices, 1)
	RTSThreshValues		= ^(RTSThreshChoices, 2)

	FragThreshList 		= ^(FragThreshChoices, 1)
	FragThreshValues	= ^(FragThreshChoices, 2)

	STA_PSModeList 		= ^(STA_PSModeChoices, 1)
	STA_PSModeValues	= ^(STA_PSModeChoices, 2)

	WepReqList 			= ^(WepReqChoices, 1)
	WepReqValues		= ^(WepReqChoices, 2)

	CantFindACard 		= "Wireless Adapter is not present."
	CardsAreAllInstalled= "All present wireless adapteres are already installed."

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

;[MemoryMappedChoicesENG]
;	Map_1				= 1, "ON"
;	Map_2				= 0, "OFF"

[FileDependentDlgENG]
	DlgText				= "Please select values for the follwing fields:"

	DlgType				= "RadioCombination"
	DlgTemplate			= "CW10"
	Caption				= $(FunctionTitle)

	CBOptionsGreyed		= {}
	NotifyFields		= {NO, NO}
	HelpContext			= $(!IDH_DB_OEMNADE2_INS)

	Combo1Label			= "I/O Base:"
	Combo2Label			= "IRQ Level:"
	Combo3Label			= "Tx Rate:"
	Combo4Label			= $(PHYParmLabel)
	Combo5Label			= "Mode:"
	Combo6Label			= "RTS Threshold:"
	Combo7Label			= "Fragmentation Threshold"
	Combo8Label			= "Power Saving:"
	Combo9Label			= "WEP:"
	Combo10Label		= "ATIM Window:"
	Combo11Label		= "Listen Interval:"

	Edit1Label			= "SS ID:"

	CheckBox1			= "PCMCIA card"

	Combo1List			= $(IOBaseAddrList)
	Combo1Out 			= $(IOBaseAddrUIVal)

	Combo2List			= $(IRQList)
	Combo2Out 			= $(IRQValueUIVal)

	Combo3List			= $(TxRateList)
	Combo3Out 			= $(TxRateUIVal)

	Combo4List			= $(PHYParmList)
	Combo4Out 			= $(PHYParmUIVal)

	Combo5List			= $(NetTypeList)
	Combo5Out 			= $(NetTypeUIVal)

	Combo6List			= $(RTSThreshList)
	Combo6Out 			= $(RTSThreshUIVal)

	Combo7List			= $(FragThreshList)
	Combo7Out 			= $(FragThreshUIVal)

	Combo8List			= $(PSModeList)
	Combo8Out 			= $(PSModeUIVal)

	Combo9List			= $(WepReqList)
	Combo9Out 			= $(WepReqUIVal)

	Combo10List			= $(ATIMWindowList)
	Combo10Out 			= $(ATIMWindowUIVal)

	Combo11List			= $(ListenIntervalList)
	Combo11Out 			= $(ListenIntervalUIVal)

	ComboListItemsIn 	= {Combo1List,Combo2List,Combo3List,+
							Combo4List, Combo5List, Combo6List,+
							Combo7List, Combo8List, Combo9List,+
							Combo10List, Combo11List+
							}
	ComboListItemsOut	= {Combo1Out,Combo2Out,Combo3Out,+
							Combo4Out, Combo5Out, Combo6Out,+
							Combo7Out, Combo8Out, Combo9Out,+
							Combo10Out, Combo11Out+
							}

	EditTextIn			= {$(SSIDValue)}
	EditTextLim			= {"32"}

	CheckItemsIn		= {$(Chk1)}

[IOBaseAddrChoices]
	IOBase_1 			= "4000",16384
	IOBase_2 			= "5000",20480
	IOBase_3 			= "6000",24576
	IOBase_4 			= "7000",28672
	IOBase_5 			= "8000",32768
	IOBase_6			= "9000",36864
	IOBase_7			= "A000",40960
	IOBase_8			= "B000",45056
	IOBase_9			= "C000",49152
	IOBase_10			= "D000",53248
	IOBase_19 			= "180",384
	IOBase_11 			= "200",512
	IOBase_12 			= "240",576
	IOBase_13 			= "280",640
	IOBase_14 			= "2C0",714
	IOBase_15 			= "300",768
	IOBase_16			= "340",832
	IOBase_17			= "380",896
	IOBase_18			= "3C0",960

[IRQChoices]
	IRQ_3				= "3",3
	IRQ_4				= "4",4
	IRQ_5				= "5",5
	IRQ_7				= "7",7
	IRQ_9				= "9",9
	IRQ_10				= "10",10
	IRQ_11				= "11",11
	IRQ_12				= "12",12
	IRQ_15				= "15",15
	IRQ_na				= "n/a",0

[IRQPciChoices]
	IRQ_pci				= "n/a",0

[DSChanChoices]
	DSCHAN_1			= "n/a",6
;	DSCHAN_2			= "2",2
;	DSCHAN_3			= "3",3
;	DSCHAN_4			= "4",4
;	DSCHAN_5			= "5",5
;	DSCHAN_6			= "6",6
;	DSCHAN_7			= "7",7
;	DSCHAN_8			= "8",8
;	DSCHAN_9			= "9",9
;	DSCHAN_10			= "10",10
;	DSCHAN_11			= "11",11
;	DSCHAN_12			= "12",12

[STA_NetTypeChoices]
	NETTYPE_ADHOC		= "Ad Hoc Station",3
	NETTYPE_INFRA		= "Infrastructure Station",1

[STA_TxRateChoices]
	TXRATE_1			= "1 Mb/s", 1
	TXRATE_2			= "2 Mb/s", 2
	TXRATE_1_2			= "Auto 1 or 2 Mb/s", 3
	TXRATE_55			= "5.5 Mb/s", 4
	TXRATE_11			= "11 Mb/s", 8
	TXRATE_ALL			= "Fully Auto", 15

[STA_ATIMWindowChoices]
	ATIMWIN_0			= "Disabled", 0
	ATIMWIN_10			= "10 ms", 10
	ATIMWIN_20			= "20 ms", 20
	ATIMWIN_30			= "30 ms", 30
	ATIMWIN_40			= "40 ms", 40
	ATIMWIN_50			= "50 ms", 50
	ATIMWIN_60			= "60 ms", 60
	ATIMWIN_70			= "70 ms", 70
	ATIMWIN_80			= "80 ms", 80
	ATIMWIN_90			= "90 ms", 90

[STA_ListenIntervalChoices]
	LISTENINT_1			= "1 Beacon Per", 1
	LISTENINT_2			= "2 Beacon Per", 2
	LISTENINT_3			= "3 Beacon Per", 3
	LISTENINT_4			= "4 Beacon Per", 4
	LISTENINT_5			= "5 Beacon Per", 5
	LISTENINT_M			= "Maximum", 1

[STA_PSModeChoices]
	PS_DIS				= "Disabled", 1
	PS_EN				= "Enabled", 2

[RTSThreshChoices]
	RTSTHRESH_256		= "Always", 0
	RTSTHRESH_256		= "256 Bytes", 256
	RTSTHRESH_512		= "512 Bytes", 512
	RTSTHRESH_768		= "768 Bytes", 768
	RTSTHRESH_1024		= "1024 Bytes", 1024
	RTSTHRESH_1280		= "1280 Bytes", 1280
	RTSTHRESH_DIS		= "Disabled", 2560

[FragThreshChoices]
	FRAGTHRESH_256		= "256 Bytes", 256
	FRAGTHRESH_512		= "512 Bytes", 512
	FRAGTHRESH_768		= "768 Bytes", 768
	FRAGTHRESH_1024		= "1024 Bytes", 1024
	FRAGTHRESH_1280		= "1280 Bytes", 1280
	FRAGTHRESH_DIS		= "Disabled", 2560

[WepReqChoices]
	WEP_DIS				= "Disabled", 0
	WEP_MAN				= "Mandatory", 2

[STA_List]
	"PRISM1_EVB_PCMCIA"
	"PRISM2_EVB_PCMCIA"
	"PRISM1_PCMCIA"
	"PRISM2_PCMCIA"
	"PRISM2_MINI_PCI"
	"PRISM_FREEDOM_PCMCIA"
	"PRISM2_5_PCMCIA"

[DS_List]
	"PRISM1_EVB_PCMCIA"
	"PRISM2_EVB_PCMCIA"
	"PRISM1_PCMCIA"
	"PRISM2_PCMCIA"
	"PRISM2_MINI_PCI"
	"PRISM_FREEDOM_PCMCIA"
	"PRISM2_5_PCMCIA"


[ExCreateRegKey]
	Debug-Output "******************Entering [ExCreateRegKey]******************"
	set ECR_Result			= NO_ERROR
	set ECR_BaseKeyHandle	= $($0)
	set ECR_NewPath			= $($1)
	set KeyNull				= ""
	set MAXIMUM_ALLOWED		= 33554432
	Debug-Output "ExCreateRegKey - ECR_BaseKeyHandle = "$(ECR_BaseKeyHandle)
	Debug-Output "					ECR_NewPath = "$(ECR_NewPath)
	Debug-Output "					MAXIMUM_ALLOWED = "$(MAXIMUM_ALLOWED)
	Debug-Output "					KeyNull = "$(KeyNull)
	OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_NewPath) $(MAXIMUM_ALLOWED) +
			ECR_BaseKey
	Debug-Output "ECR_BaseKey = "$(ECR_BaseKey)
	Debug-Output "	OpenRegKey returned "$($R0)
	Ifstr $(ECR_BaseKey) == $(KeyNull)
		Debug-Output "ECR_BaseKey == KeyNull"
	Else
		Debug-Output "ECR_BaseKey != KeyNull"
		set ECR_KeyHandle = $(ECR_BaseKey)
		goto  ECR_Return
	Endif
	set ECR_TmpPath = ""
	Split-String $(ECR_NewPath) "\" ECR_PList
	Debug-Output "ECR_PList = "$(ECR_PList)
	ForListDo $(ECR_PList)
	Ifstr(i) $($) != "\"
		Ifint $(#) == 1
			set ECR_TmpPath = $($)
		Else
			set ECR_TmpPath = $(ECR_TmpPath)"\"$($)
		Endif
		Debug-Output "Determining if "$(ECR_TmpPath)" exists"
		OpenRegKey $(ECR_BaseKeyHandle) "" $(ECR_TmpPath) $(MAXIMUM_ALLOWED) ECR_BaseKey
		Ifstr $(ECR_BaseKey) == $(KeyNull)
			Debug-Output "Creating "$(ECR_TmpPath)
			CreateRegKey $(ECR_BaseKeyHandle)  {$(ECR_TmpPath),0,GenericClass} "" $(MAXIMUM_ALLOWED) "" ECR_KeyHandle
			Ifstr(i) $(ECR_KeyHandle) == $(KeyNull)
				set ECR_Result = $($R0)
				goto ECR_Return
			Endif
		Endif
	Endif
	EndForListDo
ECR_Return = +
	return $(ECR_Result) $(ECR_KeyHandle)

;***************************************************************
;  Default SECTIONS
;***************************************************************

[PCI-Defaults]
	set PollInDriverValue	= 0
	set IRQValueUIVal		= "n/a"
	set IRQList 			= ^(IRQPciChoices, 1)
	set IRQValues			= ^(IRQPciChoices, 2)
exit

[PCMCIA-Defaults]
	set PollInDriverValue	= 0
	set IRQValueUIVal		= "9"
	set IRQList 			= ^(IRQChoices, 1)
	set IRQValues			= ^(IRQChoices, 2)
exit

[Read-Defaults]
	;  set the default values

	; I/O Base Address		= 0x240
	set IOBaseAddrUIVal		= "240"

	; IRQ Level = 9
;	set IRQValueUIVal		= "9"

	; PcmciaValue = 0/1
	set PcmciaValue			= 1
	set Chk1 				= "ON"

	; Ethernet conversion mode = "Encapsulated"/"RFC1042"/"802.1h"
;	set EthConvValue		= "802.1h"
	set EthConvValue		= 1

	; Station Mode related default values
	set PSLevelValue		= 0;

	; Power Save Mode = "Disabled"/"Basic"/"Enhanced"
	set PSModeList			= $(STA_PSModeList)
	set PSModeValues		= $(STA_PSModeValues)
	set PSModeUIVal			= "Disabled"

	; configure as infrastructure station
	set NetTypeList			= $(STA_NetTypeList)
	set NetTypeValues		= $(STA_NetTypeValues)
	set NetTypeUIVal		= "Infrastructure Station"

	; configure for 11 Mb/s default
	set TxRateList			= $(STA_TxRateList)
	set TxRateValues		= $(STA_TxRateValues)
;	set TxRateUIVal			= "2 Mb/s"
	set TxRateUIVal			= "Fully Auto"

	; configure for ATIM Window Disabled
	set ATIMWindowList			= $(STA_ATIMWindowList)
	set ATIMWindowValues		= $(STA_ATIMWindowValues)
	set ATIMWindowUIVal			= "Disabled"

	; configure for Listen interval at MAX
	set ListenIntervalList			= $(STA_ListenIntervalList)
	set ListenIntervalValues		= $(STA_ListenIntervalValues)
	set ListenIntervalUIVal			= "Maximum"

	; configure for RTS/CTS disabled
	set RTSThreshList		= $(RTSThreshList)
	set RTSThreshValues		= $(RTSThreshValues)
	set RTSThreshUIVal		= "Disabled"

	; configure for Fragmentation disabled
	set FragThreshList		= $(FragThreshList)
	set FragThreshValues	= $(FragThreshValues)
	set FragThreshUIVal		= "Disabled"

	; configure for WEP Disabled
	set WepReqList			= $(WepReqList)
	set WepReqValues		= $(WepReqValues)
	set WepReqUIVal			= "Disabled"

	; PHY parameters DS
	set PHYParmName			= "DSChannel";
	set PHYParmList			= $(DSChanList)
	set PHYParmValues		= $(DSChanValues)
	set PHYParmUIVal		= "n/a"
	set PHYParmLabel		= "DS Channel:"

	; Decryption to be done in Driver flag
	set DecryptInDriverValue		= 1;

	; Encryption to be done in Driver flag
	set EncryptInDriverValue		= 1;

	; WEP Factor value
	set WEPFactorValue		= 3;

	; IBSS to be managed by Driver flag 
	set IBSSInDriverValue	= 1;

	; Set Preamble mode to Long=1
	set PreambleModeValue	= 1;

	; default SSID - to be customized by OEM customer
	set SSIDValue			= "IEEE 802.11 LAN"
	
exit
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: web2, load: 1.03