;-----------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with. The different
; possible types are:
;
; COMPUTER, VIDEO, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;-----------------------------------------------------------------------
[Identification]
OptionType = VIDEO
;-----------------------------------------------------------------------
; LANGUAGES SUPPORTED
; -------------------
;
; The languages supported by the OEM 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 OEM Option key names. These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
;-----------------------------------------------------------------------
;
; Option list order: Option = Miniport driver, BitsPerPel, XResolution, YResolution, VRefresh, Interlaced
;
; If you don't want to create a VRefresh or Interlaced value under the service
; parameters then use the value ""
;
[Options]
"Thunder/24 EISA" = thuneisa, 32, 1024, 768, 70, 0
[HWOptions]
0 = HardwareInformation.AdapterString, "SuperMac Thunder/24 EISA"
1 = HardwareInformation.ChipType, "SuperMac Proprietary"
2 = HardwareInformation.DacType, Bt471
3 = HardwareInformation.MemorySize, 3145728
;
; This maps detected options into the options we support
;
; Format: DetectedOption = MappedOption
;
[MapOfOptions]
"Thunder/24 EISA" = "Thunder/24 EISA"
;
; Order of the information:
;
; Port driver = Type, Group, ErrorControl, Tag, InstalledDisplay, VgaCompatible( 0/1 ), EventMessageFile, TypesSupported
;
[MiniportDrivers]
thuneisa = !SERVICE_KERNEL_DRIVER, Video, !SERVICE_ERROR_NORMAL, 19, {thuneisa}, 0, %SystemRoot%\System32\IoLogMsg.dll , 7
;-----------------------------------------------------------------------
; 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]
"Thunder/24 EISA" = "Thunder/24 EISA"
;---------------------------------------------------------------------------
; 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
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)
;---------------------------------------------------------------------------
; MapToSupportedOption
;
; DESCRIPTION: To map a hardware detected option to the NT Supported
; option which represents it.
;
; INPUT: $($0): Option
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Mapped Option
;
;---------------------------------------------------------------------------
[MapToSupportedOption]
;
set Status = STATUS_FAILED
set MappedOption = $($0)
;
; If the option is one we can support using one of our standard options
; then map it to the standard option else map it to the default option
; which is VGA.
;
set OptionList = ^(MapOfOptions, 0)
ifcontains $($0) in $(OptionList)
set MappedOption = #(MapOfOptions, $($0), 1)
else
set MappedOption = "VGA"
endif
set Status = STATUS_SUCCESSFUL
Return $(Status) $(MappedOption)
[ServicesEntry]
CurrentEntry = "" ? $(!LIBHANDLE) GetDevicemapValue Video \Device\Video0
;
; 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]
;
; 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)
;
; 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
goto finish_InstallOption
endif
set OptionList = ""
;
; Option has been defined already
;
set MiniportDriver = #(Options, $(Option), 1)
set BitsPerPel = #(Options, $(Option), 2)
set XResolution = #(Options, $(Option), 3)
set YResolution = #(Options, $(Option), 4)
set VRefresh = #(Options, $(Option), 5)
set Interlaced = #(Options, $(Option), 6)
set Type = $(#(MiniportDrivers, $(MiniportDriver), 1))
set Group = #(MiniportDrivers, $(MiniportDriver), 2)
set ErrorControl = $(#(MiniportDrivers, $(MiniportDriver), 3))
set Tag = #(MiniportDrivers, $(MiniportDriver), 4)
set InstalledDisplays = #(MiniportDrivers, $(MiniportDriver), 5)
set VgaCompatible = #(MiniportDrivers, $(MiniportDriver), 6)
set EventMessageFile = #(MiniportDrivers, $(MiniportDriver), 7)
set TypesSupported = #(MiniportDrivers, $(MiniportDriver), 8)
read-syms ServicesEntry
detect ServicesEntry
installtheoption = +
;
; Code to add files to copy list
;
ifstr(i) $(AddCopy) == "YES"
set DoActualCopy = NO
set FileToCheck = #(Files-DisplayMiniportDrivers, $(MiniportDriver), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
goto addfiles
endif
ForListDo $(InstalledDisplays)
set FileToCheck = #(Files-DisplayDLLs, $($), 2)
LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileToCheck)
ifstr(i) $(STATUS) == NO
set DoActualCopy = YES
endif
EndForListDo
addfiles = +
ifstr(i) $(DoActualCopy) == NO
shell "subroutn.inf" DriversExist $($0) $(String1)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "VIDEO.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 "VIDEO.INF: User cancelled video installation"
goto finish_InstallOption
else
Debug-Output "VIDEO.INF: Error reported in DriversExist routine in SUBROUTN.INF"
goto finish_InstallOption
endif
endif
ifstr(i) $(DoActualCopy) == YES
shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "VIDEO.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 "VIDEO.INF: User cancelled asking source."
goto finish_InstallOption
endif
install Install-AddCopyOption
ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
Debug-Output "VIDEO.INF: Adding video 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
;
; first make a new video entry, the entry is created automatically
; enabled
;
set ServiceNode = $(MiniportDriver)
set ServiceBinary = %SystemRoot%\System32\drivers\#(Files-DisplayMiniportDrivers, $(MiniportDriver), 2)
set ServicesValues = { +
{Type, 0, $(!REG_VT_DWORD), $(Type) }, +
{Start, 0, $(!REG_VT_DWORD), $(!SERVICE_DISABLED) }, +
{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 = { +
{InstalledDisplayDrivers, 0, $(!REG_VT_MULTI_SZ), $(InstalledDisplays) }, +
{VgaCompatible, 0, $(!REG_VT_DWORD), $(VgaCompatible) }, +
{DefaultSettings.BitsPerPel, 0, $(!REG_VT_DWORD), $(BitsPerPel) }, +
{DefaultSettings.XResolution, 0, $(!REG_VT_DWORD), $(XResolution) }, +
{DefaultSettings.YResolution, 0, $(!REG_VT_DWORD), $(YResolution) }, +
{#(HWOptions,0,1), 0, $(!REG_VT_SZ), #(HWOptions,0,2) }, +
{#(HWOptions,1,1), 0, $(!REG_VT_SZ), #(HWOptions,1,2) }, +
{#(HWOptions,2,1), 0, $(!REG_VT_SZ), #(HWOptions,2,2) }, +
{#(HWOptions,3,1), 0, $(!REG_VT_DWORD), #(HWOptions,3,2) } +
}
ifstr(i) $(VRefresh) != ""
set VRefreshValue = {DefaultSettings.VRefresh, 0, $(!REG_VT_DWORD), $(VRefresh)}
set ParametersValue = >($(ParametersValue), $(VRefreshValue))
endif
ifstr(i) $(Interlaced) != ""
set InterlacedValue = {DefaultSettings.Interlaced, 0, $(!REG_VT_DWORD), $(Interlaced)}
set ParametersValue = >($(ParametersValue), $(InterlacedValue))
endif
set DeviceValues = {}
set EventLogValues = { +
{EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
{TypesSupported, 0, $(!REG_VT_DWORD), $(TypesSupported) } +
}
shell "registry.inf" MakeServicesEntry $(ServiceNode) +
$(ServicesValues) +
$(ParametersValues) +
$(DeviceValues) +
$(EventLogValues) +
Device0
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 video"
goto finish_InstallOption
endif
;
; See if user wants to run a Confidence test on the card
;
LoadLibrary "x" $(!STF_WINDOWSSYSPATH)\drivers\supermac\gonogo.dll GonogoHandle
LibraryProcedure Result $(GonogoHandle) ConfidenceTest $(!STF_HWND) EISA "Thunder/24 EISA" thuneisa
FreeLibrary $(GonogoHandle)
ifstr(i) $(Result) != "Success"
Debug-Output "Problem in ConfidenceTest: it failed!"
goto finish_InstallOption
endif
;
; Run the resolution picker program to setup the initial monitor
;
RunProgram ExitCode "x" "" $(!STF_WINDOWSSYSPATH)\drivers\supermac\res.exe install
ifstr(i) $(ExitCode) == "ERROR"
goto finish_InstallOption
endif
;
; disable the previous video entry
;
ifstr(i) $(CurrentEntry) != $(MiniportDriver)
ifstr(i) $(CurrentEntry) != VGA
ifstr(i) $(CurrentEntry) != ""
shell "registry.inf" ModifyServicesEntry $(CurrentEntry) $(!SERVICE_DISABLED)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Couldn't find DisableServicesEntry in registry.inf"
goto finish_InstallOption
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "DisableServices entry failed"
goto finish_InstallOption
endif
endif
endif
endif
;
; always update the program manager groups
;
read-syms GroupStuff
install Install-UpdateProgMan
ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
Debug-Output "Creating ProgMan groups,items failed"
goto finish_InstallOption
endif
;
; enable the new video entry
;
shell "registry.inf" ModifyServicesEntry $(MiniportDriver) $(!SERVICE_SYSTEM_START)
endif
set Status = STATUS_SUCCESSFUL
finish_InstallOption = +
ForListDo $(DrivesToFree)
LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
EndForListDo
Return $(Status)
[Install-AddCopyOption]
set STF_VITAL = ""
;
; Add the files to the copy list
;
AddSectionKeyFileToCopyList Files-DisplayMiniportDrivers +
$(MiniportDriver) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers
ForListDo $(InstalledDisplays)
AddSectionKeyFileToCopyList Files-DisplayDLLs +
$($) +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)
EndForListDo
AddSectionKeyFileToCopyList UtilityFiles +
ResPickerExe +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
ResPickerMonIni +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
ResPickerMonTem +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
ZoomTool +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
ZoomHook +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
Gonogo +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
ThunMap +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McWrap +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
MonCal +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
MonCalHlp +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc0 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc1 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc2 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc3 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc4 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc5 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc6 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
AddSectionKeyFileToCopyList UtilityFiles +
McMisc7 +
$(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers\supermac
exit
[Install-DoCopyOption]
;
; Copy files in the copy list
;
CopyFilesInCopyList
exit
[Install-UpdateProgMan]
;
; if the program manager group is already installed, delete it
;
OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Program Groups\"$(GroupNameThunder) $(!REG_KEY_READ) KeyHandle
Ifstr(i) $(KeyHandle) != ""
CloseRegKey $(KeyHandle)
RemoveCommonProgManGroup $(GroupNameThunder)
endif
OpenRegKey $(!REG_H_CUSER) "" "Program Groups\"$(GroupNameThunderAdmin) $(!REG_KEY_READ) KeyHandle
Ifstr(i) $(KeyHandle) != ""
CloseRegKey $(KeyHandle)
RemoveProgManGroup $(GroupNameThunderAdmin)
endif
OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Program Groups\"$(GroupNameSpectrum) $(!REG_KEY_READ) KeyHandle
Ifstr(i) $(KeyHandle) != ""
CloseRegKey $(KeyHandle)
RemoveCommonProgManGroup $(GroupNameSpectrum)
endif
OpenRegKey $(!REG_H_CUSER) "" "Program Groups\"$(GroupNameSpectrumAdmin) $(!REG_KEY_READ) KeyHandle
Ifstr(i) $(KeyHandle) != ""
CloseRegKey $(KeyHandle)
RemoveProgManGroup $(GroupNameSpectrumAdmin)
endif
;
; Now add new items to program manager group
;
CreateCommonProgManGroup $(GroupNameThunder) ""
ShowCommonProgManGroup $(GroupNameThunder), 1
CreateCommonProgManItem $(GroupNameThunder), "Zoom/Pan Tool", $(!STF_WINDOWSSYSPATH)\drivers\supermac\zoom.exe, "", 0
ShowCommonProgManGroup $(GroupNameThunder), 6
CreateProgManGroup $(GroupNameAdmin) ""
ShowProgManGroup $(GroupNameAdmin), 1
CreateProgManItem $(GroupNameAdmin), "Resolution Picker", $(!STF_WINDOWSSYSPATH)\drivers\supermac\res.exe, "", 0
CreateProgManItem $(GroupNameAdmin), "Monitor Calibration", $(!STF_WINDOWSSYSPATH)"\drivers\supermac\mcwrap.exe ntmoncal", $(!STF_WINDOWSSYSPATH)\drivers\supermac\ntmoncal.exe, 0
ShowProgManGroup $(GroupNameAdmin), 6
exit
;**************************************************************************
; PROGRESS GUAGE VARIABLES
;**************************************************************************
[ProgressCopyENG]
ProCaption = "Windows NT Setup"
ProCancel = "Cancel"
ProCancelMsg = "Windows NT is not correctly installed. Are you sure you want "+
"to cancel copying files?"
ProCancelCap = "Setup Message"
ProText1 = "Copying:"
ProText2 = "To:"
[StringsENG]
String1 = "Display"
String2 = "Please enter the full path to the Thunder/24 EISA Display "+
"driver files. Then choose Continue."
;-----------------------------------------------------------------------
; SOURCE MEDIA DESCRIPTIONS
; -------------------------
; The OEM should list all the diskette labels here. The source media
; description is used during copy to prompt the user for a diskette
; if the source is diskettes.
;
; Use 1 = "Diskette 1 Label" , TAGFILE = disk1
; 2 = "Diskette 2 Label" , TAGFILE = disk2
; ...
;-----------------------------------------------------------------------
;--------------------------------------------------------------------
; THE SECTIONS BELOW SHOULD BE AUTOMATICALLY GENERATED BY THE EXCEL
; SPREAD SHEETS
;--------------------------------------------------------------------
[Source Media Descriptions]
1 = "Thunder/24 EISA Setup Disk" , TAGFILE = thuneisa.sy_
[Files-DisplayDLLs]
thuneisa = 1, thuneisa.dll, SIZE=33656
[Files-DisplayMiniportDrivers]
thuneisa = 1, thuneisa.sys, SIZE=14851
[UtilityFiles]
ResPickerExe = 1, res.exe, SIZE=38477
ResPickerMonIni = 1, monitors.ini, SIZE=2843
ResPickerMonTem = 1, monitors.tem, SIZE=545
ZoomTool = 1, zoom.exe, SIZE=26960
ZoomHook = 1, zoomhook.dll, SIZE=2120
Gonogo = 1, gonogo.dll, SIZE=13400
ThunMap = 1, thunmap.sys, SIZE=2957
McWrap = 1, mcwrap.exe, SIZE=7429
MonCal = 1, ntmoncal.exe, SIZE=228322
MonCalHlp = 1, mcalsmac.hlp, SIZE=26478
McMisc0 = 1, mtxlist.dat, SIZE=105
McMisc1 = 1, last.mdb, SIZE=6963
McMisc2 = 1, nec6fg.mdm, SIZE=6828
McMisc3 = 1, super20t.mdm, SIZE=6962
McMisc4 = 1, generic.mdm, SIZE=5493
McMisc5 = 1, super17.mdm, SIZE=6818
McMisc6 = 1, ctl3d.dll, SIZE=10312
McMisc7 = 1, csdtrans.dll, SIZE=33896
[GroupStuff]
GroupNameThunderAdmin = "Thunder/24 EISA Admin"
GroupNameThunder = "Thunder/24 EISA"
GroupNameSpectrumAdmin = "Spectrum/24 EISA Admin"
GroupNameSpectrum = "Spectrum/24 EISA"
GroupNameAdmin = "Thunder/24 EISA Admin"
GroupNameThis = "Thunder/24 EISA"
KeyHandle = ""
KeyProduct = ""
KeyNull = ""
RegLastError = $(!REG_ERROR_SUCCESS)