Jump to content
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble

MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, register and become a site sponsor/subscriber and ads will be disabled automatically. 


Sign in to follow this  
X-Savior

Having Windows Keep The Drivers

Recommended Posts

You guys really want to do it the hard way... But of course it's the better way. As soon as anyone can outline it DETAILED, I'll add it to the DriverPacks as an option.

As much as I'm interested, I don't have the time to figure it out.

Share this post


Link to post
Share on other sites

@X-Savior

Nice job, this is a really good start.

The key here is indeed DRVINDEX.INF

You don't have to Re-install you OS to test this.

The file DRVINDEX.INF can be found in your %systemroot%\inf folder

I read somewhere that the file was not digitily signed (I thought RyanVM mentioned that somewhere) so it should be easy to modify the file.

I don't have much time this week, but next week I will test the following:

- I will create a CAB file called DP_Erik.cab and put it in my systemroot\Driver Cache\i386 folder.

- I will add/modify the following lines in the DRVINDEX.INF file:

[Version]
signature="$Windows NT$"
CabFiles=SP2,driver,DP_Erik

[DP_Erik]
;driver files (I think I will test in on my monitor drivers)

[Cabs]
driver=driver.cab
SP2=SP2.cab
DP_Erik=DP_Erik.cab

- Uninstall my monitor drivers

- Reboot, and hope for the best :P

I will report back somewhere next week.

@Bâshrat:

When we got this working and well, either X-Savior or myself will write a detailed "how-to". It would be very cool to contribute something to your Driverpacks B) .

EDIT:

@X-Savior

In the TXTSETUP.SIF I used directory 4 (\System32\Drivers)

DRVINDEX.INF looks for it's drivers in the following folder:

%systemroot%\Driver Cache\i386

that is number: 39

Share this post


Link to post
Share on other sites

Ok I'm following all of this without too much difficulties because I looked into myself a number of months ago. At that time I decided it was simply too much for me to tackle. What I remember though was wondering about layout.inf, which I believe IS digitally signed.

If true integration can be achieved without breaking (editing) layout.inf, then what is the true purpose of this file? It almost seems to be redudant to me.

Second. Does the driver index file map out the drivers contained within drivers.cab? I know that when you slipstream SP2 over Gold, you end up with drivers.cab and sp2.cab (unless you merge with nLite or manually). Both of these contain drivers as I understand it. Soooo.. can we make say DP_MS.cab, DP_LAN.cab, etc? Because without any compression, the collection of BTS DriverPacks is enormous to just keep around the hard drive. Especially when I have my unattendeds copy over the i386 directory and install basic apps, a 30 gig laptop drive starts to look pretty small pretty fast.

Share this post


Link to post
Share on other sites

I know that the driver INFs in i386 basically use layout.inf as their [sourceDisksFiles] section, which is why adding files to driver.cab is extraordinarily difficult.

Share this post


Link to post
Share on other sites

Ok, I GOT IT!

:thumbup

I tested all afternoon and made some headway but the results will surprise most of you I think.

Here is what I have done... :D

I had 2 Files I was working with...

USB100M.SYS

USB100M.INF

All you need is the *.SYS too be in the "%Systemroot%\Windows\Driver Cache" folder

and the *.INF in the "%Systemroot%\Windows\INF".

THATS IT!

So here is what I did,

1) I compressed the USB100M.SYS into the I386 folder on the DVD.

2) Edited the DOSNET.INF and added the following...

[FLOPPYFILES.1]
D1,USB100M.SYS

[FILES]
D1,USB100M.SYS

3) Next I added to the TXTSETUP.SIF

241 = "DRIVER CACHE"

USB100M.SYS = 1,,,,,,,241,0,0

4) Lastly on the Windows DVD I placed the USB100M.INF into the

"$OEM$\$$\INF " Folder.

Done.

After I re-installed the OS I plugged in the USB Card, it detected it, asked if I wanted to look online, said no... Then Selected Search and it found it and installed it.

This is not QUITE as perfect as I would like. I want it to just do it without asking anything but none the less it works just fine. :unsure:

Something I noticed is that after the first time it installs it created a USB100M.PNF

Not sure what that is about. :wacko:

Share this post


Link to post
Share on other sites

Well for what it's worth, when I do a fresh install of XP SP2 for a client and then later deploy the unit and plug in their MS Optical mouse (USB), I get that same dialog box about the drivers. And I KNOW that these are built in drivers. All I do is click on search and away it goes. Annoying at best for sure.

If you look in your i386 folder you should see a ton of pnf files compressed. Each inf file needs a corresponding pnf. I forget what it stands for at the moment, but I remember researching it in regards to RIS installations.

Share this post


Link to post
Share on other sites

Yea, I saw what it was but I forget too. So, with the method I outlined you should be able to include ANY drivers. I am most concerned with Peripheral's and stuff like that.

I would still like to persue creating an additional cab... something like Extra.cab and integrate it. I think Windows checks the cabs before asking to search for the drivers I think. :}

Now, can you use Winrar to create a Cab file or are they SPECIAL Microsoft files. I know WinRAR can look into them an extract the files. Do I just create a new file and start adding drivers to it and then reference it like Drivers.cab and on XP Pro I think there is SP2.cab and something else. I am taking what I have learned about my MCE 2005 DVD and making a XP Pro DVD re-done from the ground up. That way I will be ready to go for 64-Bit when it arrives... YAAAAAA!!!! :thumbup

Anyone have any suggestions to improve on my methods? :)

Share this post


Link to post
Share on other sites

Some bits and peaces of information about .PNF files

Most confusion issues happen because of the way Win32 retains device driver information. When it first detects a Plug & Play device, it uses the matching INF file to build a PNF database file.
Site 1
The PNF file gets created by the system when the inf file is used to

install the device. You don't need to create them.

Site 2

EDIT:

@X-Savior

There is a special program to creat .CAB files

It is Cabarc.exe

You can download it here

You can use this link to learn all about the Cabarc commands

EDIT 2:

cabarc -r -p N  DP-Erik.cab *

This command makes DP-Erik.cab in with:

-r = Used to recurse into subdirectories when adding files

-p= Used to preserve path names (so that you can use sub dirs)

Share this post


Link to post
Share on other sites

Okay, I now created a DP-Erik.cab file

But it has a lot of subfolders inside.

A few line from the DRVINDEX.INF file

[driver]
1394vdbg.sys
2gmgsmt.sf2
3145pcl.gpd
3155pcl.gpd
3165pcl.gpd
31x5hc01.cnt
31x5hc01.hlp
31x5hs01.cnt

As we take a look at the files above, we can see that these files are on the root of the driver.cab file

Now I want to know if I can also use subfolder in the DRVINDEX.INF file

Is this possible:

[DP-Erik]
DP\000_chipset\intel_inf_drivers\815.cat
DP\000_chipset\intel_inf_drivers\815.inf
DP\000_chipset\Via\VIAHyperion4in1455v\WinXP\viaagp1.cat
DP\003_display\samsung710T\SM710T.inf

See the image below for an overview of my DP-Erik.cab

post-28465-1112259741_thumb.jpg

Share this post


Link to post
Share on other sites

That was exactly the main problem... it's impossible to put them all in one folder because of many identical filenames...

I wonder if it's possible to do it a way similar to this:

[Directories]
d4 = DP\C
d5 = DP\G
d6 = DP\L
d7 = DP\M
d8 = DP\S
d9 = DP\W

EDIT:

and then of course:

[BTS_DriverPacks
d4,landriver.sys,
d5,atidriver.sys
d5,nvidiadriver.sys

But even THEN we'd have LOTS of identical filenames... and I strongly doubt we could ever do it that way (or anything similar)...

I think we need the knowledge of an insider to get this done properly... (and without needing weeks/months to find it out)

Edited by Bâshrat the Sneaky

Share this post


Link to post
Share on other sites
I wonder if it's possible to do it a way similar to this:

It would be nice if this should work. Then atleast I can do this for my own driverpack which has no more then 10 drivers included.

You can avoid identical filenames in your pack aswell, but then you should have to make references to 412 Directories (DP Masstorages and DP chipset excluded) :wacko::P

Edit

Or... You can can create 412 .CAB files :P

Edit 2: then you start to wonder how Microsoft tackled this problem, maybe I should send them an e-mail

Share this post


Link to post
Share on other sites

Microsoft tackled it in this way: they simple LIMITED the number of supported drivers. Simple, yet effective :D

And probably they set restrictions to the drivers.

*BUT*

I have some good news :D While testing the new versions of the DriverPacks, I was checking the dosnet.inf file if it was edited correctly (the answer is NO, still figuring out WHY). While I was doing that, I noticed these entries:

d1,usetup.exe,system32\smss.exe
d1,ntdll.dll,system32\ntdll.dll

So it DOES work!

d1 = \I386

and system32 is a subfolder of I386, with indeed those files in it. So eventually it does work, but the question is if it also works for .cab files?

Share this post


Link to post
Share on other sites

That is GREAT news :w00t: ,

I will try to experiment with INF files this weekend.

ATM, I really know absolutly nothing about INF files :) , I think that I will pay Gosh's site a visit.

EDIT:

Is it really necessary to create a CAB file??

can't we just put the DP folders uncompressed in the "%Systemroot%\Windows\Driver Cache" folder?

This worked for X-Savior (okay, he only did it with 2 files, but should that matter?), the only thing he didn't do was to make references in DRVINDEX.INF

Share this post


Link to post
Share on other sites

Hey There,

This all sounds very interesting. I think we might be on to something here. I tried to make a cab (Prior to learning about this program). My test did not work. It seems for any driver to install all it needs is the INF in the INF folder after the OS Install and the *.SYS in the \Driver Cache folder. THAT'S IT!

So to make a Cab properly my test should work. I will test tonight. I made all the references to my "Extra.cab" ande the install did not kick up a fuss at all. I referenced it in several locations. I wrote them down but can't find them now. The file was placed properly with the other Cab's in /Driver Cache.

Ok, found it. I Referenced in DOSNET.INF

[FILES]
D1,EXTRA.CAB

DRVINDEX.INF

CABFILES=SP2,DRIVER,EXTRA

[EXTRA]
USB100M.SYS

[CABS]
EXTRA=EXTRA.CAB

TXTSETUP.SIF

EXTRA.CAB = 1,,,,,,,39,0,0

DriverCabName=Driver.Cab,SP2.Cab,Extra.Cab

Then I added the INF file to

$$\Inf

Does this look corrent to you guys? I don't think I overlooked anything. Install never kicked up a fuss so I assume everything was in order. :thumbup

Share this post


Link to post
Share on other sites

Yeah, this looks very promising, I can't wait to see the result :w00t:

EDIT:

I found something a bit suprising,

there are NO .inf files in Driver.cab or SP2.cab

EDIT2:

It seems like all .inf files are directly in the i386 folder, and they all get copied to the %systemroot%\inf folder by txtsetup.sif, this should mean that using the $$\Inf folder also works

EDIT3:

Okay, it seems that every file in the Driver.CAB and SP2.CAB file have a reference inside txtsetup.sif

just some examples from both DRIVER.CAB and SP2.cab files:

hpcjrrps.dll = 100,,,,,,,,3,3
hpwm535m.gpd = 1,,,,,,,,3,3
hpwm5con.ini = 1,,,,,,,,3,3
eplvcd00.dll = 1,,,,,,,,3,3
eplvcd00.ini = 1,,,,,,,,3,3
lxaacln4.out = 1,,,,,,,,3,3
epndde01.dat = 1,,,,,,,,3,3      
epndde02.cfg = 1,,,,,,,,3,3
cn160.hlp    = 1,,,,,,,,3,3
ir_begin.wav = 1,,,,,,,,3,3
atievxx.exe = 1,,,,,,,,3,3
kodak.jpg = 1,,,,,,,,3,3
ncss4406.icm = 1,,,,,,,,3,3

It seems like 3,3 tells setup to do *something* with the files in the .CAB file

I think that this is very important (maybe also for installing drivers via the new made CAB file) does anyone know what it means??

****, I can't wait till I have some time to help testing, I think we now are very close!!

EDIT 4:

It seem to be a bit different with .sys files:

apmbatt.sys  = 1,,,,,,,4,1,1
enum1394.sys = 1,,,,,,,,3,3,,1,4
cmdide.sys = 1,,,,,,3_,4,1,,,1,4
exabyte2.sys = 1,,,,,,,4,1
ndisip.sys   = 100,,,,,,,4,1
rio8drv.sys = 1,,,,,,,4,0,0
riodrv.sys = 1,,,,,,,4,0,0  
ql12160.sys  = 1,,,,,,4_,4,1,,,1,4

But still also here there is pretty much the same

Also I think that

= 1,,,,,,4_,4,1,,,1,4 and 
= 1,,,,,,3_,4,1,,,1,4

is for Masstorage drivers, they also exist under [sCSI]

EDIT 5:

Yes, I seem to be write about the Masstorage drivers:

abp480n5.sys = 1,,,,,,4_,4,1,,,1,4
amsint.sys   = 1,,,,,,4_,4,1,,,1,4
aliide.sys   = 1,,,,,,3_,4,1,,,1,4

These files are inside driver.cab

Edit 6:

these value are used by windows for the nvidia drivers:

nv4_disp.dll = 100,,,,,,,,3,3
nv4_disp.inf = 100,,,,,,,20,0,0
nv4_mini.sys = 100,,,,,,,,3,3

nv4_disp.dll, and nv4_mini.sys are in SP2.CAB, and nv4_disp.inf is in the i386 folder

It now seem that *added* drivers in .CAB files (I mean drivers that are not windows core driver, and are no part of the *originale* windows setup files) = 100,,,,,,,,3,3 for all their files, except the INF, it uses = 100,,,,,,,20,0,0 and is located in the i386 folder

Edited by erik_demon

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...