/*++ Copyright (c) 1994 - 1996 Microsoft Corporation Module Name: devqury.c Abstract: This module provides all the scheduling services for the Local Spooler Author: Krishna Ganugapati (KrishnaG) 15-June-1994 Revision History: --*/ #include BOOL (*pfnOpenPrinter)(LPTSTR, LPHANDLE, LPPRINTER_DEFAULTS); BOOL (*pfnClosePrinter)(HANDLE); BOOL (*pfnDevQueryPrint)(HANDLE, LPDEVMODE, DWORD *, LPWSTR, DWORD); BOOL (*pfnPrinterEvent)(LPWSTR, INT, DWORD, LPARAM, DWORD *); LONG (*pfnDocumentProperties)(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODE, DWORD); BOOL InitializeWinSpoolDrv( VOID ) { fnWinSpoolDrv fnList; if (!SplInitializeWinSpoolDrv(&fnList)) { return FALSE; } pfnOpenPrinter = fnList.pfnOpenPrinter; pfnClosePrinter = fnList.pfnClosePrinter; pfnDevQueryPrint = fnList.pfnDevQueryPrint; pfnPrinterEvent = fnList.pfnPrinterEvent; pfnDocumentProperties = fnList.pfnDocumentProperties; return TRUE; } BOOL CallDevQueryPrint( LPWSTR pPrinterName, LPDEVMODE pDevMode, LPWSTR ErrorString, DWORD dwErrorString, DWORD dwPrinterFlags, DWORD dwJobFlags ) { HANDLE hPrinter; DWORD dwResID=0; // // Do not process for Direct printing // If a job is submitted as direct, then // ignore the devquery print stuff // if ( dwJobFlags ) { return TRUE; } if (!pDevMode) { return TRUE; } if (dwPrinterFlags && pfnOpenPrinter && pfnDevQueryPrint && pfnClosePrinter) { if ( (*pfnOpenPrinter)(pPrinterName, &hPrinter, NULL) ) { (*pfnDevQueryPrint)(hPrinter, pDevMode, &dwResID, ErrorString, dwErrorString); (*pfnClosePrinter)(hPrinter); } } return(dwResID == 0); }