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.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1997.
//
// File: IIScopy.cxx
//
// Contents: IIS Object Copy Routines
//
// Functions:
//
// History: 01-Mar-97 SophiaC Created.
//
// Issues: Check null ptrs for AllocADsMem and AllocADsStr
//
//
//----------------------------------------------------------------------------
#include "iis.hxx"
//
// IISType objects copy code
//
HRESULT IISTypeCopyIISSynIdDWORD( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject ) { HRESULT hr = S_OK;
lpIISDestObject->IISType = lpIISSrcObject->IISType;
lpIISDestObject->IISValue.value_1.dwDWORD = lpIISSrcObject->IISValue.value_1.dwDWORD; RRETURN(hr); }
HRESULT IISTypeCopyIISSynIdSTRING( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject ) { HRESULT hr = S_OK;
lpIISDestObject->IISType = lpIISSrcObject->IISType;
lpIISDestObject->IISValue.value_2.String = (LPWSTR)AllocADsStr( lpIISSrcObject->IISValue.value_2.String );
RRETURN(hr); }
HRESULT IISTypeCopyIISSynIdEXPANDSZ( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject )
{ HRESULT hr = S_OK;
lpIISDestObject->IISType = lpIISSrcObject->IISType;
lpIISDestObject->IISValue.value_3.ExpandSz = (LPWSTR)AllocADsStr( lpIISSrcObject->IISValue.value_3.ExpandSz ); RRETURN(hr); }
HRESULT IISTypeCopyIISSynIdMULTISZ( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject ) { HRESULT hr = S_OK;
lpIISDestObject->IISType = lpIISSrcObject->IISType;
lpIISDestObject->IISValue.value_4.MultiSz = (LPWSTR)AllocADsStr( lpIISSrcObject->IISValue.value_4.MultiSz );
RRETURN(hr); }
HRESULT IISTypeCopyIISSynIdBINARY( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject ) { HRESULT hr = S_OK; DWORD Length = 0; LPBYTE pBuffer = NULL;
lpIISDestObject->IISType = lpIISSrcObject->IISType; Length = lpIISSrcObject->IISValue.value_5.Length; lpIISDestObject->IISValue.value_5.Length = Length;
if (Length) { pBuffer = (LPBYTE)AllocADsMem(Length); if (!pBuffer) { RRETURN(S_FALSE); } memcpy(pBuffer, lpIISSrcObject->IISValue.value_5.Binary, Length); }
lpIISDestObject->IISValue.value_5.Binary = pBuffer;
RRETURN(hr); }
HRESULT IISTypeCopyIISSynIdMIMEMAP( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject ) { HRESULT hr = S_OK;
lpIISDestObject->IISType = lpIISSrcObject->IISType;
lpIISDestObject->IISValue.value_6.MimeMap = (LPWSTR)AllocADsStr( lpIISSrcObject->IISValue.value_4.MultiSz );
RRETURN(hr); }
HRESULT IISTypeCopy( PIISOBJECT lpIISSrcObject, PIISOBJECT lpIISDestObject ) { HRESULT hr = S_OK; switch (lpIISSrcObject->IISType) { case IIS_SYNTAX_ID_DWORD: hr = IISTypeCopyIISSynIdDWORD( lpIISSrcObject, lpIISDestObject ); break;
case IIS_SYNTAX_ID_STRING: hr = IISTypeCopyIISSynIdSTRING( lpIISSrcObject, lpIISDestObject ); break;
case IIS_SYNTAX_ID_EXPANDSZ: hr = IISTypeCopyIISSynIdEXPANDSZ( lpIISSrcObject, lpIISDestObject ); break;
case IIS_SYNTAX_ID_MULTISZ: hr = IISTypeCopyIISSynIdMULTISZ( lpIISSrcObject, lpIISDestObject ); break;
case IIS_SYNTAX_ID_BINARY: case IIS_SYNTAX_ID_NTACL: case IIS_SYNTAX_ID_IPSECLIST: hr = IISTypeCopyIISSynIdBINARY( lpIISSrcObject, lpIISDestObject ); break;
case IIS_SYNTAX_ID_MIMEMAP: hr = IISTypeCopyIISSynIdMIMEMAP( lpIISSrcObject, lpIISDestObject ); break;
case IIS_SYNTAX_ID_BOOL: case IIS_SYNTAX_ID_BOOL_BITMASK: hr = IISTypeCopyIISSynIdDWORD( lpIISSrcObject, lpIISDestObject ); break;
default: hr = E_FAIL; break; }
RRETURN(hr); }
HRESULT IISTypeCopyConstruct( LPIISOBJECT pIISSrcObjects, DWORD dwNumObjects, LPIISOBJECT * ppIISDestObjects ) {
DWORD i = 0; LPIISOBJECT pIISDestObjects = NULL; HRESULT hr = S_OK; DWORD dwNumObj;
if (pIISSrcObjects->IISType == IIS_SYNTAX_ID_BINARY || pIISSrcObjects->IISType == IIS_SYNTAX_ID_IPSECLIST || pIISSrcObjects->IISType == IIS_SYNTAX_ID_NTACL) { dwNumObj = 1; } else { dwNumObj = dwNumObjects; }
pIISDestObjects = (LPIISOBJECT)AllocADsMem( dwNumObj * sizeof(IISOBJECT) );
if (!pIISDestObjects) { RRETURN(E_FAIL); }
for (i = 0; i < dwNumObj; i++ ) { hr = IISTypeCopy(pIISSrcObjects + i, pIISDestObjects + i); }
*ppIISDestObjects = pIISDestObjects;
RRETURN(S_OK);
}
|