windows-nt/Source/XPSP1/NT/ds/netapi/xactsrv/xsunicod.h
2020-09-26 16:20:57 +08:00

132 lines
3.3 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
XsUnicod.h
Abstract:
This module contains declarations for Unicode work done by XACTSRV.
Author:
Shanku Niyogi(w-shankn) 27-Sep-1991
Revision History:
--*/
#ifndef _XSUNICOD_
#define _XSUNICOD_
//
// Unicode macro/procedure definitions.
//
// !!UNICODE!! - Added these type-independent conversion routines.
// These will probably last only as long as NetpDup isn't written.
//
// XsDupStrToTstr, XsDupTstrToStr - allocate memory and do a
// NetpCopy. This memory is XACTSRV memory,
// and can be freed with NetpMemoryFree.
//
LPWSTR
XsDupStrToWStr(
IN LPSTR Src
);
LPSTR
XsDupWStrToStr(
IN LPWSTR Src
);
#ifdef UNICODE
#define XsDupStrToTStr( src ) ((LPTSTR)XsDupStrToWStr(( src )))
#define XsDupTStrToStr( src ) (XsDupWStrToStr((LPWSTR)( src )))
VOID
XsCopyTBufToBuf(
OUT LPBYTE Dest,
IN LPBYTE Src,
IN DWORD DestSize
);
VOID
XsCopyBufToTBuf(
OUT LPBYTE Dest,
IN LPBYTE Src,
IN DWORD SrcSize
);
#else
//
// XsDupStrToStr - used instead of strdup so that XsDupStrToTStr macros
// end up allocating memory from the same place, which
// can be freed with NetpMemoryFree.
//
LPSTR
XsDupStrToStr(
IN LPSTR Src
);
#define XsDupStrToTStr( src ) (LPTSTR)XsDupStrToStr( src )
#define XsDupTStrToStr( src ) XsDupStrToStr( (LPSTR)src )
#define XsCopyTBufToBuf( dest, src, size ) RtlCopyMemory( dest, src, size )
#define XsCopyBufToTBuf( dest, src, size ) RtlCopyMemory( dest, src, size )
#endif // def UNICODE
//
// VOID
// XsConvertTextParameter(
// OUT LPTSTR OutParam,
// IN LPSTR InParam
// )
//
// Convert InParam parameter to Unicode, allocating memory, and return the
// address in OutParam. Free with NetpMemoryFree.
//
#define XsConvertTextParameter( OutParam, InParam ) \
if (( InParam ) == NULL ) { \
OutParam = NULL; \
} else { \
OutParam = XsDupStrToTStr( InParam ); \
if (( OutParam ) == NULL ) { \
Header->Status = (WORD)NERR_NoRoom; \
status = NERR_NoRoom; \
goto cleanup; \
} \
}
//
// VOID
// XsConvertUnicodeTextParameter(
// OUT LPWSTR OutParam,
// IN LPSTR InParam
// )
//
// Convert InParam parameter to Unicode, allocating memory, and return the
// address in OutParam. Free with NetpMemoryFree.
//
#define XsConvertUnicodeTextParameter( OutParam, InParam ) \
if (( InParam ) == NULL ) { \
OutParam = NULL; \
} else { \
OutParam = XsDupStrToWStr( InParam ); \
if (( OutParam ) == NULL ) { \
Header->Status = (WORD)NERR_NoRoom; \
status = NERR_NoRoom; \
goto cleanup; \
} \
}
#endif // ndef _XSUNICOD_