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.
|
|
/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
SceLogException.cpp
Abstract:
implementation of class SceLogException
SceLogException is the exception class used internally within the SecMan dll. SecLogExceptions can be thrown and additional debug information can be added to the SecLogException each time it is caught. Author:
Steven Chan (t-schan) July 2002
--*/
#ifdef UNICODE
#define _UNICODE
#endif
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <iostream.h>
#include "SceLogException.h"
SceLogException::SceLogException( IN SXERROR ErrorType, IN PCWSTR szDebugInfo OPTIONAL, IN PCWSTR szMoreInfo OPTIONAL, IN DWORD dwErrorCode ) /*++
Routine Description:
Constructor for SceLogException
Arguments: ErrorType: Type of the error szDebugInfo: Info to add to the exception for debugging szMoreInfo: Any additional info to be added dwErrorCode: Code of the error that caused this excetion. If there is no code, this should be 0. Return Value:
none
--*/ { this->ErrorType = ErrorType; this->dwErrorCode = dwErrorCode; if (szDebugInfo!=NULL) { this->szDebugInfo = new WCHAR[wcslen(szDebugInfo)+1]; wcscpy(this->szDebugInfo, szDebugInfo); } else { szDebugInfo=NULL; } if (szMoreInfo!=NULL) { this->szMoreInfo = new WCHAR[wcslen(szMoreInfo)+1]; wcscpy(this->szMoreInfo, szMoreInfo); } else { szDebugInfo=NULL; } }
SceLogException::~SceLogException() /*++
Routine Description:
destructor for SceLogException
Arguments:
none
Return Value:
none
--*/ { if (NULL!=szDebugInfo) { delete szDebugInfo; } if (NULL!=szMoreInfo) { delete szMoreInfo; } if (NULL!=szArea) { delete szArea; } if (NULL!=szSettingName) { delete szSettingName; } }
void SceLogException::ChangeType( IN SXERROR ErrorType ) /*++
Routine Description:
changes the type of the error
Arguments: ErrorType: Type to change to
Return Value:
none
--*/ { this->ErrorType=ErrorType; }
void SceLogException::AddDebugInfo( IN PCWSTR szDebugInfo ) /*++
Routine Description:
appends more debug info to whatever is already present a new line is added between the old info and the new string
Arguments: szDebugInfo: string to append Return Value:
none
--*/ { if (szDebugInfo!=NULL) { if (this->szDebugInfo==NULL) { this->szDebugInfo = new WCHAR[wcslen(szDebugInfo)+1]; if (this->szDebugInfo!=NULL) { wcscpy(this->szDebugInfo, szDebugInfo); } } else { PWSTR szTmp = this->szDebugInfo; this->szDebugInfo = new WCHAR[wcslen(szDebugInfo) + wcslen(szTmp) + 3]; if (this->szDebugInfo!=NULL) { wcscpy(this->szDebugInfo, szDebugInfo); wcscat(this->szDebugInfo, L"\n\r"); wcscat(this->szDebugInfo, szTmp); } delete szTmp; } } }
void SceLogException::SetSettingName( IN PCWSTR szSettingName ) /*++
Routine Description:
set the name of the setting where this error occured
Arguments: szSettingName: setting name Return Value:
none
--*/ { delete this->szSettingName; if (szSettingName!=NULL) { this->szSettingName = new WCHAR[wcslen(szSettingName)+1]; if (this->szSettingName!=NULL) { wcscpy(this->szSettingName, szSettingName); } } else { szSettingName=NULL; } }
void SceLogException::SetArea( IN PCWSTR szArea ) /*++
Routine Description:
sets the name of the analysis area in which this error occured
Arguments: szArea: name of analysis area
Return Value:
none
--*/ { delete this->szArea; if (szArea!=NULL) { this->szArea = new WCHAR[wcslen(szArea)+1]; if (this->szArea!=NULL) { wcscpy(this->szArea, szArea); } } else { szSettingName=NULL; } }
void SceLogException::AddMoreInfo( IN PCWSTR szMoreInfo ) /*++
Routine Description:
appends more supplementary info to whatever is already present a new line is added between the old info and the new string
Arguments: szMoreInfo: string to append Return Value:
none
--*/ { if (szMoreInfo!=NULL) { if (this->szMoreInfo==NULL) { this->szMoreInfo = new WCHAR[wcslen(szMoreInfo)+1]; if (szMoreInfo!=NULL) { wcscpy(this->szMoreInfo, szMoreInfo); } } else { PWSTR szTmp = this->szMoreInfo; this->szMoreInfo = new WCHAR[wcslen(szMoreInfo) + wcslen(szTmp) + 3]; if (this->szMoreInfo!=NULL) { wcscpy(this->szMoreInfo, szMoreInfo); wcscat(this->szMoreInfo, L"\n\r"); wcscat(this->szMoreInfo, szTmp); } delete szTmp; } } }
|