Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
util.cpp
Abstract:
This module contains utility routines for the fax transport provider.
Author:
Wesley Witt (wesw) 13-Aug-1996
--*/
#include "faxext.h"
//
// globals
//
BOOL oleInitialized;
LPSTR Platforms[] = { "Windows NT x86", "Windows NT R4000", "Windows NT Alpha_AXP", "Windows NT PowerPC" };
LPVOID MapiMemAlloc( DWORD Size )
/*++
Routine Description:
Memory allocator.
Arguments:
Size - Number of bytes to allocate.
Return Value:
Pointer to the allocated memory or NULL for failure.
--*/
{ LPVOID ptr; HRESULT hResult;
hResult = MAPIAllocateBuffer( Size, &ptr ); if (hResult) { ptr = NULL; } else { ZeroMemory( ptr, Size ); }
return ptr; }
VOID MapiMemFree( LPVOID ptr )
/*++
Routine Description:
Memory de-allocator.
Arguments:
ptr - Pointer to the memory block.
Return Value:
None.
--*/
{ if (ptr) { MAPIFreeBuffer( ptr ); } }
PVOID MyGetPrinter( LPSTR PrinterName, DWORD level )
/*++
Routine Description:
Wrapper function for GetPrinter spooler API
Arguments:
hPrinter - Identifies the printer in question level - Specifies the level of PRINTER_INFO_x structure requested
Return Value:
Pointer to a PRINTER_INFO_x structure, NULL if there is an error
--*/
{ HANDLE hPrinter; PBYTE pPrinterInfo = NULL; DWORD cbNeeded; PRINTER_DEFAULTS PrinterDefaults;
PrinterDefaults.pDatatype = NULL; PrinterDefaults.pDevMode = NULL; PrinterDefaults.DesiredAccess = PRINTER_READ; //PRINTER_ALL_ACCESS;
if (!OpenPrinter( PrinterName, &hPrinter, &PrinterDefaults )) { return NULL; }
if (!GetPrinter( hPrinter, level, NULL, 0, &cbNeeded ) && GetLastError() == ERROR_INSUFFICIENT_BUFFER && (pPrinterInfo = (PBYTE) MemAlloc( cbNeeded )) && GetPrinter( hPrinter, level, pPrinterInfo, cbNeeded, &cbNeeded )) { ClosePrinter( hPrinter ); return pPrinterInfo; }
ClosePrinter( hPrinter ); MemFree( pPrinterInfo ); return NULL; }
LPSTR RemoveLastNode( LPTSTR Path )
/*++
Routine Description:
Removes the last node from a path string.
Arguments:
Path - Path string.
Return Value:
Pointer to the path string.
--*/
{ DWORD i;
if (Path == NULL || Path[0] == 0) { return Path; }
i = strlen(Path)-1; if (Path[i] == '\\') { Path[i] = 0; i -= 1; }
for (; i>0; i--) { if (Path[i] == '\\') { Path[i+1] = 0; break; } }
return Path; }
|