dencorso

VxD versions in XP (and in DOS)

20 posts in this topic

The fact that one cannot get the version info for any Linear Executable (a.k.a.: LE, which extensions may be .386, .VXD or .PDR) because, since LEs are not executable on the NT-family OSes, the system doesn't provide the usual Properties- -> Version tab for them, is a minor annoyance for those of us who multiboot Win 9x/ME with Win XP (or other NT-family OSes). I've just thrown together a crude, but effective, DOS application that solves this issue by getting the required info without recourse to the Windows API, and can be downloaded from this post.

Bear in mind that the MS VS_VERSION_INFO structure has *four* version strings: a File Version and a Product Version as hexadecimal numbers, and a File Version and a Product Version as text strings, and that not necessarily do they contain the same info, so my little app lists all four of them. HTH. And thanks to LoneCrusader for providing the inspiration to finally get around to do it! :yes:

vxdver051.7z

0

Share this post


Link to post
Share on other sites

Aha! Thanks dencorso :yes:

Edited by LoneCrusader
0

Share this post


Link to post
Share on other sites

Here's a new version! :)

I found out that in about 2% of my test files it failed to find actually present version info, due to the presence of a duplicate string (probably a quirk of the linker used to create those .vxds)... that's now fixed, so please do download the new version, which is in post #1, replacing the original release. The new version also prints the filename, which is useful when using it inside FOR loops.

0

Share this post


Link to post
Share on other sites

thanks, i also hate xp for deliberately ignoring version info for that format.

0

Share this post


Link to post
Share on other sites

It's been a long time already, since I've released VxDVer... I always wished to make it more complete, but never actually found the time to come around to it. Quite recently, I've found out an ancient MSKB document (viz. Q201685 aka KB201685), which provides sample code precisely for reading more fully the properties of a VxD file (usualy having the extensions .386, .VxD or .PDR). I compiled it, and it works, although it has a bug, which was first reported by Jordan Russell:
 

Note: The code in this function is based on the code in the MSKB article Q201685. Known issue: This function fails if the version resource has a name (TVXDVersionResource.cName <> $FF). It's rare, but such VXDs do exist -- see Windows 98's MSGAME.VXD for example. Given that as of 2007 Windows 9x is mostly obsolete, I don't plan on fixing this.

 
So, I decided to fix this bug, cause the program to give error messages and localization languages in plain English, not just as a code number, format a little better the program's output, and make available a compiled copy of it. As opposed to my VxDVer, this new program named VxDProps is not a plain DOS executable, but instead a Win 32 console applications, that should run equally well on 9x/ME and on NT-family OSes, at least from 2k on. It's compiled with VC++ 6.0. Problems, bugs, etc., please do let me know.

 

The original version has been replaced by a new one, now available for download from Post #20.

1

Share this post


Link to post
Share on other sites

Please forgive me if I haven't kept up with this topic over the last 4 3/4 years, LOL, but how and why does one use this, I assume, nifty tool you created?

 

I realize that it probably doesn't apply to me since I don't currently use any version of Win9x, but I read the "Q201685 - VxDs Version Info.pdf" and I think I get the reason that knowing the version of the files is useful, (if you are going to update, patch, or replace a file it is usually important to know the exact version of the file you are dealing with), but I still don't get how to use your tool.  Sorry for being a noob. :)

 

Cheers and Regards

0

Share this post


Link to post
Share on other sites

Supose one double-boots 9x/ME with XP or 7 or both. There's no way to find out version, language and all those familiar info from the Properties => Version tab for .VxDs, because NT-OSes don't know anything about .VxD (aka .386 or .PDR) files. NT-OSes don't read their version info structure because they don't even suspect it's there. So, in order to be able to check that info, to update or replace such files in 9x/ME, from NT-OSes, a special app is needed, and the only know such apps are those in this thread. My original one also runs in DOS, but shows just version info. The new one provides all the info from the Properties => Version tab, but can only run in a DOS box, because it's a Win32 console application. To see the new one work, a VxD file is needed. Having one such file at hand, the usage is: VxdProps <filename>.

Cheers!

0

Share this post


Link to post
Share on other sites

You forgot about Shutdown Patcher which can read VersionInfo from VXDs equally well. :whistle:

Ahem, almost equally well because I did stumble into that duplicate label issue and left it as is (since none of the nvcore drivers suffer from it). But with a little help from my friends :angel I could fix it and maybe port the code to a standalone GUI application. B)

0

Share this post


Link to post
Share on other sites

I wrote a DOS based one a couple of years ago to dump this information and/or change it.

It comes in very handy when attempting to port Kernel Software from Windows 98 to Windows 95 as the VXD loader will reject VXDs with a newer DDK Version Number.

Incidentally, neither VXDProps nor ShutdownPatcher display the DDK Version Number.

0

Share this post


Link to post
Share on other sites

Another undocumented offset? :)

 

The patcher is not meant as an in-depth analyser but the code that reads the VI from LE files can be ported over and enhanced.

But first things first. ;)

0

Share this post


Link to post
Share on other sites

There are four that are rarely documented. I gave you the first two. Then there is a Device ID. And finally the DDK Version.

The document included in VXDProps, that dencorso attached, references the WINNT.H Include file that does list these. No details though.

Your Patcher doesn't need this but your planned Version Display Program might.

0

Share this post


Link to post
Share on other sites

Another undocumented offset? :)

 

Well, not quite...

0

Share this post


Link to post
Share on other sites

Thanks both for the tip, I'll grab that header for a read as soon as I get some rest and fix the issues with the patcher. :)

0

Share this post


Link to post
Share on other sites

True. But neither display the contents of the Properties => Version Tab, like VxDProps.

0

Share this post


Link to post
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.