home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 July / VPR9607B.BIN / driver / iodata / rsa_140 / rsa_140.upd / NT / 9032 / OEMSETUP.INF next >
INI File  |  1996-02-27  |  66KB  |  1,665 lines

  1. ;-----------------------------------------------------------------------
  2. ; OPTION TYPE
  3. ; -----------
  4. ; This identifies the Option type we are dealing with.  The different
  5. ; possible types are:
  6. ;
  7. ; COMPUTER, VIDEO, POINTER, KEYBOARD, LAYOUT, SCSI, TAPE, PRINTER, ...
  8. ;-----------------------------------------------------------------------
  9.  
  10. [Identification]
  11.     OptionType = POINTER
  12.  
  13. ;-----------------------------------------------------------------------
  14. ; LANGUAGES SUPPORTED
  15. ; -------------------
  16. ;
  17. ; The languages supported by the INF, For every language supported
  18. ; we need to have a separate text section for every displayable text
  19. ; section.
  20. ;
  21. ;-----------------------------------------------------------------------
  22.  
  23. [LanguagesSupported]
  24.     ENG
  25.  
  26.  
  27. ;-----------------------------------------------------------------------
  28. ; OPTION LIST
  29. ; -----------
  30. ; This section lists the Option key names.  These keys are locale
  31. ; independent and used to represent the option in a locale independent
  32. ; manner.
  33. ;
  34. ;-----------------------------------------------------------------------
  35.  
  36. [Options]
  37.     "Ser9032B"    = Ser9032B
  38.  
  39. ;-----------------------------------------------------------------------
  40. ; OPTION TEXT SECTION
  41. ; -------------------
  42. ; These are text strings used to identify the option to the user.  There
  43. ; are separate sections for each language supported.  The format of the
  44. ; section name is "OptionsText" concatenated with the Language represented
  45. ; by the section.
  46. ;
  47. ;-----------------------------------------------------------------------
  48.  
  49. [OptionsTextENG]
  50.       "SerRSA98"    = "アイ・オー・データ 高速シリアルボード PIO-B9032シリーズ"
  51.  
  52. [FileConstants]
  53.     !MAXIMUM_ALLOWED   = 33554432
  54.  
  55. ;-----------------------------------------------------------------------------------------
  56. ; RS-232C CARD DRIVERS:
  57. ;
  58. ; Order of the information:
  59. ;
  60. ; Class driver = Type, Group, ErrorControl, Tag, EventMessageFile, TypesSupported
  61. ;
  62. ;-----------------------------------------------------------------------------------------
  63.  
  64. [RsDrivers]
  65. ;;    Ser9032B  = !SERVICE_KERNEL_DRIVER, "Extended base", !SERVICE_ERROR_IGNORE, 3, %SystemRoot%\System32\IoLogMsg.dll, 7, 5, 568
  66. ; fujino 960226
  67. ;      Ser9032B = !SERVICE_KERNEL_DRIVER, "Extended base", !SERVICE_ERROR_IGNORE, 3, %SystemRoot%\System32\IoLogMsg.dll, 7, 3, 20704,20704,6
  68.       Ser9032B = !SERVICE_KERNEL_DRIVER, "Extended base", !SERVICE_ERROR_IGNORE, 3, %SystemRoot%\System32\IoLogMsg.dll, 7, 3, 20656,20656,6,3,20658
  69.  
  70. ;     IRQ=3, IOBase=01B0h(432)
  71.  
  72. ;---------------------------------------------------------------------------
  73. ; 1. Identify
  74. ;
  75. ; DESCRIPTION:   To verify that this INF deals with the same type of options
  76. ;                as we are choosing currently.
  77. ;
  78. ; INPUT:         None
  79. ;
  80. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
  81. ;                $($R1): Option Type (COMPUTER ...)
  82. ;                $($R2): Diskette description
  83. ;---------------------------------------------------------------------------
  84.  
  85. [Identify]
  86.     ;
  87.     ;
  88.     read-syms Identification
  89.  
  90.     set Status     = STATUS_SUCCESSFUL
  91.     set Identifier = $(OptionType)
  92.     set Media      = #("Source Media Descriptions", 1, 1)
  93.  
  94.     Return $(Status) $(Identifier) $(Media)
  95.  
  96.  
  97.  
  98. ;------------------------------------------------------------------------
  99. ; 2. ReturnOptions:
  100. ;
  101. ; DESCRIPTION:   To return the option list supported by this INF and the
  102. ;                localised text list representing the options.
  103. ;
  104. ;
  105. ; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
  106. ;
  107. ; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
  108. ;                                STATUS_NOLANGUAGE
  109. ;                                STATUS_FAILED
  110. ;
  111. ;                $($R1): Option List
  112. ;                $($R2): Option Text List
  113. ;------------------------------------------------------------------------
  114.  
  115. [ReturnOptions]
  116.     ;
  117.     ;
  118.     set Status        = STATUS_FAILED
  119.     set OptionList     = {}
  120.     set OptionTextList = {}
  121.  
  122.     ;
  123.     ; Check if the language requested is supported
  124.     ;
  125.     set LanguageList = ^(LanguagesSupported, 1)
  126.     Ifcontains(i) $($0) in $(LanguageList)
  127.         goto returnoptions
  128.     else
  129.         set Status = STATUS_NOLANGUAGE
  130.         goto finish_ReturnOptions
  131.     endif
  132.  
  133.     ;
  134.     ; form a list of all the options and another of the text representing
  135.     ;
  136.  
  137. returnoptions = +
  138.     set OptionList     = ^(Options, 0)
  139.     set OptionTextList = ^(OptionsText$($0), 1)
  140.     set Status         = STATUS_SUCCESSFUL
  141.  
  142. finish_ReturnOptions = +
  143.     Return $(Status) $(OptionList) $(OptionTextList)
  144.  
  145.  
  146. ;
  147. ; 3. InstallOption:
  148. ;
  149. ; FUNCTION:  To copy files representing Options
  150. ;            To configure the installed option
  151. ;            To update the registry for the installed option
  152. ;
  153. ; INPUT:     $($0):  Language to use
  154. ;            $($1):  OptionID to install
  155. ;            $($2):  SourceDirectory
  156. ;            $($3):  AddCopy  (YES | NO)
  157. ;            $($4):  DoCopy   (YES | NO)
  158. ;            $($5):  DoConfig (YES | NO)
  159. ;
  160. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  161. ;                            STATUS_NOLANGUAGE |
  162. ;                            STATUS_USERCANCEL |
  163. ;                            STATUS_FAILED
  164. ;
  165.  
  166. [InstallOption]
  167.  
  168.     ;
  169.     ; Set default values for
  170.     ;
  171.     set Status = STATUS_FAILED
  172.     set DrivesToFree = {}
  173.     read-syms FileConstants
  174.  
  175.     ;
  176.     ; extract parameters
  177.     ;
  178.     set Option   = $($1)
  179.     set SrcDir   = $($2)
  180.     set AddCopy  = $($3)
  181.     set DoCopy   = $($4)
  182.     set DoConfig = $($5)
  183.  
  184.     ;
  185.     ; Check if the language requested is supported
  186.     ;
  187.     set LanguageList = ^(LanguagesSupported, 1)
  188.     Ifcontains(i) $($0) in $(LanguageList)
  189.     else
  190.         set Status = STATUS_NOLANGUAGE
  191.         goto finish_InstallOption
  192.     endif
  193.     read-syms Strings$($0)
  194.  
  195.     ;
  196.     ; check to see if Option is supported.
  197.     ;
  198.  
  199.     set OptionList = ^(Options, 0)
  200.     ifcontains $(Option) in $(OptionList)
  201.     else
  202. ;       Debug-Output "SCSI.INF: SCSI option is not supported."
  203.         goto finish_InstallOption
  204.     endif
  205.     set OptionList = ""
  206.  
  207.     ;
  208.     ; Option has been defined already
  209.     ;
  210.  
  211.     set RsDriver         =   #(Options,   $(Option),   1)
  212.     set Type             = $(#(RsDrivers, $(RsDriver), 1))
  213.     set Group            =   #(RsDrivers, $(RsDriver), 2)
  214.     set ErrorControl     = $(#(RsDrivers, $(RsDriver), 3))
  215.     set Tag              =   #(RsDrivers, $(RsDriver), 4)
  216.     set EventMessageFile =   #(RsDrivers, $(RsDriver), 5)
  217.     set TypesSupported   =   #(RsDrivers, $(RsDriver), 6)
  218.     set Interrupt        =   #(RsDrivers, $(RsDriver), 7)
  219.     set PortAddress      =   #(RsDrivers, $(RsDriver), 8)
  220.     set TimerPortAddress =   #(RsDrivers, $(RsDriver), 9)
  221.     set TimerValue       =   #(RsDrivers, $(RsDriver), 10)
  222.     set Interrupt2        =   #(RsDrivers, $(RsDriver), 11)
  223.     set PortAddress2      =   #(RsDrivers, $(RsDriver), 12)
  224.     set Start            =   $(!SERVICE_AUTO_START)
  225.  
  226. installtheoption = +
  227.  
  228.     ;
  229.     ; Code to add files to copy list
  230.     ;
  231.  
  232.     ifstr(i) $(AddCopy) == "YES"
  233.         set DoActualCopy = NO
  234.         set FileToCheck = #(Files-RsDrivers, $(RsDriver), 2)
  235.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
  236.         ifstr(i) $(STATUS) == NO
  237.             set DoActualCopy = YES
  238.         endif
  239.  
  240.         ifstr(i) $(DoActualCopy) == NO
  241.             shell "subroutn.inf" DriversExist $($0) $(String1)
  242.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  243.                 goto finish_InstallOption
  244.             endif
  245.  
  246.             ifstr(i) $($R0) == STATUS_CURRENT
  247.             else-ifstr(i) $($R0) == STATUS_NEW
  248.                 set DoActualCopy = YES
  249.             else-ifstr(i) $($R0) == STATUS_USERCANCEL
  250.                 goto finish_InstallOption
  251.             else
  252.                 goto finish_InstallOption
  253.             endif
  254.         endif
  255.  
  256.         ifstr(i) $(DoActualCopy) == YES
  257.  
  258.             shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
  259.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  260.                 goto finish_InstallOption
  261.             endif
  262.  
  263.             ifstr(i) $($R0) == STATUS_SUCCESSFUL
  264.                 set SrcDir = $($R1)
  265.                 ifstr(i) $($R2) != ""
  266.                     set DrivesToFree = >($(DrivesToFree), $($R2))
  267.                 endif
  268.             else
  269.                 goto finish_InstallOption
  270.             endif
  271.  
  272.             install Install-AddCopyOption
  273.             ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
  274.                 goto finish_InstallOption
  275.             endif
  276.         else
  277.             set DoCopy = NO
  278.         endif
  279.  
  280.     endif
  281.  
  282.     ifstr(i) $(DoCopy) == "YES"
  283.         read-syms ProgressCopy$($0)
  284.         install Install-DoCopyOption
  285.         ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  286.             Debug-Output "Copying files failed"
  287.             goto finish_InstallOption
  288.         else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  289.             set Status = STATUS_USERCANCEL
  290.             goto finish_InstallOption
  291.         endif
  292.     endif
  293.  
  294.     ifstr(i) $(DoConfig) == "YES"
  295.         ;
  296.         ; first run a privilege check on modifying the setup node
  297.         ;
  298.  
  299.         shell "registry.inf" CheckSetupModify
  300.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  301.             goto finish_InstallOption
  302.         endif
  303.  
  304.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  305.             goto finish_InstallOption
  306.         endif
  307.  
  308.         ;
  309.         ; then make a new RS-232C entry, the entry is created automatically
  310.         ; enabled
  311.         ;
  312.  
  313.         set ServiceNode   = $(RsDriver)
  314.         set ServiceBinary = System32\drivers\#(Files-RsDrivers, $(RsDriver), 2)
  315.  
  316.         set ServicesValues   = { +
  317.                 {Type,           0, $(!REG_VT_DWORD),     $(Type)                  }, +
  318.                 {Start,          0, $(!REG_VT_DWORD),     $(Start)                 }, +
  319.                 {Group,          0, $(!REG_VT_SZ),        $(Group)                 }, +
  320.                 {ErrorControl,   0, $(!REG_VT_DWORD),     $(ErrorControl)          }, +
  321.                 {Tag,            0, $(!REG_VT_DWORD),     $(Tag)                   }, +
  322.                 {BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary)         }  +
  323.                 }
  324.         set ParametersValues = {}
  325.  ;               {TimerPortAddress,  0, $(!REG_VT_DWORD),     $(TimerPortAddress)     },  +
  326.  ;               {TimerValue,        0, $(!REG_VT_DWORD),     $(TimerValue)           }  +
  327.  ;               }
  328. ;        set DeviceValues     = {}
  329.         set RSAValues     = { +
  330.                 {Interrupt,      0, $(!REG_VT_DWORD),     $(Interrupt)             }, +
  331.                 {PortAddress,    0, $(!REG_VT_DWORD),     $(PortAddress)           }  +
  332.                 }
  333.         set RSA2Values     = { +
  334.                 {Interrupt,      0, $(!REG_VT_DWORD),     $(Interrupt2)             }, +
  335.                 {PortAddress,    0, $(!REG_VT_DWORD),     $(PortAddress2)           }  +
  336.                 }
  337.         set EventLogValues   = { +
  338.                 {EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
  339.                 {TypesSupported,   0, $(!REG_VT_DWORD),     $(TypesSupported)   }  +
  340.                 }
  341.  
  342. ; fujino 960226
  343. ;        shell "registry.inf"  MakeServicesEntry $(ServiceNode)      +
  344.         shell "" MakeServicesEntry2 $(ServiceNode)      +
  345.                                                 $(ServicesValues)   +
  346.                                                 $(ParametersValues) +
  347. ;                                                $(DeviceValues)     +
  348.                                                 $(RSAValues)     +
  349.                                                 $(EventLogValues)   +
  350.                                                 Parameters +
  351. ;                                                "RSA1"
  352.                                                 "9032B1"
  353.  
  354.         shell "" MakeServicesEntry2 $(ServiceNode)      +
  355.                                                 $(ServicesValues)   +
  356.                                                 $(ParametersValues) +
  357. ;                                                $(DeviceValues)     +
  358.                                                 $(RSA2Values)     +
  359.                                                 $(EventLogValues)   +
  360.                                                 Parameters        +
  361. ;                                                "RSA2"
  362.                                                 "9032B2"
  363.  
  364.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  365.             Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
  366.             goto finish_InstallOption
  367.         endif
  368.  
  369.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  370.             Debug-Output "MakeServicesEntry failed for RS-232C"
  371.             goto finish_InstallOption
  372.         endif
  373.  
  374.         ;
  375.         ; Delete CurrentControlSet\Services\Ser9032B Value
  376.         ;
  377.         set Ser9032BServiceName = "SYSTEM\CurrentControlSet\Services\Ser9032B"
  378.         OpenRegKey $(!REG_H_LOCAL) "" $(Ser9032BServiceName) $(!MAXIMUM_ALLOWED) KeyService
  379.         Ifstr(i) $(KeyService) != $(KeyNull)
  380.             DeleteRegValue $(KeyService) "ImagePath"
  381. ;            DeleteRegValue $(KeyService) "Tag"
  382.             DeleteRegKey $(KeyService) "Security"
  383.             CloseRegKey $(KeyService)
  384.             Debug-Output "Ser9032B Service Value Deleted(Imagepath, Tag, Security)"
  385.         else
  386.             Debug-Output "SYSTEM\CurrentControlSet\Services\Ser9032B KeyService Open Error"
  387.         endif
  388.  
  389.  
  390. ;;;;;;;H.K
  391.         set Parameters1 = "SYSTEM\CurrentControlSet\Services\Ser9032B\Parameters"
  392.         set ParametersKey = ""
  393.  
  394. ;;fujino 960226
  395. ;;      OpenRegKey $(KeyService) "" $("Parameters1") $(!MAXIMUM_ALLOWED) ParametersKey
  396.         OpenRegKey $(KeyService) "" $(Parameters1) $(!MAXIMUM_ALLOWED) ParametersKey
  397.  
  398.         Ifstr(i) $(ParametersKey) != $(KeyNull)
  399.             CloseRegKey $(ParametersKey)
  400. ;            Debug-Output "Ser9032B Service Value Deleted(Imagepath, Tag, Security)"
  401.         else
  402. ;            Debug-Output "SYSTEM\CurrentControlSet\Services\Ser9032B KeyService Open Error"
  403.         endif
  404.  
  405.         set RSAValues     = { +
  406.                 {Interrupt2,      0, $(!REG_VT_DWORD),     $(Interrupt)             }, +
  407.                 {PortAddress2,    0, $(!REG_VT_DWORD),     $(PortAddress)           }  +
  408.                 }
  409. ;    shell "" AddValueList $(ParametersKey) $(RSAValues)
  410.  
  411.  
  412.  
  413.         set DirRSA = "SYSTEM\CurrentControlSet\Services\Ser9032B\Parameters\RSA"
  414.         set RSAKey = ""
  415.         set RSATmp = {"RSA","",""}
  416.         set NoTitle = 0
  417. ;        CreateRegKey $(ParametersKSey) $(RSATmp) 0 $(!MAXIMUM_ALLOWED) "" RSAKey
  418.  
  419. ;fujino 960226
  420. ;       CreateRegKey $(ParametersKSey) {"RSA",0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" RSAKey
  421. ;        CreateRegKey $(ParametersKSey) {"9032B",$(NoTitle),GenericClass} "" $(!MAXIMUM_ALLOWED) "" RSAKey
  422.  
  423.         Ifstr(i) $(RSAKey) != $(KeyNull)
  424.             CloseRegKey $(RSAKey)
  425. ;            Debug-Output "Ser9032B Service Value Deleted(Imagepath, Tag, Security)"
  426.         else
  427. ;            Debug-Output "SYSTEM\CurrentControlSet\Services\Ser9032B KeyService Open Error"
  428.         endif
  429. ;;;        
  430.  
  431.     endif
  432.  
  433.     set Status = STATUS_SUCCESSFUL
  434. finish_InstallOption = +
  435.     ForListDo $(DrivesToFree)
  436.         LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
  437.     EndForListDo
  438.  
  439.     Return $(Status)
  440.  
  441.  
  442. [Install-AddCopyOption]
  443.  
  444.     ;
  445.     ; Add the files to the copy list
  446.     ;
  447.     AddSectionKeyFileToCopyList   Files-RsDrivers                +
  448.                                   $(RsDriver)                    +
  449.                                   $(SrcDir)                      +
  450.                                   $(!STF_WINDOWSSYSPATH)\drivers
  451.  
  452.     exit
  453.  
  454.  
  455. [Install-DoCopyOption]
  456.  
  457.     ;
  458.     ; Copy files in the copy list
  459.     ;
  460.     CopyFilesInCopyList
  461.     exit
  462.  
  463. ;-------------------------------------------------------------------------
  464. ; 4. DeInstallOption:
  465. ;
  466. ; FUNCTION:  To remove files representing Option
  467. ;            To remove the registry entry corresponding to the Option
  468. ;
  469. ; INPUT:     $($0):  Language to use
  470. ;            $($1):  OptionID to install
  471. ;
  472. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  473. ;                            STATUS_NOLANGUAGE |
  474. ;                            STATUS_USERCANCEL |
  475. ;                            STATUS_FAILED
  476. ;-------------------------------------------------------------------------
  477. [DeInstallOption]
  478.     ;
  479.     ; Set default values for
  480.     ;
  481.     set Status   = STATUS_FAILED
  482.     ;
  483.     ; extract parameters
  484.     ;
  485.     set Option   = $($1)
  486.  
  487.     ;
  488.     ; Check if the language requested is supported
  489.     ;
  490.     set LanguageList = ^(LanguagesSupported, 1)
  491.     Ifcontains(i) $($0) in $(LanguageList)
  492.     else
  493.         set Status = STATUS_NOLANGUAGE
  494.         goto finish_DeInstallOption
  495.     endif
  496.     read-syms Strings$($0)
  497.  
  498.     ;
  499.     ; check to see if Option is supported.
  500.     ;
  501.  
  502.     set OptionList = ^(Options, 0)
  503.     ifcontains $(Option) in $(OptionList)
  504.     else
  505.         goto finish_DeInstallOption
  506.     endif
  507.     set OptionList = ""
  508.  
  509.     ;
  510.     ; fetch details about option
  511.     ;
  512.  
  513.     set RsDriver = #(Options, $(Option), 1)
  514.     set MiniportFile   = #(Files-RsDrivers, $(RsDriver), 2)
  515.     set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(MiniportFile)
  516.  
  517.     ;
  518.     ; check to see if file is installed
  519.     ; if not give success
  520.     ;
  521.  
  522.     LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
  523.     ifstr(i) $(STATUS) == "NO"
  524.         set Status = STATUS_SUCCESSFUL
  525.         goto finish_DeInstallOption
  526.     endif
  527.  
  528.     shell "registry.inf" GetServicesEntryStart $(RsDriver)
  529.     ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
  530.         ; this could happen if there is no start value or there is no
  531.         ; key, in which case the option is not installed
  532.         set Status = STATUS_SUCCESSFUL
  533.         goto finish_DeInstallOption
  534.     endif
  535.  
  536. ;    ifstr(i) $($R1) == $(!SERVICE_BOOT_START)
  537. ;        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(String3)
  538. ;        ifstr(i) $($R0) != STATUS_SUCCESSFUL
  539. ;            goto do_removal
  540. ;        endif
  541. ;        ifstr(i) $($R1) == "CANCEL"
  542. ;            goto finish_DeInstallOption
  543. ;        endif
  544. ;    endif
  545.  
  546. do_removal =+
  547.     ;
  548.     ; disable the registry entry
  549.     ;
  550.  
  551.     shell "registry.inf" RemoveServicesEntry $(RsDriver)
  552.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  553.         goto finish_DeInstallOption
  554.     endif
  555.  
  556.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  557.         goto finish_DeInstallOption
  558.     endif
  559.  
  560.     ;
  561.     ; we won't remove the file because we can only do so during the next boot.
  562.     ; if the user chooses to reinstall the same driver during this boot
  563.     ; he will still end up deleting the driver on next boot. if the file
  564.     ; should be deleted a warning should be put up saying that the user should
  565.     ; not try to reinstall the driver during this boot
  566.     ;
  567.     ;    AddFileToDeleteList $(FilePath)
  568.  
  569.     set Status = STATUS_SUCCESSFUL
  570.  
  571. finish_DeInstallOption =+
  572.     return $(Status)
  573.  
  574.  
  575. ;-------------------------------------------------------------------------
  576. ; 5. GetInstalledOptions:
  577. ;
  578. ; FUNCTION:  To find out the list of options which are installed
  579. ;
  580. ; INPUT:     $($0): Language to Use
  581. ;
  582. ; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
  583. ;                            STATUS_FAILED
  584. ;
  585. ;            $($R1): List of options installed
  586. ;            $($R2): Option installed Text List
  587. ;-------------------------------------------------------------------------
  588. [GetInstalledOptions]
  589.     set Status = STATUS_FAILED
  590.     set InstalledOptions = {}
  591.     set InstalledOptionsText = {}
  592.  
  593.     ;
  594.     ; Check if the language requested is supported
  595.     ;
  596.     set LanguageList = ^(LanguagesSupported, 1)
  597.     Ifcontains(i) $($0) in $(LanguageList)
  598.     else
  599.         set Status = STATUS_NOLANGUAGE
  600.         goto finish_GetInstalledOptions
  601.     endif
  602.  
  603.     set OptionList = ^(Options, 0)
  604.     ForListDo $(OptionList)
  605.         set RsDriver = #(Options, $($), 1)
  606.         set MiniportFile   = #(Files-RsDrivers, $(RsDriver), 2)
  607.         set FilePath       = $(!STF_WINDOWSSYSPATH)"\drivers\"$(MiniportFile)
  608.         LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FilePath)
  609.         ifstr(i) $(STATUS) == "YES"
  610.             shell "registry.inf" GetServicesEntryStart $(RsDriver)
  611.             ifint $($ShellCode) == $(!SHELL_CODE_OK)
  612.                 ifstr(i) $($R0) == STATUS_SUCCESSFUL
  613.                     ifstr(i) $($R1) != $(!SERVICE_DISABLED)
  614.  
  615.                         set OptionText = #(OptionsText$($0), $($), 1)
  616.                         set InstalledOptions     = >($(InstalledOptions), $($))
  617.                         set InstalledOptionsText = >($(InstalledOptionsText), $(OptionText))
  618.  
  619.                     endif
  620.                 endif
  621.             endif
  622.         endif
  623.     EndForListDo
  624.     set Status = STATUS_SUCCESSFUL
  625. finish_GetInstalledOptions =+
  626.     Return $(Status) $(InstalledOptions) $(InstalledOptionsText)
  627.  
  628.  
  629. ;; start registry
  630.  
  631.  
  632. [RegistryConstants]
  633.     MaskAllAccess          = 33554432
  634.     NoTitle                = 0
  635.     RegLastError           = $(!REG_ERROR_SUCCESS)
  636. [WinNTKeyCreate]
  637.     set Status = STATUS_FAILED
  638.     read-syms RegistryConstants
  639.     set KeyPath   = { +
  640.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  641.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  642.                      {"Windows NT",      $(NoTitle), $(MaskAllAccess)}, +
  643.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}  +
  644.                     }
  645.     ifstr(i) $(!STF_NTUPGRADE) == "YES"
  646.         set KeyValues = { +
  647.                          {PathName,               $(NoTitle), $(!REG_VT_SZ),    *($($0), 1) },       +
  648.                          {SoftwareType,           $(NoTitle), $(!REG_VT_SZ),    *($($0), 2) },       +
  649.                          {InstallDate,            $(NoTitle), $(!REG_VT_DWORD), *(*($($0), 5), 1) }, +
  650.                          {SourcePath,             $(NoTitle), $(!REG_VT_SZ),    *($($0), 7) },       +
  651.                          {ProductId,              $(NoTitle), $(!REG_VT_SZ),    *($($0), 8) }        +
  652.                         }
  653.     else
  654.         set KeyValues = { +
  655.                          {PathName,               $(NoTitle), $(!REG_VT_SZ),    *($($0), 1) },       +
  656.                          {SoftwareType,           $(NoTitle), $(!REG_VT_SZ),    *($($0), 2) },       +
  657.                          {RegisteredOwner,        $(NoTitle), $(!REG_VT_SZ),    *($($0), 3) },       +
  658.                          {RegisteredOrganization, $(NoTitle), $(!REG_VT_SZ),    *($($0), 4) },       +
  659.                          {InstallDate,            $(NoTitle), $(!REG_VT_DWORD), *(*($($0), 5), 1) }, +
  660.                          {SourcePath,             $(NoTitle), $(!REG_VT_SZ),    *($($0), 7) },       +
  661.                          {ProductId,              $(NoTitle), $(!REG_VT_SZ),    *($($0), 8) }        +
  662.                         }
  663.     endif
  664.     shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  665.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  666.         goto endWinNT
  667.     endif
  668.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  669.         goto endWinNT
  670.     else
  671.         CloseRegKey $($R1)
  672.     endif
  673.     set KeyPath   = { +
  674.                      {System,             $(NoTitle), $(MaskAllAccess)}, +
  675.                      {$(!STF_CONTROLSET), $(NoTitle), $(MaskAllAccess)}, +
  676.                      {Control,            $(NoTitle), $(MaskAllAccess)}, +
  677.                      {ProductOptions,     $(NoTitle), $(MaskAllAccess)}  +
  678.                     }
  679.     set KeyValues = { +
  680.                      {ProductType,        $(NoTitle), $(!REG_VT_SZ), *($($0), 6) } +
  681.                     }
  682.     shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  683.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  684.         goto endWinNT
  685.     endif
  686.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  687.         goto endWinNT
  688.     else
  689.         CloseRegKey $($R1)
  690.     endif
  691.     ifstr(i) $(!STF_NTUPGRADE) != "YES"
  692.         ifstr(i) *($($0), 6) != "WinNT"
  693.             set KeyPath   = { +
  694.                              {System,             $(NoTitle), $(MaskAllAccess)}, +
  695.                              {$(!STF_CONTROLSET), $(NoTitle), $(MaskAllAccess)}, +
  696.                              {Control,            $(NoTitle), $(MaskAllAccess)}, +
  697.                              {"Session Manager",  $(NoTitle), $(MaskAllAccess)}  +
  698.                             }
  699.             set KeyValues = { +
  700.                              {RegisteredProcessors, $(NoTitle), $(!REG_VT_DWORD), 4 } +
  701.                             }
  702.             shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  703.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  704.                 goto endWinNT
  705.             endif
  706.             ifstr(i) $($R0) != STATUS_SUCCESSFUL
  707.                 goto endWinNT
  708.             else
  709.                 CloseRegKey $($R1)
  710.             endif
  711.         endif
  712.     endif
  713.     set Status = STATUS_SUCCESSFUL
  714. endWinNT = +
  715.     Return $(Status)
  716. [WinNTAddPid]
  717.     set Status = STATUS_FAILED
  718.     read-syms RegistryConstants
  719.     set KeyPath   = { +
  720.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  721.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  722.                      {"Windows NT",   $(NoTitle), $(MaskAllAccess)}, +
  723.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}  +
  724.                     }
  725.     set KeyValues = { +
  726.                      {ProductId,      $(NoTitle), $(!REG_VT_SZ), *($($0), 1) }        +
  727.                     }
  728.     shell "" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  729.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  730.         goto endWinNTAdd
  731.     endif
  732.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  733.         goto endWinNTAdd
  734.     else
  735.         CloseRegKey $($R1)
  736.     endif
  737.     set Status = STATUS_SUCCESSFUL
  738. endWinNTAdd = +
  739.     Return $(Status)
  740. [MakeStartupEntry]
  741.     set Status = STATUS_FAILED
  742.     read-syms RegistryConstants
  743.     set KeyPath   = { +
  744.                      {SOFTWARE,          $(NoTitle), $(MaskAllAccess)}, +
  745.                      {Microsoft,         $(NoTitle), $(MaskAllAccess)}, +
  746.                      {"Windows NT",      $(NoTitle), $(MaskAllAccess)}, +
  747.                      {CurrentVersion,    $(NoTitle), $(MaskAllAccess)}, +
  748.                      {"Program Manager", $(NoTitle), $(MaskAllAccess)}, +
  749.                      {Settings,          $(NoTitle), $(MaskAllAccess)}  +
  750.                     }
  751.     set KeyValues = { +
  752.                      {Startup, $(NoTitle), $(!REG_VT_SZ), $($0)} +
  753.                     }
  754.     shell "" CreateKey $(!REG_H_CUSER) $(KeyPath) $(KeyValues)
  755.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  756.         goto end_MakeStartupEntry
  757.     endif
  758.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  759.         goto end_MakeStartupEntry
  760.     else
  761.         CloseRegKey $($R1)
  762.     endif
  763.     set Status = STATUS_SUCCESSFUL
  764. end_MakeStartupEntry = +
  765.     Return $(Status)
  766. [GetNTSource]
  767.     set Status = STATUS_SUCCESSFUL
  768.     read-syms RegistryConstants
  769.     set NTSource = A:\
  770.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  771.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  772.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  773.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  774.         goto end_getntsource
  775.     endif
  776.     GetRegValue $(KeyHandle) "SourcePath" SourcePathValue
  777.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  778.         CloseRegKey $(KeyHandle)
  779.         goto end_getntsource
  780.     endif
  781.     set NTSource =  *($(SourcePathValue), 4)
  782.     CloseRegKey $(KeyHandle)
  783. end_getntsource = +
  784.     Return $(Status) $(NTSource)
  785. [AppendToBootExecute]
  786.     set Status           = STATUS_FAILED
  787.     set AppendLines      = $($0)
  788.     read-syms RegistryConstants
  789.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager"
  790.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  791.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  792.         Debug-Output "REGISTRY.INF: Couldn't open session manager node for read/write access"
  793.         goto finish_appendbootexecute
  794.     endif
  795.     GetRegValue $(KeyHandle) "BootExecute" BootExecuteValue
  796.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  797.         set BootExecute = {}
  798.     else
  799.         set BootExecute = *($(BootExecuteValue), 4)
  800.     endif
  801.     set NewBootExecute = {}
  802.     ForListDo $(BootExecute)
  803.         set NewBootExecute = >($(NewBootExecute), $($))
  804.     EndForListDo
  805.     ForListDo $(AppendLines)
  806.         set NewBootExecute = >($(NewBootExecute), $($))
  807.     EndForListDo
  808.     set ValueInfo = {BootExecute, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NewBootExecute)}
  809.     SetRegValue $(KeyHandle) $(ValueInfo)
  810.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  811.         CloseRegKey $(KeyHandle)
  812.         Debug-Output "REGISTRY.INF: Couldn't set BootExecute value"
  813.         goto finish_appendbootexecute
  814.     endif
  815.     CloseRegKey $(KeyHandle)
  816.     set Status = STATUS_SUCCESSFUL
  817. finish_appendbootexecute = +
  818.     Return $(Status)
  819. [AppendToSystemPath]
  820.     set Status           = STATUS_FAILED
  821.     read-syms RegistryConstants
  822.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Environment"
  823.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  824.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  825.         Debug-Output "REGISTRY.INF: Couldn't open session manager\environment node for read/write access"
  826.         goto finish_appendsystempath0
  827.     endif
  828.     GetRegValue $(KeyHandle) "Path" PathValue
  829.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  830.         goto finish_appendsystempath1
  831.     endif
  832.     set NewPathValue = *($(PathValue),4)";"$($0)
  833.     set ValueInfo = {"Path", $(NoTitle), $(!REG_VT_EXPAND_SZ), $(NewPathValue)}
  834.     SetRegValue $(KeyHandle) $(ValueInfo)
  835.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  836.         Debug-Output "REGISTRY.INF: Couldn't set Path value"
  837.         goto finish_appendsystempath1
  838.     endif
  839.     set Status = STATUS_SUCCESSFUL
  840. finish_appendsystempath1 = +
  841.     CloseRegKey $(KeyHandle)
  842. finish_appendsystempath0 = +
  843.     Return $(Status)
  844. [EnumeratePagingFiles]
  845.     set Status       = STATUS_FAILED
  846.     set PagingFiles  = {}
  847.     read-syms RegistryConstants
  848.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  849.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  850.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  851.         Debug-Output "REGISTRY.INF: Couldn't open pagefile node for read access"
  852.         goto endenumpagefile
  853.     endif
  854.     GetRegValue $(KeyHandle) "PagingFiles" PagingFilesValue
  855.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  856.         Debug-Output "REGISTRY.INF: Couldn't read PagingFiles value"
  857.         CloseRegKey $(KeyHandle)
  858.         goto endenumpagefile
  859.     endif
  860.     CloseRegKey $(KeyHandle)
  861.     ifstr(i) $(PagingFilesValue) == ""
  862.         set Status = STATUS_SUCCESSFUL
  863.         goto endenumpagefile
  864.     endif
  865.     set PagefileList = *($(PagingFilesValue), 4)
  866.     ForListDo $(PagefileList)
  867.        ifstr(i) $($) != ""
  868.            set Pagefile = $($)
  869.            Split-String $(Pagefile) " " SplitString
  870.            set PagefilePath  = ""
  871.            set PagefileSize  = ""
  872.            ForListDo $(SplitString)
  873.               ifstr(i) $($) != " "
  874.                  ifstr(i) $(PagefilePath) == ""
  875.                      set PagefilePath = $($)
  876.                  else-ifstr(i) $(PagefileSize) == ""
  877.                      set PagefileSize = $($)
  878.                  endif
  879.               endif
  880.            EndForListDo
  881.            ifstr(i) $(PagefilePath) == ""
  882.            else-ifstr(i) $(PagefileSize) == ""
  883.            else
  884.                set PagingFiles = >($(PagingFiles), {$(PagefilePath),$(PagefileSize)})
  885.            endif
  886.        endif
  887.     EndForListDo
  888.     set Status = STATUS_SUCCESSFUL
  889. endenumpagefile = +
  890.     Return $(Status) $(PagingFiles)
  891. [SetPagingFiles]
  892.     set Status       = STATUS_FAILED
  893.     set PagingFiles  = {}
  894.     read-syms RegistryConstants
  895.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  896.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  897.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  898.         goto endsetpagingfiles
  899.     endif
  900.     set PagefileList = {}
  901.     ForListDo $($0)
  902.         set PagefileList = >($(PagefileList), *($($), 1)" "*($($), 2) )
  903.     EndForListDo
  904.     Debug-Output "REGISTRY.INF: New Paging files are "$(PagefileList)
  905.     set ValueInfo = {PagingFiles, $(NoTitle), $(!REG_VT_MULTI_SZ), $(PagefileList)}
  906.     SetRegValue $(KeyHandle) $(ValueInfo)
  907.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  908.         CloseRegKey $(KeyHandle)
  909.         Debug-Output "REGISTRY.INF: Couldn't set paging files value"
  910.         goto endsetpagingfiles
  911.     endif
  912.     CloseRegKey $(KeyHandle)
  913.     set Status = STATUS_SUCCESSFUL
  914. endsetpagingfiles = +
  915.     Return $(Status)
  916. [MakeQuotaEntries]
  917.     set Status       = STATUS_FAILED
  918.     read-syms RegistryConstants
  919.     set PagedPoolSize     = $($0)
  920.     set RegistrySizeLimit = $($1)
  921.     set MBMultiplier  = 1024
  922.     set-mul MBMultiplier  = $(MBMultiplier) 1024
  923.     set-mul PagedPoolSize     = $(PagedPoolSize)     $(MBMultiplier)
  924.     set-mul RegistrySizeLimit = $(RegistrySizeLimit) $(MBMultiplier)
  925.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  926.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  927.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  928.         Debug-Output "REGISTRY.INF: Couldn't open memory management key"
  929.         goto end_MakeQuotaEntries
  930.     endif
  931.     set ValueInfo = {PagedPoolSize, $(NoTitle), $(!REG_VT_DWORD), $(PagedPoolSize)}
  932.     SetRegValue $(KeyHandle) $(ValueInfo)
  933.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  934.         CloseRegKey $(KeyHandle)
  935.         Debug-Output "REGISTRY.INF: Couldn't set pagepoolsize value"
  936.         goto end_MakeQuotaEntries
  937.     endif
  938.     CloseRegKey $(KeyHandle)
  939.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control"
  940.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  941.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  942.         Debug-Output "REGISTRY.INF: Couldn't open control key"
  943.         goto end_MakeQuotaEntries
  944.     endif
  945.     set ValueInfo = {RegistrySizeLimit, $(NoTitle), $(!REG_VT_DWORD), $(RegistrySizeLimit)}
  946.     SetRegValue $(KeyHandle) $(ValueInfo)
  947.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  948.         CloseRegKey $(KeyHandle)
  949.         Debug-Output "REGISTRY.INF: Couldn't set registry size limit value"
  950.         goto end_MakeQuotaEntries
  951.     endif
  952.     CloseRegKey $(KeyHandle)
  953.     set Status = STATUS_SUCCESSFUL
  954. end_MakeQuotaEntries = +
  955.     Return $(Status)
  956. [MakeWOWEntry]
  957.     set Status = STATUS_FAILED
  958.     read-syms  RegistryConstants
  959.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\WOW" $(MaskAllAccess) WOWKey
  960.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  961.         Debug-Output "REGISTRY.INF: Failed to open layout key"
  962.         goto finish_MakeWOWEntry
  963.     endif
  964.     set wowcmdline = "ntvdm -m -w -f%SystemRoot%\system32 -a %SystemRoot%\system32\"$($0)
  965.     set KeyValues = { +
  966.                     {wowcmdline,   $(NoTitle), $(!REG_VT_EXPAND_SZ), $(wowcmdline)}  +
  967.                     }
  968.     shell "" AddValueList $(WOWKey) $(KeyValues)
  969.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  970.         goto finish_MakeWOWEntry
  971.     endif
  972.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  973.         goto finish_MakeWOWEntry
  974.     endif
  975.     CloseRegKey $(WOWKey)
  976.     set Status = STATUS_SUCCESSFUL
  977. finish_MakeWOWEntry = +
  978.     Return $(Status)
  979. [MakeLayoutEntry]
  980.     set Status = STATUS_FAILED
  981.     read-syms  RegistryConstants
  982.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\Keyboard Layout" $(MaskAllAccess) LayoutKey
  983.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  984.         Debug-Output "REGISTRY.INF: Failed to open layout key"
  985.         goto finish_MakeLayoutEntry
  986.     endif
  987.     set KeyValues = { +
  988.                       {$($0),   $(NoTitle), $(!REG_VT_SZ), $($1)       }  +
  989.                     }
  990.     shell "" AddValueList $(LayoutKey) $(KeyValues)
  991.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  992.         goto finish_MakeLayoutEntry
  993.     endif
  994.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  995.         goto finish_MakeLayoutEntry
  996.     endif
  997.     CloseRegKey $(LayoutKey)
  998.     LibraryProcedure STATUS, $(!LIBHANDLE), SetCurrentLayout $($0)
  999.     ifstr(i) $(STATUS) != "SUCCESS"
  1000.         Debug-Output "REGISTRY.INF: Failed in SetCurrentLayout function"
  1001.         goto finish_MakeLayoutEntry
  1002.     endif
  1003.     set Status = STATUS_SUCCESSFUL
  1004. finish_MakeLayoutEntry = +
  1005.     Return $(Status)
  1006. [MakeLocaleEntry]
  1007.     set Status = STATUS_FAILED
  1008.     read-syms  RegistryConstants
  1009.     ifstr(i) $($1) != "locale.nls"
  1010.         OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\nls\OEMLocale" $(MaskAllAccess) OEMLocaleKey
  1011.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1012.             Debug-Output "REGISTRY.INF: Failed to open OEMLocale key"
  1013.             goto finish_MakeLocaleEntry
  1014.         endif
  1015.         set KeyValues = { +
  1016.                           {$($0), $(NoTitle), $(!REG_VT_SZ), $($1)}  +
  1017.                         }
  1018.         shell "" AddValueList $(OEMLocaleKey) $(KeyValues)
  1019.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1020.             Debug-Output "REGISTRY.INF: Failed to find function AddValueList"
  1021.             goto finish_MakeLocaleEntry
  1022.         endif
  1023.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1024.             Debug-Output "REGISTRY.INF: Failed to create OEMLocale value"
  1025.             goto finish_MakeLocaleEntry
  1026.         endif
  1027.         CloseRegKey $(OEMLocaleKey)
  1028.     endif
  1029.     ifstr(i) $(!STF_INSTALL_TYPE) == SETUPBOOTED
  1030.         set ModifyCPL = YES
  1031.     else
  1032.         set ModifyCPL = NO
  1033.     endif
  1034.     LibraryProcedure STATUS, $(!LIBHANDLE), SetCurrentLocale $($0) $(ModifyCPL)
  1035.     ifstr(i) $(STATUS) != "SUCCESS"
  1036.         ifstr(i) $(STATUS) == ERROR_UNSUPPORTED
  1037.             set Status = ERROR_UNSUPPORTED
  1038.         endif
  1039.         Debug-Output "REGISTRY.INF: Failed in SetCurrentLocale function"
  1040.         goto finish_MakeLocaleEntry
  1041.     endif
  1042.     OpenRegKey $(!REG_H_CUSER) "" "Control Panel\International" $(MaskAllAccess) LocaleKey
  1043.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1044.         Debug-Output "REGISTRY.INF: Failed to open cuser international key"
  1045.         goto finish_MakeLocaleEntry
  1046.     endif
  1047.     set KeyValues = { +
  1048.                       {Locale, $(NoTitle), $(!REG_VT_SZ), $($0)        } +
  1049.                     }
  1050.     shell "" AddValueList $(LocaleKey) $(KeyValues)
  1051.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1052.         Debug-Output "REGISTRY.INF: Failed to find function AddValueList"
  1053.         CloseRegKey $(LocaleKey)
  1054.         goto finish_MakeLocaleEntry
  1055.     endif
  1056.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1057.         Debug-Output "REGISTRY.INF: Failed to create Current User Locale value"
  1058.         CloseRegKey $(LocaleKey)
  1059.         goto finish_MakeLocaleEntry
  1060.     endif
  1061.     set KeyValues = {}
  1062.     set Num = 1
  1063.     ForListDo $($2)
  1064.         set KeyValues = >($(KeyValues), {$(Num), $(NoTitle), $(!REG_VT_SZ), $($)})
  1065.     EndForListDo
  1066.     set KeyPath = {{"Sorting Order", $(NoTitle), $(MaskAllAccess)}}
  1067.     shell "" CreateKey $(LocaleKey) $(KeyPath) $(KeyValues)
  1068.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1069.         CloseRegKey $(LocaleKey)
  1070.         goto finish_MakeLocaleEntry
  1071.     endif
  1072.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1073.         CloseRegKey $(LocaleKey)
  1074.         goto finish_MakeLocaleEntry
  1075.     else
  1076.         CloseRegKey $($R1)
  1077.     endif
  1078.     CloseRegKey $(LocaleKey)
  1079.     set Status = STATUS_SUCCESSFUL
  1080. finish_MakeLocaleEntry = +
  1081.     Return $(Status)
  1082. [MakeLanguageEntry]
  1083.     set Status = STATUS_FAILED
  1084.     read-syms  RegistryConstants
  1085.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\nls\Language" $(MaskAllAccess) LanguageKey
  1086.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1087.         Debug-Output "REGISTRY.INF: Failed to open Language key"
  1088.         goto finish_MakeLanguageEntry
  1089.     endif
  1090.     set KeyValues = { +
  1091.                       {Default, $(NoTitle), $(!REG_VT_SZ), $($0)       }, +
  1092.                       {$($0),   $(NoTitle), $(!REG_VT_SZ), $($1)       }  +
  1093.                     }
  1094.     shell "" AddValueList $(LanguageKey) $(KeyValues)
  1095.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1096.         goto finish_MakeLanguageEntry
  1097.     endif
  1098.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1099.         goto finish_MakeLanguageEntry
  1100.     endif
  1101.     CloseRegKey $(LanguageKey)
  1102.     set Status = STATUS_SUCCESSFUL
  1103. finish_MakeLanguageEntry = +
  1104.     Return $(Status)
  1105. [MakeCodePageEntry]
  1106.     set Status = STATUS_FAILED
  1107.     read-syms  RegistryConstants
  1108.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control\nls\CodePage" $(MaskAllAccess) CodePageKey
  1109.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1110.         Debug-Output "REGISTRY.INF: Failed to open CodePage key"
  1111.         goto finish_MakeCodePageEntry
  1112.     endif
  1113.     set KeyValues = { +
  1114.                       {ACP,   $(NoTitle), $(!REG_VT_SZ), $($0) }, +
  1115.                       {OEMCP, $(NoTitle), $(!REG_VT_SZ), $($2) }, +
  1116.                       {MACCP, $(NoTitle), $(!REG_VT_SZ), $($4) }, +
  1117.                       {$($0), $(NoTitle), $(!REG_VT_SZ), $($1) }, +
  1118.                       {$($2), $(NoTitle), $(!REG_VT_SZ), $($3) }, +
  1119.                       {$($4), $(NoTitle), $(!REG_VT_SZ), $($5) }, +
  1120.                       {OEMHAL,$(NoTitle), $(!REG_VT_SZ), $($8) }  +
  1121.                     }
  1122.     ForListDo $($6)
  1123.        set CodePageValue = {$($), $(NoTitle), $(!REG_VT_SZ), *($($7), $(#)) }
  1124.        set KeyValues = >($(KeyValues), $(CodePageValue))
  1125.     EndForListDo
  1126.     shell "" AddValueList $(CodePageKey) $(KeyValues)
  1127.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1128.         goto finish_MakeCodePageEntry
  1129.     endif
  1130.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1131.         goto finish_MakeCodePageEntry
  1132.     endif
  1133.     CloseRegKey $(CodePageKey)
  1134.     set Status = STATUS_SUCCESSFUL
  1135. finish_MakeCodePageEntry = +
  1136.     Return $(Status)
  1137. [MakeFontEntries]
  1138.     set Status = STATUS_FAILED
  1139.     read-syms  RegistryConstants
  1140.     set OemFontFile   = $($0)
  1141.     set WoaFontFile   = $($1)
  1142.     set Cga40FontFile = $($2)
  1143.     set Cga80FontFile = $($3)
  1144.     set Ega40FontFile = $($4)
  1145.     set Ega80FontFile = $($5)
  1146.     set FixFontFile   = $($6)
  1147.     set SysFontFile   = $($7)
  1148.     set MSShellDlgFontFile = $($8)
  1149.     set DlgFontFileNameFile = $($9)
  1150.     set TaggedFontName = $($10)
  1151.     set CourFontFile = $($11)
  1152.     set SerifFontFile = $($12)
  1153.     set SmallFontFile = $($13)
  1154.     install Install-Ini-Font-Alter
  1155.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  1156.         goto finish_MakeFontEntries
  1157.     endif
  1158.     set Status = STATUS_SUCCESSFUL
  1159. finish_MakeFontEntries = +
  1160.     Return $(Status)
  1161. [Install-Ini-Font-Alter]
  1162.     ReplaceIniKeyValue "win.ini",    GRE_Initialize,   "OEMFONT.FON",  $(OemFontFile)
  1163.     ReplaceIniKeyValue "system.ini", boot.description, "oemfonts.fon", $(OemFontFile)
  1164.     ReplaceIniKeyValue "system.ini", 386Enh,           "woafont",      $(WoaFontFile)
  1165.     ReplaceIniKeyValue "system.ini", 386Enh,           "CGA40WOA.FON", $(Cga40FontFile)
  1166.     ReplaceIniKeyValue "system.ini", 386Enh,           "CGA80WOA.FON", $(Cga80FontFile)
  1167.     ReplaceIniKeyValue "system.ini", 386Enh,           "EGA40WOA.FON", $(Ega40FontFile)
  1168.     ReplaceIniKeyValue "system.ini", 386Enh,           "EGA80WOA.FON", $(Ega80FontFile)
  1169.     ReplaceIniKeyValue "win.ini",    GRE_Initialize,   "FIXEDFON.FON",  $(FixFontFile)
  1170.     ReplaceIniKeyValue "win.ini",    GRE_Initialize,   "FONTS.FON",  $(SysFontFile)
  1171.     ReplaceIniKeyValue "win.ini",    FontSubstitutes,  "MS Shell Dlg",  $(MSShellDlgFontFile)
  1172.     ReplaceIniKeyValue "win.ini",    Fonts, "MS Sans Serif 8,10,12,14,18,24 (VGA res)",  $(DlgFontFileNameFile)
  1173.     ReplaceIniKeyValue "win.ini",    Fonts, "Courier 10,12,15 (VGA res)",  $(CourFontFile)
  1174.     ReplaceIniKeyValue "win.ini",    Fonts, "MS Serif 8,10,12,14,18,24 (VGA res)",  $(SerifFontFile)
  1175.     ReplaceIniKeyValue "win.ini",    Fonts, "Small Fonts (VGA res)",  $(SmallFontFile)
  1176.     ifstr(i) $(TaggedFontName) == ""
  1177.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial TRK"
  1178.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New TRK"
  1179.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman TRK"
  1180.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial CE"
  1181.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New CE"
  1182.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman CE"
  1183.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial CYR"
  1184.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New CYR"
  1185.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman CYR"
  1186.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Arial Greek"
  1187.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Courier New Greek"
  1188.         RemoveIniKey   "win.ini",    FontSubstitutes,  "Times New Roman Greek"
  1189.     endif
  1190.     ifstr(i) $(TaggedFontName) == "CE"
  1191.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CE", "Arial"
  1192.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CE", "Courier New"
  1193.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CE", "Times New Roman"
  1194.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CYR", "Arial"
  1195.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CYR", "Courier New"
  1196.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CYR", "Times New Roman"
  1197.     endif
  1198.     ifstr(i) $(TaggedFontName) == "CYR"
  1199.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CYR", "Arial"
  1200.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CYR", "Courier New"
  1201.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CYR", "Times New Roman"
  1202.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial CE", "Arial"
  1203.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New CE", "Courier New"
  1204.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman CE", "Times New Roman"
  1205.     endif
  1206.     ifstr(i) $(TaggedFontName) == "Greek"
  1207.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial Greek", "Arial"
  1208.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New Greek", "Courier New"
  1209.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman Greek", "Times New Roman"
  1210.     endif
  1211.     ifstr(i) $(TaggedFontName) == "TRK"
  1212.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Arial TRK", "Arial"
  1213.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Courier New TRK", "Courier New"
  1214.         ReplaceIniKeyValue "win.ini" FontSubstitutes,  "Times New Roman TRK", "Times New Roman"
  1215.     endif
  1216.     exit
  1217.  
  1218. ; fujino 960226
  1219. ; [MakeServicesEntry]
  1220. [MakeServicesEntry2]
  1221.     set Status = STATUS_FAILED
  1222.     read-syms RegistryConstants
  1223.     Debug-Output "REGISTRY.INF: Creating Services node: "$($0)
  1224.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\services" $(MaskAllAccess) ServicesKey
  1225.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1226.         Debug-Output "REGISTRY.INF: Failed to open services key"
  1227.         goto finish_MakeServicesEntry
  1228.     endif
  1229.     set StandardSet = { Type,           +
  1230.                         Start,          +
  1231.                         ErrorControl,   +
  1232.                         Group,          +
  1233.                         Dependencies,   +
  1234.                         StartName,      +
  1235.                         Password,       +
  1236.                         BinaryPathName, +
  1237.                         DisplayName     +
  1238.                       }
  1239.     ForListDo $(StandardSet)
  1240.         set $($) = ""
  1241.     EndForListDo
  1242.     set KeyValues = {}
  1243.     ForListDo $($1)
  1244.        set Var   = *($($), 1)
  1245.        set Value = *($($), 4)
  1246.        ifcontains(i) $(Var) in $(StandardSet)
  1247.            set $(Var) = $(Value)
  1248.        else
  1249.            set KeyValues = >($(KeyValues), $($))
  1250.        endif
  1251.     EndForListDo
  1252.     set Error = NO
  1253.     ForListDo { Type, Start, ErrorControl, BinaryPathName }
  1254.         ifstr(i) $($($)) == ""
  1255.             set Error = YES
  1256.         endif
  1257.     EndForListDo
  1258.     ifstr(i) $(Error) == YES
  1259.         Debug-Output "REGISTRY.INF: MakeServicesEntry was not passed in one of the three values: Type, Start, ErrorControl"
  1260.         CloseRegKey $(ServicesKey)
  1261.         goto finish_MakeServicesEntry
  1262.     endif
  1263.     set ServiceName = $($0)
  1264.     LibraryProcedure STATUS, $(!LIBHANDLE), SetupCreateService $(ServiceName)      +
  1265.                                                                $(DisplayName)      +
  1266.                                                                $(Type)             +
  1267.                                                                $(Start)            +
  1268.                                                                $(ErrorControl)     +
  1269.                                                                $(BinaryPathName)   +
  1270.                                                                $(Group)            +
  1271.                                                                $(Dependencies)     +
  1272.                                                                $(StartName)        +
  1273.                                                                $(Password)
  1274.     ifstr(i) $(STATUS) != "SUCCESS"
  1275.         Debug-Output "REGISTRY.INF: MakeServicesEntry: SetupCreateService function failed"
  1276.         CloseRegKey $(ServicesKey)
  1277.         goto finish_MakeServicesEntry
  1278.     endif
  1279.     set KeyPath   = {{$($0), $(NoTitle), $(MaskAllAccess)}}
  1280.     shell "" CreateKey $(ServicesKey) $(KeyPath) $(KeyValues)
  1281.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1282.         Debug-Output "REGISTRY.INF: Failed to shell CreateKey."
  1283.         CloseRegKey $(ServicesKey)
  1284.         goto error_MakeServicesEntry
  1285.     endif
  1286.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1287.         Debug-Output "REGISTRY.INF: Failed to create services node."
  1288.         CloseRegKey $(ServicesKey)
  1289.         goto error_MakeServicesEntry
  1290.     endif
  1291.     set MiniportKey = $($R1)
  1292.     ifstr(i) $($2) != ""
  1293.         set KeyPath   = {{$($5), $(NoTitle), $(MaskAllAccess)}}
  1294.         set KeyValues = $($2)
  1295.         shell "" CreateKey $(MiniportKey) $(KeyPath) $(KeyValues)
  1296.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1297.             CloseRegKey $(ServicesKey)
  1298.             CloseRegKey $(MiniportKey)
  1299.             goto error_MakeServicesEntry
  1300.         endif
  1301.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1302.             CloseRegKey $(ServicesKey)
  1303.             CloseRegKey $(MiniportKey)
  1304.             goto error_MakeServicesEntry
  1305.         endif
  1306.         set ParametersKey = $($R1)
  1307.  
  1308.        ForListDo $($3)
  1309.             set-sub DeviceNum = $(#) 1
  1310. ;fujino  960226
  1311. ;           set EntryName = "Device"$(DeviceNum)
  1312.            set EntryName = $($6)
  1313.  
  1314.             set KeyPath   = {{$(EntryName), $(NoTitle), $(MaskAllAccess)}}
  1315.             set KeyValues = $($3)
  1316.             shell "" CreateKey $(ParametersKey) $(KeyPath) $(KeyValues)
  1317.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1318.                 CloseRegKey $(ServicesKey)
  1319.                 CloseRegKey $(MiniportKey)
  1320.                 CloseRegKey $(ParametersKey)
  1321.                 goto error_MakeServicesEntry
  1322.             endif
  1323.             ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1324.                 CloseRegKey $(ServicesKey)
  1325.                 CloseRegKey $(MiniportKey)
  1326.                 CloseRegKey $(ParametersKey)
  1327.                 goto error_MakeServicesEntry
  1328.             endif
  1329.             CloseRegKey $($R1)
  1330.        EndForListDo
  1331.  
  1332.         CloseRegKey $(ParametersKey)
  1333.     endif
  1334.     CloseRegKey $(MiniportKey)
  1335.     ifstr(i) $($4) != {}
  1336.         OpenRegKey $(ServicesKey) "" "eventlog\system" $(MaskAllAccess) EventLogKey
  1337.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1338.             Debug-Output "REGISTRY.INF: Failed to open eventlog key"
  1339.             CloseRegKey $(ServicesKey)
  1340.             goto error_MakeServicesEntry
  1341.         endif
  1342.         set KeyPath   = {{$($0), $(NoTitle), $(MaskAllAccess)}}
  1343.         set KeyValues = $($4)
  1344.         shell "" CreateKey $(EventLogKey) $(KeyPath) $(KeyValues)
  1345.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1346.             CloseRegKey $(ServicesKey)
  1347.             CloseRegKey $(EventLogKey)
  1348.             goto error_MakeServicesEntry
  1349.         endif
  1350.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1351.             CloseRegKey $(ServicesKey)
  1352.             CloseRegKey $(EventLogKey)
  1353.             goto error_MakeServicesEntry
  1354.         endif
  1355.         CloseRegKey $($R1)
  1356.         CloseRegKey $(EventLogKey)
  1357.     endif
  1358.     CloseRegKey $(ServicesKey)
  1359.     set Status = STATUS_SUCCESSFUL
  1360.     goto finish_MakeServicesEntry
  1361. error_MakeServicesEntry = +
  1362.     shell "" ModifyServicesEntry $($0) $(!SERVICE_DISABLED)
  1363. finish_MakeServicesEntry = +
  1364.     Return $(Status)
  1365.  
  1366. [GetServicesEntryStart]
  1367.     set Status     = STATUS_FAILED
  1368.     set StartValue = ""
  1369.     read-syms RegistryConstants
  1370.     Debug-Output "REGISTRY.INF: Get Services node Start value: "$($0)
  1371.     set KeyName = "system\"$(!STF_CONTROLSET)"\services\"$($0)
  1372.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  1373.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1374.         Debug-Output "REGISTRY.INF: Couldn't open services node for read access"
  1375.         goto finish_GetServicesEntryStart
  1376.     endif
  1377.     GetRegValue $(KeyHandle) "Start" StartValueList
  1378.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1379.         Debug-Output "REGISTRY.INF: Couldn't read Start value"
  1380.         CloseRegKey $(KeyHandle)
  1381.         goto finish_GetServicesEntryStart
  1382.     endif
  1383.     CloseRegKey $(KeyHandle)
  1384.     set StartValue = *($(StartValueList), 4)
  1385.     set Status = STATUS_SUCCESSFUL
  1386. finish_GetServicesEntryStart = +
  1387.     Return $(Status) $(StartValue)
  1388. [RemoveServicesEntry]
  1389.     set Status = STATUS_FAILED
  1390.     read-syms RegistryConstants
  1391.     Debug-Output "REGISTRY.INF: Removing Services node: "$($0)
  1392.     shell "" ModifyServicesEntry $($0) $(!SERVICE_DISABLED)
  1393.     Return $($R0)
  1394. [MakeSetupKey]
  1395.     set Status = STATUS_FAILED
  1396.     read-syms  RegistryConstants
  1397.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control" $(MaskAllAccess) ControlKey
  1398.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1399.         Debug-Output "REGISTRY.INF: Failed to open services key"
  1400.         goto finish_MakeSetupKey
  1401.     endif
  1402.     set KeyPath   = { +
  1403.                      {"Setup", $(NoTitle), $(MaskAllAccess)} +
  1404.                     }
  1405.     set KeyValues = {}
  1406.     shell "" CreateKey $(ControlKey) $(KeyPath) $(KeyValues)
  1407.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1408.         CloseRegKey $(ControlKey)
  1409.         goto finish_MakeSetupKey
  1410.     endif
  1411.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1412.         CloseRegKey $(ControlKey)
  1413.         goto finish_MakeSetupKey
  1414.     endif
  1415.     CloseRegKey $($R1)
  1416.     CloseRegKey $(ControlKey)
  1417.     set Status = STATUS_SUCCESSFUL
  1418. finish_MakeSetupKey = +
  1419.     Return $(Status)
  1420. [CheckSetupModify]
  1421.     set Status = STATUS_FAILED
  1422.     read-syms  RegistryConstants
  1423.     LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
  1424.     ifstr(i) $(STATUS) == "YES"
  1425.         set Status = STATUS_SUCCESSFUL
  1426.     endif
  1427.     Return $(Status)
  1428. [MakeSetupOptionEntry]
  1429.     set Status = STATUS_FAILED
  1430.     read-syms  RegistryConstants
  1431.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control" $(MaskAllAccess) ControlKey
  1432.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1433.         Debug-Output "REGISTRY.INF: Failed to open services key"
  1434.         goto finish_MakeSetupOptionEntry
  1435.     endif
  1436.     set KeyPath   = { +
  1437.                      {"Setup", $(NoTitle), $(MaskAllAccess)} +
  1438.                     }
  1439.     set KeyValues = { +
  1440.                       {$($0), $(NoTitle), $(!REG_VT_SZ), $($1)} +
  1441.                     }
  1442.     shell "" CreateKey $(ControlKey) $(KeyPath) $(KeyValues)
  1443.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1444.         CloseRegKey $(ControlKey)
  1445.         goto finish_MakeSetupOptionEntry
  1446.     endif
  1447.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1448.         CloseRegKey $(ControlKey)
  1449.         goto finish_MakeSetupOptionEntry
  1450.     endif
  1451.     CloseRegKey $($R1)
  1452.     CloseRegKey $(ControlKey)
  1453.     set Status = STATUS_SUCCESSFUL
  1454. finish_MakeSetupOptionEntry = +
  1455.     Return $(Status)
  1456. [ResetSetupProgressValue]
  1457.     set Status = STATUS_FAILED
  1458.     read-syms  RegistryConstants
  1459.     OpenRegKey $(!REG_H_LOCAL) "" "system\setup" $(MaskAllAccess) SetupKey
  1460.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1461.         Debug-Output "REGISTRY.INF: Failed to open Setup key"
  1462.         goto finish_ResetSetupProgressValue
  1463.     endif
  1464.     set ValueInfo = {SystemSetupInProgress, $(NoTitle), $(!REG_VT_DWORD), 0}
  1465.     SetRegValue $(SetupKey) $(ValueInfo)
  1466.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1467.         CloseRegKey $(SetupKey)
  1468.         Debug-Output "REGISTRY.INF: Couldn't set SystemSetupInProgress value"
  1469.         goto finish_ResetSetupProgressValue
  1470.     endif
  1471.     ifstr(i) $(!STF_NTUPGRADE) == "YES"
  1472.         set ValueInfo = {UpgradeInProgress, $(NoTitle), $(!REG_VT_DWORD), 0}
  1473.         SetRegValue $(SetupKey) $(ValueInfo)
  1474.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1475.             CloseRegKey $(SetupKey)
  1476.             Debug-Output "REGISTRY.INF: Couldn't set UpgradeInProgress value"
  1477.             goto finish_ResetSetupProgressValue
  1478.         endif
  1479.     endif
  1480.     CloseRegKey $(SetupKey)
  1481.     set Status = STATUS_SUCCESSFUL
  1482. finish_ResetSetupProgressValue = +
  1483.     Return $(Status)
  1484. [ModifyServicesEntry]
  1485.     read-syms RegistryConstants
  1486.     set Status = STATUS_FAILED
  1487.     set StartValue = $($1)
  1488.     LibraryProcedure STATUS, $(!LIBHANDLE), SetupChangeServiceStart $($0) $(StartValue)
  1489.     ifstr(i) $(STATUS) != "SUCCESS"
  1490.         Debug-Output "REGISTRY.INF: ModifyServicesEntry: SetupChangeServiceStart function failed"
  1491.         goto finish_ModifyServicesEntry
  1492.     endif
  1493.     set Status = STATUS_SUCCESSFUL
  1494. finish_ModifyServicesEntry = +
  1495.     Return $(Status)
  1496. [CreateKey]
  1497.     set Status = STATUS_FAILED
  1498.     read-syms RegistryConstants
  1499.     set BaseHandle = $($0)
  1500.     set KeyHandle  = $(BaseHandle)
  1501.  
  1502.    ForListDo $($1)
  1503.         set KeyInfo = $($)
  1504.         set KeyName = *($(KeyInfo), 1)
  1505.         OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1506.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1507.             Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
  1508.             set RegLastError = 0
  1509.             CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
  1510.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1511.                 set Status = STATUS_ERROR_CREATEKEY
  1512.                 Debug-Output "REGISTRY.INF: Error in creating key"
  1513.                 goto endcreate
  1514.             endif
  1515.         endif
  1516.         ifstr(i) $(BaseHandle) != $($0)
  1517.             CloseRegKey $(BaseHandle)
  1518.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1519.                 set Status = STATUS_ERROR_CREATEKEY
  1520.                 Debug-Output "REGISTRY.INF: Error in closing base handle"
  1521.                 goto endcreate
  1522.             endif
  1523.         endif
  1524.         set BaseHandle = $(KeyHandle)
  1525.     EndForListDo
  1526.  
  1527.     ifstr(i) $($2) != {}
  1528.         shell "" AddValueList $(KeyHandle) $($2)
  1529.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1530.             set Status = STATUS_ERROR_CREATEVALUE
  1531.             goto endcreate
  1532.         endif
  1533.     endif
  1534.  
  1535.     set Status = STATUS_SUCCESSFUL
  1536. endcreate = +
  1537.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  1538.         Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
  1539.     endif
  1540.     Return $(Status) $(KeyHandle)
  1541. [AddValueList]
  1542.    set Status = STATUS_FAILED
  1543.    read-syms RegistryConstants
  1544.    ForListDo $($1)
  1545.        SetRegValue $($0) $($)
  1546.        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1547.            Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
  1548.            goto end_addvaluelist
  1549.        endif
  1550.    EndForListDo
  1551.    set Status = STATUS_SUCCESSFUL
  1552. end_addvaluelist = +
  1553.    return $(Status)
  1554. [EnableCrashDump]
  1555.     OpenRegKey $(!REG_H_LOCAL) "" system\currentcontrolset\control\CrashControl $(!REG_KEY_SET_VALUE) CrashControlKey
  1556.     ifstr $(CrashControlKey) != ""
  1557.         shell "" AddValueList $(CrashControlKey) {{LogEvent        ,0,$(!REG_VT_DWORD),1},+
  1558.                                                   {SendAlert       ,0,$(!REG_VT_DWORD),1},+
  1559.                                                   {CrashDumpEnabled,0,$(!REG_VT_DWORD),1},+
  1560.                                                   {AutoReboot      ,0,$(!REG_VT_DWORD),1}}
  1561.         CloseRegKey $(CrashControlKey)
  1562.     endif
  1563.     return
  1564. [FixQuotaEntries]
  1565.     set Status       = STATUS_SUCCESSFUL
  1566.     read-syms RegistryConstants
  1567.     set OldPagedPoolSize = 0
  1568.     set OldRegistrySizeLimit = 0
  1569.     set NewPagedPoolSize     = 0
  1570.     set NewRegistrySizeLimit = 0
  1571.     set BogusPagedPoolSize     = 48
  1572.     set BogusRegistrySizeLimit = 24
  1573.     set MBMultiplier  = 1024
  1574.     set-mul MBMultiplier  = $(MBMultiplier) 1024
  1575.     set-mul BogusPagedPoolSize     = $(BogusPagedPoolSize)     $(MBMultiplier)
  1576.     set-mul BogusRegistrySizeLimit = $(BogusRegistrySizeLimit) $(MBMultiplier)
  1577.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control\Session Manager\Memory Management"
  1578.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1579.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1580.         Debug-Output "REGISTRY.INF: Couldn't open memory management key"
  1581.         set Status = STATUS_FAILED
  1582.         goto fix_next_entry
  1583.     endif
  1584.     GetRegValue $(KeyHandle) "PagedPoolSize" OldPagedPoolSizeInfo
  1585.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1586.         Debug-Output "REGISTRY.INF: Couldn't read PagedPoolSize value"
  1587.         set Status = STATUS_FAILED
  1588.         goto close_first_handle
  1589.     endif
  1590.     set OldPagedPoolSize = *($(OldPagedPoolSizeInfo), 4)
  1591.     ifint $(OldPagedPoolSize) == $(BogusPagedPoolSize)
  1592.         set ValueInfo = {PagedPoolSize, $(NoTitle), $(!REG_VT_DWORD), $(NewPagedPoolSize)}
  1593.         SetRegValue $(KeyHandle) $(ValueInfo)
  1594.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1595.             set Status = STATUS_FAILED
  1596.             Debug-Output "REGISTRY.INF: Couldn't set PagePoolSize value"
  1597.         endif
  1598.     endif
  1599. close_first_handle = +
  1600.     CloseRegKey $(KeyHandle)
  1601. fix_next_entry = +
  1602.     set KeyName = "System\"$(!STF_CONTROLSET)"\Control"
  1603.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MaskAllAccess) KeyHandle
  1604.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1605.         set Status = STATUS_FAILED
  1606.         Debug-Output "REGISTRY.INF: Couldn't open control key"
  1607.         goto end_FixQuotaEntries
  1608.     endif
  1609.     GetRegValue $(KeyHandle) "RegistrySizeLimit" OldRegistrySizeLimitInfo
  1610.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1611.         Debug-Output "REGISTRY.INF: Couldn't read RegistrySizeLimit value"
  1612.         set Status = STATUS_FAILED
  1613.         goto close_second_handle
  1614.     endif
  1615.     set OldRegistrySizeLimit = *($(OldRegistrySizeLimitInfo), 4)
  1616.     ifint $(OldRegistrySizeLimit) == $(BogusRegistrySizeLimit)
  1617.         set ValueInfo = {RegistrySizeLimit, $(NoTitle), $(!REG_VT_DWORD), $(RegistrySizeLimit)}
  1618.         SetRegValue $(KeyHandle) $(ValueInfo)
  1619.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1620.             set Status = STATUS_FAILED
  1621.             Debug-Output "REGISTRY.INF: Couldn't set RegistrySizeLimit value"
  1622.         endif
  1623.     endif
  1624. close_second_handle = +
  1625.     CloseRegKey $(KeyHandle)
  1626. end_FixQuotaEntries = +
  1627.     Return $(Status)
  1628.  
  1629.  
  1630.  
  1631.  
  1632. ;; end registry.inf
  1633.  
  1634. ;**************************************************************************
  1635. ; PROGRESS GUAGE VARIABLES
  1636. ;**************************************************************************
  1637.  
  1638. [ProgressCopyENG]
  1639.     ProCaption   = "Windows NT セットアップ"
  1640.     ProCancel    = "キャンセル"
  1641.     ProCancelMsg = "Windows NT は正しく組み込まれていません。"+
  1642.                    "ファイルのコピーを中止しますか?"
  1643.     ProCancelCap = "セットアップ メッセージ"
  1644.     ProText1     = "コピー元:"
  1645.     ProText2     = "コピー先:"
  1646.  
  1647. [StringsENG]
  1648.     String1 = "9032B"
  1649.     String2 = "9032B ファイルへのフル パスを入力してください。"+
  1650. ;              "セットアップ フロッピー ディスクからファイルを組み込む場合は、"+
  1651. ;              "ドライブ名 (A: など) を入力してください。"+
  1652. ;              "セットアップは適切なディスクを挿入するよう指示します。"+
  1653.               "これらの操作が終わったら[続行]を選んでください。"
  1654. ;    String3 = "シリアルポート(2チャンネル)を削除すると、システムは"+
  1655. ;              "使用不可になる可能性があります。削除してもよろしいですか?"
  1656.  
  1657. [Source Media Descriptions]
  1658. ;;    1  = "PC-9800 シリアルポート(2チャンネル) Controller Drivers Disk 1 of 1"  , TAGFILE = disk1
  1659. ;      1  = "アイ・オー・データ 高速シリアルボード 9032B Controller Drivers Disk 1 of 1"  , TAGFILE = disk1
  1660.       1  = "アイ・オー・データ 高速シリアルボード PIO-B9032シリーズ サポートソフトウェアディスク"
  1661.  
  1662. [Files-RsDrivers]
  1663. ;;Ser9032B = 1,Ser9032B.sys , SIZE=999
  1664.   Ser9032B = 1,Ser9032B.sys , SIZE=999
  1665.