77 lines
1.3 KiB
C
77 lines
1.3 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1999 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
printers.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This file implements printer functions for fax.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Steven Kehrli (steveke) 18-Aug-1999
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User Mode
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <winspool.h>
|
||
|
#include <tchar.h>
|
||
|
|
||
|
#include "faxutil.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
PVOID
|
||
|
MyEnumPrinters(
|
||
|
LPTSTR pServerName,
|
||
|
DWORD level,
|
||
|
PDWORD pcPrinters,
|
||
|
DWORD dwFlags
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Wrapper function for spooler API EnumPrinters
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
pServerName - Specifies the name of the print server
|
||
|
level - Level of PRINTER_INFO_x structure
|
||
|
pcPrinters - Returns the number of printers enumerated
|
||
|
dwFlags - Flag bits passed to EnumPrinters
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Pointer to an array of PRINTER_INFO_x structures
|
||
|
NULL if there is an error
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
PBYTE pPrinterInfo = NULL;
|
||
|
DWORD cb;
|
||
|
|
||
|
if (! EnumPrinters(dwFlags, pServerName, level, NULL, 0, &cb, pcPrinters) &&
|
||
|
GetLastError() == ERROR_INSUFFICIENT_BUFFER &&
|
||
|
(pPrinterInfo = MemAlloc(cb)) &&
|
||
|
EnumPrinters(dwFlags, pServerName, level, pPrinterInfo, cb, &cb, pcPrinters))
|
||
|
{
|
||
|
return pPrinterInfo;
|
||
|
}
|
||
|
|
||
|
DebugPrint(( TEXT("EnumPrinters failed: %d\n"), GetLastError()));
|
||
|
MemFree(pPrinterInfo);
|
||
|
return NULL;
|
||
|
}
|
||
|
|