From: Dave Burns on
Finally got it compiled by correcting the code that caused the warnings, but
still don't know why it still thinks I'm "treating warning" as error.

At the end of the linking, I got the following error:

Linking Executable - objfre_wlh_x86\i386\ccdxpvista.dll
errors in directory c:\houyaocode\prismprinter\ccdvista
link : error LNK1104: cannot open file 'CCDXPVISTA.prf'
BUILD: Finish time: Wed Nov 12 11:25:26 2008
BUILD: Done

6 files compiled - 1 Warning
1 library built
1 executable built - 1 Error

What is a .PRF file? Any idea?

Regards, Dave.


From: Tim Roberts on
"Dave Burns" <dburns(a)newsgroup.nospam> wrote:
>
>Finally got it compiled by correcting the code that caused the warnings, but
>still don't know why it still thinks I'm "treating warning" as error.

The stock makefile automatically selects /WX unless you specifically
override it by setting
BUILD_ALLOW_COMPILER_WARNINGS=1

Howver, the path YOU took is the better one: fix the warnings.

>Linking Executable - objfre_wlh_x86\i386\ccdxpvista.dll
>errors in directory c:\houyaocode\prismprinter\ccdvista
>link : error LNK1104: cannot open file 'CCDXPVISTA.prf'
>BUILD: Finish time: Wed Nov 12 11:25:26 2008
>BUILD: Done
>
> 6 files compiled - 1 Warning
> 1 library built
> 1 executable built - 1 Error
>
>What is a .PRF file? Any idea?

Do you know that you have the full source for the makefile used by "build"
in the DDK in bin\makefile.new? The .PRF file is a profile input. Your
sources file includes
NTPROFILEINPUT=yes

That tells it to try to do profiling. That's the danger of working with a
"sources" file without understanding what the settings do.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: Dave Burns on
Thank you, Tim and Christoph. I added the BUILD_ALLOW_COMPILER_WARNINGS
line, and the "warning as error" messages went away. I know I should fix the
problems, but it's nice to know why.

Now I can actually install the printer, but it would not print. I suspect
there might be something wrong in my .INF file:

[MyCompany]
%String_MODEL%=RIMCCD.Install,USBPRINT\VID_047E&PID_1001,Rimage_Perfect_Image_Printer_PF
;%String_MODEL%=RIMCCD.Install,USBPRINT\Rimage_Perfect_Image_Printer_PF

In my other driver (which I did not start), I actually have a 4-digit hex
number attached to Rimage_Perfect_Image_Printer_PF, like
Rimage_Perfect_Image_Printer_PF
XXXX, I believe it's the checksum of the string
"Rimage_Perfect_Image_Printer_PF". But I don't know how that checksum is
calculated. Any idea on how that number is calculated?

Another suspect is that the DrvConvertDevMode() is not returning TRUE. The
version conversion is quite confusing, our DRIVER_VERSION_INFO data is
defined like this:

static DRIVER_VERSION_INFO psDriverVersions = { //defined in plotlib.h/used
by devmode.c

// Current driver version number and private devmode size
DRIVER_VERSION, sizeof(CDDEVMODE)-sizeof(DEVMODE),

// 3.51 driver version number and private devmode size
DRIVER_VERSION_351, sizeof(CDDEVMODE)-sizeof(DEVMODE)-sizeof(BOOL),
};

Note that CCDSVMODE is our private DEVMODE.

Am I doing something wrong?

When I try to print, I can see from debugging messages that it's actually
calling some routines in my driver, but never prints anything out.

Any directions will be appreciated.

Dave


From: Christoph Lindemann on
For the device id check:
http://msdn.microsoft.com/en-us/library/ms791081.aspx
and
http://msdn.microsoft.com/en-us/library/ms802216.aspx

Hey, why not read the complete "Installing and Configuring Printer Drivers"
section ;)
http://msdn.microsoft.com/en-us/library/ms802217.aspx

--
Christoph Lindemann
Undocumented Printing
http://www.undocprint.org/


"Dave Burns" <dburns(a)newsgroup.nospam> wrote in message
news:Oreuq8bRJHA.5080(a)TK2MSFTNGP03.phx.gbl...
> Thank you, Tim and Christoph. I added the BUILD_ALLOW_COMPILER_WARNINGS
> line, and the "warning as error" messages went away. I know I should fix
> the problems, but it's nice to know why.
>
> Now I can actually install the printer, but it would not print. I suspect
> there might be something wrong in my .INF file:
>
> [MyCompany]
> %String_MODEL%=RIMCCD.Install,USBPRINT\VID_047E&PID_1001,Rimage_Perfect_Image_Printer_PF
> ;%String_MODEL%=RIMCCD.Install,USBPRINT\Rimage_Perfect_Image_Printer_PF
>
> In my other driver (which I did not start), I actually have a 4-digit hex
> number attached to Rimage_Perfect_Image_Printer_PF, like
> Rimage_Perfect_Image_Printer_PF
> XXXX, I believe it's the checksum of the string
> "Rimage_Perfect_Image_Printer_PF". But I don't know how that checksum is
> calculated. Any idea on how that number is calculated?
>
> Another suspect is that the DrvConvertDevMode() is not returning TRUE. The
> version conversion is quite confusing, our DRIVER_VERSION_INFO data is
> defined like this:
>
> static DRIVER_VERSION_INFO psDriverVersions = { //defined in
> plotlib.h/used by devmode.c
>
> // Current driver version number and private devmode size
> DRIVER_VERSION, sizeof(CDDEVMODE)-sizeof(DEVMODE),
>
> // 3.51 driver version number and private devmode size
> DRIVER_VERSION_351, sizeof(CDDEVMODE)-sizeof(DEVMODE)-sizeof(BOOL),
> };
>
> Note that CCDSVMODE is our private DEVMODE.
>
> Am I doing something wrong?
>
> When I try to print, I can see from debugging messages that it's actually
> calling some routines in my driver, but never prints anything out.
>
> Any directions will be appreciated.
>
> Dave
>
>


From: Dave Burns on
Thank you for your response. Now I'm able to install the printer
successfully (at least apparently), but I still can't print anything yet. I
can see the "Properties" pages and settings, but as soon as a document is
sent to printer, it says "printer error". From Windows event viewer, I can
see errors "Win32 error code returned by the print processor: 2. The system
cannot find the file specified.", or error 6 (The handle is invalid). But
the system does not give any more specific information about what "file" or
what "handle".


From the debug messages I put in the code, I can see it DrvEnablePDEV(), all
OK; then DrvDeviceCapabilities(), all seem to be fine. Then the DLL (the GDI
Graphic DLL) is unloaded. What are supposed to happen next? I thought the
will be called, but apparently it never did. Are there any specific values
of iDevCap of DrvDeviceCapabilities() that have to be processed for Vista?
Currently, I'm handling DC_PAPERS, DC_MINEXTENT, DC_MAXEXTENT, DC_PAPERSIZE,
DC_PAPERNAMES, DC_BINS, DC_BINNAMES, DC_FIELDS, DC_DUPLEX, DC_SIZE,
DC_EXTRA, DC_VERSION (returning 0x401), DC_DRIVER (returning 0x501),
DC_ENUMRESOLUTIONS, DC_FILEDEPENDENCIES, DC_TRUETYPE, DC_ORIENTATION and
DC_COPIES. Am I missing something for Vista?


Thanks, Dave

"Christoph Lindemann" <clindemann2(a)newsgroups.nospam> wrote in message
news:%23lBKGkJSJHA.4772(a)TK2MSFTNGP06.phx.gbl...
> For the device id check:
> http://msdn.microsoft.com/en-us/library/ms791081.aspx
> and
> http://msdn.microsoft.com/en-us/library/ms802216.aspx
>
> Hey, why not read the complete "Installing and Configuring Printer
> Drivers" section ;)
> http://msdn.microsoft.com/en-us/library/ms802217.aspx
>
> --
> Christoph Lindemann
> Undocumented Printing
> http://www.undocprint.org/
>
>
> "Dave Burns" <dburns(a)newsgroup.nospam> wrote in message
> news:Oreuq8bRJHA.5080(a)TK2MSFTNGP03.phx.gbl...
>> Thank you, Tim and Christoph. I added the BUILD_ALLOW_COMPILER_WARNINGS
>> line, and the "warning as error" messages went away. I know I should fix
>> the problems, but it's nice to know why.
>>
>> Now I can actually install the printer, but it would not print. I suspect
>> there might be something wrong in my .INF file:
>>
>> [MyCompany]
>> %String_MODEL%=RIMCCD.Install,USBPRINT\VID_047E&PID_1001,Rimage_Perfect_Image_Printer_PF
>> ;%String_MODEL%=RIMCCD.Install,USBPRINT\Rimage_Perfect_Image_Printer_PF
>>
>> In my other driver (which I did not start), I actually have a 4-digit hex
>> number attached to Rimage_Perfect_Image_Printer_PF, like
>> Rimage_Perfect_Image_Printer_PF
>> XXXX, I believe it's the checksum of the string
>> "Rimage_Perfect_Image_Printer_PF". But I don't know how that checksum is
>> calculated. Any idea on how that number is calculated?
>>
>> Another suspect is that the DrvConvertDevMode() is not returning TRUE.
>> The version conversion is quite confusing, our DRIVER_VERSION_INFO data
>> is defined like this:
>>
>> static DRIVER_VERSION_INFO psDriverVersions = { //defined in
>> plotlib.h/used by devmode.c
>>
>> // Current driver version number and private devmode size
>> DRIVER_VERSION, sizeof(CDDEVMODE)-sizeof(DEVMODE),
>>
>> // 3.51 driver version number and private devmode size
>> DRIVER_VERSION_351, sizeof(CDDEVMODE)-sizeof(DEVMODE)-sizeof(BOOL),
>> };
>>
>> Note that CCDSVMODE is our private DEVMODE.
>>
>> Am I doing something wrong?
>>
>> When I try to print, I can see from debugging messages that it's actually
>> calling some routines in my driver, but never prints anything out.
>>
>> Any directions will be appreciated.
>>
>> Dave
>>
>>
>
>