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.
 
 
 
 
 
 

379 lines
7.4 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: ods2nds.cxx
//
// Contents: NDS Object to Variant Copy Routines
//
// Functions:
//
// History: 25-Apr-96 KrishnaG Created.
//
//
// Issues: Check null ptrs for AllocADsMem and AllocADsStr
//
//----------------------------------------------------------------------------
#include "nds.hxx"
LPBYTE
AdsTypeCopyDNString(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
DWORD dwLength = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_DN_STRING){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_DN_STRING;
lpAdsDestValue->DNString = (LPWSTR)lpBuffer;
wcscpy((LPWSTR)lpBuffer, lpAdsSrcValue->DNString);
dwLength = (wcslen(lpAdsSrcValue->DNString) + 1)*sizeof(WCHAR);
lpBuffer += dwLength;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyCaseExactString(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
DWORD dwLength = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_CASE_EXACT_STRING){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_CASE_EXACT_STRING;
lpAdsDestValue->CaseExactString = (LPWSTR)lpBuffer;
wcscpy((LPWSTR)lpBuffer, lpAdsSrcValue->CaseExactString);
dwLength = (wcslen(lpAdsSrcValue->CaseExactString) + 1)*sizeof(WCHAR);
lpBuffer += dwLength;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyCaseIgnoreString(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
DWORD dwLength = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_CASE_IGNORE_STRING){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_CASE_IGNORE_STRING;
lpAdsDestValue->CaseIgnoreString = (LPWSTR)lpBuffer;
wcscpy((LPWSTR)lpBuffer, lpAdsSrcValue->CaseIgnoreString);
dwLength = (wcslen(lpAdsSrcValue->CaseIgnoreString) + 1)*sizeof(WCHAR);
lpBuffer += dwLength;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyPrintableString(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
DWORD dwLength = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_PRINTABLE_STRING){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_PRINTABLE_STRING;
lpAdsDestValue->PrintableString = (LPWSTR)lpBuffer;
wcscpy((LPWSTR)lpBuffer, lpAdsSrcValue->PrintableString);
dwLength = (wcslen(lpAdsSrcValue->PrintableString) + 1)*sizeof(WCHAR);
lpBuffer += dwLength;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyNumericString(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
DWORD dwLength = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_NUMERIC_STRING){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_NUMERIC_STRING;
lpAdsDestValue->NumericString = (LPWSTR)lpBuffer;
wcscpy((LPWSTR)lpBuffer, lpAdsSrcValue->NumericString);
dwLength = (wcslen(lpAdsSrcValue->NumericString) + 1)*sizeof(WCHAR);
lpBuffer += dwLength;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyBoolean(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
if(lpAdsSrcValue->dwType != ADSTYPE_BOOLEAN){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_BOOLEAN;
lpAdsDestValue->Boolean =
lpAdsSrcValue->Boolean;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyInteger(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
if(lpAdsSrcValue->dwType != ADSTYPE_INTEGER){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_INTEGER;
lpAdsDestValue->Integer =
lpAdsSrcValue->Integer;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyOctetString(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
LPBYTE lpByteStream = NULL;
DWORD dwNumBytes = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_OCTET_STRING){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_OCTET_STRING;
dwNumBytes = lpAdsSrcValue->OctetString.dwLength;
memcpy(
lpBuffer,
lpAdsSrcValue->OctetString.lpValue,
dwNumBytes
);
lpAdsDestValue->OctetString.dwLength = dwNumBytes;
lpAdsDestValue->OctetString.lpValue = lpBuffer;
lpBuffer += dwNumBytes;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyTime(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
if(lpAdsSrcValue->dwType != ADSTYPE_UTC_TIME){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_UTC_TIME;
lpAdsDestValue->UTCTime =
lpAdsSrcValue->UTCTime;
return(lpBuffer);
}
LPBYTE
AdsTypeCopyObjectClass(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
DWORD dwLength = 0;
if(lpAdsSrcValue->dwType != ADSTYPE_OBJECT_CLASS){
return(lpBuffer);
}
lpAdsDestValue->dwType = ADSTYPE_OBJECT_CLASS;
lpAdsDestValue->ClassName = (LPWSTR)lpBuffer;
wcscpy((LPWSTR)lpBuffer, lpAdsSrcValue->ClassName);
dwLength = (wcslen(lpAdsSrcValue->ClassName) + 1)*sizeof(WCHAR);
lpBuffer += dwLength;
return(lpBuffer);
}
LPBYTE
AdsTypeCopy(
PADSVALUE lpAdsSrcValue,
PADSVALUE lpAdsDestValue,
LPBYTE lpBuffer
)
{
switch (lpAdsSrcValue->dwType){
case ADSTYPE_DN_STRING:
lpBuffer = AdsTypeCopyDNString(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_CASE_EXACT_STRING:
lpBuffer = AdsTypeCopyCaseExactString(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_CASE_IGNORE_STRING:
lpBuffer = AdsTypeCopyCaseIgnoreString(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_PRINTABLE_STRING:
lpBuffer = AdsTypeCopyPrintableString(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_NUMERIC_STRING:
lpBuffer = AdsTypeCopyNumericString(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_BOOLEAN:
lpBuffer = AdsTypeCopyBoolean(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_INTEGER:
lpBuffer = AdsTypeCopyInteger(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_OCTET_STRING:
lpBuffer = AdsTypeCopyOctetString(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_UTC_TIME:
lpBuffer = AdsTypeCopyTime(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
case ADSTYPE_OBJECT_CLASS:
lpBuffer = AdsTypeCopyObjectClass(
lpAdsSrcValue,
lpAdsDestValue,
lpBuffer
);
break;
default:
break;
}
return(lpBuffer);
}