92 lines
1.8 KiB
C
92 lines
1.8 KiB
C
/*++
|
||
|
||
Copyright (c) 1990-2000 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
wtoa.c
|
||
|
||
Abstract:
|
||
|
||
This module provides all the public exported APIs relating to Printer
|
||
and Job management for the Local Print Providor
|
||
|
||
--*/
|
||
|
||
#include <stdio.h>
|
||
#include <windows.h>
|
||
#include <string.h>
|
||
#include <rpc.h>
|
||
#include "winspl.h"
|
||
#include <offsets.h>
|
||
|
||
|
||
#define NULL_TERMINATED 0
|
||
|
||
/* AnsiToUnicodeString
|
||
*
|
||
* Parameters:
|
||
*
|
||
* pAnsi - A valid source ANSI string.
|
||
*
|
||
* pUnicode - A pointer to a buffer large enough to accommodate
|
||
* the converted string.
|
||
*
|
||
* StringLength - The length of the source ANSI string.
|
||
* If 0 (NULL_TERMINATED), the string is assumed to be
|
||
* null-terminated.
|
||
*
|
||
* Return:
|
||
*
|
||
* The return value from MultiByteToWideChar, the number of
|
||
* wide characters returned.
|
||
*
|
||
*
|
||
* andrewbe, 11 Jan 1993
|
||
*/
|
||
INT AnsiToUnicodeString( LPSTR pAnsi, LPWSTR pUnicode, DWORD StringLength )
|
||
{
|
||
if( StringLength == NULL_TERMINATED )
|
||
StringLength = strlen( pAnsi );
|
||
|
||
return MultiByteToWideChar( CP_ACP,
|
||
MB_PRECOMPOSED,
|
||
pAnsi,
|
||
StringLength + 1,
|
||
pUnicode,
|
||
StringLength + 1 );
|
||
}
|
||
|
||
LPWSTR
|
||
AllocateUnicodeString(
|
||
LPSTR pPrinterName
|
||
)
|
||
{
|
||
LPWSTR pUnicodeString;
|
||
|
||
if (!pPrinterName)
|
||
return NULL;
|
||
|
||
pUnicodeString = LocalAlloc(LPTR, strlen(pPrinterName)*sizeof(WCHAR) +
|
||
sizeof(WCHAR));
|
||
|
||
if (pUnicodeString)
|
||
AnsiToUnicodeString(pPrinterName, pUnicodeString, NULL_TERMINATED);
|
||
|
||
return pUnicodeString;
|
||
}
|
||
|
||
|
||
LPWSTR
|
||
FreeUnicodeString(
|
||
LPWSTR pUnicodeString
|
||
)
|
||
{
|
||
if (!pUnicodeString)
|
||
return NULL;
|
||
|
||
return LocalFree(pUnicodeString);
|
||
}
|
||
|
||
|