Print Driver version recognition

Vopni, Jim JimV at
Mon Jul 16 19:13:16 GMT 2001


I was testing with a bunch of different Canon PCL drivers.  Found some
English drivers that didn't work but then had lots of difficulties
with other Languages. The one package of drivers includes the 
Canon GP200-225 PCL.  You can pick up the drivers in question from
Canon's web site

I was getting the directly from the file version of the DriverFile
which is installed.(looking at the version through Properties->Version)
I just found an Aficio driver with 0.2.512.105. I realize this is a string 
but figured it should be the same as the Major/Minor values.

When installing the Canon driver to a Win2K server the NT4 drivers install
properly. I tried replacing the CnP5eE.DLL file versioned with the 
2000 driver versioned and MS installed it as a 2000 driver.  This 
makes me believe that this is what MS is doing to determine the version.

Using the code in the routine get_file_version (nt_printing.c) returns
the major version as "2" and the minor version as "0"  I was expecting
to see this the major as "0" given that windows says it is ""
I haven't chased control blocks since my MVS days so I am not sure what
the correct location/values that should be interrogated.

-----Original Message-----
From: REILLY,JOHN R (HP-Roseville,ex1) [mailto:jreilly at]
Sent: Monday, July 16, 2001 11:54 AM
To: 'samba-technical at'
Subject: RE: Print Driver version recognition

Jim -

> From: "Vopni, Jim" <JimV at>
> To: samba-technical at
> Subject: Print Driver version recognition
> Date: Fri, 13 Jul 2001 08:33:58 -0400
> I have a question regarding how samba determines the OS version of a
> being installed. It is using a function called get_correct_cversion() in
> nt_printing.c

I put this code in last year, and it seemed to be working fine...

> We have run across a number of drivers that are installed incorrectly.
> Samba is recognizing the driver as 2000 when if fact it is a NT4 driver.
> In all cases the version of the Driver file is but the code in
> get_correct_cversion()  does not look for this version string.

Recently (about two weeks ago) I have revived a message with the same
complaint, but I didn't have a reproducible case... or the time for that
matter. Could you send me the names of the drivers that have the problem.

> It seems, at least with the drivers we have been using, that the NT4
> are versioned , 2000 drivers are  and the 9x drivers are
> (or not versioned)

Where are you getting the version from? I know of two different bits of

  * the uint32 MajorOperatingSystemVersion and MinorSubsystemVersion in the
    _IMAGE_OPTIONAL_HEADER of the PE file format, which indicates the
    of the Windows NT operating system. This information is also available
    the NE file format (although it harder to get at :)
  * the 'text' version info. This is what the Rt Click/Properties/VersionTab

Note: there is no forced sync between these two sets of version information.
I found many driver files with inconsistent values... not surprising since
they are generated by different compiler section/commands.

> What is/was the reason for the current version determination?  Is the
> version number of the driver file not sufficient to determine what type it
> is?

Good question. I assumed (whoa big gap in reasoning there!) that because the
Major/MinorOperatingSystemVersion info is necessary (don't let the
in _IMAGE_OPTIONAL_HEADER fool you, it is required) for the OS to figure out
if a particular file is useable. Perhaps this is not the case.

> We are putting together a patch to install based on this version number
> but there may be issues that we are not aware of.

There may well be. I admit I used all the info I could find on the web, and
MSDN, but it was perhaps not enough.

> ...Jim
> ----------------
> Jim Vopni		Software Metrics
> jimv at	450 Philips St
> (519) 885-2458 x222	Waterloo Ont. N2L 5J2


jreilly at | jreilly at                 916-785-4532
iIPS - internet Imaging & Printing Systems, Hewlett-Packard Co.
8000 Foothills Blvd. Roseville, CA 95747-5659  M/S: 5659

More information about the samba-technical mailing list