//////////////////////////////////////////////////////////////////////////////
//
// File Name
// TRACES.CPP
//
// Description
// This file implements tracing functions for sending debug/trace strings
// to an attached debug monitor, the serial port, or a log file.
//
// Author
// Irving De la Cruz
//
// Revision: 1.3
//
// Written for Microsoft Windows Developer Support
// Copyright (c) 1994-1996 Microsoft Corporation. All rights reserved.
//
// These functions DO NOT support UNICODE of Multi-Byte character sets
// but can be easily extended to do so
#ifdef UNICODE
#undef UNICODE
#endif
#ifdef _UNICODE
#undef _UNICODE
#endif
#ifdef _MBCS
#undef _MBCS
#endif
#include <WINDOWS.H>
#ifndef TRACES_NO_MAPI
#include <MAPIDEFS.H>
#include <MAPITAGS.H>
#include <MAPICODE.H>
#endif // TRACES_NO_MAPI
#ifndef ENABLE_DEBUG_OUTPUT
#define ENABLE_DEBUG_OUTPUT
#endif // ENABLE_DEBUG_OUTPUT
#include "TRACES.H"
///////////////////////////////////////////////////////////////////////////////
//
// USER SETTINGS FOR TRACING FUNCTIONS
//
// THIS IS THE ONLY PART THAT NEEDS TO BE ALTERED FOR A DIFFERENT DESTINATION
// OUTPUT PORT OR LOG FILE NAME
//
// Change the port as necessary, depending on the COM port to which the
// debugger terminal is attached to.
#define COM_PORT_STRING "COM1"
// Change the setting below to what ever is necessary. Check the Win32
// documentation on the DCB (Data communication block) structure for other
// valid values. Default: 9600, 8, N, 1
#define COM_BAUD_RATE 9600
#define COM_DATA_BYTE_SIZE 8
#define COM_PARITY NOPARITY
#define COM_STOP_BIT ONESTOPBIT
#define LOG_FILE_NAME "C:\\MAPILOG.TXT"
static BOOL fFileInit = FALSE;
static BOOL fComInit = FALSE;
static HANDLE hCom = NULL;
static HANDLE hConsole = NULL;
static HANDLE hLogFile = NULL;
DWORD gTracesFlags = 0;
// Prototypes
inline void WINAPI OpenOutputHandles (void);
inline void WINAPI CloseOutputHandles (void);
inline void WINAPI WriteOutputString (LPSTR, DWORD);
void WINAPI InitTraces (DWORD dwFlags)
{
if (dwFlags & (TRACES_CONSOLE |
TRACES_LOG_FILE |
TRACES_NO_COM_OUTPUT |
TRACES_NO_ASSERT_DIALOG))
{
gTracesFlags = dwFlags;
if (gTracesFlags & TRACES_CONSOLE)
{
AllocConsole();
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
COORD coord;
coord.X = 80;
coord.Y = 300;
SetConsoleScreenBufferSize( hConsole, coord );
}
}
}
void WINAPI UnInitTraces ()
{
if (gTracesFlags & TRACES_CONSOLE)
{
FreeConsole();
}
if (!hLogFile)
{
CloseHandle (hLogFile);
}
}
inline void WINAPI OpenOutputHandles ()
{
if (!hCom && !(gTracesFlags & TRACES_NO_COM_OUTPUT))
{
hCom = CreateFile (COM_PORT_STRING,
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (INVALID_HANDLE_VALUE == hCom)
{
hCom = NULL;
}
else
{
DCB dcb;
GetCommState (hCom, &dcb);
dcb.BaudRate = COM_BAUD_RATE;
dcb.ByteSize = COM_DATA_BYTE_SIZE;
dcb.Parity = COM_PARITY;
dcb.StopBits = COM_STOP_BIT;
SetCommState (hCom, &dcb);
if (!fComInit)
{
DWORD dwBytes;
for (int i=0; i<55; i++)
{
WriteFile (hCom, "\r\n", 2, &dwBytes, NULL);
}
fComInit = TRUE;
}
}
}
if (!hLogFile && (gTracesFlags & TRACES_LOG_FILE))
{
hLogFile = CreateFile (LOG_FILE_NAME,
GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
0,
NULL);
if (INVALID_HANDLE_VALUE == hLogFile)
{
hLogFile = NULL;
}
if (!fFileInit)
{
DWORD dwFileSize = GetFileSize (hLogFile, NULL);
SetFilePointer (hLogFile, dwFileSize, NULL, FILE_BEGIN);
char szTmpStr[64];
DWORD dwBytes, nChars = wsprintf (szTmpStr,
"======================================================\r\n");
WriteFile (hLogFile, szTmpStr, nChars, &dwBytes, NULL);
SYSTEMTIME st;
GetSystemTime (&st);
nChars = wsprintf (szTmpStr, "Log Date: %d/%d/%d - %d:%d\r\n",
st.wMonth, st.wDay, st.wYear, st.wHour, st.wMinute);
WriteFile (hLogFile, szTmpStr, nChars, &dwBytes, NULL);
nChars = wsprintf (szTmpStr,
"======================================================\r\n");
WriteFile (hLogFile, szTmpStr, nChars, &dwBytes, NULL);
fFileInit = TRUE;
}
}
}
inline void WINAPI CloseOutputHandles ()
{
if (gTracesFlags & TRACES_NO_COM_OUTPUT)
{
return;
}
CloseHandle (hCom);
hCom = NULL;
}
inline void WINAPI WriteOutputString (LPSTR pStr, DWORD dwSize)
{
DWORD dwBytes;
OpenOutputHandles ();
if (hCom && !(gTracesFlags & TRACES_NO_COM_OUTPUT))
{
WriteFile (hCom, pStr, dwSize, &dwBytes, NULL);
}
if (hLogFile && (gTracesFlags & TRACES_LOG_FILE))
{
WriteFile (hLogFile, pStr, dwSize, &dwBytes, NULL);
}
if (hConsole && (gTracesFlags & TRACES_CONSOLE))
{
WriteFile (hConsole, pStr, dwSize, &dwBytes, NULL);
}
OutputDebugString (pStr);
CloseOutputHandles();
}
void WINAPI TraceFn1 (LPSTR pString)
{
char string[512];
DWORD dwSize = wsprintf (string, "%s\r\n", pString);
WriteOutputString (string, dwSize);
}
void WINAPI TraceFn2 (LPSTR pString, ULONG ulError)
{
TCHAR string[512];
LPTSTR szErr;
switch(ulError)
{
case E_FAIL : szErr = "E_FAIL"; break;
case E_INVALIDARG : szErr = "E_INVALIDARG"; break;
case E_NOINTERFACE : szErr = "E_NOINTERFACE"; break;
case E_OUTOFMEMORY : szErr = "E_OUTOFMEMORY"; break;
case E_ACCESSDENIED : szErr = "E_ACCESSDENIED"; break;
#ifndef TRACES_NO_MAPI
case MAPI_E_NO_SUPPORT : szErr = "MAPI_E_NO_SUPPORT"; break;
case MAPI_E_BAD_CHARWIDTH : szErr = "MAPI_E_BAD_CHARWIDTH"; break;
case MAPI_E_STRING_TOO_LONG : szErr = "MAPI_E_STRING_TOO_LONG"; break;
case MAPI_E_UNKNOWN_FLAGS : szErr = "MAPI_E_UNKNOWN_FLAGS"; break;
case MAPI_E_INVALID_ENTRYID : szErr = "MAPI_E_INVALID_ENTRYID"; break;
case MAPI_E_INVALID_OBJECT : szErr = "MAPI_E_INVALID_OBJECT"; break;
case MAPI_E_OBJECT_CHANGED : szErr = "MAPI_E_OBJECT_CHANGED"; break;
case MAPI_E_OBJECT_DELETED : szErr = "MAPI_E_OBJECT_DELETED"; break;
case MAPI_E_BUSY : szErr = "MAPI_E_BUSY"; break;
case MAPI_E_NOT_ENOUGH_DISK : szErr = "MAPI_E_NOT_ENOUGH_DISK"; break;
case MAPI_E_NOT_ENOUGH_RESOURCES : szErr = "MAPI_E_NOT_ENOUGH_RESOURCES"; break;
case MAPI_E_NOT_FOUND : szErr = "MAPI_E_NOT_FOUND"; break;
case MAPI_E_VERSION : szErr = "MAPI_E_VERSION"; break;
case MAPI_E_LOGON_FAILED : szErr = "MAPI_E_LOGON_FAILED"; break;
case MAPI_E_SESSION_LIMIT : szErr = "MAPI_E_SESSION_LIMIT"; break;
case MAPI_E_USER_CANCEL : szErr = "MAPI_E_USER_CANCEL"; break;
case MAPI_E_UNABLE_TO_ABORT : szErr = "MAPI_E_UNABLE_TO_ABORT"; break;
case MAPI_E_NETWORK_ERROR : szErr = "MAPI_E_NETWORK_ERROR"; break;
case MAPI_E_DISK_ERROR : szErr = "MAPI_E_DISK_ERROR"; break;
case MAPI_E_TOO_COMPLEX : szErr = "MAPI_E_TOO_COMPLEX"; break;
case MAPI_E_BAD_COLUMN : szErr = "MAPI_E_BAD_COLUMN"; break;
case MAPI_E_EXTENDED_ERROR : szErr = "MAPI_E_EXTENDED_ERROR"; break;
case MAPI_E_COMPUTED : szErr = "MAPI_E_COMPUTED"; break;
case MAPI_E_CORRUPT_DATA : szErr = "MAPI_E_CORRUPT_DATA"; break;
case MAPI_E_UNCONFIGURED : szErr = "MAPI_E_UNCONFIGURED"; break;
case MAPI_E_FAILONEPROVIDER : szErr = "MAPI_E_FAILONEPROVIDER"; break;
case MAPI_E_END_OF_SESSION : szErr = "MAPI_E_END_OF_SESSION"; break;
case MAPI_E_UNKNOWN_ENTRYID : szErr = "MAPI_E_UNKNOWN_ENTRYID"; break;
case MAPI_E_MISSING_REQUIRED_COLUMN : szErr = "MAPI_E_MISSING_REQUIRED_COLUMN"; break;
case MAPI_W_NO_SERVICE : szErr = "MAPI_W_NO_SERVICE"; break;
case MAPI_E_BAD_VALUE : szErr = "MAPI_E_BAD_VALUE"; break;
case MAPI_E_INVALID_TYPE : szErr = "MAPI_E_INVALID_TYPE"; break;
case MAPI_E_TYPE_NO_SUPPORT : szErr = "MAPI_E_TYPE_NO_SUPPORT"; break;
case MAPI_E_UNEXPECTED_TYPE : szErr = "MAPI_E_UNEXPECTED_TYPE"; break;
case MAPI_E_TOO_BIG : szErr = "MAPI_E_TOO_BIG"; break;
case MAPI_E_DECLINE_COPY : szErr = "MAPI_E_DECLINE_COPY"; break;
case MAPI_E_UNEXPECTED_ID : szErr = "MAPI_E_UNEXPECTED_ID"; break;
case MAPI_W_ERRORS_RETURNED : szErr = "MAPI_W_ERRORS_RETURNED"; break;
case MAPI_E_UNABLE_TO_COMPLETE : szErr = "MAPI_E_UNABLE_TO_COMPLETE"; break;
case MAPI_E_TIMEOUT : szErr = "MAPI_E_TIMEOUT"; break;
case MAPI_E_TABLE_EMPTY : szErr = "MAPI_E_TABLE_EMPTY"; break;
case MAPI_E_TABLE_TOO_BIG : szErr = "MAPI_E_TABLE_TOO_BIG"; break;
case MAPI_E_INVALID_BOOKMARK : szErr = "MAPI_E_INVALID_BOOKMARK"; break;
case MAPI_W_POSITION_CHANGED : szErr = "MAPI_W_POSITION_CHANGED"; break;
case MAPI_W_APPROX_COUNT : szErr = "MAPI_W_APPROX_COUNT"; break;
case MAPI_E_WAIT : szErr = "MAPI_E_WAIT"; break;
case MAPI_E_CANCEL : szErr = "MAPI_E_CANCEL"; break;
case MAPI_E_NOT_ME : szErr = "MAPI_E_NOT_ME"; break;
case MAPI_W_CANCEL_MESSAGE : szErr = "MAPI_W_CANCEL_MESSAGE"; break;
case MAPI_E_CORRUPT_STORE : szErr = "MAPI_E_CORRUPT_STORE"; break;
case MAPI_E_NOT_IN_QUEUE : szErr = "MAPI_E_NOT_IN_QUEUE"; break;
case MAPI_E_NO_SUPPRESS : szErr = "MAPI_E_NO_SUPPRESS"; break;
case MAPI_E_COLLISION : szErr = "MAPI_E_COLLISION"; break;
case MAPI_E_NOT_INITIALIZED : szErr = "MAPI_E_NOT_INITIALIZED"; break;
case MAPI_E_NON_STANDARD : szErr = "MAPI_E_NON_STANDARD"; break;
case MAPI_E_NO_RECIPIENTS : szErr = "MAPI_E_NO_RECIPIENTS"; break;
case MAPI_E_SUBMITTED : szErr = "MAPI_E_SUBMITTED"; break;
case MAPI_E_HAS_FOLDERS : szErr = "MAPI_E_HAS_FOLDERS"; break;
case MAPI_E_HAS_MESSAGES : szErr = "MAPI_E_HAS_MESSAGES"; break;
case MAPI_E_FOLDER_CYCLE : szErr = "MAPI_E_FOLDER_CYCLE"; break;
case MAPI_W_PARTIAL_COMPLETION : szErr = "MAPI_W_PARTIAL_COMPLETION"; break;
case MAPI_E_AMBIGUOUS_RECIP : szErr = "MAPI_E_AMBIGUOUS_RECIP"; break;
#ifndef MAPI_E_UNKNOWN_CPID
#define MAPI_E_UNKNOWN_CPID MAKE_MAPI_E( 0x11E )
#define MAPI_E_UNKNOWN_LCID MAKE_MAPI_E( 0x11F )
#endif
case MAPI_E_UNKNOWN_CPID : szErr = "MAPI_E_UNKNOWN_CPID"; break;
case MAPI_E_UNKNOWN_LCID : szErr = "MAPI_E_UNKNOWN_LCID"; break;
#endif // TRACES_NO_MAPI
case STG_E_INVALIDFUNCTION : szErr = "STG_E_INVALIDFUNCTION"; break;
case STG_E_FILENOTFOUND : szErr = "STG_E_FILENOTFOUND"; break;
case STG_E_PATHNOTFOUND : szErr = "STG_E_PATHNOTFOUND"; break;
case STG_E_TOOMANYOPENFILES : szErr = "STG_E_TOOMANYOPENFILES"; break;
case STG_E_ACCESSDENIED : szErr = "STG_E_ACCESSDENIED"; break;
case STG_E_INVALIDHANDLE : szErr = "STG_E_INVALIDHANDLE"; break;
case STG_E_INSUFFICIENTMEMORY : szErr = "STG_E_INSUFFICIENTMEMORY"; break;
case STG_E_INVALIDPOINTER : szErr = "STG_E_INVALIDPOINTER"; break;
case STG_E_NOMOREFILES : szErr = "STG_E_NOMOREFILES"; break;
case STG_E_DISKISWRITEPROTECTED : szErr = "STG_E_DISKISWRITEPROTECTED"; break;
case STG_E_SEEKERROR : szErr = "STG_E_SEEKERROR"; break;
case STG_E_WRITEFAULT : szErr = "STG_E_WRITEFAULT"; break;
case STG_E_READFAULT : szErr = "STG_E_READFAULT"; break;
case STG_E_SHAREVIOLATION : szErr = "STG_E_SHAREVIOLATION"; break;
case STG_E_LOCKVIOLATION : szErr = "STG_E_LOCKVIOLATION"; break;
case STG_E_FILEALREADYEXISTS : szErr = "STG_E_FILEALREADYEXISTS"; break;
case STG_E_INVALIDPARAMETER : szErr = "STG_E_INVALIDPARAMETER"; break;
case STG_E_MEDIUMFULL : szErr = "STG_E_MEDIUMFULL"; break;
case STG_E_ABNORMALAPIEXIT : szErr = "STG_E_ABNORMALAPIEXIT"; break;
case STG_E_INVALIDHEADER : szErr = "STG_E_INVALIDHEADER"; break;
case STG_E_INVALIDNAME : szErr = "STG_E_INVALIDNAME"; break;
case STG_E_UNKNOWN : szErr = "STG_E_UNKNOWN"; break;
case STG_E_UNIMPLEMENTEDFUNCTION : szErr = "STG_E_UNIMPLEMENTEDFUNCTION"; break;
case STG_E_INVALIDFLAG : szErr = "STG_E_INVALIDFLAG"; break;
case STG_E_INUSE : szErr = "STG_E_INUSE"; break;
case STG_E_NOTCURRENT : szErr = "STG_E_NOTCURRENT"; break;
case STG_E_REVERTED : szErr = "STG_E_REVERTED"; break;
case STG_E_CANTSAVE : szErr = "STG_E_CANTSAVE"; break;
case STG_E_OLDFORMAT : szErr = "STG_E_OLDFORMAT"; break;
case STG_E_OLDDLL : szErr = "STG_E_OLDDLL"; break;
case STG_E_SHAREREQUIRED : szErr = "STG_E_SHAREREQUIRED"; break;
case STG_E_NOTFILEBASEDSTORAGE : szErr = "STG_E_NOTFILEBASEDSTORAGE"; break;
case STG_S_CONVERTED : szErr = "STG_S_CONVERTED"; break;
case HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) : szErr = "WIN32 - ERROR_FILE_NOT_FOUND"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_DRIVE) : szErr = "WIN32 - ERROR_INVALID_DRIVE"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE) : szErr = "WIN32 - ERROR_INVALID_HANDLE"; break;
case HRESULT_FROM_WIN32(ERROR_SEEK) : szErr = "WIN32 - ERROR_SEEK"; break;
case HRESULT_FROM_WIN32(ERROR_SECTOR_NOT_FOUND) : szErr = "WIN32 - ERROR_SECTOR_NOT_FOUND"; break;
case HRESULT_FROM_WIN32(ERROR_WRITE_FAULT) : szErr = "WIN32 - ERROR_WRITE_FAULT"; break;
case HRESULT_FROM_WIN32(ERROR_READ_FAULT) : szErr = "WIN32 - ERROR_READ_FAULT"; break;
case HRESULT_FROM_WIN32(ERROR_SHARING_VIOLATION) : szErr = "WIN32 - ERROR_SHARING_VIOLATION"; break;
case HRESULT_FROM_WIN32(ERROR_LOCK_VIOLATION) : szErr = "WIN32 - ERROR_LOCK_VIOLATION"; break;
case HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED) : szErr = "WIN32 - ERROR_NOT_SUPPORTED"; break;
case HRESULT_FROM_WIN32(ERROR_NO_SUCH_USER) : szErr = "WIN32 - ERROR_NO_SUCH_USER"; break;
case HRESULT_FROM_WIN32(ERROR_NO_SUCH_GROUP) : szErr = "WIN32 - ERROR_NO_SUCH_GROUP"; break;
case HRESULT_FROM_WIN32(ERROR_WRONG_PASSWORD) : szErr = "WIN32 - ERROR_WRONG_PASSWORD"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_PASSWORD) : szErr = "WIN32 - ERROR_INVALID_PASSWORD"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_FLAGS) : szErr = "WIN32 - ERROR_INVALID_FLAGS"; break;
case HRESULT_FROM_WIN32(ERROR_BAD_USERNAME) : szErr = "WIN32 - ERROR_BAD_USERNAME"; break;
case HRESULT_FROM_WIN32(ERROR_BROKEN_PIPE) : szErr = "WIN32 - ERROR_BROKEN_PIPE"; break;
case HRESULT_FROM_WIN32(ERROR_PIPE_BUSY) : szErr = "WIN32 - ERROR_PIPE_BUSY"; break;
case HRESULT_FROM_WIN32(ERROR_PIPE_NOT_CONNECTED): szErr = "WIN32 - ERROR_PIPE_NOT_CONNECTED"; break;
case HRESULT_FROM_WIN32(ERROR_PIPE_CONNECTED): szErr = "WIN32 - ERROR_PIPE_CONNECTED"; break;
case HRESULT_FROM_WIN32(ERROR_STATIC_INIT) : szErr = "WIN32 - ERROR_STATIC_INIT"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_FUNCTION) : szErr = "WIN32 - ERROR_INVALID_FUNCTION"; break;
case HRESULT_FROM_WIN32(ERROR_EXCEPTION_IN_SERVICE): szErr = "WIN32 - ERROR_EXCEPTION_IN_SERVICE"; break;
case HRESULT_FROM_WIN32(ERROR_CANCELLED): szErr = "WIN32 - ERROR_CANCELLED"; break;
case HRESULT_FROM_WIN32(ERROR_PARTIAL_COPY): szErr = "WIN32 - ERROR_PARTIAL_COPY"; break;
case HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER): szErr = "WIN32 - ERROR_INSUFFICIENT_BUFFER"; break;
case HRESULT_FROM_WIN32(ERROR_NO_UNICODE_TRANSLATION): szErr = "WIN32 - ERROR_NO_UNICODE_TRANSLATION"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_ACCOUNT_NAME): szErr = "WIN32 - ERROR_INVALID_ACCOUNT_NAME"; break;
case HRESULT_FROM_WIN32(ERROR_PRIVILEGE_NOT_HELD): szErr = "WIN32 - ERROR_INVALID_ACCOUNT_NAME"; break;
case HRESULT_FROM_WIN32(ERROR_BAD_NET_NAME): szErr = "WIN32 - ERROR_BAD_NET_NAME"; break;
case HRESULT_FROM_WIN32(ERROR_SERVICE_NO_THREAD): szErr = "WIN32 - ERROR_SERVICE_NO_THREAD"; break;
case HRESULT_FROM_WIN32(ERROR_SHUTDOWN_IN_PROGRESS): szErr = "WIN32 - ERROR_SHUTDOWN_IN_PROGRESS"; break;
case HRESULT_FROM_WIN32(ERROR_CONNECTION_INVALID): szErr = "WIN32 - ERROR_CONNECTION_INVALID"; break;
case HRESULT_FROM_WIN32(ERROR_HANDLE_EOF): szErr = "WIN32 - ERROR_HANDLE_EOF"; break;
case HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS): szErr = "WIN32 - ERROR_ALREADY_EXISTS"; break;
case HRESULT_FROM_WIN32(ERROR_HOST_UNREACHABLE): szErr = "WIN32 - ERROR_HOST_UNREACHABLE"; break;
case HRESULT_FROM_WIN32(ERROR_FILE_EXISTS): szErr = "WIN32 - ERROR_FILE_EXISTS"; break;
case HRESULT_FROM_WIN32(ERROR_IO_PENDING): szErr = "WIN32 - ERROR_IO_PENDING"; break;
case HRESULT_FROM_WIN32(ERROR_ILL_FORMED_PASSWORD): szErr = "WIN32 - ERROR_ILL_FORMED_PASSWORD"; break;
case HRESULT_FROM_WIN32(ERROR_PASSWORD_RESTRICTION): szErr = "WIN32 - ERROR_PASSWORD_RESTRICTION"; break;
case HRESULT_FROM_WIN32(ERROR_LOGON_FAILURE): szErr = "WIN32 - ERROR_LOGON_FAILURE"; break;
case HRESULT_FROM_WIN32(ERROR_ACCOUNT_RESTRICTION): szErr = "WIN32 - ERROR_ACCOUNT_RESTRICTION"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_LOGON_HOURS): szErr = "WIN32 - ERROR_INVALID_LOGON_HOURS"; break;
case HRESULT_FROM_WIN32(ERROR_INVALID_WORKSTATION): szErr = "WIN32 - ERROR_INVALID_WORKSTATION"; break;
case HRESULT_FROM_WIN32(ERROR_PASSWORD_EXPIRED): szErr = "WIN32 - ERROR_PASSWORD_EXPIRED"; break;
case HRESULT_FROM_WIN32(ERROR_ACCOUNT_DISABLED): szErr = "WIN32 - ERROR_ACCOUNT_DISABLED"; break;
case HRESULT_FROM_WIN32(ERROR_NONE_MAPPED): szErr = "WIN32 - ERROR_NONE_MAPPED"; break;
case HRESULT_FROM_WIN32(ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) : szErr = "WIN32 - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_CALL_FAILED): szErr = "RPC Error - RPC_S_CALL_FAILED"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_CALL_FAILED_DNE): szErr = "RPC Error - RPC_S_CALL_FAILED_DNE"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_PROTOCOL_ERROR): szErr = "RPC Error - RPC_S_PROTOCOL_ERROR"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_UNSUPPORTED_TRANS_SYN): szErr = "RPC Error - RPC_S_UNSUPPORTED_TRANS_SYN"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_UNSUPPORTED_TYPE): szErr = "RPC Error - RPC_S_UNSUPPORTED_TYPE"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_TAG): szErr = "RPC Error - RPC_S_INVALID_TAG"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_BOUND): szErr = "RPC Error - RPC_S_INVALID_BOUND"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_NO_ENTRY_NAME): szErr = "RPC Error - RPC_S_NO_ENTRY_NAME"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_NAME_SYNTAX): szErr = "RPC Error - RPC_S_INVALID_NAME_SYNTAX"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_UNSUPPORTED_NAME_SYNTAX): szErr = "RPC Error - RPC_S_UNSUPPORTED_NAME_SYNTAX";break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_DUPLICATE_ENDPOINT): szErr = "RPC Error - RPC_S_DUPLICATE_ENDPOINT"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_STRING_BINDING): szErr = "RPC Error - RPC_S_INVALID_STRING_BINDING"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_WRONG_KIND_OF_BINDING): szErr = "RPC Error - RPC_S_WRONG_KIND_OF_BINDING"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_BINDING): szErr = "RPC Error - RPC_S_INVALID_BINDING"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_PROTSEQ_NOT_SUPPORTED): szErr = "RPC Error - RPC_S_PROTSEQ_NOT_SUPPORTED"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_RPC_PROTSEQ): szErr = "RPC Error - RPC_S_INVALID_RPC_PROTSEQ"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_STRING_UUID): szErr = "RPC Error - RPC_S_INVALID_STRING_UUID"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_ENDPOINT_FORMAT): szErr = "RPC Error - RPC_S_INVALID_ENDPOINT_FORMAT";break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_NET_ADDR): szErr = "RPC Error - RPC_S_NO_ENDPOINT_FOUND"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_NO_ENDPOINT_FOUND): szErr = "RPC Error - RPC_S_DUPLICATE_ENDPOINT"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_INVALID_TIMEOUT): szErr = "RPC Error - RPC_S_INVALID_TIMEOUT"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_OBJECT_NOT_FOUND): szErr = "RPC Error - RPC_S_OBJECT_NOT_FOUND"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_ALREADY_REGISTERED): szErr = "RPC Error - RPC_S_ALREADY_REGISTERED"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_TYPE_ALREADY_REGISTERED): szErr = "RPC Error - RPC_S_TYPE_ALREADY_REGISTERED";break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_ALREADY_LISTENING): szErr = "RPC Error - RPC_S_ALREADY_LISTENING"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_NO_PROTSEQS_REGISTERED): szErr = "RPC Error - RPC_S_NO_PROTSEQS_REGISTERED"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_NOT_LISTENING): szErr = "RPC Error - RPC_S_NOT_LISTENING"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_UNKNOWN_MGR_TYPE): szErr = "RPC Error - RPC_S_UNKNOWN_MGR_TYPE"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_UNKNOWN_IF): szErr = "RPC Error - RPC_S_UNKNOWN_IF"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_NO_BINDINGS): szErr = "RPC Error - RPC_S_NO_BINDINGS"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_NO_PROTSEQS): szErr = "RPC Error - RPC_S_NO_PROTSEQS"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_CANT_CREATE_ENDPOINT): szErr = "RPC Error - RPC_S_CANT_CREATE_ENDPOINT"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_OUT_OF_RESOURCES): szErr = "RPC Error - RPC_S_OUT_OF_RESOURCES"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_SERVER_UNAVAILABLE): szErr = "RPC Error - RPC_S_SERVER_UNAVAILABLE"; break;
case MAKE_HRESULT(1, FACILITY_RPC, RPC_S_SERVER_TOO_BUSY): szErr = "RPC Error - RPC_S_SERVER_TOO_BUSY"; break;
default : szErr = "UNKNOWN"; break;
}
DWORD dwSize = wsprintf (string, "Error in %s, %s (%#08x)\r\n", pString, szErr, ulError);
WriteOutputString(string, dwSize);
}
void WINAPI TraceFn3 (LPSTR pString)
{
WriteOutputString (pString, lstrlen(pString));
}
void __cdecl TraceFn4 (BOOL fDebuggerOnly, LPSTR pszFormat, ...)
{
char string[512];
va_list vl;
va_start(vl, pszFormat);
DWORD dwSize = wvsprintf (string, pszFormat, vl);
va_end(vl);
strcat(string, "\r\n");
if (fDebuggerOnly)
{
OutputDebugString (string);
}
else
{
dwSize += 2;
WriteOutputString (string, dwSize);
}
}
void WINAPI TraceIO (ULONG hResult)
{
if (!(hResult<0))
{
return;
}
char string[34];
DWORD dwSize = wsprintf (string,"I/O Function Failed: %#08x\r\n", hResult);
WriteOutputString (string, dwSize);
}
void WINAPI TraceIO2 (LPSTR pszMsg, ULONG hResult)
{
if (!(hResult<0))
{
return;
}
WriteOutputString (pszMsg, lstrlen(pszMsg));
char string[48];
DWORD dwSize = wsprintf (string,": I/O Function Failed: %#08x\r\n", hResult);
WriteOutputString (string, dwSize);
}
void WINAPI AssertNow (LPSTR pszAssertMsg)
{
HWND hWnd = GetActiveWindow();
int nResponse = MessageBox (hWnd,
pszAssertMsg,
"WARNING",
MB_YESNO | MB_ICONSTOP |
MB_TASKMODAL | MB_SETFOREGROUND);
if (IDYES == nResponse)
{
DebugBreak();
}
}
void WINAPI AssertStatement (LPSTR pszFile, ULONG ulLine)
{
if (gTracesFlags & TRACES_NO_ASSERTS)
{
return;
}
char szStr[1024];
wsprintf (szStr, "Assertion failed in File: %s, Line: %d", pszFile, ulLine);
TraceMessage (szStr);
if (gTracesFlags & TRACES_NO_ASSERT_DIALOG)
{
return;
}
wsprintf (szStr, "%s - Break into the debugger?", szStr);
AssertNow (szStr);
}
void WINAPI AssertStatementWithMsg (LPSTR pszMsg, LPSTR pszFile, ULONG ulLine)
{
if (gTracesFlags & TRACES_NO_ASSERTS)
{
return;
}
char szStr[2048];
wsprintf (szStr, "%s\r\nAssertion in File: %s, Line: %d", pszMsg, pszFile, ulLine);
TraceMessage (szStr);
if (gTracesFlags & TRACES_NO_ASSERT_DIALOG)
{
return;
}
wsprintf (szStr, "%s\r\nAssertion in File: %s, Line: %d\r\nBreak into the debugger?", pszMsg, pszFile, ulLine);
AssertNow (szStr);
}
#ifndef TRACES_NO_MAPI
void WINAPI TraceProp (ULONG ulPropTag)
{
char * pszTag;
char message [128];
char szUnkType[32];
char szUnkTag[32];
DWORD dwSize;
switch (PROP_ID(ulPropTag))
{
// Message envelope properties
case PROP_ID(PR_ACKNOWLEDGEMENT_MODE) : pszTag = "PR_ACKNOWLEDGEMENT_MODE"; break;
case PROP_ID(PR_ALTERNATE_RECIPIENT_ALLOWED) : pszTag = "PR_ALTERNATE_RECIPIENT_ALLOWED"; break;
case PROP_ID(PR_AUTHORIZING_USERS) : pszTag = "PR_AUTHORIZING_USERS"; break;
case PROP_ID(PR_AUTO_FORWARD_COMMENT) : pszTag = "PR_AUTO_FORWARD_COMMENT"; break;
case PROP_ID(PR_AUTO_FORWARDED) : pszTag = "PR_AUTO_FORWARDED"; break;
case PROP_ID(PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID) : pszTag = "PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID"; break;
case PROP_ID(PR_CONTENT_CORRELATOR) : pszTag = "PR_CONTENT_CORRELATOR"; break;
case PROP_ID(PR_CONTENT_IDENTIFIER) : pszTag = "PR_CONTENT_IDENTIFIER"; break;
case PROP_ID(PR_CONTENT_LENGTH) : pszTag = "PR_CONTENT_LENGTH"; break;
case PROP_ID(PR_CONTENT_RETURN_REQUESTED) : pszTag = "PR_CONTENT_RETURN_REQUESTED"; break;
case PROP_ID(PR_CONVERSATION_KEY) : pszTag = "PR_CONVERSATION_KEY"; break;
case PROP_ID(PR_CONVERSION_EITS) : pszTag = "PR_CONVERSION_EITS"; break;
case PROP_ID(PR_CONVERSION_WITH_LOSS_PROHIBITED) : pszTag = "PR_CONVERSION_WITH_LOSS_PROHIBITED"; break;
case PROP_ID(PR_CONVERTED_EITS) : pszTag = "PR_CONVERTED_EITS"; break;
case PROP_ID(PR_DEFERRED_DELIVERY_TIME) : pszTag = "PR_DEFERRED_DELIVERY_TIME"; break;
case PROP_ID(PR_DELIVER_TIME) : pszTag = "PR_DELIVER_TIME"; break;
case PROP_ID(PR_DISCARD_REASON) : pszTag = "PR_DISCARD_REASON"; break;
case PROP_ID(PR_DISCLOSURE_OF_RECIPIENTS) : pszTag = "PR_DISCLOSURE_OF_RECIPIENTS"; break;
case PROP_ID(PR_DL_EXPANSION_HISTORY) : pszTag = "PR_DL_EXPANSION_HISTORY"; break;
case PROP_ID(PR_DL_EXPANSION_PROHIBITED) : pszTag = "PR_DL_EXPANSION_PROHIBITED"; break;
case PROP_ID(PR_EXPIRY_TIME) : pszTag = "PR_EXPIRY_TIME"; break;
case PROP_ID(PR_IMPLICIT_CONVERSION_PROHIBITED) : pszTag = "PR_IMPLICIT_CONVERSION_PROHIBITED"; break;
case PROP_ID(PR_IMPORTANCE) : pszTag = "PR_IMPORTANCE"; break;
case PROP_ID(PR_IPM_ID) : pszTag = "PR_IPM_ID"; break;
case PROP_ID(PR_LATEST_DELIVERY_TIME) : pszTag = "PR_LATEST_DELIVERY_TIME"; break;
case PROP_ID(PR_MESSAGE_CLASS) : pszTag = "PR_MESSAGE_CLASS"; break;
case PROP_ID(PR_MESSAGE_DELIVERY_ID) : pszTag = "PR_MESSAGE_DELIVERY_ID"; break;
case PROP_ID(PR_MESSAGE_SECURITY_LABEL) : pszTag = "PR_MESSAGE_SECURITY_LABEL"; break;
case PROP_ID(PR_OBSOLETED_IPMS) : pszTag = "PR_OBSOLETED_IPMS"; break;
case PROP_ID(PR_ORIGINALLY_INTENDED_RECIPIENT_NAME) : pszTag = "PR_ORIGINALLY_INTENDED_RECIPIENT_NAME"; break;
case PROP_ID(PR_ORIGINAL_EITS) : pszTag = "PR_ORIGINAL_EITS"; break;
case PROP_ID(PR_ORIGINATOR_CERTIFICATE) : pszTag = "PR_ORIGINATOR_CERTIFICATE"; break;
case PROP_ID(PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED) : pszTag = "PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED"; break;
case PROP_ID(PR_ORIGINATOR_RETURN_ADDRESS) : pszTag = "PR_ORIGINATOR_RETURN_ADDRESS"; break;
case PROP_ID(PR_PARENT_KEY) : pszTag = "PR_PARENT_KEY"; break;
case PROP_ID(PR_PRIORITY) : pszTag = "PR_PRIORITY"; break;
case PROP_ID(PR_ORIGIN_CHECK) : pszTag = "PR_ORIGIN_CHECK"; break;
case PROP_ID(PR_PROOF_OF_SUBMISSION_REQUESTED) : pszTag = "PR_PROOF_OF_SUBMISSION_REQUESTED"; break;
case PROP_ID(PR_READ_RECEIPT_REQUESTED) : pszTag = "PR_READ_RECEIPT_REQUESTED"; break;
case PROP_ID(PR_RECEIPT_TIME) : pszTag = "PR_RECEIPT_TIME"; break;
case PROP_ID(PR_RECIPIENT_REASSIGNMENT_PROHIBITED) : pszTag = "PR_RECIPIENT_REASSIGNMENT_PROHIBITED"; break;
case PROP_ID(PR_REDIRECTION_HISTORY) : pszTag = "PR_REDIRECTION_HISTORY"; break;
case PROP_ID(PR_RELATED_IPMS) : pszTag = "PR_RELATED_IPMS"; break;
#ifndef PR_ORIGINAL_SENSITIVITY
#define PR_ORIGINAL_SENSITIVITY PROP_TAG( PT_LONG, 0x002E)
#endif
case PROP_ID(PR_ORIGINAL_SENSITIVITY) : pszTag = "PR_ORIGINAL_SENSITIVITY"; break;
case PROP_ID(PR_LANGUAGES) : pszTag = "PR_LANGUAGES"; break;
case PROP_ID(PR_REPLY_TIME) : pszTag = "PR_REPLY_TIME"; break;
case PROP_ID(PR_REPORT_TAG) : pszTag = "PR_REPORT_TAG"; break;
case PROP_ID(PR_REPORT_TIME) : pszTag = "PR_REPORT_TIME"; break;
case PROP_ID(PR_RETURNED_IPM) : pszTag = "PR_RETURNED_IPM"; break;
case PROP_ID(PR_SECURITY) : pszTag = "PR_SECURITY"; break;
case PROP_ID(PR_INCOMPLETE_COPY) : pszTag = "PR_INCOMPLETE_COPY"; break;
case PROP_ID(PR_SENSITIVITY) : pszTag = "PR_SENSITIVITY"; break;
case PROP_ID(PR_SUBJECT) : pszTag = "PR_SUBJECT"; break;
case PROP_ID(PR_SUBJECT_IPM) : pszTag = "PR_SUBJECT_IPM"; break;
case PROP_ID(PR_CLIENT_SUBMIT_TIME) : pszTag = "PR_CLIENT_SUBMIT_TIME"; break;
case PROP_ID(PR_REPORT_NAME) : pszTag = "PR_REPORT_NAME"; break;
case PROP_ID(PR_SENT_REPRESENTING_SEARCH_KEY) : pszTag = "PR_SENT_REPRESENTING_SEARCH_KEY"; break;
case PROP_ID(PR_X400_CONTENT_TYPE) : pszTag = "PR_X400_CONTENT_TYPE"; break;
case PROP_ID(PR_NON_RECEIPT_REASON) : pszTag = "PR_NON_RECEIPT_REASON"; break;
case PROP_ID(PR_RECEIVED_BY_ENTRYID) : pszTag = "PR_RECEIVED_BY_ENTRYID"; break;
case PROP_ID(PR_RECEIVED_BY_NAME) : pszTag = "PR_RECEIVED_BY_NAME"; break;
case PROP_ID(PR_SENT_REPRESENTING_ENTRYID) : pszTag = "PR_SENT_REPRESENTING_ENTRYID"; break;
case PROP_ID(PR_SENT_REPRESENTING_NAME) : pszTag = "PR_SENT_REPRESENTING_NAME"; break;
case PROP_ID(PR_RCVD_REPRESENTING_ENTRYID) : pszTag = "PR_RCVD_REPRESENTING_ENTRYID"; break;
case PROP_ID(PR_RCVD_REPRESENTING_NAME) : pszTag = "PR_RCVD_REPRESENTING_NAME"; break;
case PROP_ID(PR_REPORT_ENTRYID) : pszTag = "PR_REPORT_ENTRYID"; break;
case PROP_ID(PR_READ_RECEIPT_ENTRYID) : pszTag = "PR_READ_RECEIPT_ENTRYID"; break;
case PROP_ID(PR_MESSAGE_SUBMISSION_ID) : pszTag = "PR_MESSAGE_SUBMISSION_ID"; break;
case PROP_ID(PR_PROVIDER_SUBMIT_TIME) : pszTag = "PR_PROVIDER_SUBMIT_TIME"; break;
case PROP_ID(PR_ORIGINAL_SUBJECT) : pszTag = "PR_ORIGINAL_SUBJECT"; break;
case PROP_ID(PR_DISC_VAL) : pszTag = "PR_DISC_VAL"; break;
case PROP_ID(PR_ORIG_MESSAGE_CLASS) : pszTag = "PR_ORIG_MESSAGE_CLASS"; break;
case PROP_ID(PR_ORIGINAL_AUTHOR_ENTRYID) : pszTag = "PR_ORIGINAL_AUTHOR_ENTRYID"; break;
case PROP_ID(PR_ORIGINAL_AUTHOR_NAME) : pszTag = "PR_ORIGINAL_AUTHOR_NAME"; break;
case PROP_ID(PR_ORIGINAL_SUBMIT_TIME) : pszTag = "PR_ORIGINAL_SUBMIT_TIME"; break;
case PROP_ID(PR_REPLY_RECIPIENT_ENTRIES) : pszTag = "PR_REPLY_RECIPIENT_ENTRIES"; break;
case PROP_ID(PR_REPLY_RECIPIENT_NAMES) : pszTag = "PR_REPLY_RECIPIENT_NAMES"; break;
case PROP_ID(PR_RECEIVED_BY_SEARCH_KEY) : pszTag = "PR_RECEIVED_BY_SEARCH_KEY"; break;
case PROP_ID(PR_RCVD_REPRESENTING_SEARCH_KEY) : pszTag = "PR_RCVD_REPRESENTING_SEARCH_KEY"; break;
case PROP_ID(PR_READ_RECEIPT_SEARCH_KEY) : pszTag = "PR_READ_RECEIPT_SEARCH_KEY"; break;
case PROP_ID(PR_REPORT_SEARCH_KEY) : pszTag = "PR_REPORT_SEARCH_KEY"; break;
case PROP_ID(PR_ORIGINAL_DELIVERY_TIME) : pszTag = "PR_ORIGINAL_DELIVERY_TIME"; break;
case PROP_ID(PR_ORIGINAL_AUTHOR_SEARCH_KEY) : pszTag = "PR_ORIGINAL_AUTHOR_SEARCH_KEY"; break;
case PROP_ID(PR_MESSAGE_TO_ME) : pszTag = "PR_MESSAGE_TO_ME"; break;
case PROP_ID(PR_MESSAGE_CC_ME) : pszTag = "PR_MESSAGE_CC_ME"; break;
case PROP_ID(PR_MESSAGE_RECIP_ME) : pszTag = "PR_MESSAGE_RECIP_ME"; break;
case PROP_ID(PR_ORIGINAL_SENDER_NAME) : pszTag = "PR_ORIGINAL_SENDER_NAME"; break;
case PROP_ID(PR_ORIGINAL_SENDER_ENTRYID) : pszTag = "PR_ORIGINAL_SENDER_ENTRYID"; break;
case PROP_ID(PR_ORIGINAL_SENDER_SEARCH_KEY) : pszTag = "PR_ORIGINAL_SENDER_SEARCH_KEY"; break;
case PROP_ID(PR_ORIGINAL_SENT_REPRESENTING_NAME) : pszTag = "PR_ORIGINAL_SENT_REPRESENTING_NAME"; break;
case PROP_ID(PR_ORIGINAL_SENT_REPRESENTING_ENTRYID) : pszTag = "PR_ORIGINAL_SENT_REPRESENTING_ENTRYID"; break;
case PROP_ID(PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY) : pszTag = "PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY"; break;
case PROP_ID(PR_START_DATE) : pszTag = "PR_START_DATE"; break;
case PROP_ID(PR_END_DATE) : pszTag = "PR_END_DATE"; break;
case PROP_ID(PR_OWNER_APPT_ID) : pszTag = "PR_OWNER_APPT_ID"; break;
case PROP_ID(PR_RESPONSE_REQUESTED) : pszTag = "PR_RESPONSE_REQUESTED"; break;
case PROP_ID(PR_SENT_REPRESENTING_ADDRTYPE) : pszTag = "PR_SENT_REPRESENTING_ADDRTYPE"; break;
case PROP_ID(PR_SENT_REPRESENTING_EMAIL_ADDRESS) : pszTag = "PR_SENT_REPRESENTING_EMAIL_ADDRESS"; break;
case PROP_ID(PR_ORIGINAL_SENDER_ADDRTYPE) : pszTag = "PR_ORIGINAL_SENDER_ADDRTYPE"; break;
case PROP_ID(PR_ORIGINAL_SENDER_EMAIL_ADDRESS) : pszTag = "PR_ORIGINAL_SENDER_EMAIL_ADDRESS"; break;
case PROP_ID(PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE) : pszTag = "PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE"; break;
case PROP_ID(PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS) : pszTag = "PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS"; break;
case PROP_ID(PR_CONVERSATION_TOPIC) : pszTag = "PR_CONVERSATION_TOPIC"; break;
case PROP_ID(PR_CONVERSATION_INDEX) : pszTag = "PR_CONVERSATION_INDEX"; break;
case PROP_ID(PR_ORIGINAL_DISPLAY_BCC) : pszTag = "PR_ORIGINAL_DISPLAY_BCC"; break;
case PROP_ID(PR_ORIGINAL_DISPLAY_CC) : pszTag = "PR_ORIGINAL_DISPLAY_CC"; break;
case PROP_ID(PR_ORIGINAL_DISPLAY_TO) : pszTag = "PR_ORIGINAL_DISPLAY_TO"; break;
case PROP_ID(PR_RECEIVED_BY_ADDRTYPE) : pszTag = "PR_RECEIVED_BY_ADDRTYPE"; break;
case PROP_ID(PR_RECEIVED_BY_EMAIL_ADDRESS) : pszTag = "PR_RECEIVED_BY_EMAIL_ADDRESS"; break;
case PROP_ID(PR_RCVD_REPRESENTING_ADDRTYPE) : pszTag = "PR_RCVD_REPRESENTING_ADDRTYPE"; break;
case PROP_ID(PR_RCVD_REPRESENTING_EMAIL_ADDRESS) : pszTag = "PR_RCVD_REPRESENTING_EMAIL_ADDRESS"; break;
case PROP_ID(PR_ORIGINAL_AUTHOR_ADDRTYPE) : pszTag = "PR_ORIGINAL_AUTHOR_ADDRTYPE"; break;
case PROP_ID(PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS) : pszTag = "PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS"; break;
case PROP_ID(PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE) : pszTag = "PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE"; break;
case PROP_ID(PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS) : pszTag = "PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS"; break;
case PROP_ID(PR_TRANSPORT_MESSAGE_HEADERS) : pszTag = "PR_TRANSPORT_MESSAGE_HEADERS"; break;
#ifndef PR_DELEGATION
#define PR_DELEGATION PROP_TAG(PT_BINARY, 0x007E)
#endif
case PROP_ID(PR_DELEGATION) : pszTag = "PR_DELEGATION"; break;
// Message content properties
case PROP_ID(PR_BODY) : pszTag = "PR_BODY"; break;
case PROP_ID(PR_REPORT_TEXT) : pszTag = "PR_REPORT_TEXT"; break;
case PROP_ID(PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY) : pszTag = "PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY"; break;
case PROP_ID(PR_REPORTING_DL_NAME) : pszTag = "PR_REPORTING_DL_NAME"; break;
case PROP_ID(PR_REPORTING_MTA_CERTIFICATE) : pszTag = "PR_REPORTING_MTA_CERTIFICATE"; break;
case PROP_ID(PR_RTF_SYNC_BODY_CRC) : pszTag = "PR_RTF_SYNC_BODY_CRC"; break;
case PROP_ID(PR_RTF_SYNC_BODY_COUNT) : pszTag = "PR_RTF_SYNC_BODY_COUNT"; break;
case PROP_ID(PR_RTF_SYNC_BODY_TAG) : pszTag = "PR_RTF_SYNC_BODY_TAG"; break;
case PROP_ID(PR_RTF_COMPRESSED) : pszTag = "PR_RTF_COMPRESSED"; break;
case PROP_ID(PR_RTF_SYNC_PREFIX_COUNT) : pszTag = "PR_RTF_SYNC_PREFIX_COUNT"; break;
case PROP_ID(PR_RTF_SYNC_TRAILING_COUNT) : pszTag = "PR_RTF_SYNC_TRAILING_COUNT"; break;
case PROP_ID(PR_ORIGINALLY_INTENDED_RECIP_ENTRYID) : pszTag = "PR_ORIGINALLY_INTENDED_RECIP_ENTRYID"; break;
// Message recipient properties
case PROP_ID(PR_CONTENT_INTEGRITY_CHECK) : pszTag = "PR_CONTENT_INTEGRITY_CHECK"; break;
case PROP_ID(PR_EXPLICIT_CONVERSION) : pszTag = "PR_EXPLICIT_CONVERSION"; break;
case PROP_ID(PR_IPM_RETURN_REQUESTED) : pszTag = "PR_IPM_RETURN_REQUESTED"; break;
case PROP_ID(PR_MESSAGE_TOKEN) : pszTag = "PR_MESSAGE_TOKEN"; break;
case PROP_ID(PR_NDR_REASON_CODE) : pszTag = "PR_NDR_REASON_CODE"; break;
case PROP_ID(PR_NDR_DIAG_CODE) : pszTag = "PR_NDR_DIAG_CODE"; break;
case PROP_ID(PR_NON_RECEIPT_NOTIFICATION_REQUESTED) : pszTag = "PR_NON_RECEIPT_NOTIFICATION_REQUESTED"; break;
#ifndef PR_DELIVERY_POINT
#define PR_DELIVERY_POINT PROP_TAG( PT_LONG, 0x0C07)
#endif
case PROP_ID(PR_DELIVERY_POINT) : pszTag = "PR_DELIVERY_POINT"; break;
case PROP_ID(PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED) : pszTag = "PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED"; break;
case PROP_ID(PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT) : pszTag = "PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT"; break;
case PROP_ID(PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY) : pszTag = "PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY"; break;
case PROP_ID(PR_PHYSICAL_DELIVERY_MODE) : pszTag = "PR_PHYSICAL_DELIVERY_MODE"; break;
case PROP_ID(PR_PHYSICAL_DELIVERY_REPORT_REQUEST) : pszTag = "PR_PHYSICAL_DELIVERY_REPORT_REQUEST"; break;
case PROP_ID(PR_PHYSICAL_FORWARDING_ADDRESS) : pszTag = "PR_PHYSICAL_FORWARDING_ADDRESS"; break;
case PROP_ID(PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED) : pszTag = "PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED"; break;
case PROP_ID(PR_PHYSICAL_FORWARDING_PROHIBITED) : pszTag = "PR_PHYSICAL_FORWARDING_PROHIBITED"; break;
case PROP_ID(PR_PHYSICAL_RENDITION_ATTRIBUTES) : pszTag = "PR_PHYSICAL_RENDITION_ATTRIBUTES"; break;
case PROP_ID(PR_PROOF_OF_DELIVERY) : pszTag = "PR_PROOF_OF_DELIVERY"; break;
case PROP_ID(PR_PROOF_OF_DELIVERY_REQUESTED) : pszTag = "PR_PROOF_OF_DELIVERY_REQUESTED"; break;
case PROP_ID(PR_RECIPIENT_CERTIFICATE) : pszTag = "PR_RECIPIENT_CERTIFICATE"; break;
case PROP_ID(PR_RECIPIENT_NUMBER_FOR_ADVICE) : pszTag = "PR_RECIPIENT_NUMBER_FOR_ADVICE"; break;
case PROP_ID(PR_RECIPIENT_TYPE) : pszTag = "PR_RECIPIENT_TYPE"; break;
case PROP_ID(PR_REGISTERED_MAIL_TYPE) : pszTag = "PR_REGISTERED_MAIL_TYPE"; break;
case PROP_ID(PR_REPLY_REQUESTED) : pszTag = "PR_REPLY_REQUESTED"; break;
case PROP_ID(PR_REQUESTED_DELIVERY_METHOD) : pszTag = "PR_REQUESTED_DELIVERY_METHOD"; break;
case PROP_ID(PR_SENDER_ENTRYID) : pszTag = "PR_SENDER_ENTRYID"; break;
case PROP_ID(PR_SENDER_NAME) : pszTag = "PR_SENDER_NAME"; break;
case PROP_ID(PR_SUPPLEMENTARY_INFO) : pszTag = "PR_SUPPLEMENTARY_INFO"; break;
case PROP_ID(PR_TYPE_OF_MTS_USER) : pszTag = "PR_TYPE_OF_MTS_USER"; break;
case PROP_ID(PR_SENDER_SEARCH_KEY) : pszTag = "PR_SENDER_SEARCH_KEY"; break;
case PROP_ID(PR_SENDER_ADDRTYPE) : pszTag = "PR_SENDER_ADDRTYPE"; break;
case PROP_ID(PR_SENDER_EMAIL_ADDRESS) : pszTag = "PR_SENDER_EMAIL_ADDRESS"; break;
// Message non-transmittable properties
case PROP_ID(PR_CURRENT_VERSION) : pszTag = "PR_CURRENT_VERSION"; break;
case PROP_ID(PR_DELETE_AFTER_SUBMIT) : pszTag = "PR_DELETE_AFTER_SUBMIT"; break;
case PROP_ID(PR_DISPLAY_BCC) : pszTag = "PR_DISPLAY_BCC"; break;
case PROP_ID(PR_DISPLAY_CC) : pszTag = "PR_DISPLAY_CC"; break;
case PROP_ID(PR_DISPLAY_TO) : pszTag = "PR_DISPLAY_TO"; break;
case PROP_ID(PR_PARENT_DISPLAY) : pszTag = "PR_PARENT_DISPLAY"; break;
case PROP_ID(PR_MESSAGE_DELIVERY_TIME) : pszTag = "PR_MESSAGE_DELIVERY_TIME"; break;
case PROP_ID(PR_MESSAGE_FLAGS) : pszTag = "PR_MESSAGE_FLAGS"; break;
case PROP_ID(PR_MESSAGE_SIZE) : pszTag = "PR_MESSAGE_SIZE"; break;
case PROP_ID(PR_PARENT_ENTRYID) : pszTag = "PR_PARENT_ENTRYID"; break;
case PROP_ID(PR_SENTMAIL_ENTRYID) : pszTag = "PR_SENTMAIL_ENTRYID"; break;
case PROP_ID(PR_CORRELATE) : pszTag = "PR_CORRELATE"; break;
case PROP_ID(PR_CORRELATE_MTSID) : pszTag = "PR_CORRELATE_MTSID"; break;
case PROP_ID(PR_DISCRETE_VALUES) : pszTag = "PR_DISCRETE_VALUES"; break;
case PROP_ID(PR_RESPONSIBILITY) : pszTag = "PR_RESPONSIBILITY"; break;
case PROP_ID(PR_SPOOLER_STATUS) : pszTag = "PR_SPOOLER_STATUS"; break;
case PROP_ID(PR_TRANSPORT_STATUS) : pszTag = "PR_TRANSPORT_STATUS"; break;
case PROP_ID(PR_MESSAGE_RECIPIENTS) : pszTag = "PR_MESSAGE_RECIPIENTS"; break;
case PROP_ID(PR_MESSAGE_ATTACHMENTS) : pszTag = "PR_MESSAGE_ATTACHMENTS"; break;
case PROP_ID(PR_SUBMIT_FLAGS) : pszTag = "PR_SUBMIT_FLAGS"; break;
case PROP_ID(PR_RECIPIENT_STATUS) : pszTag = "PR_RECIPIENT_STATUS"; break;
case PROP_ID(PR_TRANSPORT_KEY) : pszTag = "PR_TRANSPORT_KEY"; break;
case PROP_ID(PR_MSG_STATUS) : pszTag = "PR_MSG_STATUS"; break;
case PROP_ID(PR_MESSAGE_DOWNLOAD_TIME) : pszTag = "PR_MESSAGE_DOWNLOAD_TIME"; break;
case PROP_ID(PR_CREATION_VERSION) : pszTag = "PR_CREATION_VERSION"; break;
case PROP_ID(PR_MODIFY_VERSION) : pszTag = "PR_MODIFY_VERSION"; break;
case PROP_ID(PR_HASATTACH) : pszTag = "PR_HASATTACH"; break;
case PROP_ID(PR_BODY_CRC) : pszTag = "PR_BODY_CRC"; break;
case PROP_ID(PR_NORMALIZED_SUBJECT) : pszTag = "PR_NORMALIZED_SUBJECT"; break;
case PROP_ID(PR_RTF_IN_SYNC) : pszTag = "PR_RTF_IN_SYNC"; break;
case PROP_ID(PR_ATTACH_SIZE) : pszTag = "PR_ATTACH_SIZE"; break;
case PROP_ID(PR_ATTACH_NUM) : pszTag = "PR_ATTACH_NUM"; break;
case PROP_ID(PR_PREPROCESS) : pszTag = "PR_PREPROCESS"; break;
case PROP_ID(PR_ORIGINATING_MTA_CERTIFICATE) : pszTag = "PR_ORIGINATING_MTA_CERTIFICATE"; break;
case PROP_ID(PR_PROOF_OF_SUBMISSION) : pszTag = "PR_PROOF_OF_SUBMISSION"; break;
// Properties common to multiple objects (including message objects)
case PROP_ID(PR_ENTRYID) : pszTag = "PR_ENTRYID"; break;
case PROP_ID(PR_OBJECT_TYPE) : pszTag = "PR_OBJECT_TYPE"; break;
case PROP_ID(PR_ICON) : pszTag = "PR_ICON"; break;
case PROP_ID(PR_MINI_ICON) : pszTag = "PR_MINI_ICON"; break;
case PROP_ID(PR_STORE_ENTRYID) : pszTag = "PR_STORE_ENTRYID"; break;
case PROP_ID(PR_STORE_RECORD_KEY) : pszTag = "PR_STORE_RECORD_KEY"; break;
case PROP_ID(PR_RECORD_KEY) : pszTag = "PR_RECORD_KEY"; break;
case PROP_ID(PR_MAPPING_SIGNATURE) : pszTag = "PR_MAPPING_SIGNATURE"; break;
case PROP_ID(PR_ACCESS_LEVEL) : pszTag = "PR_ACCESS_LEVEL"; break;
case PROP_ID(PR_INSTANCE_KEY) : pszTag = "PR_INSTANCE_KEY"; break;
case PROP_ID(PR_ROW_TYPE) : pszTag = "PR_ROW_TYPE"; break;
case PROP_ID(PR_ACCESS) : pszTag = "PR_ACCESS"; break;
// Properties common to multiple objects (NOT including message objects)
case PROP_ID(PR_ROWID) : pszTag = "PR_ROWID"; break;
case PROP_ID(PR_DISPLAY_NAME) : pszTag = "PR_DISPLAY_NAME"; break;
case PROP_ID(PR_ADDRTYPE) : pszTag = "PR_ADDRTYPE"; break;
case PROP_ID(PR_EMAIL_ADDRESS) : pszTag = "PR_EMAIL_ADDRESS"; break;
case PROP_ID(PR_COMMENT) : pszTag = "PR_COMMENT"; break;
case PROP_ID(PR_DEPTH) : pszTag = "PR_DEPTH"; break;
case PROP_ID(PR_PROVIDER_DISPLAY) : pszTag = "PR_PROVIDER_DISPLAY"; break;
case PROP_ID(PR_CREATION_TIME) : pszTag = "PR_CREATION_TIME"; break;
case PROP_ID(PR_LAST_MODIFICATION_TIME) : pszTag = "PR_LAST_MODIFICATION_TIME"; break;
case PROP_ID(PR_RESOURCE_FLAGS) : pszTag = "PR_RESOURCE_FLAGS"; break;
case PROP_ID(PR_PROVIDER_DLL_NAME) : pszTag = "PR_PROVIDER_DLL_NAME"; break;
case PROP_ID(PR_SEARCH_KEY) : pszTag = "PR_SEARCH_KEY"; break;
case PROP_ID(PR_PROVIDER_UID) : pszTag = "PR_PROVIDER_UID"; break;
case PROP_ID(PR_PROVIDER_ORDINAL) : pszTag = "PR_PROVIDER_ORDINAL"; break;
// MAPI Form properties
case PROP_ID(PR_FORM_VERSION) : pszTag = "PR_FORM_VERSION"; break;
case PROP_ID(PR_FORM_CLSID) : pszTag = "PR_FORM_CLSID"; break;
case PROP_ID(PR_FORM_CONTACT_NAME) : pszTag = "PR_FORM_CONTACT_NAME"; break;
case PROP_ID(PR_FORM_CATEGORY) : pszTag = "PR_FORM_CATEGORY"; break;
case PROP_ID(PR_FORM_CATEGORY_SUB) : pszTag = "PR_FORM_CATEGORY_SUB"; break;
case PROP_ID(PR_FORM_HOST_MAP) : pszTag = "PR_FORM_HOST_MAP"; break;
case PROP_ID(PR_FORM_HIDDEN) : pszTag = "PR_FORM_HIDDEN"; break;
case PROP_ID(PR_FORM_DESIGNER_NAME) : pszTag = "PR_FORM_DESIGNER_NAME"; break;
case PROP_ID(PR_FORM_DESIGNER_GUID) : pszTag = "PR_FORM_DESIGNER_GUID"; break;
case PROP_ID(PR_FORM_MESSAGE_BEHAVIOR) : pszTag = "PR_FORM_MESSAGE_BEHAVIOR"; break;
//Message store properties
case PROP_ID(PR_DEFAULT_STORE) : pszTag = "PR_DEFAULT_STORE"; break;
case PROP_ID(PR_STORE_SUPPORT_MASK) : pszTag = "PR_STORE_SUPPORT_MASK"; break;
case PROP_ID(PR_STORE_STATE) : pszTag = "PR_STORE_STATE"; break;
case PROP_ID(PR_IPM_SUBTREE_SEARCH_KEY) : pszTag = "PR_IPM_SUBTREE_SEARCH_KEY"; break;
case PROP_ID(PR_IPM_OUTBOX_SEARCH_KEY) : pszTag = "PR_IPM_OUTBOX_SEARCH_KEY"; break;
case PROP_ID(PR_IPM_WASTEBASKET_SEARCH_KEY) : pszTag = "PR_IPM_WASTEBASKET_SEARCH_KEY"; break;
case PROP_ID(PR_IPM_SENTMAIL_SEARCH_KEY) : pszTag = "PR_IPM_SENTMAIL_SEARCH_KEY"; break;
case PROP_ID(PR_MDB_PROVIDER) : pszTag = "PR_MDB_PROVIDER"; break;
case PROP_ID(PR_RECEIVE_FOLDER_SETTINGS) : pszTag = "PR_RECEIVE_FOLDER_SETTINGS"; break;
case PROP_ID(PR_VALID_FOLDER_MASK) : pszTag = "PR_VALID_FOLDER_MASK"; break;
case PROP_ID(PR_IPM_SUBTREE_ENTRYID) : pszTag = "PR_IPM_SUBTREE_ENTRYID"; break;
case PROP_ID(PR_IPM_OUTBOX_ENTRYID) : pszTag = "PR_IPM_OUTBOX_ENTRYID"; break;
case PROP_ID(PR_IPM_WASTEBASKET_ENTRYID) : pszTag = "PR_IPM_WASTEBASKET_ENTRYID"; break;
case PROP_ID(PR_IPM_SENTMAIL_ENTRYID) : pszTag = "PR_IPM_SENTMAIL_ENTRYID"; break;
case PROP_ID(PR_VIEWS_ENTRYID) : pszTag = "PR_VIEWS_ENTRYID"; break;
case PROP_ID(PR_COMMON_VIEWS_ENTRYID) : pszTag = "PR_COMMON_VIEWS_ENTRYID"; break;
case PROP_ID(PR_FINDER_ENTRYID) : pszTag = "PR_FINDER_ENTRYID"; break;
// Folder and AB Container properties
case PROP_ID(PR_CONTAINER_FLAGS) : pszTag = "PR_CONTAINER_FLAGS"; break;
case PROP_ID(PR_FOLDER_TYPE) : pszTag = "PR_FOLDER_TYPE"; break;
case PROP_ID(PR_CONTENT_COUNT) : pszTag = "PR_CONTENT_COUNT"; break;
case PROP_ID(PR_CONTENT_UNREAD) : pszTag = "PR_CONTENT_UNREAD"; break;
case PROP_ID(PR_CREATE_TEMPLATES) : pszTag = "PR_CREATE_TEMPLATES"; break;
case PROP_ID(PR_DETAILS_TABLE) : pszTag = "PR_DETAILS_TABLE"; break;
case PROP_ID(PR_SEARCH) : pszTag = "PR_SEARCH"; break;
case PROP_ID(PR_SELECTABLE) : pszTag = "PR_SELECTABLE"; break;
case PROP_ID(PR_SUBFOLDERS) : pszTag = "PR_SUBFOLDERS"; break;
case PROP_ID(PR_STATUS) : pszTag = "PR_STATUS"; break;
case PROP_ID(PR_ANR) : pszTag = "PR_ANR"; break;
case PROP_ID(PR_CONTENTS_SORT_ORDER) : pszTag = "PR_CONTENTS_SORT_ORDER"; break;
case PROP_ID(PR_CONTAINER_HIERARCHY) : pszTag = "PR_CONTAINER_HIERARCHY"; break;
case PROP_ID(PR_CONTAINER_CONTENTS) : pszTag = "PR_CONTAINER_CONTENTS"; break;
case PROP_ID(PR_FOLDER_ASSOCIATED_CONTENTS) : pszTag = "PR_FOLDER_ASSOCIATED_CONTENTS"; break;
case PROP_ID(PR_DEF_CREATE_DL) : pszTag = "PR_DEF_CREATE_DL"; break;
case PROP_ID(PR_DEF_CREATE_MAILUSER) : pszTag = "PR_DEF_CREATE_MAILUSER"; break;
case PROP_ID(PR_CONTAINER_CLASS) : pszTag = "PR_CONTAINER_CLASS"; break;
case PROP_ID(PR_CONTAINER_MODIFY_VERSION) : pszTag = "PR_CONTAINER_MODIFY_VERSION"; break;
case PROP_ID(PR_AB_PROVIDER_ID) : pszTag = "PR_AB_PROVIDER_ID"; break;
case PROP_ID(PR_DEFAULT_VIEW_ENTRYID) : pszTag = "PR_DEFAULT_VIEW_ENTRYID"; break;
case PROP_ID(PR_ASSOC_CONTENT_COUNT) : pszTag = "PR_ASSOC_CONTENT_COUNT"; break;
// Defined in Build 556 and above
#ifndef PR_VIEW_BINARY
#define PR_VIEW_BINARY PROP_TAG( PT_BINARY, 0x3618)
#define PR_VIEW_STRINGS PROP_TAG( PT_TSTRING, 0x3619)
#define PR_VIEW_FLAGS PROP_TAG( PT_LONG, 0x361A)
#define PR_VIEW_LINK_TO PROP_TAG( PT_BINARY, 0x361B)
#define PR_VIEW_VIEW_FOLDER PROP_TAG( PT_BINARY, 0x361C)
#define PR_VIEW_NAME PROP_TAG( PT_TSTRING, 0x361D)
#define PR_VIEW_VERSION PROP_TAG( PT_LONG, 0x361E)
#define PR_VIEW_COLLAPSE_STATE PROP_TAG( PT_BINARY, 0x361F)
#endif // PR_VIEW_BINARY
case PROP_ID(PR_VIEW_BINARY) : pszTag = "PR_VIEW_BINARY"; break;
case PROP_ID(PR_VIEW_STRINGS) : pszTag = "PR_VIEW_STRINGS"; break;
case PROP_ID(PR_VIEW_FLAGS) : pszTag = "PR_VIEW_FLAGS"; break;
case PROP_ID(PR_VIEW_LINK_TO) : pszTag = "PR_VIEW_LINK_TO"; break;
case PROP_ID(PR_VIEW_VIEW_FOLDER) : pszTag = "PR_VIEW_VIEW_FOLDER"; break;
case PROP_ID(PR_VIEW_NAME) : pszTag = "PR_VIEW_NAME"; break;
case PROP_ID(PR_VIEW_VERSION) : pszTag = "PR_VIEW_VERSION"; break;
case PROP_ID(PR_VIEW_COLLAPSE_STATE) : pszTag = "PR_VIEW_COLLAPSE_STATE"; break;
// Attachment properties
case PROP_ID(PR_ATTACHMENT_X400_PARAMETERS) : pszTag = "PR_ATTACHMENT_X400_PARAMETERS"; break;
case PROP_ID(PR_ATTACH_DATA_OBJ) : pszTag = "PR_ATTACH_DATA_BIN or PR_ATTACH_DATA_OBJ"; break;
case PROP_ID(PR_ATTACH_ENCODING) : pszTag = "PR_ATTACH_ENCODING"; break;
case PROP_ID(PR_ATTACH_EXTENSION) : pszTag = "PR_ATTACH_EXTENSION"; break;
case PROP_ID(PR_ATTACH_FILENAME) : pszTag = "PR_ATTACH_FILENAME"; break;
case PROP_ID(PR_ATTACH_METHOD) : pszTag = "PR_ATTACH_METHOD"; break;
case PROP_ID(PR_ATTACH_LONG_FILENAME) : pszTag = "PR_ATTACH_LONG_FILENAME"; break;
case PROP_ID(PR_ATTACH_PATHNAME) : pszTag = "PR_ATTACH_PATHNAME"; break;
case PROP_ID(PR_ATTACH_RENDERING) : pszTag = "PR_ATTACH_RENDERING"; break;
case PROP_ID(PR_ATTACH_TAG) : pszTag = "PR_ATTACH_TAG"; break;
case PROP_ID(PR_RENDERING_POSITION) : pszTag = "PR_RENDERING_POSITION"; break;
case PROP_ID(PR_ATTACH_TRANSPORT_NAME) : pszTag = "PR_ATTACH_TRANSPORT_NAME"; break;
// Defined in Build 541 and above
#ifndef PR_ATTACH_LONG_PATHNAME
#define PR_ATTACH_LONG_PATHNAME PROP_TAG( PT_TSTRING, 0x370D)
#define PR_ATTACH_MIME_TAG PROP_TAG( PT_TSTRING, 0x370E)
#endif
case PROP_ID(PR_ATTACH_LONG_PATHNAME) : pszTag = "PR_ATTACH_LONG_PATHNAME"; break;
case PROP_ID(PR_ATTACH_MIME_TAG) : pszTag = "PR_ATTACH_MIME_TAG"; break;
// AB Object properties
case PROP_ID(PR_DISPLAY_TYPE) : pszTag = "PR_DISPLAY_TYPE"; break;
case PROP_ID(PR_TEMPLATEID) : pszTag = "PR_TEMPLATEID"; break;
case PROP_ID(PR_PRIMARY_CAPABILITY) : pszTag = "PR_PRIMARY_CAPABILITY"; break;
// Mail user properties
#ifndef PR_7BIT_DISPLAY_NAME
#define PR_7BIT_DISPLAY_NAME PROP_TAG( PT_STRING8, 0x39FF)
#endif
case PROP_ID(PR_7BIT_DISPLAY_NAME) : pszTag = "PR_7BIT_DISPLAY_NAME"; break;
case PROP_ID(PR_ACCOUNT) : pszTag = "PR_ACCOUNT"; break;
case PROP_ID(PR_ALTERNATE_RECIPIENT) : pszTag = "PR_ALTERNATE_RECIPIENT"; break;
case PROP_ID(PR_CALLBACK_TELEPHONE_NUMBER) : pszTag = "PR_CALLBACK_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_CONVERSION_PROHIBITED) : pszTag = "PR_CONVERSION_PROHIBITED"; break;
case PROP_ID(PR_DISCLOSE_RECIPIENTS) : pszTag = "PR_DISCLOSE_RECIPIENTS"; break;
case PROP_ID(PR_GENERATION) : pszTag = "PR_GENERATION"; break;
case PROP_ID(PR_GIVEN_NAME) : pszTag = "PR_GIVEN_NAME"; break;
case PROP_ID(PR_GOVERNMENT_ID_NUMBER) : pszTag = "PR_GOVERNMENT_ID_NUMBER"; break;
case PROP_ID(PR_OFFICE_TELEPHONE_NUMBER) : pszTag = "PR_OFFICE_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_HOME_TELEPHONE_NUMBER) : pszTag = "PR_HOME_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_INITIALS) : pszTag = "PR_INITIALS"; break;
case PROP_ID(PR_KEYWORD) : pszTag = "PR_KEYWORD"; break;
case PROP_ID(PR_LANGUAGE) : pszTag = "PR_LANGUAGE"; break;
case PROP_ID(PR_LOCATION) : pszTag = "PR_LOCATION"; break;
case PROP_ID(PR_MAIL_PERMISSION) : pszTag = "PR_MAIL_PERMISSION"; break;
case PROP_ID(PR_MHS_COMMON_NAME) : pszTag = "PR_MHS_COMMON_NAME"; break;
case PROP_ID(PR_ORGANIZATIONAL_ID_NUMBER) : pszTag = "PR_ORGANIZATIONAL_ID_NUMBER"; break;
case PROP_ID(PR_SURNAME) : pszTag = "PR_SURNAME"; break;
case PROP_ID(PR_ORIGINAL_ENTRYID) : pszTag = "PR_ORIGINAL_ENTRYID"; break;
case PROP_ID(PR_ORIGINAL_DISPLAY_NAME) : pszTag = "PR_ORIGINAL_DISPLAY_NAME"; break;
case PROP_ID(PR_ORIGINAL_SEARCH_KEY) : pszTag = "PR_ORIGINAL_SEARCH_KEY"; break;
case PROP_ID(PR_POSTAL_ADDRESS) : pszTag = "PR_POSTAL_ADDRESS"; break;
case PROP_ID(PR_COMPANY_NAME) : pszTag = "PR_COMPANY_NAME"; break;
case PROP_ID(PR_TITLE) : pszTag = "PR_TITLE"; break;
case PROP_ID(PR_DEPARTMENT_NAME) : pszTag = "PR_DEPARTMENT_NAME"; break;
case PROP_ID(PR_OFFICE_LOCATION) : pszTag = "PR_OFFICE_LOCATION"; break;
case PROP_ID(PR_PRIMARY_TELEPHONE_NUMBER) : pszTag = "PR_PRIMARY_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_OFFICE2_TELEPHONE_NUMBER) : pszTag = "PR_OFFICE2_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_CELLULAR_TELEPHONE_NUMBER) : pszTag = "PR_CELLULAR_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_RADIO_TELEPHONE_NUMBER) : pszTag = "PR_RADIO_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_CAR_TELEPHONE_NUMBER) : pszTag = "PR_CAR_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_OTHER_TELEPHONE_NUMBER) : pszTag = "PR_OTHER_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_TRANSMITABLE_DISPLAY_NAME) : pszTag = "PR_TRANSMITABLE_DISPLAY_NAME"; break;
case PROP_ID(PR_BEEPER_TELEPHONE_NUMBER) : pszTag = "PR_BEEPER_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_USER_CERTIFICATE) : pszTag = "PR_USER_CERTIFICATE"; break;
case PROP_ID(PR_PRIMARY_FAX_NUMBER) : pszTag = "PR_PRIMARY_FAX_NUMBER"; break;
case PROP_ID(PR_BUSINESS_FAX_NUMBER) : pszTag = "PR_BUSINESS_FAX_NUMBER"; break;
case PROP_ID(PR_HOME_FAX_NUMBER) : pszTag = "PR_HOME_FAX_NUMBER"; break;
case PROP_ID(PR_COUNTRY) : pszTag = "PR_COUNTRY"; break;
case PROP_ID(PR_LOCALITY) : pszTag = "PR_LOCALITY"; break;
case PROP_ID(PR_STATE_OR_PROVINCE) : pszTag = "PR_STATE_OR_PROVINCE"; break;
case PROP_ID(PR_STREET_ADDRESS) : pszTag = "PR_STREET_ADDRESS"; break;
case PROP_ID(PR_POSTAL_CODE) : pszTag = "PR_POSTAL_CODE"; break;
case PROP_ID(PR_POST_OFFICE_BOX) : pszTag = "PR_POST_OFFICE_BOX"; break;
case PROP_ID(PR_TELEX_NUMBER) : pszTag = "PR_TELEX_NUMBER"; break;
case PROP_ID(PR_ISDN_NUMBER) : pszTag = "PR_ISDN_NUMBER"; break;
case PROP_ID(PR_ASSISTANT_TELEPHONE_NUMBER) : pszTag = "PR_ASSISTANT_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_HOME2_TELEPHONE_NUMBER) : pszTag = "PR_HOME2_TELEPHONE_NUMBER"; break;
case PROP_ID(PR_ASSISTANT) : pszTag = "PR_ASSISTANT"; break;
case PROP_ID(PR_SEND_RICH_INFO) : pszTag = "PR_SEND_RICH_INFO"; break;
// Profile section properties
case PROP_ID(PR_STORE_PROVIDERS) : pszTag = "PR_STORE_PROVIDERS"; break;
case PROP_ID(PR_AB_PROVIDERS) : pszTag = "PR_AB_PROVIDERS"; break;
case PROP_ID(PR_TRANSPORT_PROVIDERS) : pszTag = "PR_TRANSPORT_PROVIDERS"; break;
case PROP_ID(PR_DEFAULT_PROFILE) : pszTag = "PR_DEFAULT_PROFILE"; break;
case PROP_ID(PR_AB_SEARCH_PATH) : pszTag = "PR_AB_SEARCH_PATH"; break;
case PROP_ID(PR_AB_DEFAULT_DIR) : pszTag = "PR_AB_DEFAULT_DIR"; break;
case PROP_ID(PR_AB_DEFAULT_PAB) : pszTag = "PR_AB_DEFAULT_PAB"; break;
case PROP_ID(PR_FILTERING_HOOKS) : pszTag = "PR_FILTERING_HOOKS"; break;
case PROP_ID(PR_SERVICE_NAME) : pszTag = "PR_SERVICE_NAME"; break;
case PROP_ID(PR_SERVICE_DLL_NAME) : pszTag = "PR_SERVICE_DLL_NAME"; break;
case PROP_ID(PR_SERVICE_ENTRY_NAME) : pszTag = "PR_SERVICE_ENTRY_NAME"; break;
case PROP_ID(PR_SERVICE_UID) : pszTag = "PR_SERVICE_UID"; break;
case PROP_ID(PR_SERVICE_EXTRA_UIDS) : pszTag = "PR_SERVICE_EXTRA_UIDS"; break;
case PROP_ID(PR_SERVICES) : pszTag = "PR_SERVICES"; break;
case PROP_ID(PR_SERVICE_SUPPORT_FILES) : pszTag = "PR_SERVICE_SUPPORT_FILES"; break;
case PROP_ID(PR_SERVICE_DELETE_FILES) : pszTag = "PR_SERVICE_DELETE_FILES"; break;
case PROP_ID(PR_AB_SEARCH_PATH_UPDATE) : pszTag = "PR_AB_SEARCH_PATH_UPDATE"; break;
// Status object properties
case PROP_ID(PR_IDENTITY_DISPLAY) : pszTag = "PR_IDENTITY_DISPLAY"; break;
case PROP_ID(PR_IDENTITY_ENTRYID) : pszTag = "PR_IDENTITY_ENTRYID"; break;
case PROP_ID(PR_RESOURCE_METHODS) : pszTag = "PR_RESOURCE_METHODS"; break;
case PROP_ID(PR_RESOURCE_TYPE) : pszTag = "PR_RESOURCE_TYPE"; break;
case PROP_ID(PR_STATUS_CODE) : pszTag = "PR_STATUS_CODE"; break;
case PROP_ID(PR_IDENTITY_SEARCH_KEY) : pszTag = "PR_IDENTITY_SEARCH_KEY"; break;
case PROP_ID(PR_OWN_STORE_ENTRYID) : pszTag = "PR_OWN_STORE_ENTRYID"; break;
case PROP_ID(PR_RESOURCE_PATH) : pszTag = "PR_RESOURCE_PATH"; break;
case PROP_ID(PR_STATUS_STRING) : pszTag = "PR_STATUS_STRING"; break;
case PROP_ID(PR_X400_DEFERRED_DELIVERY_CANCEL) : pszTag = "PR_X400_DEFERRED_DELIVERY_CANCEL"; break;
case PROP_ID(PR_HEADER_FOLDER_ENTRYID) : pszTag = "PR_HEADER_FOLDER_ENTRYID"; break;
case PROP_ID(PR_REMOTE_PROGRESS) : pszTag = "PR_REMOTE_PROGRESS"; break;
case PROP_ID(PR_REMOTE_PROGRESS_TEXT) : pszTag = "PR_REMOTE_PROGRESS_TEXT"; break;
case PROP_ID(PR_REMOTE_VALIDATE_OK) : pszTag = "PR_REMOTE_VALIDATE_OK"; break;
//Display table properties
case PROP_ID(PR_CONTROL_FLAGS) : pszTag = "PR_CONTROL_FLAGS"; break;
case PROP_ID(PR_CONTROL_STRUCTURE) : pszTag = "PR_CONTROL_STRUCTURE"; break;
case PROP_ID(PR_CONTROL_TYPE) : pszTag = "PR_CONTROL_TYPE"; break;
case PROP_ID(PR_DELTAX) : pszTag = "PR_DELTAX"; break;
case PROP_ID(PR_DELTAY) : pszTag = "PR_DELTAY"; break;
case PROP_ID(PR_XPOS) : pszTag = "PR_XPOS"; break;
case PROP_ID(PR_YPOS) : pszTag = "PR_YPOS"; break;
case PROP_ID(PR_CONTROL_ID) : pszTag = "PR_CONTROL_ID"; break;
case PROP_ID(PR_INITIAL_DETAILS_PANE) : pszTag = "PR_INITIAL_DETAILS_PANE"; break;
default :
if (0x8000 >= PROP_ID(ulPropTag))
{
wsprintf (szUnkTag, "Named Property (%x)", PROP_ID(ulPropTag));
}
else
{
wsprintf (szUnkTag, "UNKNOWN (%x)", PROP_ID(ulPropTag));
}
pszTag = szUnkTag;
break;
}
char * pszType;
switch (PROP_TYPE(ulPropTag))
{
case PT_UNSPECIFIED : pszType = "PT_UNSPECIFIED"; break;
case PT_NULL : pszType = "PT_NULL"; break;
case PT_SHORT : pszType = "PT_SHORT"; break;
case PT_LONG : pszType = "PT_LONG"; break;
case PT_FLOAT : pszType = "PT_FLOAT"; break;
case PT_DOUBLE : pszType = "PT_DOUBLE"; break;
case PT_CURRENCY : pszType = "PT_CURRENCY"; break;
case PT_APPTIME : pszType = "PT_APPTIME"; break;
case PT_ERROR : pszType = "PT_ERROR"; break;
case PT_BOOLEAN : pszType = "PT_BOOLEAN"; break;
case PT_OBJECT : pszType = "PT_OBJECT"; break;
case PT_I8 : pszType = "PT_I8"; break;
case PT_STRING8 : pszType = "PT_STRING8"; break;
case PT_UNICODE : pszType = "PT_UNICODE"; break;
case PT_SYSTIME : pszType = "PT_SYSTIME"; break;
case PT_CLSID : pszType = "PT_CLSID"; break;
case PT_BINARY : pszType = "PT_BINARY"; break;
default :
wsprintf (szUnkType, "UNKNOWN (%x)", PROP_TYPE(ulPropTag));
pszType = szUnkType;
break;
}
dwSize = wsprintf (message, "Tag: %s Type: %s\r\n", pszTag, pszType);
WriteOutputString (message, dwSize);
}
#endif // TRACES_NO_MAPI
// End of file for TRACES.CPP