OEMSETUP.INF Driver File Contents (Adaptec_SCSI_2960_Driver_for_Win9x__NT.zip)

;-----------------------------------------------------------------------
; FILE:         oemsetup.inf
; Version:      5.0 
; PURPOSE:      GUI setup file for Adaptec SCSI Host Adapters for Windows NT
; Changes:
;       9/1/95  Make changes in registry for adding APA-1460 into PCMCIA
;                       database.
;       9/18/95 Make Scsidisk a system device if it is disabled in the
;                       registry.
;       4/1/96  Make Scsidisk a boot device, and Scsicdrm a system device  
;       7/14/97 Added support to distinguish between aic-78xx drivers for
;               NT 3.5x and NT 4.0.  We display different text messages
;               which refer the user to enter different directories for
;               the different drivers.
;
;-----------------------------------------------------------------------


;-----------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with.  The different
; possible types are:
;
; COMPUTER, VIDEO, POINTER, KEYBOARD, LAYOUT, SCSI, TAPE, PRINTER, ...
;-----------------------------------------------------------------------

[Identification]
    OptionType = SCSI

;-----------------------------------------------------------------------
; LANGUAGES SUPPORTED
; -------------------
;
; The languages supported by the INF, For every language supported
; we need to have a separate text section for every displayable text
; section.
;
;-----------------------------------------------------------------------

[LanguagesSupported]
    ENG


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

[Options]
    "sparrow"      = sparrow
    "ARROW"        = arrow
    "T358"         = T358
    "T348"         = T348
    "aha2920"      = fd16_700
    "78xx35"       = 78NT35
    "78xx40"       = 78NT40
    "78U235"       = 78U235
    "78U240"       = 78U240
    "aha154x"      = aha154x
    "aha174x"      = aha174x

;-----------------------------------------------------------------------
; OPTION TEXT SECTION
; -------------------
; These are text strings used to identify the option to the user.  There
; are separate sections for each language supported.  The format of the
; section name is "OptionsText" concatenated with the Language represented
; by the section.
;
;-----------------------------------------------------------------------

[OptionsTextENG]

    "sparrow"      = "Adaptec 151x/152x/AIC 6260/6360, APA-1425/50/60"
    "ARROW"        = "Adaptec 274x/284x/AIC-777x"
    "T358"         = "Adaptec APA-358 MiniSCSI EPP Driver"
    "T348"         = "Adaptec APA-348 MiniSCSI Plus Driver"
    "aha2920"      = "Adaptec AHA-2920 (PCI)"
    "78xx35"       = "Adaptec PCI SCSI Controller: AHA-290x/AHA-291x/AHA-294x/AHA-394x/AHA-4944 or AIC-78xx(NT 3.51)"
    "78xx40"       = "Adaptec PCI SCSI Controller: AHA-290x/AHA-291x/AHA-294x/AHA-394x/AHA-4944 or AIC-78xx(NT 4.0)"
    "78U235"       = "Adaptec PCI Ultra2 SCSI Controller: AHA-294xU2W/295xU2W/395xU2W/AIC-789x(NT 3.5x)"
    "78U240"       = "Adaptec PCI Ultra2 SCSI Controller: AHA-294xU2W/295xU2W/395xU2W/AIC-789x(NT 4.0)"
    "aha154x"      = "Adaptec AHA-154x/AHA-164x"
    "aha174x"      = "Adaptec AHA-174x"


;-----------------------------------------------------------------------------------------
; SCSI MINIPORT DRIVERS:
;
; Order of the information:
;
; Class driver = Type, Group, ErrorControl, Tag, EventMessageFile, TypesSupported
;
;-----------------------------------------------------------------------------------------

[MiniportDrivers]
    sparrow    = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  1, %SystemRoot%\System32\IoLogMsg.dll , 7
    arrow      = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  2, %SystemRoot%\System32\IoLogMsg.dll , 7
    T358       = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  3, %SystemRoot%\System32\IoLogMsg.dll , 7
    T348       = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  4, %SystemRoot%\System32\IoLogMsg.dll , 7
    fd16_700   = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  5, %SystemRoot%\System32\IoLogMsg.dll , 7
    78NT35     = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  6, %SystemRoot%\System32\IoLogMsg.dll , 7
    78NT40     = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  7, %SystemRoot%\System32\IoLogMsg.dll , 7
    78U235     = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  17, %SystemRoot%\System32\IoLogMsg.dll , 7
    78U240     = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  20, %SystemRoot%\System32\IoLogMsg.dll , 7
    aha154x    = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  8, %SystemRoot%\System32\IoLogMsg.dll , 7
    aha174x    = !SERVICE_KERNEL_DRIVER, "SCSI Miniport", !SERVICE_ERROR_NORMAL,  9, %SystemRoot%\System32\IoLogMsg.dll , 7




[AdaptecInstall]
       ; <ID>  = REGISTRY_KEY
    78NT40     = aic78xx
    78NT35     = aic78xx
    78U235     = aic78u2
    78U240     = aic78u2
    


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

[Identify]
    ;
    ;
    read-syms Identification

    ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Inside Identify"

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

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



;------------------------------------------------------------------------
; 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
;
;                $($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)
	goto returnoptions
    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, 0)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL

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


;
; 3. InstallOption:
;
; 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]

    ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Inside InstallOption"

    ;===========================================================================
    ;registry changes for APA-1460 PCMCIA support under NT3.51 (JSG - 9/4/95)

	set KeyName = "System\CurrentControlSet\Services\Pcmcia\DataBase"
	OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_ALL_ACCESS) PcmciaKeyHandle
	ifstr(i) $(PcmciaKeyHandle) != ""
		OpenRegKey $(!REG_H_LOCAL) "" $(KeyName)"\Adaptec, Inc." $(!REG_KEY_ALL_ACCESS) TestKeyHandle
			ifstr(i) $(TestKeyHandle) == ""
			CreateRegKey $(PcmciaKeyHandle) {"Adaptec, Inc.",0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" AdptKeyHandle
				CreateRegKey $(AdptKeyHandle) {"APA-1460 SCSI Host Adapter",0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" APAKeyHandle
					SetRegValue     $(APAKeyHandle) {Driver,0,$(!REG_VT_SZ),"sparrow"}
				CloseRegKey $(APAKeyHandle)
			CloseRegKey $(AdptKeyHandle)
		endif
		CloseRegKey $(TestKeyHandle)
	endif
	CloseRegKey $(PcmciaKeyHandle)

	;end of PCMCIA Database registry changes
    ;===========================================================================
	
    ;===========================================================================
    ;Make Scsidisk a boot device if currently set to disabled. (JSG - 9/18/95)

	set KeyName = "System\CurrentControlSet\Services\Scsidisk"
	OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_ALL_ACCESS) ScsidiskKeyHandle
	ifstr(i) $(ScsidiskKeyHandle) != ""
		GetRegValue $(ScsidiskKeyHandle) Start StartInfo
		ifint *($(StartInfo),4) == 4      
			SetRegValue     $(ScsidiskKeyHandle) {Start,0,$(!REG_VT_DWORD),0}
		endif
	endif
	CloseRegKey $(ScsidiskKeyHandle)

	;end of ScsiDisk registry changes
    ;===========================================================================

    ;===========================================================================
    ;Make Scsicdrm a system device if currently set to disabled. (JSG - 4/1/95)

	set KeyName = "System\CurrentControlSet\Services\Scsicdrm"
	OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_ALL_ACCESS) ScsicdrmKeyHandle
	ifstr(i) $(ScsicdrmKeyHandle) != ""
		GetRegValue $(ScsicdrmKeyHandle) Start StartInfo
		ifint *($(StartInfo),4) == 4      
			SetRegValue     $(ScsicdrmKeyHandle) {Start,0,$(!REG_VT_DWORD),1}
		endif
	endif
	CloseRegKey $(ScsicdrmKeyHandle)

	;end of Scsicdrm registry changes
    ;===========================================================================

    ;
    ; Set default values for
    ;
    set Status = STATUS_FAILED
    set DrivesToFree = {}

    ;
    ; extract parameters
    ;
    set Option   = $($1)
    set SrcDir   = $($2)
    set AddCopy  = $($3)
    set DoCopy   = $($4)
    set DoConfig = $($5)

    ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "About to check Language Support"
    ;
    ; Check if the language requested is supported
    ;
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
    else
	set Status = STATUS_NOLANGUAGE
	goto finish_InstallOption
    endif
    read-syms Strings$($0)

    ;
    ; check to see if Option is supported.
    ;

    set OptionList = ^(Options, 0)
    ifcontains $(Option) in $(OptionList)
    else
	Debug-Output "SCSI.INF: SCSI option is not supported."
	goto finish_InstallOption
    endif
    set OptionList = ""

    ;
    ; Option has been defined already
    ;

    set MiniportDriver   =   #(Options,         $(Option),         1)
    set Type             = $(#(MiniportDrivers, $(MiniportDriver), 1))
    set Group            =   #(MiniportDrivers, $(MiniportDriver), 2)
    set ErrorControl     = $(#(MiniportDrivers, $(MiniportDriver), 3))
    set Tag              =   #(MiniportDrivers, $(MiniportDriver), 4)
    set EventMessageFile =   #(MiniportDrivers, $(MiniportDriver), 5)
    set TypesSupported   =   #(MiniportDrivers, $(MiniportDriver), 6)

    set Start            =   $(!SERVICE_BOOT_START)


	;===========================================================================
	
	;
	; MHG: 1/26/98
	;
	; This ifstr(i) statement was added because this OEMSETUP.INF file
	; was failing whenever we attempted to install a non-AIC78XX host
	; adapter.  We added this section dated 12/5/97 to provide support
	; for our Ultra2 PCI host adapters and got it from their group, but
	; it produces an error when any other non-AIC78XX host adapter is used.
	;
	; To work around this problem, we now check to see if the U2 board
	; has been selected to install.  If it has, we do the MemMapped I/O
	; support registry entry addition.
	;

	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "About to start first check section"

	ifstr(i) $(Option) == "78U240"

		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Doing new MemMapped Stuff"
		; MHG: This was added for Memory Mapped I/O support for the Ultra2 Series
		; 12/5/97
		;
		; Registry update

		set SNode   = #(AdaptecInstall, $(MiniportDriver), 1)
		set KeyName = "System\CurrentControlSet\Services\"$(SNode)
		OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_ALL_ACCESS) AdptKeyHandle
		ifstr(i) $(AdptKeyHandle) != ""
			OpenRegKey $(!REG_H_LOCAL) "" $(KeyName)"Parameters\Device" $(!REG_KEY_ALL_ACCESS) TestKeyHandle
				ifstr(i) $(TestKeyHandle) == ""
					CreateRegKey $(AdptKeyHandle) {"Parameters",0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" ParamKeyHandle
					CreateRegKey $(ParamKeyHandle) {"Device",0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" DevKeyHandle
					SetRegValue     $(DevKeyHandle) {DriverParameters,0,$(!REG_VT_SZ),"/MEMMAP"}
					CloseRegKey $(DevKeyHandle)
					CloseRegKey $(ParamKeyHandle)
				endif
			CloseRegKey $(TestKeyHandle)
		endif
		CloseRegKey $(AdptKeyHandle)
		;
		;end Registry Update from 12/5/97
		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Done with MemMapped Stuff"

	else-ifstr(i) $(Option) == "78U235"

		;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Checking ==78u235"

		set SNode   = #(AdaptecInstall, $(MiniportDriver), 1)

		set KeyName = "System\CurrentControlSet\Services\"$(SNode)
		OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_ALL_ACCESS) AdptKeyHandle
		ifstr(i) $(AdptKeyHandle) != ""
			OpenRegKey $(!REG_H_LOCAL) "" $(KeyName)"Parameters\Device" $(!REG_KEY_ALL_ACCESS) TestKeyHandle
				ifstr(i) $(TestKeyHandle) == ""
					CreateRegKey $(AdptKeyHandle) {"Parameters",0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" ParamKeyHandle
					CreateRegKey $(ParamKeyHandle) {"Device",0,GenericClass} "" $(!REG_KEY_ALL_ACCESS) "" DevKeyHandle
					SetRegValue     $(DevKeyHandle) {DriverParameters,0,$(!REG_VT_SZ),"/MEMMAP"}
					CloseRegKey $(DevKeyHandle)
					CloseRegKey $(ParamKeyHandle)
				endif
			CloseRegKey $(TestKeyHandle)
;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Shouldn't see this 1"
		endif
		CloseRegKey $(AdptKeyHandle)
;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Shouldn't see this 2"
		;
		;end Registry Update from 12/5/97

	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Shouldn't see this 3"
	;
	; End 1/26/98 Changes
	;
	endif

	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "Ready To Move On"

    ;===========================================================================


    ;
    ; MHG : The next 8 lines added for the 358 and 348
    ;
;    shell "registry.inf" GetServicesEntryStart $(MiniportDriver)
;    ifint $($ShellCode) == $(!SHELL_CODE_OK)
;	ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
;	    ifstr(i) $($R1) == $(!SERVICE_BOOT_START)
;		set Start = $(!SERVICE_BOOT_START)
;	    endif
;	endif
;    endif
    ;
    ; MHG : End of special insert for 358 and 348
    ;



installtheoption = +

    ;
    ; Code to add files to copy list
    ;

    ;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "About to copy files to copy list"

    ifstr(i) $(AddCopy) == "YES"
	set DoActualCopy = NO
	set FileToCheck = #(Files-ScsiMiniportDrivers, $(MiniportDriver), 2)
	LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
	ifstr(i) $(STATUS) == NO
	    set DoActualCopy = YES
	endif

	ifstr(i) $(DoActualCopy) == NO
	    shell "subroutn.inf" DriversExist $($0) $(String1)
	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "SCSI.INF: shelling DriversExist failed"
		goto finish_InstallOption
	    endif

	    ifstr(i) $($R0) == STATUS_CURRENT
	    else-ifstr(i) $($R0) == STATUS_NEW
		set DoActualCopy = YES
	    else-ifstr(i) $($R0) == STATUS_USERCANCEL
		Debug-Output "SCSI.INF: User cancelled SCSI installation"
		goto finish_InstallOption
	    else
		Debug-Output "SCSI.INF: Error reported in DriversExist routine in SUBROUTN.INF"
		goto finish_InstallOption
	    endif
	endif

	ifstr(i) $(DoActualCopy) == YES

	;
	; MHG 7/11/97:  Added this section to display text in the dialog box
	;               which asks the user to type in the directory path
	;               for the miniport driver.  If the user selected to install
	;               the aic78xx miniport, we display one string, otherwise
	;               we display another generic string.
	;

	;shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) STATUS "About to Ask for path"
	;
	; We first check for the WinNT 4.0 version of our PCI driver being
	; loaded.  If the 4.0 driver is selected, display 4.0 text message.
	;
	ifstr(i) $(Option) == "78xx40"
		shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String4)
		goto PathObtained
	;
	; Since 4.0 driver not selected, check for 3.51 driver for PCI and
	; display message.
	;
	else-ifstr(i) $(Option) == "78xx35"
		shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String5)
		goto PathObtained
;            else
;               ;
;               ; If we get here, we can assume the user has selected a driver
;               ; other than our aic78xx based series. Display a generic message
;               ;
;               shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
;            endif
	endif
	;
	; End of MHG 7/11/97 changes
	;

	;
	; MHG 9/30/97:  Now we check to see if the user is installing the
	;               Ultra2 PCI SCSI Host Adapter.
	;
	ifstr(i) $(Option) == "78U240"
		shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String6)
		goto PathObtained
	;
	; If 4.0 driver not selected, check for the 3.51 driver for the
	; Ultra2 PCI SCSI Host Adapter and display proper message.
	;           
	else-ifstr(i) $(Option) == "78U235"
		shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String7)
		goto PathObtained
	     else
		;
		; If we get here, we can assume the user has selected a driver
		; other than our aic78xx based series. Display a generic message
		;
		shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
	     endif
	endif
	;
	; End of MHG 9/30/97 Changes for Ultra2 Support.
	; 


PathObtained = +

	    ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "SCSI.INF: shelling DoAskSourceEx failed"
		goto finish_InstallOption
	    endif

	    ifstr(i) $($R0) == STATUS_SUCCESSFUL
		set SrcDir = $($R1)
		ifstr(i) $($R2) != ""
		    set DrivesToFree = >($(DrivesToFree), $($R2))
		endif
	    else
		Debug-Output "SCSI.INF: User cancelled asking source."
		goto finish_InstallOption
	    endif

	    install Install-AddCopyOption
	    ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
		Debug-Output "Adding SCSI files to copy list failed"
		goto finish_InstallOption
	    endif
	else
	    set DoCopy = NO
	endif

    endif

    ifstr(i) $(DoCopy) == "YES"
	read-syms ProgressCopy$($0)
	install Install-DoCopyOption
	ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
	    Debug-Output "Copying files failed"
	    goto finish_InstallOption
	else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
	    set Status = STATUS_USERCANCEL
	    goto finish_InstallOption
	endif
    endif

    ifstr(i) $(DoConfig) == "YES"
	;
	; first run a privilege check on modifying the setup node
	;

	shell "registry.inf" CheckSetupModify
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    goto finish_InstallOption
	endif

	ifstr(i) $($R0) != STATUS_SUCCESSFUL
	    goto finish_InstallOption
	endif

	;
	; then make a new SCSI entry, the entry is created automatically
	; enabled
	;


;
; MHG : Here we are trying to differentiate between PCI and non-PCI
;       miniport installation.  If we are installing PCI we need to
;       set the ServiceNode by using the AdaptecInstall, otherwise
;       we can assume that the MiniportDriver value is already correct.
;       This must actually be done is a couple placed but we will try it
;       here first.
;

	ifstr(i) $(MiniportDriver) == "aic78xx"
	    set ServiceNode = #(AdaptecInstall,$(MiniportDriver),1)
	;
	; MHG 9/30/97:  Add Ultra2 Check
	;
	else-ifstr(i) $(MiniportDriver) == "aic78u2"
		    set ServiceNode = #(AdaptecInstall,$(MiniportDriver),1)
	     else
			set ServiceNode   = $(MiniportDriver)
	     endif
	endif

	set ServiceBinary = System32\drivers\#(Files-ScsiMiniportDrivers, $(MiniportDriver), 2)

	set ServicesValues   = { +
		{Type,           0, $(!REG_VT_DWORD),     $(Type)                  }, +
		{Start,          0, $(!REG_VT_DWORD),     $(Start)                 }, +
		{Group,          0, $(!REG_VT_SZ),        $(Group)                 }, +
		{ErrorControl,   0, $(!REG_VT_DWORD),     $(ErrorControl)          }, +
		{Tag,            0, $(!REG_VT_DWORD),     $(Tag)                   }, +
		{BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary)         }  +
		}
	set ParametersValues = ""
	set DeviceValues     = {}
	set EventLogValues   = { +
		{EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
		{TypesSupported,   0, $(!REG_VT_DWORD),     $(TypesSupported)   }  +
		}

	;
	; MHG 7/14/97: Here we need to see if we are installing an aic78xx
	;              family of PCI host adapter. If we are, we need to 
	;              install the server with the name ADAPTEC instead
	;              of aic78xx or any other cryptic value.
	;
	ifstr(i) $(Option) == "78xx40"
	    set ServiceNode = #(AdaptecInstall,$(MiniportDriver),1)
	    goto  Add78xxServiceEntry
	else-ifstr(i) $(Option) == "78xx35"
		set ServiceNode = #(AdaptecInstall,$(MiniportDriver),1)
		goto  Add78xxServiceEntry
	    endif
	endif
	;
	; MHG 9/30/97:  Now let's see if we need to install the Ultra2
	;               version for the user.
	;
	ifstr(i) $(Option) == "78U240"
	    set ServiceNode = #(AdaptecInstall,$(MiniportDriver),1)
	    goto  Add78xxServiceEntry
	else-ifstr(i) $(Option) == "78U235"
		set ServiceNode = #(AdaptecInstall,$(MiniportDriver),1)
		goto  Add78xxServiceEntry
	    endif
	endif
	
	;
	; Looks like we are not installing one of the aic78xx family memebers.
	; Now we can add the service entry with the normal host adapter
	; miniport driver name.
	;
	shell "registry.inf"  MakeServicesEntry $(ServiceNode)      +
						$(ServicesValues)   +
						$(ParametersValues) +
						$(DeviceValues)     +
						$(EventLogValues)   +
						Parameters
	goto  DoneWithServiceEntry

;
; We jump here if we are installing the aic78xx family
;
Add78xxServiceEntry = + 
	;set ServiceNode = "ADAPTEC"
	shell "registry.inf"  MakeServicesEntry $(ServiceNode)      +
						$(ServicesValues)   +
						$(ParametersValues) +
						$(DeviceValues)     +
						$(EventLogValues)   +
						Parameters
	
;
; Done with service entry stuff.
;
DoneWithServiceEntry = +


;
; End MHG changes 7/14/97
;


	ifint $($ShellCode) != $(!SHELL_CODE_OK)
	    Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
	    goto finish_InstallOption
	endif

	ifstr(i) $($R0) != STATUS_SUCCESSFUL
	    Debug-Output "MakeServicesEntry failed for SCSI"
	    goto finish_InstallOption
	endif

    endif

    set Status = STATUS_SUCCESSFUL
finish_InstallOption = +
    ForListDo $(DrivesToFree)
	LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
    EndForListDo

    Return $(Status)


[Install-AddCopyOption]

    ;
    ; Add the files to the copy list
    ;
    AddSectionKeyFileToCopyList   Files-ScsiMiniportDrivers         +
				  $(MiniportDriver)                 +
				  $(SrcDir)                      +
				  $(!STF_WINDOWSSYSPATH)\drivers

    exit


[Install-DoCopyOption]

    ;
    ; Copy files in the copy list
    ;
    CopyFilesInCopyList
    exit

;-------------------------------------------------------------------------
; 4. DeInstallOption:
;
; FUNCTION:  To remove files representing Option
;            To remove the registry entry corresponding to the Option
;
; INPUT:     $($0):  Language to use
;            $($1):  OptionID to install
;
; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
;                            STATUS_NOLANGUAGE |
;                            STATUS_USERCANCEL |
;                            STATUS_FAILED
;-------------------------------------------------------------------------
[DeInstallOption]

    ;===========================================================================
    ;to remove registry changes for APA-1460 PCMCIA support under NT3.51 (JSG - 9/4/95)

	set KeyName = "System\CurrentControlSet\Services\Pcmcia\DataBase"
	OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_ALL_ACCESS) PcmciaKeyHandle
		OpenRegKey $(!REG_H_LOCAL) "" $(KeyName)"\Adaptec, Inc." $(!REG_KEY_ALL_ACCESS) TestKeyHandle
		ifstr(i) $(TestKeyHandle) != ""
			DeleteRegTree $(PcmciaKeyHandle) "Adaptec, Inc."
		endif
		CloseRegKey $(TestKeyHandle)
	CloseRegKey $(PcmciaKeyHandle)

	;end of PCMCIA Database registry changes
    ;===========================================================================

	
    ;
    ; Set default values for
    ;
    set Status   = STATUS_FAILED
    ;
    ; extract parameters
    ;
    set Option   = $($1)

    ;
    ; Check if the language requested is supported
    ;
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
    else
	set Status = STATUS_NOLANGUAGE
	goto finish_DeInstallOption
    endif
    read-syms Strings$($0)

    ;
    ; check to see if Option is supported.
    ;

    set OptionList = ^(Options, 0)
    ifcontains $(Option) in $(OptionList)
    else
	goto finish_DeInstallOption
    endif
    set OptionList = ""

    ;
    ; fetch details about option
    ;

    set MiniportDriver = #(Options, $(Option), 1)
    set MiniportFile   = #(Files-ScsiMiniportDrivers, $(MiniportDriver), 2)
    set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(MiniportFile)

    ;
    ; check to see if file is installed
    ; if not give success
    ;

    LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
    ifstr(i) $(STATUS) == "NO"
	set Status = STATUS_SUCCESSFUL
	goto finish_DeInstallOption
    endif


    shell "registry.inf" GetServicesEntryStart $(MiniportDriver)
    ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
	; this could happen if there is no start value or there is no
	; key, in which case the option is not installed
	set Status = STATUS_SUCCESSFUL
	goto finish_DeInstallOption
    endif

    ifstr(i) $($R1) == $(!SERVICE_BOOT_START)
	shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(String3)
	ifstr(i) $($R0) != STATUS_SUCCESSFUL
	    goto do_removal
	endif
	ifstr(i) $($R1) == "CANCEL"
	    goto finish_DeInstallOption
	endif
    endif

do_removal =+
    ;
    ; disable the registry entry
    ;

    shell "registry.inf" RemoveServicesEntry $(MiniportDriver)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
	Debug-Output "SCSI.INF: Failed to shell RemoveServicesEntry"
	goto finish_DeInstallOption
    endif

    ifstr(i) $($R0) != STATUS_SUCCESSFUL
	Debug-Output "SCSI.INF: Failed to disable services entry"
	goto finish_DeInstallOption
    endif

    ;
    ; we won't remove the file because we can only do so during the next boot.
    ; if the user chooses to reinstall the same driver during this boot
    ; he will still end up deleting the driver on next boot. if the file
    ; should be deleted a warning should be put up saying that the user should
    ; not try to reinstall the driver during this boot
    ;
    ;    AddFileToDeleteList $(FilePath)

    set Status = STATUS_SUCCESSFUL

finish_DeInstallOption =+
    return $(Status)


;-------------------------------------------------------------------------
; 5. GetInstalledOptions:
;
; FUNCTION:  To find out the list of options which are installed
;
; INPUT:     $($0): Language to Use
;
; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
;                            STATUS_FAILED
;
;            $($R1): List of options installed
;            $($R2): Option installed Text List
;-------------------------------------------------------------------------
[GetInstalledOptions]
    set Status = STATUS_FAILED
    set InstalledOptions = {}
    set InstalledOptionsText = {}

    ;
    ; Check if the language requested is supported
    ;
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) in $(LanguageList)
    else
	set Status = STATUS_NOLANGUAGE
	goto finish_GetInstalledOptions
    endif

    set OptionList = ^(Options, 0)
    ForListDo $(OptionList)
	set MiniportDriver = #(Options, $($), 1)
	set MiniportFile   = #(Files-ScsiMiniportDrivers, $(MiniportDriver), 2)
	set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(MiniportFile)
	LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
	ifstr(i) $(STATUS) == "YES"
	    shell "registry.inf" GetServicesEntryStart $(MiniportDriver)
	    ifint $($ShellCode) == $(!SHELL_CODE_OK)
		ifstr(i) $($R0) == STATUS_SUCCESSFUL
		    ifstr(i) $($R1) != $(!SERVICE_DISABLED)

			set OptionText = #(OptionsText$($0), $($), 1)
			set InstalledOptions     = >($(InstalledOptions), $($))
			set InstalledOptionsText = >($(InstalledOptionsText), $(OptionText))

		    endif
		endif
	    endif
	endif
    EndForListDo
    set Status = STATUS_SUCCESSFUL
finish_GetInstalledOptions =+
    Return $(Status) $(InstalledOptions) $(InstalledOptionsText)


;**************************************************************************
; PROGRESS GUAGE VARIABLES
;**************************************************************************

[ProgressCopyENG]
    ProCaption   = "Windows NT Setup"
    ProCancel    = "Cancel"
    ProCancelMsg = "Windows NT is not correcly installed.  Are you sure you want "+
		   "to cancel copying files?"
    ProCancelCap = "Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"

[StringsENG]
    String1 = "SCSI Adapter"
    String2 = "Please enter the full path to the OEM SCSI "+
	      "Adapter files. These files are located in the "+
	      "root directory on the Adaptec EZ-SCSI Drivers Disk." +
	      "Then choose Continue."
    String3 = "The SCSI Adapter has been marked as a boot device. Removing "+
	      "it may cause the system not to boot."$(!LF)$(!LF)"Are you sure "+
	      "you want to remove the Adapter."
;    String4 = "If you are running Windows NT 4.0 please insert the"+
;              "EZ-SCSI Setup Disk into your floppy drive and enter"+
;              "the following path below: \WINNT\4_0.  If you are using"+
;              "Windows NT 3.51 please enter this path: \WINNT\3_5." +
;              "Then choose Continue."
    String4 = "You have chosen to install the Windows NT 4.0 miniport driver "+
	      "for the following Adaptec PCI SCSI Host Adapter family: "$(!LF)$(!LF)+
	      "AHA-294x/AHA-394x/AHA-4944 or AIC-78xx. "$(!LF)$(!LF)+
	      "Click Continue to install driver."

    String5 = "You have chosen to install the following Adaptec PCI SCSI Host Adapter family: "+
	      "AHA-294x/AHA-394x/AHA-4944 or AIC-78xx. "$(!LF)+
	      "Enter this path below and click Continue: \3_5"

    String6 = "You have chosen to install the Windows NT 4.0 miniport driver "+
	      "for the following Adaptec PCI Ultra2 SCSI Host Adapter family: "$(!LF)$(!LF)+
	      "AHA-294xU2W/AHA-295xU2W/AIC-7890/91. "$(!LF)$(!LF)+
	      "Click Continue to install driver."

    String7 = "You have chosen to install the following Adaptec PCI Ultra2 SCSI Host Adapter family: "+
	      "AHA-294xU2W/AHA-295xU2W/AIC-7890/91. "$(!LF)+
	      "Enter this path below and click Continue: \3_5"



[Source Media Descriptions]
    1  = "Adaptec SCSI Controller Drivers Disk 1 of 1", TAGFILE = disk1

[Files-ScsiMiniportDrivers]
sparrow   = 1, sparrow.sys, SIZE=999
arrow     = 1, arrow.sys, SIZE=999
T358      = 1, T358.SYS, SIZE=999
T348      = 1, T348.SYS, SIZE=999
78NT35    = 1, aic78xx.sys, SIZE=999
78NT40    = 1, aic78xx.sys, SIZE=999
aha154x   = 1, aha154x.sys, SIZE=999
aha174x   = 1, aha174x.sys, SIZE=999
fd16_700  = 1, fd16_700.sys, SIZE=999
78U235    = 1, aic78u2.sys, SIZE=999
78U240    = 1, aic78u2.sys, SIZE=999




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: ftp, load: 2.58