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.
 
 
 
 
 
 

893 lines
44 KiB

//-----------------------------------------------------------------------------
//
//
// File: aqdumps.cpp
//
// Description: Definitions of AQ structure dumps for use with ptdbgext.
//
// Author: mikeswa
//
// Copyright (C) 1998 Microsoft Corporation
//
//-----------------------------------------------------------------------------
#define _ANSI_UNICODE_STRINGS_DEFINED_
//baseobj.h is inlcluded
#define _WINSOCKAPI_
#include <atq.h>
#ifdef PLATINUM
#include "phatqdbg.h"
#include <ptrwinst.h>
#include <ptntintf.h>
#else //not PLATINUM
#include "aqdbgext.h"
#include <rwinst.h>
#endif //PLATINUM
#include <aqinst.h>
#include <connmgr.h>
#include <msgref.h>
#include <fifoq.h>
#include <dcontext.h>
#include <smtpconn.h>
#include <destmsgq.h>
#include <linkmsgq.h>
#include <qwiklist.h>
#include <dsnbuff.h>
#include <time.h>
#include <qwiktime.h>
#include <asyncq.h>
#include <retryq.h>
#include <hashentr.h>
#include <aqstats.h>
#include <aqadmsvr.h>
#include <defdlvrq.h>
#include <aqsize.h>
#include <asncwrkq.h>
PEXTLIB_INIT_ROUTINE g_pExtensionInitRoutine = NULL;
DEFINE_EXPORTED_FUNCTIONS
LPSTR ExtensionNames[] = {
"Advanced Queuing debugger extensions",
0
};
LPSTR Extensions[] = {
"offsets - Lists LIST_ENTRY offsets",
" USAGE: offsets",
"dumpservers - Dump pointers to the virtual server objects",
" USAGE: dumpservers [<virtual server id> [<virtual server list address>]]",
" <virtual server id> - specifies instance ID to dump in detail",
" <virtual server list address> - address of the head of the virtual",
" server LIST_ENTRY. No needed in CDB,",
" but can be found in windbg by typing:",
" x " AQUEUE_VIRTUAL_SERVER_SYMBOL,
"dumpdnt - Dump a given DOMAIN_NAME_TABLE (and it's entries)",
" USAGE: dumpdnt [<Struct Type Name>]",
" <Struct Type Name> - if specified, will dump all entries",
" in the DNT as this type",
"dumplist - Dump a given list of LIST_ENTRY structs",
" USAGE: dumplist <list head> [<entry offset> [<Struct Type Name>]]",
" <list head> - Address of head LIST_ENTRY",
" <entry offset> - The offset in each object of the LIST_ENTRY.",
" This can be determined using the offses command.",
" <Struct Type Name> - Type of object list entries are in.",
"dumpqueue - Dump the CMsgRefs and IMailMsgProperties for a given queue",
" USAGE: dumpqueue <queue> [<search>]",
" <queue> - Address of DMQ, LMQ, or FIFOQ",
" <search> - IMailMsgProperties ptr to search for",
"walkcpool - Dump the currently allocted entries for a *DBG* CPool",
" USAGE: walkcpool <cpool> [<dumpoffset>]",
" <cpool> - Address of static CPool to dump",
" <dumpoffset> - Offset of additional information to dump",
" An example usages is to dump all the STMP_CONNOUT objects and",
" all the ISMTPConn interfaces they point to",
"displaytickcount - Display the localized actual time of a given tick count",
" USAGE: displaytickcount <tickcount>",
" <tickcount> - DWORD tickcount to display",
"workqueue - Display a summary of items in the async work queue",
" USAGE: workqueue <queue>",
" <queue> - Address of work queue (can be obtained from dumpservers)",
"dumplock - Dumps current state (included shared threads) of a CShareLockInst",
" USAGE: dumplock <lock>",
" <lock> - Address of CShareLockInst object",
"findbytes - Searches for a given byte pattern in the process memory",
" USAGE: findbytes <bb> <bb>...",
"findsig - Searchs for a given signature in memory",
" USAGE: findsig <SIG >",
"remotecmd - Starts a remote command window with the given name",
" USAGE: remotecmd <PIPENAME>",
"cpoolusage - Calculates the amount of CPool memory used in the the",
" inetinfo process",
" USAGE: cpoolusage",
" *NOTE* - Requires symbols to work properly",
"zombieq - Checks for DMQs that are marked as empty but not in the empty list",
" USAGE: zombieq [<virtual server ID> [<virtual server list address>]]",
"handlemgmt - Calculates some scores based on usage of handles... can be",
" used to correlate disk usage vs messages submitted and validate new",
" queuing algorthims before formal performance analysis",
" USAGE: handlemgmt [<virtual server ID> [<virtual server list address>]]",
" Here is an explanation of the various scores:",
" Current Messsages Allocated That have been closed:",
" This is the number of messages currently allocated that",
" have been bounced (may be internally queued… assocated with",
" connections… queued remotely…etc).",
" Non-Weighted Score:",
" Useful as a baseline for internally queued messages.",
" Similar to Delivery score if nothing is queued",
" Weighted Score:",
" Only really useful when messages are queued internally. ",
" Related (5x) delivery score if nothing is queued.",
" Submitted Score:",
" Most useful when queues have fully drained… makes sense for",
" local and remote deliveries",
" Delivery Score:",
" Most useful when queues have fully drained… only makes sense",
" for local deliveries.",
" The following are good for correlating test runs… the lower the ",
" backlog, the more the submitted score makes sense. If there is",
" any backlog (and the 2nd % is high), then Weighted score makes good",
" sense for local delivery testing.",
" Messages Backlogged:",
" The is the % of messages submitted that have not been",
" delivered yet... similar numbers suggest the test runs are in",
" similar places.",
" Backlogged Messages Queued Internally:",
" % of messages in the backlog that will appear in the internal",
" queues.\n"
"dsncontexthash - Generates the same hash used in the X-DSNContext",
" header. This can be used to verify which file generated an NDR",
" USAGE: dsncontexthash <filename>",
"linkstate - Dumps the current routing information and link state",
" USAGE: linkstate [<virtual server ID> [<virtual server list address>]]",
" <virtual server id> - specifies instance ID to get data for",
" <virtual server list address> - address of the head of the virtual",
" server LIST_ENTRY. No needed in CDB,",
" but can be found in windbg by typing:",
" x " AQUEUE_VIRTUAL_SERVER_SYMBOL,
"\n",
"***NOTE***\n",
" You MUST have good aqueue.dll symbols to use dumpservers and linkstate",
0
};
//Stuctures for dumping
//Dummy class for dumping a filetime
class CFileTime
{
public:
FILETIME m_ft;
};
#define MEMBER_BIT_MASK_VALUE(MyClass, x) BIT_MASK_VALUE2(MyClass::x, #x)
BEGIN_FIELD_DESCRIPTOR(CFileTimeFields)
FIELD3(FieldTypeLocalizedFiletime, CFileTime, m_ft)
FIELD3(FieldTypeFiletime, CFileTime, m_ft)
END_FIELD_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(CmtInitMask)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_OK)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_DMT)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_DCT)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_MSGQ)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_LINKQ)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_CONMGR)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_DSN)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_PRECATQ)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_PRELOCQ)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_POSTDSNQ)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_ROUTER_RESET)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_WORKQ)
MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_MSGQ)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(MsgRefBitMask)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_LOCAL_RETRY)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_COUNTED_AS_REMOTE)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_REMOTE_RETRY)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_SUPERSEDED)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_INIT)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_FROZEN)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_RETRY_ON_DELETE)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_ASYNC_BOUNCE_PENDING)
MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MAILMSG_RELEASED)
BIT_MASK_VALUE(eEffPriNormal)
BIT_MASK_VALUE(eEffPriHigh)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(MsgAckBitMask)
BIT_MASK_VALUE(MESSAGE_STATUS_ALL_DELIVERED)
BIT_MASK_VALUE(MESSAGE_STATUS_RETRY)
BIT_MASK_VALUE(MESSAGE_STATUS_CHECK_RECIPS)
BIT_MASK_VALUE(MESSAGE_STATUS_NDR_ALL)
BIT_MASK_VALUE(MESSAGE_STATUS_DSN_NOT_SUPPORTED)
BIT_MASK_VALUE(MESSAGE_STATUS_EXTENDED_STATUS_CODES)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(LinkStateBitMask)
BIT_MASK_VALUE(LINK_STATE_RETRY_ENABLED)
BIT_MASK_VALUE(LINK_STATE_SCHED_ENABLED)
BIT_MASK_VALUE(LINK_STATE_ADMIN_FORCE_CONN)
BIT_MASK_VALUE(LINK_STATE_ADMIN_HALT)
BIT_MASK_VALUE(LINK_STATE_CMD_ENABLED)
BIT_MASK_VALUE(LINK_STATE_LINK_NO_LONGER_USED)
BIT_MASK_VALUE2(LINK_STATE_PRIV_ETRN_ENABLED, "LINK_STATE_PRIV_ETRN_ENABLED")
BIT_MASK_VALUE2(LINK_STATE_PRIV_TURN_ENABLED, "LINK_STATE_PRIV_TURN_ENABLED")
BIT_MASK_VALUE2(LINK_STATE_PRIV_CONFIG_TURN_ETRN, "LINK_STATE_PRIV_CONFIG_TURN_ETRN")
BIT_MASK_VALUE2(LINK_STATE_PRIV_NO_NOTIFY, "LINK_STATE_PRIV_NO_NOTIFY")
BIT_MASK_VALUE2(LINK_STATE_PRIV_NO_CONNECTION, "LINK_STATE_PRIV_NO_CONNECTION")
BIT_MASK_VALUE2(LINK_STATE_PRIV_GENERATING_DSNS, "LINK_STATE_PRIV_GENERATING_DSNS")
BIT_MASK_VALUE2(LINK_STATE_PRIV_IGNORE_DELETE_IF_EMPTY, "LINK_STATE_PRIV_IGNORE_DELETE_IF_EMPTY")
BIT_MASK_VALUE2(LINK_STATE_PRIV_HAVE_SENT_NOTIFICATION, "LINK_STATE_PRIV_HAVE_SENT_NOTIFICATION")
BIT_MASK_VALUE2(LINK_STATE_PRIV_HAVE_SENT_NO_LONGER_USED, "LINK_STATE_PRIV_HAVE_SENT_NO_LONGER_USED")
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(LinkFlagsBitMask)
BIT_MASK_VALUE(eLinkFlagsClear)
BIT_MASK_VALUE(eLinkFlagsSentNewNotification)
BIT_MASK_VALUE(eLinkFlagsRouteChangePending)
BIT_MASK_VALUE(eLinkFlagsFileTimeSpinLock)
BIT_MASK_VALUE(eLinkFlagsDiagnosticSpinLock)
BIT_MASK_VALUE(eLinkFlagsConnectionVerifed)
BIT_MASK_VALUE(eLinkFlagsGetInfoFailed)
BIT_MASK_VALUE(eLinkFlagsAQSpecialLinkInfo)
BIT_MASK_VALUE(eLinkFlagsInternalSMTPLinkInfo)
BIT_MASK_VALUE(eLinkFlagsExternalSMTPLinkInfo)
BIT_MASK_VALUE(eLinkFlagsMarkedAsEmpty)
BIT_MASK_VALUE(eLinkFlagsInvalid)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(DomainInfoBitMask)
BIT_MASK_VALUE(DOMAIN_INFO_REMOTE)
BIT_MASK_VALUE(DOMAIN_INFO_USE_SSL)
BIT_MASK_VALUE(DOMAIN_INFO_SEND_TURN)
BIT_MASK_VALUE(DOMAIN_INFO_SEND_ETRN)
BIT_MASK_VALUE(DOMAIN_INFO_USE_NTLM)
BIT_MASK_VALUE(DOMAIN_INFO_USE_PLAINTEXT)
BIT_MASK_VALUE(DOMAIN_INFO_USE_DPA)
BIT_MASK_VALUE(DOMAIN_INFO_USE_KERBEROS)
BIT_MASK_VALUE(DOMAIN_INFO_USE_CHUNKING)
BIT_MASK_VALUE(DOMAIN_INFO_USE_HELO)
BIT_MASK_VALUE(DOMAIN_INFO_TURN_ONLY)
BIT_MASK_VALUE(DOMAIN_INFO_ETRN_ONLY)
BIT_MASK_VALUE(DOMAIN_INFO_LOCAL_DROP)
BIT_MASK_VALUE(DOMAIN_INFO_LOCAL_MAILBOX)
BIT_MASK_VALUE(DOMAIN_INFO_REMOTE_SMARTHOST)
BIT_MASK_VALUE(DOMAIN_INFO_IP_RELAY)
BIT_MASK_VALUE(DOMAIN_INFO_AUTH_RELAY)
BIT_MASK_VALUE(DOMAIN_INFO_DOMAIN_RELAY)
BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_CHUNKING)
BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_BMIME)
BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_DSN)
BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_PIPELINE)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(DCTFlags)
MEMBER_BIT_MASK_VALUE(CDomainConfigTable, DOMCFG_DOMAIN_NAME_TABLE_INIT)
MEMBER_BIT_MASK_VALUE(CDomainConfigTable, DOMCFG_FINISH_UPDATE_PENDING)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(InternalDomainInfoFlags)
BIT_MASK_VALUE(INT_DOMAIN_INFO_INVALID)
BIT_MASK_VALUE(INT_DOMAIN_INFO_OK)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(ConnectionAckFlags)
BIT_MASK_VALUE(CONNECTION_STATUS_OK)
BIT_MASK_VALUE(CONNECTION_STATUS_FAILED)
BIT_MASK_VALUE(CONNECTION_STATUS_DROPPED)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(AsyncQueueFlags)
BIT_MASK_VALUE2(CAsyncQueueBase::ASYNC_QUEUE_STATUS_SHUTDOWN, "ASYNC_QUEUE_STATUS_SHUTDOWN")
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(DMQBitmask)
BIT_MASK_VALUE2(CDestMsgQueue::DMQ_INVALID, "DMQ_INVALID")
BIT_MASK_VALUE2(CDestMsgQueue::DMQ_IN_EMPTY_QUEUE_LIST, "DMQ_IN_EMPTY_QUEUE_LIST")
BIT_MASK_VALUE2(CDestMsgQueue::DMQ_SHUTDOWN_SIGNALED, "DMQ_SHUTDOWN_SIGNALED")
BIT_MASK_VALUE2(CDestMsgQueue::DMQ_EMPTY, "DMQ_EMPTY")
BIT_MASK_VALUE2(CDestMsgQueue::DMQ_EXPIRED, "DMQ_EXPIRED")
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(DSNOptions)
BIT_MASK_VALUE(DSN_OPTIONS_DEFAULT)
BIT_MASK_VALUE(DSN_OPTIONS_DEFAULT_RET_HEADERS)
BIT_MASK_VALUE(DSN_OPTIONS_DEFAULT_RET_FULL)
BIT_MASK_VALUE(DSN_OPTIONS_IGNORE_MSG_RET)
BIT_MASK_VALUE(DSN_OPTIONS_SEND_DELAY_DEFAULT)
BIT_MASK_VALUE(DSN_OPTIONS_SEND_DELAY_UPON_REQUEST)
BIT_MASK_VALUE(DSN_OPTIONS_SEND_DELAY_NEVER)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(MsgEnumFilterFlags)
BIT_MASK_VALUE(MEF_FIRST_N_MESSAGES)
BIT_MASK_VALUE(MEF_N_LARGEST_MESSAGES)
BIT_MASK_VALUE(MEF_N_OLDEST_MESSAGES)
BIT_MASK_VALUE(MEF_OLDER_THAN)
BIT_MASK_VALUE(MEF_LARGER_THAN)
BIT_MASK_VALUE(MEF_INVERTSENSE)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(MsgFilterFlags)
BIT_MASK_VALUE(MF_MESSAGEID)
BIT_MASK_VALUE(MF_SENDER)
BIT_MASK_VALUE(MF_RECIPIENT)
BIT_MASK_VALUE(MF_SIZE)
BIT_MASK_VALUE(MF_TIME)
BIT_MASK_VALUE(MF_FROZEN)
BIT_MASK_VALUE(MF_INVERTSENSE)
END_BIT_MASK_DESCRIPTOR
BEGIN_BIT_MASK_DESCRIPTOR(InternalMsgFilterFlags)
BIT_MASK_VALUE(AQ_MSG_FILTER_MESSAGEID)
BIT_MASK_VALUE(AQ_MSG_FILTER_SENDER)
BIT_MASK_VALUE(AQ_MSG_FILTER_RECIPIENT)
BIT_MASK_VALUE(AQ_MSG_FILTER_OLDER_THAN)
BIT_MASK_VALUE(AQ_MSG_FILTER_LARGER_THAN)
BIT_MASK_VALUE(AQ_MSG_FILTER_FROZEN)
BIT_MASK_VALUE(AQ_MSG_FILTER_FIRST_N_MESSAGES)
BIT_MASK_VALUE(AQ_MSG_FILTER_N_LARGEST_MESSAGES)
BIT_MASK_VALUE(AQ_MSG_FILTER_N_OLDEST_MESSAGES)
BIT_MASK_VALUE(AQ_MSG_FILTER_INVERTSENSE)
END_BIT_MASK_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DMTFields)
FIELD3(FieldTypeClassSignature, CDomainMappingTable, m_dwSignature)
FIELD3(FieldTypeDword, CDomainMappingTable, m_dwInternalVersion)
FIELD3(FieldTypeDword, CDomainMappingTable, m_cThreadsForEmptyDMQList)
FIELD3(FieldTypeDword, CDomainMappingTable, m_cOutstandingExternalShareLocks)
FIELD3(FieldTypePointer, CDomainMappingTable, m_paqinst)
FIELD3(FieldTypePointer, CDomainMappingTable, m_plmqLocal)
FIELD3(FieldTypePointer, CDomainMappingTable, m_plmqUnreachable)
FIELD3(FieldTypePointer, CDomainMappingTable, m_plmqCurrentlyUnreachable)
FIELD3(FieldTypeListEntry, CDomainMappingTable, m_liEmptyDMQHead)
FIELD3(FieldTypeStruct, CDomainMappingTable, m_dnt)
FIELD3(FieldTypeStruct, CDomainMappingTable, m_slPrivateData)
END_FIELD_DESCRIPTOR
EMBEDDED_STRUCT(CDomainMappingTable, DMTFields, EmbeddedDMT)
BEGIN_FIELD_DESCRIPTOR(AQStatsFields)
FIELD3(FieldTypeClassSignature, CAQStats, m_dwSignature)
FIELD3(FieldTypeDword, CAQStats, m_dwNotifyType)
FIELD3(FieldTypeDword, CAQStats, m_cMsgs)
FIELD3(FieldTypeDword, CAQStats, m_dwHighestPri)
FIELD3(FieldTypePointer, CAQStats, m_pvContext)
FIELD3(FieldTypeDword, CAQStats, m_uliVolume.HighPart)
FIELD3(FieldTypeDword, CAQStats, m_uliVolume.LowPart)
FIELD3(FieldTypeDword, CAQStats, m_cRetryMsgs)
END_FIELD_DESCRIPTOR
EMBEDDED_STRUCT(CAQStats, AQStatsFields, EmbeddedAQStats)
BEGIN_FIELD_DESCRIPTOR(ConnMgrFields)
FIELD3(FieldTypeDword, CConnMgr, m_lReferences)
FIELD3(FieldTypeDword, CConnMgr, m_cConnections)
FIELD3(FieldTypePointer, CConnMgr, m_paqinst)
FIELD3(FieldTypePointer, CConnMgr, m_pqol)
FIELD3(FieldTypePointer, CConnMgr, m_pDefaultRetryHandler)
FIELD3(FieldTypeDword, CConnMgr, m_dwConfigVersion)
FIELD3(FieldTypeDword, CConnMgr, m_cMinMessagesPerConnection)
FIELD3(FieldTypeDword, CConnMgr, m_cMaxLinkConnections)
FIELD3(FieldTypeDword, CConnMgr, m_cMaxMessagesPerConnection)
FIELD3(FieldTypeDword, CConnMgr, m_cMaxConnections)
FIELD3(FieldTypeDword, CConnMgr, m_cGetNextConnectionWaitTime)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(RSTRFields)
FIELD3(FieldTypeClassSignature, CRefCountedString, m_dwSignature)
FIELD3(FieldTypeDword, CRefCountedString, m_cbStrlen)
FIELD3(FieldTypePStr, CRefCountedString, m_szStr)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(RetrySinkFields)
FIELD3(FieldTypePointer, CSMTP_RETRY_HANDLER, m_pRetryHash)
FIELD3(FieldTypePointer, CSMTP_RETRY_HANDLER, m_pRetryQueue)
FIELD3(FieldTypeBool, CSMTP_RETRY_HANDLER, m_fHandlerShuttingDown)
FIELD3(FieldTypeBool, CSMTP_RETRY_HANDLER, m_fConfigDataUpdated)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_ThreadsInRetry)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwRetryThreshold)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwGlitchRetrySeconds)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwFirstRetrySeconds)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwSecondRetrySeconds)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwThirdRetrySeconds)
FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwFourthRetrySeconds)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(RetryQueueFields)
FIELD3(FieldTypeListEntry, CRETRY_Q, m_QHead)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(RetryHashFields)
FIELD3(FieldTypeClassSignature, CRETRY_HASH_ENTRY, m_Signature)
FIELD3(FieldTypeLong, CRETRY_HASH_ENTRY, m_RefCount)
FIELD3(FieldTypeBool, CRETRY_HASH_ENTRY, m_InQ)
FIELD3(FieldTypeBool, CRETRY_HASH_ENTRY, m_InTable)
FIELD3(FieldTypeLocalizedFiletime, CRETRY_HASH_ENTRY, m_ftEntryInsertedTime)
FIELD3(FieldTypeLocalizedFiletime, CRETRY_HASH_ENTRY, m_ftRetryTime)
FIELD3(FieldTypeDword, CRETRY_HASH_ENTRY, m_cFailureCount)
FIELD3(FieldTypeSymbol, CRETRY_HASH_ENTRY, m_pfnCallbackFn)
FIELD3(FieldTypePointer, CRETRY_HASH_ENTRY, m_pvCallbackContext)
FIELD3(FieldTypeStrBuffer, CRETRY_HASH_ENTRY, m_szDomainName)
FIELD3(FieldTypeListEntry, CRETRY_HASH_ENTRY, m_QLEntry)
FIELD3(FieldTypeListEntry, CRETRY_HASH_ENTRY, m_HLEntry)
#ifdef DEBUG
FIELD3(FieldTypePointer, CRETRY_HASH_ENTRY, m_hTranscriptHandle)
FIELD3(FieldTypeStrBuffer, CRETRY_HASH_ENTRY, m_szTranscriptFile)
#endif //DEBUG
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CMQFields)
FIELD3(FieldTypeClassSignature, CAQSvrInst, m_dwSignature)
FIELD3(FieldTypeDword, CAQSvrInst, m_lReferences)
FIELD3(FieldTypeDword, CAQSvrInst, m_dwFirstTierRetrySeconds)
FIELD3(FieldTypeDword, CAQSvrInst, m_dwDelayExpireMinutes)
FIELD3(FieldTypeDword, CAQSvrInst, m_dwNDRExpireMinutes)
FIELD3(FieldTypeDword, CAQSvrInst, m_dwLocalDelayExpireMinutes)
FIELD3(FieldTypeDword, CAQSvrInst, m_dwLocalNDRExpireMinutes)
FIELD3(FieldTypeDword, CAQSvrInst, m_cLocalRetriesPending)
FIELD3(FieldTypeDword, CAQSvrInst, m_cCatRetriesPending)
FIELD3(FieldTypeDword, CAQSvrInst, m_cRoutingRetriesPending)
FIELD3(FieldTypePointer, CAQSvrInst, m_pConnMgr)
FIELD3(FieldTypeStruct, CAQSvrInst, m_dct)
FIELD3(FieldTypeStruct, CAQSvrInst, m_qtTime)
FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreCatQueue)
FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreLocalDeliveryQueue)
FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPostDSNQueue)
FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreRoutingQueue)
FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreSubmissionQueue)
FIELD3(FieldTypeStruct, CAQSvrInst, m_aqwWorkQueue)
FIELD3(FieldTypePointer, CAQSvrInst, m_prstrDefaultDomain)
FIELD3(FieldTypePointer, CAQSvrInst, m_prstrServerFQDN)
FIELD3(FieldTypePointer, CAQSvrInst, m_prstrBadMailDir)
FIELD3(FieldTypePointer, CAQSvrInst, m_prstrCopyNDRTo)
FIELD3(FieldTypeStruct, CAQSvrInst, m_mglSupersedeIDs)
FIELD3(FieldTypeStruct, CAQSvrInst, m_defq)
FIELD3(FieldTypeStruct, CAQSvrInst, m_fmq)
FIELD3(FieldTypeStruct, CAQSvrInst, m_aqwWorkQueue)
FIELD4(FieldTypeEmbeddedStruct, CAQSvrInst, m_dmt, EmbeddedDMT)
FIELD3(FieldTypeDword, CAQSvrInst, m_dwDSNLanguageID)
FIELD3(FieldTypeStruct, CAQSvrInst, m_slPrivateData)
FIELD4(FieldTypeDWordBitMask, CAQSvrInst, m_dwDSNOptions, GET_BIT_MASK_DESCRIPTOR(DSNOptions))
FIELD4(FieldTypeDWordBitMask, CAQSvrInst, m_dwInitMask, GET_BIT_MASK_DESCRIPTOR(CmtInitMask))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(AQCounterInfoFields)
FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalMsgsQueued)
FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsAcked)
FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsAckedRetry)
FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsAckedRetryLocal)
FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsDeliveredLocal)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsSubmitted)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingSubmitEvent)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingCat)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingPostCatEvent)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingRouting)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingDelivery)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingLocal)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingRetry)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingLocalRetry)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentQueueMsgInstances)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteDestQueues)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHops)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsEnabled)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsPendingRetry)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsPendingSchedule)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsFrozenByAdmin)
FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalMsgsSubmitted)
FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalExternalMsgsSubmitted)
FIELD3(FieldTypeLong, CAQSvrInst, m_cNDRs)
FIELD3(FieldTypeLong, CAQSvrInst, m_cDelayedDSNs)
FIELD3(FieldTypeLong, CAQSvrInst, m_cDeliveredDSNs)
FIELD3(FieldTypeLong, CAQSvrInst, m_cRelayedDSNs)
FIELD3(FieldTypeLong, CAQSvrInst, m_cExpandedDSNs)
FIELD3(FieldTypeLong, CAQSvrInst, m_cDMTRetries)
FIELD3(FieldTypeLong, CAQSvrInst, m_cSupersededMsgs)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingDeferredDelivery)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentResourceFailedMsgsPendingRetry)
FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalMsgsBadmailed)
FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalResetRoutes)
FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalDSNFailures)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCatMsgCalled)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCatCompletionCalled)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsInLocalDelivery)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentPendingResetRoutes)
FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingSubmit)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(MsgGuidListFields)
FIELD3(FieldTypeClassSignature, CAQMsgGuidList, m_dwSignature)
FIELD3(FieldTypeListEntry, CAQMsgGuidList, m_liMsgGuidListHead)
FIELD3(FieldTypeStruct, CAQMsgGuidList, m_slPrivateData)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(MsgGuidListEntryFields)
FIELD3(FieldTypeClassSignature, CAQMsgGuidListEntry, m_dwSignature)
FIELD3(FieldTypeDword, CAQMsgGuidListEntry, m_lReferences)
FIELD3(FieldTypePointer, CAQMsgGuidListEntry, m_pmsgref)
FIELD3(FieldTypePointer, CAQMsgGuidListEntry, m_pmgl)
FIELD3(FieldTypeStruct, CAQMsgGuidListEntry, m_liMsgGuidList)
FIELD3(FieldTypeGuid, CAQMsgGuidListEntry, m_guidMsgID)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DomainInfoFields)
FIELD3(FieldTypeDword, DomainInfo, cbVersion)
FIELD3(FieldTypeDword, DomainInfo, dwDomainInfoFlags)
FIELD3(FieldTypeDword, DomainInfo, cbDomainNameLength)
FIELD3(FieldTypePStr, DomainInfo, szDomainName)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(MsgRefFields)
FIELD3(FieldTypeClassSignature, CMsgRef, m_dwSignature)
FIELD3(FieldTypeDword, CMsgRef, m_lReferences)
FIELD3(FieldTypePointer, CMsgRef, m_paqinst)
FIELD3(FieldTypePointer, CMsgRef, m_pIMailMsgProperties)
FIELD4(FieldTypeDWordBitMask, CMsgRef, m_dwDataFlags, GET_BIT_MASK_DESCRIPTOR(MsgRefBitMask))
FIELD3(FieldTypeDword, CMsgRef, m_cbMsgSize)
FIELD3(FieldTypeDword, CMsgRef, m_cDomains)
FIELD3(FieldTypeDword, CMsgRef, m_cTimesRetried)
FIELD3(FieldTypeStruct, CMsgRef, m_rgpdmqDomains)
FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftQueueEntry)
FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftLocalExpireDelay)
FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftLocalExpireNDR)
FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftRemoteExpireDelay)
FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftRemoteExpireNDR)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(MsgAckFields)
FIELD3(FieldTypePointer, MessageAck, pIMailMsgProperties)
FIELD3(FieldTypePointer, MessageAck, pvMsgContext)
FIELD4(FieldTypeDWordBitMask, MessageAck, dwMsgStatus, GET_BIT_MASK_DESCRIPTOR(MsgAckBitMask))
FIELD3(FieldTypeDword, MessageAck, cbExtendedStatus)
FIELD3(FieldTypePStr, MessageAck, szExtendedStatus)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DeliveryContextFields)
FIELD3(FieldTypeClassSignature, CDeliveryContext, m_dwSignature)
FIELD3(FieldTypePointer, CDeliveryContext, m_pmsgref)
FIELD3(FieldTypePointer, CDeliveryContext, m_pmbmap)
FIELD3(FieldTypeDword, CDeliveryContext, m_cRecips)
FIELD3(FieldTypePointer, CDeliveryContext, m_rgdwRecips)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DomainEntryFields)
FIELD3(FieldTypeClassSignature, CDomainEntry, m_dwSignature)
FIELD3(FieldTypeDword, CDomainEntry, m_lReferences)
FIELD3(FieldTypePStr, CDomainEntry, m_szDomainName)
FIELD3(FieldTypeStruct, CDomainEntry, m_dmap)
FIELD3(FieldTypeDword, CDomainEntry, m_cQueues)
FIELD3(FieldTypeDword, CDomainEntry, m_cLinks)
FIELD3(FieldTypeListEntry, CDomainEntry, m_liDestQueues)
FIELD3(FieldTypeListEntry, CDomainEntry, m_liLinks)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DomainNameTableEntryFields)
FIELD3(FieldTypeClassSignature, DOMAIN_NAME_TABLE_ENTRY, dwEntrySig)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pParentEntry)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pNextEntry)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pPrevEntry)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pFirstChildEntry)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pSiblingEntry)
FIELD3(FieldTypeULong, DOMAIN_NAME_TABLE_ENTRY, NoOfChildren)
FIELD3(FieldTypeAnsiString, DOMAIN_NAME_TABLE_ENTRY, PathSegment)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pData)
FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pWildCardData)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DomainConfigTableFields)
FIELD3(FieldTypeClassSignature, CDomainConfigTable, m_dwSignature)
FIELD3(FieldTypeDword, CDomainConfigTable, m_dwCurrentConfigVersion)
FIELD3(FieldTypeStruct, CDomainConfigTable, m_dnt)
FIELD3(FieldTypePointer, CDomainConfigTable, m_pDefaultDomainConfig)
FIELD3(FieldTypeStruct, CDomainConfigTable, m_slPrivateData)
FIELD4(FieldTypeDWordBitMask, CDomainConfigTable, m_dwFlags, GET_BIT_MASK_DESCRIPTOR(DCTFlags))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(IntDomainInfoFields)
FIELD3(FieldTypeClassSignature, CInternalDomainInfo, m_dwSignature)
FIELD3(FieldTypeDword, CInternalDomainInfo, m_lReferences)
FIELD3(FieldTypeDword, CInternalDomainInfo, m_dwVersion)
FIELD4(FieldTypeDWordBitMask, CInternalDomainInfo, m_dwIntDomainInfoFlags, GET_BIT_MASK_DESCRIPTOR(InternalDomainInfoFlags))
FIELD3(FieldTypeDword, CInternalDomainInfo, m_DomainInfo.cbVersion)
FIELD3(FieldTypePStr, CInternalDomainInfo, m_DomainInfo.szDomainName)
FIELD3(FieldTypePStr, CInternalDomainInfo, m_DomainInfo.szDropDirectory)
FIELD3(FieldTypePStr, CInternalDomainInfo, m_DomainInfo.szSmartHostDomainName)
FIELD4(FieldTypeDWordBitMask, CInternalDomainInfo, m_DomainInfo.dwDomainInfoFlags, GET_BIT_MASK_DESCRIPTOR(DomainInfoBitMask))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(SMTPConnFields)
FIELD3(FieldTypeClassSignature, CSMTPConn, m_dwSignature)
FIELD3(FieldTypeDword, CSMTPConn, m_lReferences)
FIELD3(FieldTypePointer, CSMTPConn, m_plmq)
FIELD3(FieldTypePointer, CSMTPConn, m_pConnMgr)
FIELD3(FieldTypePointer, CSMTPConn, m_pIntDomainInfo)
FIELD3(FieldTypeDword, CSMTPConn, m_cFailedMsgs)
FIELD3(FieldTypeDword, CSMTPConn, m_cTriedMsgs)
FIELD3(FieldTypeDword, CSMTPConn, m_cAcks)
FIELD3(FieldTypeDWordBitMask, CSMTPConn, m_dwTickCountOfLastAck)
FIELD3(FieldTypePStr, CSMTPConn, m_szDomainName)
FIELD4(FieldTypeDWordBitMask, CSMTPConn, m_dwConnectionStatus, GET_BIT_MASK_DESCRIPTOR(ConnectionAckFlags))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DestMsgQueueFields)
FIELD3(FieldTypeClassSignature, CDestMsgQueue, m_dwSignature)
FIELD3(FieldTypeDword, CDestMsgQueue, m_lReferences)
FIELD3(FieldTypePointer, CDestMsgQueue, m_plmq)
FIELD3(FieldTypePointer, CDestMsgQueue, m_pvLinkContext)
FIELD3(FieldTypePointer, CDestMsgQueue, m_paqinst)
FIELD3(FieldTypeListEntry, CDestMsgQueue, m_liDomainEntryDMQs)
FIELD3(FieldTypeStruct, CDestMsgQueue, m_aqmt)
FIELD3(FieldTypeDword, CDestMsgQueue, m_cMessageTypeRefs)
FIELD3(FieldTypePointer, CDestMsgQueue, m_pIMessageRouter)
FIELD3(FieldTypeListEntry, CDestMsgQueue, m_liEmptyDMQs)
FIELD3(FieldTypeDword, CDestMsgQueue, m_cRemovedFromEmptyList)
FIELD3(FieldTypePointer, CDestMsgQueue, m_rgpfqQueues[0])
FIELD3(FieldTypePointer, CDestMsgQueue, m_rgpfqQueues[1])
FIELD3(FieldTypePointer, CDestMsgQueue, m_rgpfqQueues[2])
FIELD3(FieldTypeStruct, CDestMsgQueue, m_fqRetryQueue)
FIELD3(FieldTypeStruct, CDestMsgQueue, m_dmap)
FIELD3(FieldTypeLocalizedFiletime, CDestMsgQueue, m_ftOldest)
FIELD3(FieldTypeDword, CDestMsgQueue, m_cCurrentThreadsEnqueuing)
FIELD4(FieldTypeEmbeddedStruct, CDestMsgQueue, m_aqstats, EmbeddedAQStats)
FIELD4(FieldTypeDWordBitMask, CDestMsgQueue, m_dwFlags, GET_BIT_MASK_DESCRIPTOR(DMQBitmask))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(LinkMsgQueueFields)
FIELD3(FieldTypeClassSignature, CLinkMsgQueue, m_dwSignature)
FIELD3(FieldTypeDword, CLinkMsgQueue, m_lReferences)
FIELD4(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwLinkFlags, GET_BIT_MASK_DESCRIPTOR(LinkFlagsBitMask))
FIELD3(FieldTypePointer, CLinkMsgQueue, m_paqinst)
FIELD3(FieldTypeDword, CLinkMsgQueue, m_cQueues)
FIELD3(FieldTypeStruct, CLinkMsgQueue, m_qlstQueues)
FIELD3(FieldTypePointer, CLinkMsgQueue, m_pdentryLink)
FIELD3(FieldTypeDword, CLinkMsgQueue, m_cConnections)
FIELD3(FieldTypePStr, CLinkMsgQueue, m_szSMTPDomain)
FIELD3(FieldTypePStr, CLinkMsgQueue, m_szConnectorName)
FIELD3(FieldTypePointer, CLinkMsgQueue, m_pIntDomainInfo)
FIELD3(FieldTypeDword, CLinkMsgQueue, m_lConnMgrCount)
FIELD3(FieldTypeDword, CLinkMsgQueue, m_lConsecutiveConnectionFailureCount)
FIELD3(FieldTypeDword, CLinkMsgQueue, m_lConsecutiveMessageFailureCount)
FIELD3(FieldTypeDWordBitMask, CLinkMsgQueue, m_hrDiagnosticError)
FIELD3(FieldTypeStrBuffer, CLinkMsgQueue, m_szDiagnosticVerb)
FIELD3(FieldTypeStrBuffer, CLinkMsgQueue, m_szDiagnosticResponse)
FIELD4(FieldTypeEmbeddedStruct, CLinkMsgQueue, m_aqstats, EmbeddedAQStats)
FIELD4(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwLinkStateFlags, GET_BIT_MASK_DESCRIPTOR(LinkStateBitMask))
FIELD3(FieldTypeLocalizedFiletime, CLinkMsgQueue, m_ftNextScheduledCallback)
FIELD3(FieldTypeStruct, CLinkMsgQueue, m_ftNextScheduledCallback)
FIELD3(FieldTypeLocalizedFiletime, CLinkMsgQueue, m_ftNextRetry)
FIELD3(FieldTypeStruct, CLinkMsgQueue, m_ftNextRetry)
FIELD3(FieldTypeLocalizedFiletime, CLinkMsgQueue, m_ftEmptyExpireTime)
FIELD3(FieldTypeStruct, CLinkMsgQueue, m_ftEmptyExpireTime)
FIELD3(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwSupportedActions)
FIELD3(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwLinkType)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(QuickListFields)
FIELD3(FieldTypeClassSignature, CQuickList, m_dwSignature)
FIELD3(FieldTypeDWordBitMask, CQuickList, m_dwCurrentIndexStart)
FIELD3(FieldTypePointer, CQuickList, m_liListPages.Flink)
FIELD3(FieldTypePointer, CQuickList, m_liListPages.Blink)
FIELD3(FieldTypeDWordBitMask, CQuickList, m_cItems)
FIELD3(FieldTypeStruct, CQuickList, m_rgpvData)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(DSNBufferFields)
FIELD3(FieldTypeClassSignature, CDSNBuffer, m_dwSignature)
FIELD3(FieldTypeDword, CDSNBuffer, m_overlapped.Offset)
FIELD3(FieldTypeDword, CDSNBuffer, m_overlapped.OffsetHigh)
FIELD3(FieldTypePointer, CDSNBuffer, m_overlapped.hEvent)
FIELD3(FieldTypeDword, CDSNBuffer, m_cbOffset)
FIELD3(FieldTypeDword, CDSNBuffer, m_cbFileSize)
FIELD3(FieldTypeDword, CDSNBuffer, m_cFileWrites)
FIELD3(FieldTypePointer, CDSNBuffer, m_pDestFile)
FIELD3(FieldTypeStruct, CDSNBuffer, m_pbFileBuffer)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(AQQuickTimeFields)
FIELD3(FieldTypeClassSignature, CAQQuickTime, m_dwSignature)
FIELD3(FieldTypeDWordBitMask, CAQQuickTime, m_dwLastInternalTime)
FIELD3(FieldTypeDWordBitMask, CAQQuickTime, m_ftSystemStart.dwHighDateTime)
FIELD3(FieldTypeDWordBitMask, CAQQuickTime, m_ftSystemStart.dwLowDateTime)
FIELD3(FieldTypeLocalizedFiletime, CAQQuickTime, m_ftSystemStart)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(AsyncQueueBaseFields)
FIELD3(FieldTypeClassSignature, CAsyncQueueBase, m_dwSignature)
FIELD3(FieldTypeClassSignature, CAsyncQueueBase, m_dwTemplateSignature)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cMaxSyncThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCurrentSyncThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCurrentAsyncThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cItemsPending)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cItemsPerATQThread)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cItemsPerSyncThread)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cScheduledWorkItems)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCurrentCompletionThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cTotalAsyncCompletionThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cTotalSyncCompletionThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cTotalShortCircuitThreads)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCompletionThreadsRequested)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cPendingAsyncCompletions)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cMaxPendingAsyncCompletions)
FIELD3(FieldTypePointer, CAsyncQueueBase, m_pvContext)
FIELD3(FieldTypePointer, CAsyncQueueBase, m_pAtqContext)
FIELD3(FieldTypePointer, CAsyncQueueBase, m_hAtqHandle)
FIELD3(FieldTypeDword, CAsyncQueueBase, m_cThreadsNeeded)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CPoolFields)
FIELD3(FieldTypeClassSignature, CPool, m_dwSignature)
FIELD3(FieldTypeDword, CPool, m_cMaxInstances)
FIELD3(FieldTypeDword, CPool, m_cInstanceSize)
FIELD3(FieldTypeDword, CPool, m_cNumberCommitted)
FIELD3(FieldTypeDword, CPool, m_cNumberInUse)
FIELD3(FieldTypeDword, CPool, m_cNumberAvail)
FIELD3(FieldTypeStruct, CPool, m_PoolCriticalSection)
FIELD3(FieldTypePointer, CPool, m_pFreeList)
FIELD3(FieldTypePointer, CPool, m_pExtraFreeLink)
FIELD3(FieldTypeDword, CPool, m_cIncrementInstances)
FIELD3(FieldTypeDword, CPool, m_cTotalAllocs)
FIELD3(FieldTypeDword, CPool, m_cTotalFrees)
FIELD3(FieldTypeDword, CPool, m_cTotalExtraAllocs)
FIELD3(FieldTypePointer, CPool, m_pLastAlloc)
FIELD3(FieldTypePointer, CPool, m_pLastExtraAlloc)
FIELD3(FieldTypeDword, CPool, m_cFragmentInstances)
FIELD3(FieldTypeDword, CPool, m_cMaxInstances)
FIELD3(FieldTypeDword, CPool, m_cFragments)
FIELD3(FieldTypeStruct, CPool, m_pFragments)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CShareLockNHFields)
FIELD3(FieldTypeDword, CShareLockNH, m_lock.m_lock)
FIELD3(FieldTypeStruct, CShareLockNH, m_lock.m_queue)
FIELD3(FieldTypeDword, CShareLockNH, m_cReadLock)
FIELD3(FieldTypeDword, CShareLockNH, m_cOutReaders)
FIELD3(FieldTypeDword, CShareLockNH, m_cOutAcquiringReaders)
FIELD3(FieldTypeDword, CShareLockNH, m_cExclusiveRefs)
FIELD3(FieldTypePointer, CShareLockNH, m_hWaitingReaders)
FIELD3(FieldTypePointer, CShareLockNH, m_hWaitingWriters)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(MsgEnumFilterFields)
FIELD3(FieldTypeDword, MESSAGE_ENUM_FILTER, dwVersion)
FIELD3(FieldTypeDword, MESSAGE_ENUM_FILTER, cMessages)
FIELD3(FieldTypeDword, MESSAGE_ENUM_FILTER, cbSize)
FIELD3(FieldTypeStruct, MESSAGE_ENUM_FILTER, stDate)
FIELD4(FieldTypeDWordBitMask, MESSAGE_ENUM_FILTER, mefType, GET_BIT_MASK_DESCRIPTOR(MsgEnumFilterFlags))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(MsgFilterFields)
FIELD3(FieldTypeDword, MESSAGE_FILTER, dwVersion)
FIELD3(FieldTypeDword, MESSAGE_FILTER, dwLargerThanSize)
FIELD3(FieldTypePStr, MESSAGE_FILTER, szMessageId)
FIELD3(FieldTypePStr, MESSAGE_FILTER, szMessageSender)
FIELD3(FieldTypePStr, MESSAGE_FILTER, szMessageRecipient)
FIELD3(FieldTypeStruct, MESSAGE_FILTER, stOlderThan)
FIELD4(FieldTypeDWordBitMask, MESSAGE_FILTER, fFlags, GET_BIT_MASK_DESCRIPTOR(MsgFilterFlags))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(InternalMsgFilterFields)
FIELD3(FieldTypeClassSignature, CAQAdminMessageFilter, m_dwSignature)
FIELD3(FieldTypeDword, CAQAdminMessageFilter, m_cMessagesToFind)
FIELD3(FieldTypeDword, CAQAdminMessageFilter, m_cMessagesFound)
FIELD3(FieldTypeDword, CAQAdminMessageFilter, m_dwThresholdSize)
FIELD3(FieldTypePStr, CAQAdminMessageFilter, m_szMessageId)
FIELD3(FieldTypePStr, CAQAdminMessageFilter, m_szMessageSender)
FIELD3(FieldTypePStr, CAQAdminMessageFilter, m_szMessageRecipient)
FIELD3(FieldTypeLocalizedFiletime, CAQAdminMessageFilter, m_ftThresholdTime)
FIELD3(FieldTypePointer, CAQAdminMessageFilter, m_rgMsgInfo)
FIELD3(FieldTypePointer, CAQAdminMessageFilter, m_pCurrentMsgInfo)
FIELD4(FieldTypeDWordBitMask, CAQAdminMessageFilter, m_dwFilterFlags, GET_BIT_MASK_DESCRIPTOR(InternalMsgFilterFlags))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CAQDeferredDeliveryQueueFields)
FIELD3(FieldTypeClassSignature, CAQDeferredDeliveryQueue, m_dwSignature)
FIELD3(FieldTypeListEntry, CAQDeferredDeliveryQueue, m_liQueueHead)
FIELD3(FieldTypeStruct, CAQDeferredDeliveryQueue, m_slPrivateData)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CAQDeferredDeliveryQueueEntryFields)
FIELD3(FieldTypeClassSignature, CAQDeferredDeliveryQueueEntry, m_dwSignature)
FIELD3(FieldTypeListEntry, CAQDeferredDeliveryQueueEntry, m_liQueueEntry)
FIELD3(FieldTypePointer, CAQDeferredDeliveryQueueEntry, m_pIMailMsgProperties)
FIELD3(FieldTypeLocalizedFiletime, CAQDeferredDeliveryQueueEntry, m_ftDeferredDeilveryTime)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(LinkInfoFields)
FIELD3(FieldTypeDword, LINK_INFO, dwVersion)
FIELD3(FieldTypePStr, LINK_INFO, szLinkName)
FIELD3(FieldTypeDword, LINK_INFO, cMessages)
FIELD3(FieldTypeStruct, LINK_INFO, stOldestMessage)
FIELD3(FieldTypeStruct, LINK_INFO, stNextScheduledConnection)
//FIELD4(FieldTypeDWordBitMask, CAQAdminMessageFilter, fStateFlags, GET_BIT_MASK_DESCRIPTOR(LinkInfoFlags))
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CAsyncWorkQueueItemFields)
FIELD3(FieldTypeClassSignature, CAsyncWorkQueueItem, m_dwSignature)
FIELD3(FieldTypeDword, CAsyncWorkQueueItem, m_lReferences)
FIELD3(FieldTypePointer, CAsyncWorkQueueItem, m_pvData)
FIELD3(FieldTypeSymbol, CAsyncWorkQueueItem, m_pfnCompletion)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CAsyncWorkQueueFields)
FIELD3(FieldTypeClassSignature, CAsyncWorkQueue, m_dwSignature)
FIELD3(FieldTypeDword, CAsyncWorkQueue, m_cWorkQueueItems)
FIELD3(FieldTypeStruct, CAsyncWorkQueue, m_asyncq)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CShareLockInstFields)
FIELD3(FieldTypeClassSignature, CShareLockInst, m_dwSignature)
FIELD3(FieldTypeDWordBitMask, CShareLockInst, m_dwFlags)
FIELD3(FieldTypeListEntry, CShareLockInst, m_liLocks)
FIELD3(FieldTypeDword, CShareLockInst, m_cShareAttempts)
FIELD3(FieldTypeDword, CShareLockInst, m_cShareAttemptsBlocked)
FIELD3(FieldTypeDword, CShareLockInst, m_cExclusiveAttempts)
FIELD3(FieldTypeDword, CShareLockInst, m_cExclusiveAttemptsBlocked)
FIELD3(FieldTypePStr, CShareLockInst, m_szDescription)
FIELD3(FieldTypeDWordBitMask, CShareLockInst, m_dwExclusiveThread)
FIELD3(FieldTypePointer, CShareLockInst, m_rgtblkSharedThreadIDs)
FIELD3(FieldTypeDword, CShareLockInst, m_cMaxTrackedSharedThreadIDs)
FIELD3(FieldTypeDword, CShareLockInst, m_cCurrentSharedThreads)
FIELD3(FieldTypeDword, CShareLockInst, m_cMaxConcurrentSharedThreads)
END_FIELD_DESCRIPTOR
BEGIN_FIELD_DESCRIPTOR(CSyncShutdownFields)
FIELD3(FieldTypeClassSignature, CSyncShutdown, m_dwSignature)
FIELD3(FieldTypeDWordBitMask, CSyncShutdown, m_cReadLocks)
FIELD3(FieldTypeStruct, CSyncShutdown, m_slShutdownLock)
END_FIELD_DESCRIPTOR
BEGIN_STRUCT_DESCRIPTOR
{"PerfCounters", sizeof(CAQSvrInst), AQCounterInfoFields},
{"ft", sizeof(FILETIME), CFileTimeFields},
//CAQSvrInst used to be called CCatMsgQueue
{"CCatMsgQueue", sizeof(CAQSvrInst), CMQFields},
STRUCT(CAQSvrInst, CMQFields)
STRUCT(CConnMgr, ConnMgrFields)
STRUCT(CDomainMappingTable, DMTFields)
STRUCT(CDomainEntry, DomainEntryFields)
STRUCT(CDomainConfigTable, DomainConfigTableFields)
STRUCT(CInternalDomainInfo, IntDomainInfoFields)
STRUCT(DomainInfo, DomainInfoFields)
STRUCT(CMsgRef, MsgRefFields)
STRUCT(MessageAck, MsgAckFields)
STRUCT(CDeliveryContext, DeliveryContextFields)
STRUCT(CSMTPConn, SMTPConnFields)
STRUCT(DOMAIN_NAME_TABLE_ENTRY, DomainNameTableEntryFields)
STRUCT(CDestMsgQueue, DestMsgQueueFields)
STRUCT(CLinkMsgQueue, LinkMsgQueueFields)
STRUCT(CQuickList, QuickListFields)
STRUCT(CDSNBuffer, DSNBufferFields)
STRUCT(CAQQuickTime, AQQuickTimeFields)
STRUCT(CAsyncQueueBase, AsyncQueueBaseFields)
STRUCT(CPool, CPoolFields)
STRUCT(CShareLockNH, CShareLockNHFields)
STRUCT(CRefCountedString, RSTRFields)
STRUCT(CAQMsgGuidList, MsgGuidListFields)
STRUCT(CAQMsgGuidListEntry, MsgGuidListEntryFields)
STRUCT(CSMTP_RETRY_HANDLER, RetrySinkFields)
STRUCT(CRETRY_Q, RetryQueueFields)
STRUCT(CRETRY_HASH_ENTRY, RetryHashFields)
STRUCT(CAQStats, AQStatsFields)
STRUCT(CAQAdminMessageFilter, InternalMsgFilterFields)
STRUCT(MESSAGE_FILTER, MsgFilterFields)
STRUCT(MESSAGE_ENUM_FILTER, MsgEnumFilterFields)
STRUCT(LINK_INFO, LinkInfoFields)
STRUCT(CAQDeferredDeliveryQueue, CAQDeferredDeliveryQueueFields)
STRUCT(CAQDeferredDeliveryQueueEntry, CAQDeferredDeliveryQueueEntryFields)
STRUCT(CAsyncWorkQueueItem, CAsyncWorkQueueItemFields)
STRUCT(CAsyncWorkQueue, CAsyncWorkQueueFields)
STRUCT(CShareLockInst, CShareLockInstFields)
STRUCT(CSyncShutdown, CSyncShutdownFields)
END_STRUCT_DESCRIPTOR