Windows Setup uses a number of key key files to control how the Windows Setup behaves. This mechanism dates back to the Windows NT era. If you are able to control these files, you are controlling how Windows Setup behaves. For now you need to be aware of three files:
Textmode and the txtsetup.sif file:
As mention before the txtsetup.sif file is used by textmode phase of the Windows Setup and largely controls how the Windows Setup behaves. Among the tasks the textmode phase performs, are the following:
Every information file is divided into sections. Sections can be identified by brackets, eg. '[MySection]'. For adding OEM drivers so the storage hardware can be used by the Textmode phase of the Windows Setup the following sections are important to be aware of:
Although 'Dummy' is used as an example entry, if a 'dummy.sys' would actually exist on the installation media and the above entries would have been added to the 'txtsetup.sif' the Textmode phase of the Windows Setup would have displayed in the status bar of the screen 'Loading Robert's Dummy Storage Driver (AMD64)...'.
This section maps a physical directory, either absolute like '\' or relative to %SystemRoot%. The folder is identified throughout the Windows Setup by the number it was assigned to. Eg. '4 = system32\drivers' maps the number '4' to '%SystemRoot%\system32\drivers'.
This section controls how source files are copied to their destination and what their properties will be, eg. The file 'dum__.inf' can be copied to '%SystemRoot%\Inf\dummy.inf' with the line: 'dum__.inf = 1,,,,,,,20,0,0,dummy.inf'.
This sections holds the mapping of physical PCI resources that will be controlled by the various drivers. In the above example the driver identified by the name 'dummy' controls a piece of hardware that identified by the following PCI Vendor ID and PCI Device ID: 'PCI\VEN_9999&DEV_1234'. If there are multiple drivers that control the same PCI Vendor ID and PCI Device ID we can expect a bugcheck. If the wrong information is entered here for Storage hardware, you definitely get a bugcheck '0x0000007B' better known as: 'INACCESSIBLE_BOOT_DEVICE'.
You can add as many drivers as you want, but if the Windows Setup doesn't load them, they can not be used during the setup. This section controls if the various drivers are loaded during initialization and in what order. This section is processed from top to bottom, so drivers listed first are loaded first. So, dummy = dummy.sys,4 loads the driver 'dummy.sys' from the folder '%SystemRoot%\System32\Drivers'
note: It's relative to the destination folder!.
If Windows Setup would display 'Loading dummy.sys...' we still wouldn't know what kind of driver (except for its name) is being loaded. Displaying something like 'Loading Robert's Dummy Storage Driver (AMD64)...' looks much better. That is the primary function for this section, displaying a 'friendly name'. The format is something like: 'driver_name = "Friendly Name"'. The 'Friendly Name' part can be any text, but it's custom to use a string that can be found in either the drivers 'txtsetup.oem' or 'driver.inf', but more about that in the next part of this article.