|
|
1.1 root 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, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
8: ;-----------------------------------------------------------------------
9:
10: [Identification]
11: OptionType = VIDEO
12:
13: ;-----------------------------------------------------------------------
14: ; LANGUAGES SUPPORTED
15: ; -------------------
16: ;
17: ; The languages supported by the OEM 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: ; OPTION LIST
28: ; -----------
29: ; This section lists the OEM Option key names. These keys are locale
30: ; independent and used to represent the option in a locale independent
31: ; manner.
32: ;
33: ;-----------------------------------------------------------------------
34:
35: ;
36: ; Option list order: Option = Miniport driver, BitsPerPel, XResolution, YResolution, VRefresh, Interlaced
37: ;
38: ; If you don't want to create a VRefresh or Interlaced value under the service
39: ; parameters then use the value ""
40: ;
41:
42: [Options]
43: "TSENGLAB OEM ET4000 640x480x4x60" = oemvio, 4, 640, 480 , 60 , 0
44: "TSENGLAB OEM ET4000 640x480x4x72" = oemvio, 4, 640, 480 , 72 , 0
45: "TSENGLAB OEM ET4000 640x480x8x60" = oemvio, 8, 640, 480 , 60 , 0
46: "TSENGLAB OEM ET4000 640x480x8x72" = oemvio, 8, 640, 480 , 72 , 0
47: "TSENGLAB OEM ET4000 800x600x4x60" = oemvio, 4, 800, 600 , 60 , 0
48: "TSENGLAB OEM ET4000 800x600x4x72" = oemvio, 4, 800, 600 , 72 , 0
49: "TSENGLAB OEM ET4000 800x600x8x60" = oemvio, 8, 800, 600 , 60 , 0
50: "TSENGLAB OEM ET4000 800x600x8x72" = oemvio, 8, 800, 600 , 72 , 0
51: "TSENGLAB OEM ET4000 1024x768x4x60" = oemvio, 4, 1024, 768 , 60 , 0
52: "TSENGLAB OEM ET4000 1024x768x4x70" = oemvio, 4, 1024, 768 , 70 , 0
53: "TSENGLAB OEM ET4000 1024x768x4x45I" = oemvio, 4, 1024, 768 , 45 , 1
54: "TSENGLAB OEM ET4000 1024x768x8x60" = oemvio, 8, 1024, 768 , 60 , 0
55: "TSENGLAB OEM ET4000 1024x768x8x70" = oemvio, 8, 1024, 768 , 70 , 0
56: "TSENGLAB OEM ET4000 1024x768x8x45I" = oemvio, 8, 1024, 768 , 45 , 1
57:
58: ;
59: ; This maps detected options into the options we support
60: ;
61: ; Format: DetectedOption = MappedOption
62: ;
63:
64: [MapOfOptions]
65: "VGA" = "VGA"
66: "COMPAQ AVGA" = "VGA"
67: "COMPAQ AGB" = "VGA"
68: "8514 MONITOR UNKNOWN" = "VGA"
69: "8514 VGA MONITOR" = "VGA"
70: "8514 8503 MONO" = "VGA"
71: "8514 8514 GAD" = "VGA"
72: "GENOA VGA" = "VGA"
73: "VIDEO7 VGA DRAM" = "VIDEO7 VGA VRAM 640x480x4"
74: "VIDEO7 VGA VRAM" = "VIDEO7 VGA VRAM 640x480x4"
75: "TRIDENT VGA" = "VGA"
76: "TRIDENT VGA 9100" = "VGA"
77: "PARADISE VGA" = "VGA"
78: "PARADISE VGA PROM" = "VGA"
79: "PARADISE VGA CHIP 1F" = "VGA"
80: "ATI VGA" = "VGA"
81: "ATI VGA WONDDER3" = "VGA"
82: "TSENGLAB VGA ET3000" = "VGA"
83: "TSENGLAB VGA ET4000" = "TSENGLAB VGA ET4000 640x480x4x60"
84: "CIRRUS VGA" = "VGA"
85: "CIRRUS VGA 610-620 REVC" = "VGA"
86: "XGA" = "XGA 640x480x8"
87: "DELL DGX" = "DELL DGX 640x480x8"
88: "S3 VGA" = "S3 VGA 640x480x8"
89: "PRODESIGNER II" = "TSENGLAB VGA ET4000 640x480x4x60"
90:
91:
92: ;
93: ; Order of the information:
94: ;
95: ; Port driver = Type, Group, ErrorControl, Tag, InstalledDisplay, VgaCompatible( 0/1 ), EventMessageFile, TypesSupported
96: ;
97:
98: [MiniportDrivers]
99: oemvio = !SERVICE_KERNEL_DRIVER, Video, !SERVICE_ERROR_NORMAL, 11, {oem,oem256}, 1 , %SystemRoot%\System32\IoLogMsg.dll , 7
100:
101:
102: ;-----------------------------------------------------------------------
103: ; OPTION TEXT SECTION
104: ; -------------------
105: ; These are text strings used to identify the option to the user. There
106: ; are separate sections for each language supported. The format of the
107: ; section name is "OptionsText" concatenated with the Language represented
108: ; by the section.
109: ;
110: ;-----------------------------------------------------------------------
111:
112: [OptionsTextENG]
113: "TSENGLAB OEM ET4000 640x480x4x60" = "OEM ET4000 640x480, 16 colors 60Hz"
114: "TSENGLAB OEM ET4000 640x480x4x72" = "OEM ET4000 640x480, 16 colors 72Hz"
115: "TSENGLAB OEM ET4000 640x480x8x60" = "OEM ET4000 640x480, 256 colors 60Hz"
116: "TSENGLAB OEM ET4000 640x480x8x72" = "OEM ET4000 640x480, 256 colors 72Hz"
117: "TSENGLAB OEM ET4000 800x600x4x60" = "OEM ET4000 800x600, 16 colors 60Hz"
118: "TSENGLAB OEM ET4000 800x600x4x72" = "OEM ET4000 800x600, 16 colors 72Hz"
119: "TSENGLAB OEM ET4000 800x600x8x60" = "OEM ET4000 800x600, 256 colors 60Hz"
120: "TSENGLAB OEM ET4000 800x600x8x72" = "OEM ET4000 800x600, 256 colors 72Hz"
121: "TSENGLAB OEM ET4000 1024x768x4x60" = "OEM ET4000 1024x768, 16 colors 60Hz"
122: "TSENGLAB OEM ET4000 1024x768x4x70" = "OEM ET4000 1024x768, 16 colors 70Hz"
123: "TSENGLAB OEM ET4000 1024x768x4x45I" = "OEM ET4000 1024x768, 16 colors Interlaced"
124: "TSENGLAB OEM ET4000 1024x768x8x60" = "OEM ET4000 1024x768, 256 colors 60Hz"
125: "TSENGLAB OEM ET4000 1024x768x8x70" = "OEM ET4000 1024x768, 256 colors 70Hz"
126: "TSENGLAB OEM ET4000 1024x768x8x45I" = "OEM ET4000 1024x768, 256 colors Interlaced"
127:
128:
129:
130: ;---------------------------------------------------------------------------
131: ; 1. Identify
132: ;
133: ; DESCRIPTION: To verify that this INF deals with the same type of options
134: ; as we are choosing currently.
135: ;
136: ; INPUT: None
137: ;
138: ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
139: ; $($R1): Option Type (COMPUTER ...)
140: ; $($R2): Diskette description
141: ;---------------------------------------------------------------------------
142:
143: [Identify]
144: ;
145: ;
146: read-syms Identification
147:
148: set Status = STATUS_SUCCESSFUL
149: set Identifier = $(OptionType)
150: set Media = #("Source Media Descriptions", 1, 1)
151:
152: Return $(Status) $(Identifier) $(Media)
153:
154:
155:
156: ;------------------------------------------------------------------------
157: ; 2. ReturnOptions:
158: ;
159: ; DESCRIPTION: To return the option list supported by this INF and the
160: ; localised text list representing the options.
161: ;
162: ;
163: ; INPUT: $($0): Language used. ( ENG | FRN | ... )
164: ;
165: ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
166: ; STATUS_NOLANGUAGE
167: ; STATUS_FAILED
168: ;
169: ; $($R1): Option List
170: ; $($R2): Option Text List
171: ;------------------------------------------------------------------------
172:
173: [ReturnOptions]
174: ;
175: ;
176: set Status = STATUS_FAILED
177: set OptionList = {}
178: set OptionTextList = {}
179:
180: ;
181: ; Check if the language requested is supported
182: ;
183: set LanguageList = ^(LanguagesSupported, 1)
184: Ifcontains(i) $($0) in $(LanguageList)
185: goto returnoptions
186: else
187: set Status = STATUS_NOLANGUAGE
188: goto finish_ReturnOptions
189: endif
190:
191: ;
192: ; form a list of all the options and another of the text representing
193: ;
194:
195: returnoptions = +
196: set OptionList = ^(Options, 0)
197: set OptionTextList = ^(OptionsText$($0), 1)
198: set Status = STATUS_SUCCESSFUL
199:
200: finish_ReturnOptions = +
201: Return $(Status) $(OptionList) $(OptionTextList)
202:
203:
204:
205: ;---------------------------------------------------------------------------
206: ; MapToSupportedOption
207: ;
208: ; DESCRIPTION: To map a hardware detected option to the NT Supported
209: ; option which represents it.
210: ;
211: ; INPUT: $($0): Option
212: ;
213: ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
214: ; $($R1): Mapped Option
215: ;
216: ;---------------------------------------------------------------------------
217:
218: [MapToSupportedOption]
219: ;
220: set Status = STATUS_FAILED
221: set MappedOption = $($0)
222:
223: ;
224: ; If the option is one we can support using one of our standard options
225: ; then map it to the standard option else map it to the default option
226: ; which is VGA.
227: ;
228:
229: set OptionList = ^(MapOfOptions, 0)
230: ifcontains $($0) in $(OptionList)
231: set MappedOption = #(MapOfOptions, $($0), 1)
232: else
233: set MappedOption = "VGA"
234: endif
235:
236: set Status = STATUS_SUCCESSFUL
237: Return $(Status) $(MappedOption)
238:
239:
240:
241: [ServicesEntry]
242: CurrentEntry = "" ? $(!LIBHANDLE) GetDevicemapValue Video \Device\Video0
243:
244:
245: ;
246: ; InstallOption:
247: ;
248: ; FUNCTION: To copy files representing Options
249: ; To configure the installed option
250: ; To update the registry for the installed option
251: ;
252: ; INPUT: $($0): Language to use
253: ; $($1): OptionID to install
254: ; $($2): SourceDirectory
255: ; $($3): AddCopy (YES | NO)
256: ; $($4): DoCopy (YES | NO)
257: ; $($5): DoConfig (YES | NO)
258: ;
259: ; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
260: ; STATUS_NOLANGUAGE |
261: ; STATUS_USERCANCEL |
262: ; STATUS_FAILED
263: ;
264:
265: [InstallOption]
266:
267: ;
268: ; Set default values for
269: ;
270: set Status = STATUS_FAILED
271: set DrivesToFree = {}
272:
273: ;
274: ; extract parameters
275: ;
276: set Option = $($1)
277: set SrcDir = $($2)
278: set AddCopy = $($3)
279: set DoCopy = $($4)
280: set DoConfig = $($5)
281:
282: ;
283: ; Check if the language requested is supported
284: ;
285: set LanguageList = ^(LanguagesSupported, 1)
286: Ifcontains(i) $($0) in $(LanguageList)
287: else
288: set Status = STATUS_NOLANGUAGE
289: goto finish_InstallOption
290: endif
291: read-syms Strings$($0)
292:
293: ;
294: ; check to see if Option is supported.
295: ;
296:
297: set OptionList = ^(Options, 0)
298: ifcontains $(Option) in $(OptionList)
299: else
300: goto finish_InstallOption
301: endif
302: set OptionList = ""
303:
304: ;
305: ; Option has been defined already
306: ;
307: set MiniportDriver = #(Options, $(Option), 1)
308: set BitsPerPel = #(Options, $(Option), 2)
309: set XResolution = #(Options, $(Option), 3)
310: set YResolution = #(Options, $(Option), 4)
311: set VRefresh = #(Options, $(Option), 5)
312: set Interlaced = #(Options, $(Option), 6)
313:
314: set Type = $(#(MiniportDrivers, $(MiniportDriver), 1))
315: set Group = #(MiniportDrivers, $(MiniportDriver), 2)
316: set ErrorControl = $(#(MiniportDrivers, $(MiniportDriver), 3))
317: set Tag = #(MiniportDrivers, $(MiniportDriver), 4)
318: set InstalledDisplays = #(MiniportDrivers, $(MiniportDriver), 5)
319: set VgaCompatible = #(MiniportDrivers, $(MiniportDriver), 6)
320: set EventMessageFile = #(MiniportDrivers, $(MiniportDriver), 7)
321: set TypesSupported = #(MiniportDrivers, $(MiniportDriver), 8)
322:
323: read-syms ServicesEntry
324: detect ServicesEntry
325:
326: installtheoption = +
327:
328: ;
329: ; Code to add files to copy list
330: ;
331:
332: ifstr(i) $(AddCopy) == "YES"
333: set DoActualCopy = NO
334: set FileToCheck = #(Files-DisplayMiniportDrivers, $(MiniportDriver), 2)
335: LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\drivers\"$(FileToCheck)
336: ifstr(i) $(STATUS) == NO
337: set DoActualCopy = YES
338: goto addfiles
339: endif
340: ForListDo $(InstalledDisplays)
341: set FileToCheck = #(Files-DisplayDLLs, $($), 2)
342: LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileToCheck)
343: ifstr(i) $(STATUS) == NO
344: set DoActualCopy = YES
345: endif
346: EndForListDo
347:
348: addfiles = +
349: ifstr(i) $(DoActualCopy) == NO
350: shell "subroutn.inf" DriversExist $($0) $(String1)
351: ifint $($ShellCode) != $(!SHELL_CODE_OK)
352: Debug-Output "VIDEO.INF: shelling DriversExist failed"
353: goto finish_InstallOption
354: endif
355:
356: ifstr(i) $($R0) == STATUS_CURRENT
357: else-ifstr(i) $($R0) == STATUS_NEW
358: set DoActualCopy = YES
359: else-ifstr(i) $($R0) == STATUS_USERCANCEL
360: Debug-Output "VIDEO.INF: User cancelled video installation"
361: goto finish_InstallOption
362: else
363: Debug-Output "VIDEO.INF: Error reported in DriversExist routine in SUBROUTN.INF"
364: goto finish_InstallOption
365: endif
366: endif
367:
368: ifstr(i) $(DoActualCopy) == YES
369:
370: shell "subroutn.inf" DoAskSourceEx $(SrcDir) $(String2)
371: ifint $($ShellCode) != $(!SHELL_CODE_OK)
372: Debug-Output "VIDEO.INF: shelling DoAskSourceEx failed"
373: goto finish_InstallOption
374: endif
375:
376: ifstr(i) $($R0) == STATUS_SUCCESSFUL
377: set SrcDir = $($R1)
378: ifstr(i) $($R2) != ""
379: set DrivesToFree = >($(DrivesToFree), $($R2))
380: endif
381: else
382: Debug-Output "VIDEO.INF: User cancelled asking source."
383: goto finish_InstallOption
384: endif
385:
386: install Install-AddCopyOption
387: ifstr(i) $(STF_INSTALL_OUTCOME) != "STF_SUCCESS"
388: Debug-Output "VIDEO.INF: Adding video files to copy list failed"
389: goto finish_InstallOption
390: endif
391: else
392: set DoCopy = NO
393: endif
394:
395: endif
396:
397: ifstr(i) $(DoCopy) == "YES"
398: read-syms ProgressCopy$($0)
399: install Install-DoCopyOption
400: ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
401: Debug-Output "Copying files failed"
402: goto finish_InstallOption
403: else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
404: set Status = STATUS_USERCANCEL
405: goto finish_InstallOption
406: endif
407: endif
408:
409: ifstr(i) $(DoConfig) == "YES"
410:
411: ;
412: ; first run a privilege check on modifying the setup node
413: ;
414:
415: shell "registry.inf" CheckSetupModify
416: ifint $($ShellCode) != $(!SHELL_CODE_OK)
417: goto finish_InstallOption
418: endif
419:
420: ifstr(i) $($R0) != STATUS_SUCCESSFUL
421: goto finish_InstallOption
422: endif
423:
424: ;
425: ; first make a new video entry, the entry is created automatically
426: ; enabled
427: ;
428:
429: set ServiceNode = $(MiniportDriver)
430: set ServiceBinary = %SystemRoot%\System32\drivers\#(Files-DisplayMiniportDrivers, $(MiniportDriver), 2)
431:
432: set ServicesValues = { +
433: {Type, 0, $(!REG_VT_DWORD), $(Type) }, +
434: {Start, 0, $(!REG_VT_DWORD), $(!SERVICE_SYSTEM_START) }, +
435: {Group, 0, $(!REG_VT_SZ), $(Group) }, +
436: {ErrorControl, 0, $(!REG_VT_DWORD), $(ErrorControl) }, +
437: {Tag, 0, $(!REG_VT_DWORD), $(Tag) }, +
438: {BinaryPathName, 0, $(!REG_VT_EXPAND_SZ), $(ServiceBinary) } +
439: }
440:
441: set ParametersValues = { +
442: {InstalledDisplayDrivers, 0, $(!REG_VT_MULTI_SZ), $(InstalledDisplays) }, +
443: {VgaCompatible, 0, $(!REG_VT_DWORD), $(VgaCompatible) }, +
444: {DefaultSettings.BitsPerPel, 0, $(!REG_VT_DWORD), $(BitsPerPel) }, +
445: {DefaultSettings.XResolution, 0, $(!REG_VT_DWORD), $(XResolution) }, +
446: {DefaultSettings.YResolution, 0, $(!REG_VT_DWORD), $(YResolution) } +
447: }
448:
449: ifstr(i) $(VRefresh) != ""
450: set VRefreshValue = {DefaultSettings.VRefresh, 0, $(!REG_VT_DWORD), $(VRefresh)}
451: set ParametersValue = >($(ParametersValue), $(VRefreshValue))
452: endif
453:
454: ifstr(i) $(Interlaced) != ""
455: set InterlacedValue = {DefaultSettings.Interlaced, 0, $(!REG_VT_DWORD), $(Interlaced)}
456: set ParametersValue = >($(ParametersValue), $(InterlacedValue))
457: endif
458:
459: set DeviceValues = {}
460: set EventLogValues = { +
461: {EventMessageFile, 0, $(!REG_VT_EXPAND_SZ), $(EventMessageFile) }, +
462: {TypesSupported, 0, $(!REG_VT_DWORD), $(TypesSupported) } +
463: }
464:
465: shell "registry.inf" MakeServicesEntry $(ServiceNode) +
466: $(ServicesValues) +
467: $(ParametersValues) +
468: $(DeviceValues) +
469: $(EventLogValues) +
470: Device0
471:
472: ifint $($ShellCode) != $(!SHELL_CODE_OK)
473: Debug-Output "Couldn't execute MakeServicesEntry in registry.inf"
474: goto finish_InstallOption
475: endif
476:
477: ifstr(i) $($R0) != STATUS_SUCCESSFUL
478: Debug-Output "MakeServicesEntry failed for video"
479: goto finish_InstallOption
480: endif
481:
482: ;
483: ;
484: ; then disable the previous video entry
485: ;
486:
487: ifstr(i) $(CurrentEntry) != $(MiniportDriver)
488: ifstr(i) $(CurrentEntry) != VGA
489: ifstr(i) $(CurrentEntry) != ""
490: shell "registry.inf" ModifyServicesEntry $(CurrentEntry) $(!SERVICE_DISABLED)
491:
492: ifint $($ShellCode) != $(!SHELL_CODE_OK)
493: Debug-Output "Couldn't find DisableServicesEntry in registry.inf"
494: goto errorconfig
495: endif
496:
497: ifstr(i) $($R0) != STATUS_SUCCESSFUL
498: Debug-Output "DisableServices entry failed"
499: endif
500: endif
501: endif
502: endif
503:
504: goto configdone
505:
506: errorconfig = +
507: ifstr(i) $(CurrentEntry) != $(MiniportDriver)
508: shell "registry.inf" ModifyServicesEntry $(MiniportDriver) $(!SERVICE_DISABLED)
509: ifstr(i) $(CurrentEntry) != ""
510: shell "registry.inf" ModifyServicesEntry $(CurrentEntry) $(!SERVICE_SYSTEM_START)
511: endif
512: endif
513: goto finish_InstallOption
514:
515: configdone = +
516:
517: endif
518:
519: set Status = STATUS_SUCCESSFUL
520:
521: finish_InstallOption = +
522: ForListDo $(DrivesToFree)
523: LibraryProcedure STATUS,$(!LIBHANDLE), DeleteNetConnection $($) "TRUE"
524: EndForListDo
525:
526: Return $(Status)
527:
528:
529: [Install-AddCopyOption]
530:
531: set STF_VITAL = ""
532: ;
533: ; Add the files to the copy list
534: ;
535: AddSectionKeyFileToCopyList Files-DisplayMiniportDrivers +
536: $(MiniportDriver) +
537: $(SrcDir) +
538: $(!STF_WINDOWSSYSPATH)\drivers
539:
540: ForListDo $(InstalledDisplays)
541: AddSectionKeyFileToCopyList Files-DisplayDLLs +
542: $($) +
543: $(SrcDir) +
544: $(!STF_WINDOWSSYSPATH)
545:
546: EndForListDo
547:
548: exit
549:
550:
551: [Install-DoCopyOption]
552:
553: ;
554: ; Copy files in the copy list
555: ;
556: CopyFilesInCopyList
557: exit
558:
559: ;**************************************************************************
560: ; PROGRESS GUAGE VARIABLES
561: ;**************************************************************************
562:
563: [ProgressCopyENG]
564: ProCaption = "Windows NT Setup"
565: ProCancel = "Cancel"
566: ProCancelMsg = "Windows NT is not correcly installed. Are you sure you want "+
567: "to cancel copying files?"
568: ProCancelCap = "Setup Message"
569: ProText1 = "Copying:"
570: ProText2 = "To:"
571:
572: [StringsENG]
573: String1 = "Display"
574: String2 = "Please enter the full path to the OEM Display "+
575: "driver files. Then choose Continue."
576:
577: ;-----------------------------------------------------------------------
578: ; SOURCE MEDIA DESCRIPTIONS
579: ; -------------------------
580: ; The OEM should list all the diskette labels here. The source media
581: ; description is used during copy to prompt the user for a diskette
582: ; if the source is diskettes.
583: ;
584: ; Use 1 = "Diskette 1 Label" , TAGFILE = disk1
585: ; 2 = "Diskette 2 Label" , TAGFILE = disk2
586: ; ...
587: ;-----------------------------------------------------------------------
588:
589: ;--------------------------------------------------------------------
590: ; THE SECTIONS BELOW SHOULD BE AUTOMATICALLY GENERATED BY THE EXCEL
591: ; SPREAD SHEETS
592: ;--------------------------------------------------------------------
593:
594: [Source Media Descriptions]
595: 1 = "OEM DISK (VIDEO)" , TAGFILE = disk1
596:
597: [Files-DisplayDLLs]
598: oem = 1,oem.dll , SIZE=999
599: oem256 = 1,oem256.dll , SIZE=999
600:
601: [Files-DisplayMiniportDrivers]
602: oemvio = 1,oemvio.sys , SIZE=999
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.