Leaked source code of windows server 2003
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.
 
 
 
 
 
 

98 lines
2.0 KiB

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
unilib.c
Abstract:
This string handling the KM code for Unidrv
Environment:
Win32 subsystem, Unidrv driver
Revision History:
11/12/96 -eigos-
Created it.
dd-mm-yy -author-
description
--*/
#include "precomp.h"
DWORD
DwCopyStringToUnicodeString(
IN UINT uiCodePage,
IN PSTR pstrCharIn,
OUT PWSTR pwstrCharOut,
IN INT iwcOutSize)
{
INT iCharCountIn;
INT iRetVal;
size_t stStringLength;
if ( NULL == pwstrCharOut )
{
return (DWORD)(-1);
}
iCharCountIn = strlen(pstrCharIn) + 1;
iRetVal = EngMultiByteToWideChar(uiCodePage,
pwstrCharOut,
iwcOutSize * sizeof(WCHAR),
pstrCharIn,
iCharCountIn);
if ( -1 == iRetVal ||
FAILED ( StringCchLengthW ( pwstrCharOut, iwcOutSize, &stStringLength ) ) )
{
pwstrCharOut[iwcOutSize-1] = TEXT('\0');
}
return (DWORD)iRetVal;
}
DWORD
DwCopyUnicodeStringToString(
IN UINT uiCodePage,
IN PWSTR pwstrCharIn,
OUT PSTR pstrCharOut,
IN INT icbOutSize)
{
INT iCharCountIn;
INT iRetVal;
size_t stStringLength;
if ( NULL == pstrCharOut )
{
return (DWORD)(-1);
}
iCharCountIn = wcslen(pwstrCharIn) + 1;
iRetVal = EngWideCharToMultiByte(uiCodePage,
pwstrCharIn,
iCharCountIn * sizeof(WCHAR),
pstrCharOut,
icbOutSize);
if ( -1 == iRetVal ||
FAILED ( StringCchLengthA ( pstrCharOut, icbOutSize, &stStringLength ) ) )
{
pstrCharOut[icbOutSize-1] = '\0';
}
return (DWORD)iRetVal;
}