Sample Code
Windows Driver Samples/ MSPLOT Plotter Driver Sample/ C++/ lib/ drvinfo.c/
/*++ Copyright (c) 1990-2003 Microsoft Corporation Module Name: drvinfo.c Abstract: This module This module contains functions to access spooler's DRIVER_INFO_1/DRIVER_INFO_2 data strcture Author: 02-Dec-1993 Thu 22:54:51 created [Environment:] GDI Device Driver - Plotter. [Notes:] Revision History: --*/ #include "precomp.h" #pragma hdrstop #define DBG_PLOTFILENAME DbgMiscUtil #define DBG_DRVINFO2 0x00000001 DEFINE_DBGVAR(0); #ifdef UMODE LPBYTE GetDriverInfo( HANDLE hPrinter, UINT DrvInfoLevel ) /*++ Routine Description: This function get the DRIVER_INFO_1 Pointer from a hPrinter Arguments: hPrinter - The handle to the printer interested DrvInfoLevel - if 1 then DRIVER_INFO_1 is returned else if 2 then DRIVER_INFO_2 is returned, any other vaules are invlaid Return Value: the return value is NULL if failed else a pointer to the DRIVER_INFO_1 or DRIVER_INFO_2 is returned, the caller must call LocalFree() to free the memory object after using it. Author: 02-Dec-1993 Thu 22:07:14 created Revision History: --*/ { LPVOID pb; DWORD cb; // // Find out total bytes required // PLOTASSERT(1, "GetDriverInfo: Invalid DrvInfoLevl = %u", (DrvInfoLevel == 1) || (DrvInfoLevel == 2), DrvInfoLevel); GetPrinterDriver(hPrinter, NULL, DrvInfoLevel, NULL, 0, &cb); if (xGetLastError() != ERROR_INSUFFICIENT_BUFFER) { PLOTERR(("GetDriverInfo%d: GetPrinterDriver(1st) error=%08lx", DrvInfoLevel, xGetLastError())); } else if (!(pb = (LPBYTE)LocalAlloc(LMEM_FIXED, cb))) { PLOTERR(("GetDriverInfo%d: LocalAlloc(%ld) failed", DrvInfoLevel, cb)); } else if (GetPrinterDriver(hPrinter, NULL, DrvInfoLevel, pb, cb, &cb)) { // // Got it allright, so return it // return(pb); } else { PLOTERR(("GetDriverInfo%d: GetPrinterDriver(2nd) error=%08lx", DrvInfoLevel, xGetLastError())); LocalFree((HLOCAL)pb); } return(NULL); } #endif
Our Services
-
What our customers say about us?
Read our customer testimonials to find out why our clients keep returning for their projects.
View Testimonials