101 lines
2.5 KiB
C
101 lines
2.5 KiB
C
/*++
|
||
Module Name:
|
||
|
||
windows\spooler\prtprocs\winprint\journal.c
|
||
|
||
Abstract:
|
||
|
||
Routines to facilitate printing of journal jobs.
|
||
|
||
Author:
|
||
|
||
Tommy Evans (vtommye) 10-22-1993
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#include "stddef.h"
|
||
#include <windef.h>
|
||
|
||
#include <windows.h>
|
||
#include <winspool.h>
|
||
#include <winsplp.h>
|
||
#include <wchar.h>
|
||
|
||
#include "winprint.h"
|
||
#include "wingdip.h"
|
||
|
||
|
||
/*++
|
||
*******************************************************************
|
||
P r i n t J o u r n a l J o b
|
||
|
||
Routine Description:
|
||
Prints out a job with JOURNAL data type.
|
||
|
||
Arguments:
|
||
pData => Data structure for this job
|
||
pDocumentName => Name of this document
|
||
|
||
Return Value:
|
||
TRUE if successful
|
||
FALSE if failed - GetLastError() will return reason.
|
||
*******************************************************************
|
||
--*/
|
||
BOOL
|
||
PrintJournalJob(
|
||
IN PPRINTPROCESSORDATA pData,
|
||
IN LPWSTR pDocumentName)
|
||
{
|
||
ULONG Copies;
|
||
DWORD Start = 0;
|
||
DWORD End = 0xffffffff;
|
||
INT Priority = 0;
|
||
|
||
/** Print the data pData->Copies times **/
|
||
|
||
Copies = pData->Copies;
|
||
|
||
try {
|
||
while (Copies--) {
|
||
|
||
/**
|
||
WORKWORK - There is a problem here. It seems that
|
||
the graphics engine deletes the print job
|
||
once it is done playing it. Because of this,
|
||
only one copy is spit out. One fix would be to copy
|
||
the file off if we will be doing copies, then copy it
|
||
back for each copy. Another would be to add a flag to
|
||
the play call specifying whether to delete the file
|
||
or not. Finally, we could just not support copies
|
||
for journal jobs.
|
||
|
||
WORKWORK - We can now pass the priority of the GDI
|
||
server thread to gdi. The value passed is relative
|
||
to the background application priority. We could
|
||
experiment with different values or just pull it from
|
||
the registry.
|
||
**/
|
||
|
||
/** Call the graphics engine to print the job **/
|
||
|
||
//!!! BUG BUG BUG - LPCWSTR
|
||
if (!GdiPlayJournal(pData->hDC,
|
||
pDocumentName,
|
||
Start, End, Priority)) {
|
||
return FALSE;
|
||
}
|
||
|
||
} /* While copies to print **/
|
||
|
||
} except (TRUE) {
|
||
|
||
OutputDebugString(L"GdiPlayJournal gave an exception\n");
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
return TRUE;
|
||
}
|