Jump to content

Windows 98 SE in-depth questions


oerg866

Recommended Posts

Here's an example. The audioPCI device from VMware has drivers for win9x. These are in C:\WINCD\DRIVER\AUDIO5

The inf file looks like this:

; 5880, 1371, 1373; Sound Blaster AudioPCI 128;; Created : 9/15/96  jjc; modfied : 10/29/98 dws; modfied : 12/22/98 bay; modfied : 07/26/99 der;[Version]; needed for MS joystick fileslayoutfile=layout.infSignature="$CHICAGO$"Class=MEDIAprovider=%Creative%[ClassInstall]AddReg=Class.AddReg[Class.AddReg]HKR,,,,%MediaClassName%HKR,,Icon,,1HKR,,Installer,,mmci.dll[Manufacturer]%MfgName%=CREATIVE[CREATIVE]%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_13711274   ; Concert AC97 PCI board%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_4f438086   ; Intel OC440LX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_52438086   ; Intel RC440BX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_57538086   ; Intel WS440BX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_42498086   ; Intel BI440ZX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_424c8086   ; Intel BL440ZX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_425a8086   ; Intel BZ440ZX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_464a8086   ; Intel FJ440ZX%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_43418086   ; Intel Cayman%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_56438086   ; Intel Vancouver%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_53528086   ; Intel SunRiver%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_4D4F8086   ; Intel Monteal%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_46498086   ; Intel Fire Island%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_43438086   ; Intel Cape Cod%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371&SUBSYS_8054107B   ; Gateway Tabor2%DEV_1371.DeviceDesc%=DEV1371.Device,PCI\VEN_1274&DEV_1371                   ; Concert AC97 PCI board%SSC-Legacy.DeviceDesc%=SSC_Legacy_Device, VIRTUAL\SSC-Legacy%ENSJoy.DeviceDesc%=ENSJoy.Device, VIRTUAL\*PNPB02F[PreCopySection]HKR,,NoSetupUI,,1;---------------------------------------------------------------;[DEV1371.Device]UpdateAutoBat=Soundscape.UpdateAutoBatDelFiles=Soundscape.DeleteListCopyFiles=sscncrt.SystemCopyList,sscncrt.SetupCopyList,sscncrt.WinDirCopyList,sscncrt.HelpDirCopyList,sscncrt.DOSCopyList,sscncrt.IosubsysCopyListAddReg=WAVE.AddReg, MIXER.AddReg, E4080.AddReg, sscncrt.AddReg, A3D.AddReg, DriverInfo.AddReg[SSC_Legacy_Device]AddReg=SSC_Legacy_Device.AddReg[ENSJoy.Device]CopyFiles=MSJSTICK.CopyListAddReg=JOYSTICK.AddReg, MSJSTICK.AddRegUpdateInis=MSJSTICK.UpdateInis[Soundscape.UpdateAutoBat]CmdDelete=SSINIT.EXE;---------------------------------------------------------------;[Soundscape.DeleteList]sndscape.drv,,vsndscp.386,,sscape.cpl,,sndscape.hlp,,concert.vxd,,[sscncrt.SystemCopyList]sbpci.vxd,,sbpci9x.drv,,sbpcir16.dll,,a3d.dll,,ac3api.dll,,; wavesets;default.ecw,eapci2m.ecw,eapci2m.ecw,,eapci4m.ecw,,eapci8m.ecw,,[sscncrt.SetupCopyList]sbsetup.exe,,clnutl32.dll,,clnutl16.dll,,clnutil.dll,,iwlang.dll,,sbsetup.ini,,sbpcir32.dll,,[sscncrt.WinDirCopyList]starter.exe,,ensmix32.exe,,enscfg32.exe,,mixres32.dll,,[sscncrt.HelpDirCopyList]sbpci9x.hlp,,[sscncrt.IosubsysCopyList]ensqio.vxd,,[sscncrt.DOSCopyList]mt32.exe,,sbinit.com,,sblegacy.exe,,sbload.exe,,sbmixer.exe,,sbtest.exe,,sbpci.bin,,sbcfg.exe,,sbpci.INI,,[MSJSTICK.CopyList]vjoyd.vxd,,msjstick.drv,,;---------------------------------------------------------------;[E4080.AddReg]HKR,Drivers\wave\sbpci9x.drv,Description,,%DEV_1371.DeviceDesc%HKR,Drivers\mixer\sbpci9x.drv,Description,,%DEV_1371.DeviceDesc%HKR,Drivers\aux\sbpci9x.drv,Description,,%DEV_1371.DeviceDesc%HKR,Drivers\midi\ENSONIQ_Synth,Description,,%ENSxxxx.InternalMIDI%HKR,Drivers\midi\ENSONIQ_Out,Description,,%ENSxxxx.ExternalMIDI%[sscncrt.AddReg]HKR,,Driver,,sbpci.vxdHKR,Drivers\wave\sbpci9x.drv,,,HKR,Drivers\wave\sbpci9x.drv,Driver,,sbpci9x.drvHKR,Drivers\mixer\sbpci9x.drv,,,HKR,Drivers\mixer\sbpci9x.drv,Driver,,sbpci9x.drvHKR,Drivers\aux\sbpci9x.drv,,,HKR,Drivers\aux\sbpci9x.drv,Driver,,sbpci9x.drvHKR,Drivers\midi\ENSONIQ_Synth,Driver,,sbpci9x.drvHKR,Drivers\midi\ENSONIQ_Synth,External,1,00,00,00,00HKR,Drivers\midi\ENSONIQ_Synth,NumPorts,1,02,00,00,00HKR,Drivers\midi\ENSONIQ_Synth,Port,1,00,00,00,00HKR,Drivers\midi\ENSONIQ_Out,Driver,,sbpci9x.drvHKR,Drivers\midi\ENSONIQ_Out,External,1,01,00,00,00HKR,Drivers\midi\ENSONIQ_Out,NumPorts,1,02,00,00,00HKR,Drivers\midi\ENSONIQ_Out,Port,1,01,00,00,00HKR,Drivers,SubClasses,,"wave,midi,aux,mixer"HKR,,EnumPropPages,,"sbpci9x.drv,DrvEnumPropPages"; adds the URL to the driver about boxHKLM,Software\"Creative Tech"\SBPCI,URL,,%URL%; this key tells the driver that the DOS files are installedHKLM,Software\"Creative Tech"\SBPCI,%sbpcikey%,,"%24%\%DOSDir%"; adds keys for our wavesetsHKLM,Software\"Creative Tech"\Waveset,current,1,00,00,00,00HKLM,Software\"Creative Tech"\Waveset\0000,Filename,,"%11%\eapci2m.ecw"HKLM,Software\"Creative Tech"\Waveset\0000,Title,,"2 MB General MIDI"HKLM,Software\"Creative Tech"\Waveset\0001,Filename,,"%11%\eapci4m.ecw"HKLM,Software\"Creative Tech"\Waveset\0001,Title,,"4 MB General MIDI"HKLM,Software\"Creative Tech"\Waveset\0002,Filename,,"%11%\eapci8m.ecw"HKLM,Software\"Creative Tech"\Waveset\0002,Title,,"8 MB General MIDI";Things that run on startupHKLM, Software\Microsoft\Windows\CurrentVersion\Run, SBPCISetup, ,"%24%\%DOSDir%\sbsetup.exe"HKLM, Software\Microsoft\Windows\CurrentVersion\Run, SystemTray, , "SysTray.ExE"; uninstall entry for Add-Remove ProgramsHKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\SBPCIUnInstall,DisplayName,,"Creative PCI Audio Drivers"HKLM,Software\Microsoft\Windows\CurrentVersion\Uninstall\SBPCIUnInstall,UninstallString,,"%24%\%DOSDir%\sbsetup.exe -u"[WAVE.AddReg]HKR,,DevLoader,,mmdevldr.vxdHKR,Drivers,,,HKR,Drivers,MIGRATED,,0HKR,Drivers\midi,,,HKR,Drivers\wave,,,HKR,Drivers\mixer,,,HKR,Drivers\aux,,,[SSC_Legacy_Device.AddReg]HKR,,DeviceDriver,,sbpci.vxdHKR,,DevLoader,,*CONFIGMGHKR,,SBEmu,1,01HKR,,EnumPropPages,,"sbpci9x.drv,DrvEnumLegacyPages"[A3D.AddReg]HKCR,A3D,,,"A3d Object"HKCR,A3D\CLSID,,,"{D8F1EEE0-F634-11CF-8700-00A0245D918B}"HKCR,CLSID\{D8F1EEE0-F634-11CF-8700-00A0245D918B},,,"A3D Object"HKCR,CLSID\{D8F1EEE0-F634-11CF-8700-00A0245D918B}\InprocServer32,,,"A3D.DLL"HKCR,CLSID\{D8F1EEE0-F634-11CF-8700-00A0245D918B}\InprocServer32,"ThreadingModel", ,"Apartment"[DriverInfo.AddReg]; This section is added to all INFs to add registry entries for Driver Info.HKLM,Software\InstalledOptions\%DriverOEM%\%DriverFamily%\%DriverMfgr%\%DriverProduct%,Description,,%DriverDescription%HKLM,Software\InstalledOptions\%DriverOEM%\%DriverFamily%\%DriverMfgr%\%DriverProduct%,CurrentVer,,%DriverOEMVersion%HKLM,Software\InstalledOptions\%DriverOEM%\%DriverFamily%\%DriverMfgr%\%DriverProduct%,Ver_%DriverOEMVersion%,,%DriverVersionID%;---------------------------------------------------------------;[JOYSTICK.AddReg]HKR,,DevLoader,,mmdevldr.vxdHKR,Drivers,MIGRATED,,0HKR,Drivers\joystick,,,[MSJSTICK.AddReg]HKR,,Driver,,vjoyd.vxdHKR,Drivers\joystick\msjstick.drv,Description,,%ENSJoy.DeviceDesc%HKR,Drivers\joystick\msjstick.drv,Driver,,msjstick.drvHKR,Drivers,SubClasses,,"joystick"[MSJSTICK.UpdateInis]system.ini,drivers,"joystick=";---------------------------------------------------------------;[DestinationDirs]sscncrt.WinDirCopyList   = 10DefaultDestDir           = 11            ; LDID_SYSsscncrt.SystemCopyList   = 11            ; LDID_SYSMSJSTICK.CopyList        = 11            ; LDID_SYSsscncrt.IosubsysCopyList = 12            ; LDID_IOSsscncrt.HelpDirCopyList  = 18sscncrt.SetupCopyList    = 24,%DOSDir%   ; LDID_APPS + DOSDirsscncrt.DOSCopyList      = 24,%DOSDir%   ; LDID_APPS + DOSDir[SourceDisksNames]1=%DriverDisk1%,,0000-0000[SourceDisksFiles]sbpci9x.drv    =1sbpcir16.dll   =1sbpci.vxd      =1sbpci9x.hlp    =1a3d.dll        =1ensqio.vxd     =1ac3api.dll     =1; setup filessbsetup.exe    =1clnutil.dll    =1clnutl32.dll   =1clnutl16.dll   =1iwlang.dll     =1sbsetup.ini    =1sbpcir32.dll   =1; DOS filesmt32.exe       =1sbinit.com     =1sblegacy.exe   =1sbload.exe     =1sbmixer.exe    =1sbtest.exe     =1sbpci.bin      =1sbcfg.exe      =1sbpci.ini      =1; mixer filesstarter.exe    =1ensmix32.exe   =1enscfg32.exe   =1mixres32.dll   =1; wavesetseapci2m.ecw    =1,..\..\common\wavesetseapci4m.ecw    =1,..\..\common\wavesetseapci8m.ecw    =1,..\..\common\wavesets;---------------------------------------------------------------;[Strings]Creative              ="Creative"MfgName               ="Creative"DEV_1371.DeviceDesc   ="Creative Sound Blaster AudioPCI 128"SSC-Legacy.DeviceDesc ="Sound Blaster AudioPCI 128 Legacy Device"ENSJoy.DeviceDesc     ="Creative Gameport Joystick"DOSDir                ="SBPCI"sbpcikey              ="SBPCI Path"DriverDisk1           ="Creative Sound Blaster AudioPCI 128 Driver Disk"ENSxxxx.ExternalMIDI  ="SB AudioPCI 128 External MIDI Port"ENSxxxx.InternalMIDI  ="SB AudioPCI 128 Internal Synth"MediaClassName        ="Sound, video and game controllers"V_CLSWAVEFORM         ="Audio"V_CLSMIDI             ="MIDI"V_CLSMIXER            ="Mixer"V_CLSAUX              ="Auxiliary"V_GENERAL             ="General MIDI Instrument"URL                   ="http://www.ensoniq.com"; Driver Information EntriesDriverMfgr            ="Creative"DriverVersionID       ="4.06.1167"DriverOEM             ="Creative"DriverFamily          ="Audio"DriverProduct         ="SB AudioPCI 128"DriverDescription     ="Creative Sound Blaster AudioPCI 128"DriverOEMVersion="5.40"

Does the INF need to be modified? I would assume not....

My test string looks like this:

HKLM,"SOFTWARE\Microsoft\Windows\CurrentVersion","OtherDevicePath",,"C:\WINCD\DRIVER\AUDIO5"

Even with this, it crashes for some reason.... By the logic I gather from this, windows will lookk in that directory, find the inf, and install the drivers. The files are all in that folder as well. So no modification would be needed, right?

I have read somewhere that backslashes must be written like this: "\\"... If i do that, it doesn't crash, but it doesn't find the driver either ._.

Edited by oerg866
Link to comment
Share on other sites


Ummm... do you have a CR/LF (press <enter>) after that line? There IS a reason that they are there between each Section of MSBATCH.INF. Also note the ";" delimiter between each path. Again, my sample works flawlessly, as well as the instructions for editing the INF files. USE <ENTER> (CR/LF) BEFORE EACH NEXT "SECTION"!

HTH

Link to comment
Share on other sites

OK, that was a false alarm. it STILL doesn't work, the thing above must have been a coincidence... ****. The setup ran through, it detected no hardware (only yellow ujnknown devices) and attempting to install anything resulted in a crash...

Link to comment
Share on other sites

INFPREP.EXE? Is that one of your "creations"? :unsure: Sorry, but I don't know what that is... Is that a "renamed" INFINST.EXE?

 

I thought I made it clear what the "rules" are about manually altering the INF files to correctly install on FIRST REBOOT?

 

Realtek AC97 is kind of "generic" isn't it? It IS "just" the INF + related modules, right? (I happen to have that EXACT file).

From here - http://218.210.127.131/downloads/downloadsView.aspx?Langid=1&PNid=23&PFid=23&Level=4&Conn=3&DownTypeID=3&GetDown=false

Here's WDM_A405 and WDM_A406, but they are EXE files that will need "unpacked" (WinRAR, WinZIP, 7Zip, whatever) -

ftp://files.3dnews.ru/pub/drivers/SOUND/realtek/

 

edit - Also scroll down - this APPEARS to be the FULL "older" package (Rack App and all) -

http://www.msfn.org/board/topic/171723-trouble-with-foxconn-661-7mj-motherboard/

 

...and google this

realtek "5.10.0"
for more "potential" FULL packages.

 

HTH

Edited by submix8c
Link to comment
Share on other sites

I have all the full packages, I have a mirror of the realtek FTP...

 

 

INFPREP.EXE? Is that one of your "creations"? :unsure: Sorry, but I don't know what that is... Is that a "renamed" INFINST.EXE?

 

It is my own creation. It modifies all the INF files to have SourceDisksFiles point to the correct directories.

 

Sometimes it works, sometimes it doesn't. I have now put all INFs in same directory, numbering them (of course, still keeping the necessary files in separate directories). But only added the REG entry OtherDevicePath *after* install to experiment.

 

To make ti clears: the drivers were put in C:\Wincd\D and their relevant files are in D\A0, D\A1, etc. - This is marked properly in every inf file by my tool INFPREP.EXE.

 

Now to test:

 

Tried manually searching for drivers: Crash.

 

Got rid of INFs until I found the one causing it. Took it out, took others back. Tried searching again. Works.

 

Rebooted. Tried searching again: Crash.

 

This is so stupid. Windows bug??

 

Small amounts of INFs work, like what you have. I have 220 INF files,  and it doesn't.

Edited by oerg866
Link to comment
Share on other sites

Would you kindly give the EXACT procedure for Install? I'm getting confused as you -seemingly- are randomly changing the method and files/folders in an attempt to make it "work".

 

WHAT do you mean "crash"? "Like what you have"? What does that mean?

 

Please provide your MSBATCH.INF (x-out the Product Key) and several INF files, along with the corresponding DIR listing for the "several" INF's (including the sub-dirs) mainly the "failing" ones. ZIP (or whatever) them first and attach the ZIP file to your next post. You are DEFINITELY doing something wrong! Again, I've used this method many times.

Link to comment
Share on other sites

There is no need... I already figured it out. the Driver information database (C:\WINDOWS\INF\DRVIDX.BIN) will cause a general protection fault when read if it is larger than 2 MB... I just checked, I kept taking INFs away, and it started working when it went below 2MB.

 

I checked using INFmon. When reading the file, I t always crashes when at offset 2094813, attempting to read 65457 further bytes....

 

It's just not going to happen... Probably yet another thing R. Loew has to write a patch for (I'd buy it! :P)

 

I can somewhat mitigate this by discarding all SUBSYS specifications and just go with the PCI\VEN_xxxx&DEV_xxxx  IDs....

 

It's also why it started working when I took away the Realtek driver. It has several DOZENS of inf files, with huge lists of PCI IDs that Windows tries to make an entry in DRVIDX.BIN for... Lots of wasted space.

Edited by oerg866
Link to comment
Share on other sites

Hmmm... it -appears- :unsure: that SETUPX.DLL is responsible for the DRVIDX.BIN and DRVDATA.BIN.

Also see this -

"HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\SetupX\INF\OEM Name"

Edited by submix8c
Link to comment
Share on other sites

There is no need... I already figured it out. the Driver information database (C:\WINDOWS\INF\DRVIDX.BIN) will cause a general protection fault when read if it is larger than 2 MB... I just checked, I kept taking INFs away, and it started working when it went below 2MB.

I checked using INFmon. When reading the file, I t always crashes when at offset 2094813, attempting to read 65457 further bytes....

It's just not going to happen... Probably yet another thing R. Loew has to write a patch for (I'd buy it! :P)

Possibly.

I would need more information.

Can you tell me what process is doing the Read that crashes?

I also need to know when the crash occurs.

I am not familiar with INFmon and don't see any obvious references on Google.

I use FILEMON and REGMON.

Link to comment
Share on other sites

As submix8c pointed out, it appears that setupx.dll deals with those two driver database files. It's a 16bit (NE) library and it may be referenced by sysdm.cpl among many others. There may be a hardcoded limit of 2MB (2048kB) on the file size. Can't say more as I never managed to finish that NE editor.

 

An interesting fact I noticed is that a few other files of different types also deal with the database files:

- a couple of .dat (ME Setup.dat and W2K Setup.dat) pertaining to C-Media audio driver

- WINPPPOE.DLL pertaining to Robert Schlabback's PPPoE driver

- fppinst3.exe pertaining to pdfFactory

- lxbkun9x.exe pertaining to Lexmark printer/scanner driver

- daemon.msi pertaining to Daemon Tools 3.47 setup

- a couple of .inf (NETRT.INF and NETRTF.INF) pertaining to Realtek 8029/8129 LAN card driver

 

Those were all inside the Windows folder, in various subfolders. Most likely other packages (all 9x-compatible?) that install/uninstall drivers should have similar entries. Theoretically, I believe a driver uninstallation should completely remove all traces of its presence, including the entries in the two driver database files we're talking about. However, I think a lot of third-party driver packages fail to remove themselves from the database and/or leave behind inf files and possible their binaries, which is why after supposedly uninstalling a driver, upon reboot it will be redetected and reinstalled exactly as it was before uninstalling.

 

For the issue at hand, a patch would be critical if one would attempt to build a custom OS installation media packed with all possible drivers.

 

Edit: just seen setupx.dll being called in a lot of infs through rundll.exe in the form:

StubPath = "rundll.exe %11%\setupx.dll, InstallHinfSection [...]"

 

There's a chance the limitation may be within rundll.exe. But that's just guessing.

 

(typos, typos, typos...)

Edited by Drugwash
Link to comment
Share on other sites

Pardon me, rloew, I meant FileMon of course. Got confused there, I guess...

 

I cannot really tell all the details, but the crash appears to happen whenever it enumerates a device, both during Setup and in the "update driver"-wizard. During setup the white error box that pops up references MSGSVR32, the other one is about rundll... Not sure how much that helps..

 

rundll generally shouldn't touch drvidx.bin, because rundll just  calls DLLs... It would appear that SETUPX. DLL is the culprit because that is the file actually providing the code for this...

 

Excuse all the typoes, it's 7AM and I haven't slept yet :P

 

 

 

For the issue at hand, a patch would be critical if one would attempt to build a custom OS installation media packed with all possible drivers.

 

 

Yep, exactly what I'm trying to do... I have a 400GB driver archive at hand being put into use (not all of it of course :P)

Edited by oerg866
Link to comment
Share on other sites

Yep, it's probably setupx.dll's fault. And I figured you were gonna build the ultimate 9x installation disk. BTW, dunno if you're aware but there's been a similar operation going on for some time already, only it's for the NT family, at DriverPacks.net. Maybe you could learn a few things about shortening paths, filenames and organization of files from them. We could all use a good and most complete driver database for 9x. ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...