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

  1. //-----------------------------------------------------------------------------
  2. //
  3. //
  4. // File: aqdumps.cpp
  5. //
  6. // Description: Definitions of AQ structure dumps for use with ptdbgext.
  7. //
  8. // Author: mikeswa
  9. //
  10. // Copyright (C) 1998 Microsoft Corporation
  11. //
  12. //-----------------------------------------------------------------------------
  13. #define _ANSI_UNICODE_STRINGS_DEFINED_
  14. //baseobj.h is inlcluded
  15. #define _WINSOCKAPI_
  16. #include <atq.h>
  17. #ifdef PLATINUM
  18. #include "phatqdbg.h"
  19. #include <ptrwinst.h>
  20. #include <ptntintf.h>
  21. #else //not PLATINUM
  22. #include "aqdbgext.h"
  23. #include <rwinst.h>
  24. #endif //PLATINUM
  25. #include <aqinst.h>
  26. #include <connmgr.h>
  27. #include <msgref.h>
  28. #include <fifoq.h>
  29. #include <dcontext.h>
  30. #include <smtpconn.h>
  31. #include <destmsgq.h>
  32. #include <linkmsgq.h>
  33. #include <qwiklist.h>
  34. #include <dsnbuff.h>
  35. #include <time.h>
  36. #include <qwiktime.h>
  37. #include <asyncq.h>
  38. #include <retryq.h>
  39. #include <hashentr.h>
  40. #include <aqstats.h>
  41. #include <aqadmsvr.h>
  42. #include <defdlvrq.h>
  43. #include <aqsize.h>
  44. #include <asncwrkq.h>
  45. PEXTLIB_INIT_ROUTINE g_pExtensionInitRoutine = NULL;
  46. DEFINE_EXPORTED_FUNCTIONS
  47. LPSTR ExtensionNames[] = {
  48. "Advanced Queuing debugger extensions",
  49. 0
  50. };
  51. LPSTR Extensions[] = {
  52. "offsets - Lists LIST_ENTRY offsets",
  53. " USAGE: offsets",
  54. "dumpservers - Dump pointers to the virtual server objects",
  55. " USAGE: dumpservers [<virtual server id> [<virtual server list address>]]",
  56. " <virtual server id> - specifies instance ID to dump in detail",
  57. " <virtual server list address> - address of the head of the virtual",
  58. " server LIST_ENTRY. No needed in CDB,",
  59. " but can be found in windbg by typing:",
  60. " x " AQUEUE_VIRTUAL_SERVER_SYMBOL,
  61. "dumpdnt - Dump a given DOMAIN_NAME_TABLE (and it's entries)",
  62. " USAGE: dumpdnt [<Struct Type Name>]",
  63. " <Struct Type Name> - if specified, will dump all entries",
  64. " in the DNT as this type",
  65. "dumplist - Dump a given list of LIST_ENTRY structs",
  66. " USAGE: dumplist <list head> [<entry offset> [<Struct Type Name>]]",
  67. " <list head> - Address of head LIST_ENTRY",
  68. " <entry offset> - The offset in each object of the LIST_ENTRY.",
  69. " This can be determined using the offses command.",
  70. " <Struct Type Name> - Type of object list entries are in.",
  71. "dumpqueue - Dump the CMsgRefs and IMailMsgProperties for a given queue",
  72. " USAGE: dumpqueue <queue> [<search>]",
  73. " <queue> - Address of DMQ, LMQ, or FIFOQ",
  74. " <search> - IMailMsgProperties ptr to search for",
  75. "walkcpool - Dump the currently allocted entries for a *DBG* CPool",
  76. " USAGE: walkcpool <cpool> [<dumpoffset>]",
  77. " <cpool> - Address of static CPool to dump",
  78. " <dumpoffset> - Offset of additional information to dump",
  79. " An example usages is to dump all the STMP_CONNOUT objects and",
  80. " all the ISMTPConn interfaces they point to",
  81. "displaytickcount - Display the localized actual time of a given tick count",
  82. " USAGE: displaytickcount <tickcount>",
  83. " <tickcount> - DWORD tickcount to display",
  84. "workqueue - Display a summary of items in the async work queue",
  85. " USAGE: workqueue <queue>",
  86. " <queue> - Address of work queue (can be obtained from dumpservers)",
  87. "dumplock - Dumps current state (included shared threads) of a CShareLockInst",
  88. " USAGE: dumplock <lock>",
  89. " <lock> - Address of CShareLockInst object",
  90. "findbytes - Searches for a given byte pattern in the process memory",
  91. " USAGE: findbytes <bb> <bb>...",
  92. "findsig - Searchs for a given signature in memory",
  93. " USAGE: findsig <SIG >",
  94. "remotecmd - Starts a remote command window with the given name",
  95. " USAGE: remotecmd <PIPENAME>",
  96. "cpoolusage - Calculates the amount of CPool memory used in the the",
  97. " inetinfo process",
  98. " USAGE: cpoolusage",
  99. " *NOTE* - Requires symbols to work properly",
  100. "zombieq - Checks for DMQs that are marked as empty but not in the empty list",
  101. " USAGE: zombieq [<virtual server ID> [<virtual server list address>]]",
  102. "handlemgmt - Calculates some scores based on usage of handles... can be",
  103. " used to correlate disk usage vs messages submitted and validate new",
  104. " queuing algorthims before formal performance analysis",
  105. " USAGE: handlemgmt [<virtual server ID> [<virtual server list address>]]",
  106. " Here is an explanation of the various scores:",
  107. " Current Messsages Allocated That have been closed:",
  108. " This is the number of messages currently allocated that",
  109. " have been bounced (may be internally queued� assocated with",
  110. " connections� queued remotely�etc).",
  111. " Non-Weighted Score:",
  112. " Useful as a baseline for internally queued messages.",
  113. " Similar to Delivery score if nothing is queued",
  114. " Weighted Score:",
  115. " Only really useful when messages are queued internally. ",
  116. " Related (5x) delivery score if nothing is queued.",
  117. " Submitted Score:",
  118. " Most useful when queues have fully drained� makes sense for",
  119. " local and remote deliveries",
  120. " Delivery Score:",
  121. " Most useful when queues have fully drained� only makes sense",
  122. " for local deliveries.",
  123. " The following are good for correlating test runs� the lower the ",
  124. " backlog, the more the submitted score makes sense. If there is",
  125. " any backlog (and the 2nd % is high), then Weighted score makes good",
  126. " sense for local delivery testing.",
  127. " Messages Backlogged:",
  128. " The is the % of messages submitted that have not been",
  129. " delivered yet... similar numbers suggest the test runs are in",
  130. " similar places.",
  131. " Backlogged Messages Queued Internally:",
  132. " % of messages in the backlog that will appear in the internal",
  133. " queues.\n"
  134. "dsncontexthash - Generates the same hash used in the X-DSNContext",
  135. " header. This can be used to verify which file generated an NDR",
  136. " USAGE: dsncontexthash <filename>",
  137. "linkstate - Dumps the current routing information and link state",
  138. " USAGE: linkstate [<virtual server ID> [<virtual server list address>]]",
  139. " <virtual server id> - specifies instance ID to get data for",
  140. " <virtual server list address> - address of the head of the virtual",
  141. " server LIST_ENTRY. No needed in CDB,",
  142. " but can be found in windbg by typing:",
  143. " x " AQUEUE_VIRTUAL_SERVER_SYMBOL,
  144. "\n",
  145. "***NOTE***\n",
  146. " You MUST have good aqueue.dll symbols to use dumpservers and linkstate",
  147. 0
  148. };
  149. //Stuctures for dumping
  150. //Dummy class for dumping a filetime
  151. class CFileTime
  152. {
  153. public:
  154. FILETIME m_ft;
  155. };
  156. #define MEMBER_BIT_MASK_VALUE(MyClass, x) BIT_MASK_VALUE2(MyClass::x, #x)
  157. BEGIN_FIELD_DESCRIPTOR(CFileTimeFields)
  158. FIELD3(FieldTypeLocalizedFiletime, CFileTime, m_ft)
  159. FIELD3(FieldTypeFiletime, CFileTime, m_ft)
  160. END_FIELD_DESCRIPTOR
  161. BEGIN_BIT_MASK_DESCRIPTOR(CmtInitMask)
  162. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_OK)
  163. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_DMT)
  164. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_DCT)
  165. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_MSGQ)
  166. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_LINKQ)
  167. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_CONMGR)
  168. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_DSN)
  169. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_PRECATQ)
  170. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_PRELOCQ)
  171. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_POSTDSNQ)
  172. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_ROUTER_RESET)
  173. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_WORKQ)
  174. MEMBER_BIT_MASK_VALUE(CAQSvrInst, CMQ_INIT_MSGQ)
  175. END_BIT_MASK_DESCRIPTOR
  176. BEGIN_BIT_MASK_DESCRIPTOR(MsgRefBitMask)
  177. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_LOCAL_RETRY)
  178. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_COUNTED_AS_REMOTE)
  179. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_REMOTE_RETRY)
  180. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_SUPERSEDED)
  181. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_INIT)
  182. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_FROZEN)
  183. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MSG_RETRY_ON_DELETE)
  184. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_ASYNC_BOUNCE_PENDING)
  185. MEMBER_BIT_MASK_VALUE(CMsgRef, MSGREF_MAILMSG_RELEASED)
  186. BIT_MASK_VALUE(eEffPriNormal)
  187. BIT_MASK_VALUE(eEffPriHigh)
  188. END_BIT_MASK_DESCRIPTOR
  189. BEGIN_BIT_MASK_DESCRIPTOR(MsgAckBitMask)
  190. BIT_MASK_VALUE(MESSAGE_STATUS_ALL_DELIVERED)
  191. BIT_MASK_VALUE(MESSAGE_STATUS_RETRY)
  192. BIT_MASK_VALUE(MESSAGE_STATUS_CHECK_RECIPS)
  193. BIT_MASK_VALUE(MESSAGE_STATUS_NDR_ALL)
  194. BIT_MASK_VALUE(MESSAGE_STATUS_DSN_NOT_SUPPORTED)
  195. BIT_MASK_VALUE(MESSAGE_STATUS_EXTENDED_STATUS_CODES)
  196. END_BIT_MASK_DESCRIPTOR
  197. BEGIN_BIT_MASK_DESCRIPTOR(LinkStateBitMask)
  198. BIT_MASK_VALUE(LINK_STATE_RETRY_ENABLED)
  199. BIT_MASK_VALUE(LINK_STATE_SCHED_ENABLED)
  200. BIT_MASK_VALUE(LINK_STATE_ADMIN_FORCE_CONN)
  201. BIT_MASK_VALUE(LINK_STATE_ADMIN_HALT)
  202. BIT_MASK_VALUE(LINK_STATE_CMD_ENABLED)
  203. BIT_MASK_VALUE(LINK_STATE_LINK_NO_LONGER_USED)
  204. BIT_MASK_VALUE2(LINK_STATE_PRIV_ETRN_ENABLED, "LINK_STATE_PRIV_ETRN_ENABLED")
  205. BIT_MASK_VALUE2(LINK_STATE_PRIV_TURN_ENABLED, "LINK_STATE_PRIV_TURN_ENABLED")
  206. BIT_MASK_VALUE2(LINK_STATE_PRIV_CONFIG_TURN_ETRN, "LINK_STATE_PRIV_CONFIG_TURN_ETRN")
  207. BIT_MASK_VALUE2(LINK_STATE_PRIV_NO_NOTIFY, "LINK_STATE_PRIV_NO_NOTIFY")
  208. BIT_MASK_VALUE2(LINK_STATE_PRIV_NO_CONNECTION, "LINK_STATE_PRIV_NO_CONNECTION")
  209. BIT_MASK_VALUE2(LINK_STATE_PRIV_GENERATING_DSNS, "LINK_STATE_PRIV_GENERATING_DSNS")
  210. BIT_MASK_VALUE2(LINK_STATE_PRIV_IGNORE_DELETE_IF_EMPTY, "LINK_STATE_PRIV_IGNORE_DELETE_IF_EMPTY")
  211. BIT_MASK_VALUE2(LINK_STATE_PRIV_HAVE_SENT_NOTIFICATION, "LINK_STATE_PRIV_HAVE_SENT_NOTIFICATION")
  212. BIT_MASK_VALUE2(LINK_STATE_PRIV_HAVE_SENT_NO_LONGER_USED, "LINK_STATE_PRIV_HAVE_SENT_NO_LONGER_USED")
  213. END_BIT_MASK_DESCRIPTOR
  214. BEGIN_BIT_MASK_DESCRIPTOR(LinkFlagsBitMask)
  215. BIT_MASK_VALUE(eLinkFlagsClear)
  216. BIT_MASK_VALUE(eLinkFlagsSentNewNotification)
  217. BIT_MASK_VALUE(eLinkFlagsRouteChangePending)
  218. BIT_MASK_VALUE(eLinkFlagsFileTimeSpinLock)
  219. BIT_MASK_VALUE(eLinkFlagsDiagnosticSpinLock)
  220. BIT_MASK_VALUE(eLinkFlagsConnectionVerifed)
  221. BIT_MASK_VALUE(eLinkFlagsGetInfoFailed)
  222. BIT_MASK_VALUE(eLinkFlagsAQSpecialLinkInfo)
  223. BIT_MASK_VALUE(eLinkFlagsInternalSMTPLinkInfo)
  224. BIT_MASK_VALUE(eLinkFlagsExternalSMTPLinkInfo)
  225. BIT_MASK_VALUE(eLinkFlagsMarkedAsEmpty)
  226. BIT_MASK_VALUE(eLinkFlagsInvalid)
  227. END_BIT_MASK_DESCRIPTOR
  228. BEGIN_BIT_MASK_DESCRIPTOR(DomainInfoBitMask)
  229. BIT_MASK_VALUE(DOMAIN_INFO_REMOTE)
  230. BIT_MASK_VALUE(DOMAIN_INFO_USE_SSL)
  231. BIT_MASK_VALUE(DOMAIN_INFO_SEND_TURN)
  232. BIT_MASK_VALUE(DOMAIN_INFO_SEND_ETRN)
  233. BIT_MASK_VALUE(DOMAIN_INFO_USE_NTLM)
  234. BIT_MASK_VALUE(DOMAIN_INFO_USE_PLAINTEXT)
  235. BIT_MASK_VALUE(DOMAIN_INFO_USE_DPA)
  236. BIT_MASK_VALUE(DOMAIN_INFO_USE_KERBEROS)
  237. BIT_MASK_VALUE(DOMAIN_INFO_USE_CHUNKING)
  238. BIT_MASK_VALUE(DOMAIN_INFO_USE_HELO)
  239. BIT_MASK_VALUE(DOMAIN_INFO_TURN_ONLY)
  240. BIT_MASK_VALUE(DOMAIN_INFO_ETRN_ONLY)
  241. BIT_MASK_VALUE(DOMAIN_INFO_LOCAL_DROP)
  242. BIT_MASK_VALUE(DOMAIN_INFO_LOCAL_MAILBOX)
  243. BIT_MASK_VALUE(DOMAIN_INFO_REMOTE_SMARTHOST)
  244. BIT_MASK_VALUE(DOMAIN_INFO_IP_RELAY)
  245. BIT_MASK_VALUE(DOMAIN_INFO_AUTH_RELAY)
  246. BIT_MASK_VALUE(DOMAIN_INFO_DOMAIN_RELAY)
  247. BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_CHUNKING)
  248. BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_BMIME)
  249. BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_DSN)
  250. BIT_MASK_VALUE(DOMAIN_INFO_DISABLE_PIPELINE)
  251. END_BIT_MASK_DESCRIPTOR
  252. BEGIN_BIT_MASK_DESCRIPTOR(DCTFlags)
  253. MEMBER_BIT_MASK_VALUE(CDomainConfigTable, DOMCFG_DOMAIN_NAME_TABLE_INIT)
  254. MEMBER_BIT_MASK_VALUE(CDomainConfigTable, DOMCFG_FINISH_UPDATE_PENDING)
  255. END_BIT_MASK_DESCRIPTOR
  256. BEGIN_BIT_MASK_DESCRIPTOR(InternalDomainInfoFlags)
  257. BIT_MASK_VALUE(INT_DOMAIN_INFO_INVALID)
  258. BIT_MASK_VALUE(INT_DOMAIN_INFO_OK)
  259. END_BIT_MASK_DESCRIPTOR
  260. BEGIN_BIT_MASK_DESCRIPTOR(ConnectionAckFlags)
  261. BIT_MASK_VALUE(CONNECTION_STATUS_OK)
  262. BIT_MASK_VALUE(CONNECTION_STATUS_FAILED)
  263. BIT_MASK_VALUE(CONNECTION_STATUS_DROPPED)
  264. END_BIT_MASK_DESCRIPTOR
  265. BEGIN_BIT_MASK_DESCRIPTOR(AsyncQueueFlags)
  266. BIT_MASK_VALUE2(CAsyncQueueBase::ASYNC_QUEUE_STATUS_SHUTDOWN, "ASYNC_QUEUE_STATUS_SHUTDOWN")
  267. END_BIT_MASK_DESCRIPTOR
  268. BEGIN_BIT_MASK_DESCRIPTOR(DMQBitmask)
  269. BIT_MASK_VALUE2(CDestMsgQueue::DMQ_INVALID, "DMQ_INVALID")
  270. BIT_MASK_VALUE2(CDestMsgQueue::DMQ_IN_EMPTY_QUEUE_LIST, "DMQ_IN_EMPTY_QUEUE_LIST")
  271. BIT_MASK_VALUE2(CDestMsgQueue::DMQ_SHUTDOWN_SIGNALED, "DMQ_SHUTDOWN_SIGNALED")
  272. BIT_MASK_VALUE2(CDestMsgQueue::DMQ_EMPTY, "DMQ_EMPTY")
  273. BIT_MASK_VALUE2(CDestMsgQueue::DMQ_EXPIRED, "DMQ_EXPIRED")
  274. END_BIT_MASK_DESCRIPTOR
  275. BEGIN_BIT_MASK_DESCRIPTOR(DSNOptions)
  276. BIT_MASK_VALUE(DSN_OPTIONS_DEFAULT)
  277. BIT_MASK_VALUE(DSN_OPTIONS_DEFAULT_RET_HEADERS)
  278. BIT_MASK_VALUE(DSN_OPTIONS_DEFAULT_RET_FULL)
  279. BIT_MASK_VALUE(DSN_OPTIONS_IGNORE_MSG_RET)
  280. BIT_MASK_VALUE(DSN_OPTIONS_SEND_DELAY_DEFAULT)
  281. BIT_MASK_VALUE(DSN_OPTIONS_SEND_DELAY_UPON_REQUEST)
  282. BIT_MASK_VALUE(DSN_OPTIONS_SEND_DELAY_NEVER)
  283. END_BIT_MASK_DESCRIPTOR
  284. BEGIN_BIT_MASK_DESCRIPTOR(MsgEnumFilterFlags)
  285. BIT_MASK_VALUE(MEF_FIRST_N_MESSAGES)
  286. BIT_MASK_VALUE(MEF_N_LARGEST_MESSAGES)
  287. BIT_MASK_VALUE(MEF_N_OLDEST_MESSAGES)
  288. BIT_MASK_VALUE(MEF_OLDER_THAN)
  289. BIT_MASK_VALUE(MEF_LARGER_THAN)
  290. BIT_MASK_VALUE(MEF_INVERTSENSE)
  291. END_BIT_MASK_DESCRIPTOR
  292. BEGIN_BIT_MASK_DESCRIPTOR(MsgFilterFlags)
  293. BIT_MASK_VALUE(MF_MESSAGEID)
  294. BIT_MASK_VALUE(MF_SENDER)
  295. BIT_MASK_VALUE(MF_RECIPIENT)
  296. BIT_MASK_VALUE(MF_SIZE)
  297. BIT_MASK_VALUE(MF_TIME)
  298. BIT_MASK_VALUE(MF_FROZEN)
  299. BIT_MASK_VALUE(MF_INVERTSENSE)
  300. END_BIT_MASK_DESCRIPTOR
  301. BEGIN_BIT_MASK_DESCRIPTOR(InternalMsgFilterFlags)
  302. BIT_MASK_VALUE(AQ_MSG_FILTER_MESSAGEID)
  303. BIT_MASK_VALUE(AQ_MSG_FILTER_SENDER)
  304. BIT_MASK_VALUE(AQ_MSG_FILTER_RECIPIENT)
  305. BIT_MASK_VALUE(AQ_MSG_FILTER_OLDER_THAN)
  306. BIT_MASK_VALUE(AQ_MSG_FILTER_LARGER_THAN)
  307. BIT_MASK_VALUE(AQ_MSG_FILTER_FROZEN)
  308. BIT_MASK_VALUE(AQ_MSG_FILTER_FIRST_N_MESSAGES)
  309. BIT_MASK_VALUE(AQ_MSG_FILTER_N_LARGEST_MESSAGES)
  310. BIT_MASK_VALUE(AQ_MSG_FILTER_N_OLDEST_MESSAGES)
  311. BIT_MASK_VALUE(AQ_MSG_FILTER_INVERTSENSE)
  312. END_BIT_MASK_DESCRIPTOR
  313. BEGIN_FIELD_DESCRIPTOR(DMTFields)
  314. FIELD3(FieldTypeClassSignature, CDomainMappingTable, m_dwSignature)
  315. FIELD3(FieldTypeDword, CDomainMappingTable, m_dwInternalVersion)
  316. FIELD3(FieldTypeDword, CDomainMappingTable, m_cThreadsForEmptyDMQList)
  317. FIELD3(FieldTypeDword, CDomainMappingTable, m_cOutstandingExternalShareLocks)
  318. FIELD3(FieldTypePointer, CDomainMappingTable, m_paqinst)
  319. FIELD3(FieldTypePointer, CDomainMappingTable, m_plmqLocal)
  320. FIELD3(FieldTypePointer, CDomainMappingTable, m_plmqUnreachable)
  321. FIELD3(FieldTypePointer, CDomainMappingTable, m_plmqCurrentlyUnreachable)
  322. FIELD3(FieldTypeListEntry, CDomainMappingTable, m_liEmptyDMQHead)
  323. FIELD3(FieldTypeStruct, CDomainMappingTable, m_dnt)
  324. FIELD3(FieldTypeStruct, CDomainMappingTable, m_slPrivateData)
  325. END_FIELD_DESCRIPTOR
  326. EMBEDDED_STRUCT(CDomainMappingTable, DMTFields, EmbeddedDMT)
  327. BEGIN_FIELD_DESCRIPTOR(AQStatsFields)
  328. FIELD3(FieldTypeClassSignature, CAQStats, m_dwSignature)
  329. FIELD3(FieldTypeDword, CAQStats, m_dwNotifyType)
  330. FIELD3(FieldTypeDword, CAQStats, m_cMsgs)
  331. FIELD3(FieldTypeDword, CAQStats, m_dwHighestPri)
  332. FIELD3(FieldTypePointer, CAQStats, m_pvContext)
  333. FIELD3(FieldTypeDword, CAQStats, m_uliVolume.HighPart)
  334. FIELD3(FieldTypeDword, CAQStats, m_uliVolume.LowPart)
  335. FIELD3(FieldTypeDword, CAQStats, m_cRetryMsgs)
  336. END_FIELD_DESCRIPTOR
  337. EMBEDDED_STRUCT(CAQStats, AQStatsFields, EmbeddedAQStats)
  338. BEGIN_FIELD_DESCRIPTOR(ConnMgrFields)
  339. FIELD3(FieldTypeDword, CConnMgr, m_lReferences)
  340. FIELD3(FieldTypeDword, CConnMgr, m_cConnections)
  341. FIELD3(FieldTypePointer, CConnMgr, m_paqinst)
  342. FIELD3(FieldTypePointer, CConnMgr, m_pqol)
  343. FIELD3(FieldTypePointer, CConnMgr, m_pDefaultRetryHandler)
  344. FIELD3(FieldTypeDword, CConnMgr, m_dwConfigVersion)
  345. FIELD3(FieldTypeDword, CConnMgr, m_cMinMessagesPerConnection)
  346. FIELD3(FieldTypeDword, CConnMgr, m_cMaxLinkConnections)
  347. FIELD3(FieldTypeDword, CConnMgr, m_cMaxMessagesPerConnection)
  348. FIELD3(FieldTypeDword, CConnMgr, m_cMaxConnections)
  349. FIELD3(FieldTypeDword, CConnMgr, m_cGetNextConnectionWaitTime)
  350. END_FIELD_DESCRIPTOR
  351. BEGIN_FIELD_DESCRIPTOR(RSTRFields)
  352. FIELD3(FieldTypeClassSignature, CRefCountedString, m_dwSignature)
  353. FIELD3(FieldTypeDword, CRefCountedString, m_cbStrlen)
  354. FIELD3(FieldTypePStr, CRefCountedString, m_szStr)
  355. END_FIELD_DESCRIPTOR
  356. BEGIN_FIELD_DESCRIPTOR(RetrySinkFields)
  357. FIELD3(FieldTypePointer, CSMTP_RETRY_HANDLER, m_pRetryHash)
  358. FIELD3(FieldTypePointer, CSMTP_RETRY_HANDLER, m_pRetryQueue)
  359. FIELD3(FieldTypeBool, CSMTP_RETRY_HANDLER, m_fHandlerShuttingDown)
  360. FIELD3(FieldTypeBool, CSMTP_RETRY_HANDLER, m_fConfigDataUpdated)
  361. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_ThreadsInRetry)
  362. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwRetryThreshold)
  363. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwGlitchRetrySeconds)
  364. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwFirstRetrySeconds)
  365. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwSecondRetrySeconds)
  366. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwThirdRetrySeconds)
  367. FIELD3(FieldTypeDword, CSMTP_RETRY_HANDLER, m_dwFourthRetrySeconds)
  368. END_FIELD_DESCRIPTOR
  369. BEGIN_FIELD_DESCRIPTOR(RetryQueueFields)
  370. FIELD3(FieldTypeListEntry, CRETRY_Q, m_QHead)
  371. END_FIELD_DESCRIPTOR
  372. BEGIN_FIELD_DESCRIPTOR(RetryHashFields)
  373. FIELD3(FieldTypeClassSignature, CRETRY_HASH_ENTRY, m_Signature)
  374. FIELD3(FieldTypeLong, CRETRY_HASH_ENTRY, m_RefCount)
  375. FIELD3(FieldTypeBool, CRETRY_HASH_ENTRY, m_InQ)
  376. FIELD3(FieldTypeBool, CRETRY_HASH_ENTRY, m_InTable)
  377. FIELD3(FieldTypeLocalizedFiletime, CRETRY_HASH_ENTRY, m_ftEntryInsertedTime)
  378. FIELD3(FieldTypeLocalizedFiletime, CRETRY_HASH_ENTRY, m_ftRetryTime)
  379. FIELD3(FieldTypeDword, CRETRY_HASH_ENTRY, m_cFailureCount)
  380. FIELD3(FieldTypeSymbol, CRETRY_HASH_ENTRY, m_pfnCallbackFn)
  381. FIELD3(FieldTypePointer, CRETRY_HASH_ENTRY, m_pvCallbackContext)
  382. FIELD3(FieldTypeStrBuffer, CRETRY_HASH_ENTRY, m_szDomainName)
  383. FIELD3(FieldTypeListEntry, CRETRY_HASH_ENTRY, m_QLEntry)
  384. FIELD3(FieldTypeListEntry, CRETRY_HASH_ENTRY, m_HLEntry)
  385. #ifdef DEBUG
  386. FIELD3(FieldTypePointer, CRETRY_HASH_ENTRY, m_hTranscriptHandle)
  387. FIELD3(FieldTypeStrBuffer, CRETRY_HASH_ENTRY, m_szTranscriptFile)
  388. #endif //DEBUG
  389. END_FIELD_DESCRIPTOR
  390. BEGIN_FIELD_DESCRIPTOR(CMQFields)
  391. FIELD3(FieldTypeClassSignature, CAQSvrInst, m_dwSignature)
  392. FIELD3(FieldTypeDword, CAQSvrInst, m_lReferences)
  393. FIELD3(FieldTypeDword, CAQSvrInst, m_dwFirstTierRetrySeconds)
  394. FIELD3(FieldTypeDword, CAQSvrInst, m_dwDelayExpireMinutes)
  395. FIELD3(FieldTypeDword, CAQSvrInst, m_dwNDRExpireMinutes)
  396. FIELD3(FieldTypeDword, CAQSvrInst, m_dwLocalDelayExpireMinutes)
  397. FIELD3(FieldTypeDword, CAQSvrInst, m_dwLocalNDRExpireMinutes)
  398. FIELD3(FieldTypeDword, CAQSvrInst, m_cLocalRetriesPending)
  399. FIELD3(FieldTypeDword, CAQSvrInst, m_cCatRetriesPending)
  400. FIELD3(FieldTypeDword, CAQSvrInst, m_cRoutingRetriesPending)
  401. FIELD3(FieldTypePointer, CAQSvrInst, m_pConnMgr)
  402. FIELD3(FieldTypeStruct, CAQSvrInst, m_dct)
  403. FIELD3(FieldTypeStruct, CAQSvrInst, m_qtTime)
  404. FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreCatQueue)
  405. FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreLocalDeliveryQueue)
  406. FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPostDSNQueue)
  407. FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreRoutingQueue)
  408. FIELD3(FieldTypeStruct, CAQSvrInst, m_asyncqPreSubmissionQueue)
  409. FIELD3(FieldTypeStruct, CAQSvrInst, m_aqwWorkQueue)
  410. FIELD3(FieldTypePointer, CAQSvrInst, m_prstrDefaultDomain)
  411. FIELD3(FieldTypePointer, CAQSvrInst, m_prstrServerFQDN)
  412. FIELD3(FieldTypePointer, CAQSvrInst, m_prstrBadMailDir)
  413. FIELD3(FieldTypePointer, CAQSvrInst, m_prstrCopyNDRTo)
  414. FIELD3(FieldTypeStruct, CAQSvrInst, m_mglSupersedeIDs)
  415. FIELD3(FieldTypeStruct, CAQSvrInst, m_defq)
  416. FIELD3(FieldTypeStruct, CAQSvrInst, m_fmq)
  417. FIELD3(FieldTypeStruct, CAQSvrInst, m_aqwWorkQueue)
  418. FIELD4(FieldTypeEmbeddedStruct, CAQSvrInst, m_dmt, EmbeddedDMT)
  419. FIELD3(FieldTypeDword, CAQSvrInst, m_dwDSNLanguageID)
  420. FIELD3(FieldTypeStruct, CAQSvrInst, m_slPrivateData)
  421. FIELD4(FieldTypeDWordBitMask, CAQSvrInst, m_dwDSNOptions, GET_BIT_MASK_DESCRIPTOR(DSNOptions))
  422. FIELD4(FieldTypeDWordBitMask, CAQSvrInst, m_dwInitMask, GET_BIT_MASK_DESCRIPTOR(CmtInitMask))
  423. END_FIELD_DESCRIPTOR
  424. BEGIN_FIELD_DESCRIPTOR(AQCounterInfoFields)
  425. FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalMsgsQueued)
  426. FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsAcked)
  427. FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsAckedRetry)
  428. FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsAckedRetryLocal)
  429. FIELD3(FieldTypeLong, CAQSvrInst, m_cMsgsDeliveredLocal)
  430. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsSubmitted)
  431. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingSubmitEvent)
  432. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingCat)
  433. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingPostCatEvent)
  434. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingRouting)
  435. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingDelivery)
  436. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingLocal)
  437. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingRetry)
  438. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingLocalRetry)
  439. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentQueueMsgInstances)
  440. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteDestQueues)
  441. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHops)
  442. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsEnabled)
  443. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsPendingRetry)
  444. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsPendingSchedule)
  445. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentRemoteNextHopsFrozenByAdmin)
  446. FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalMsgsSubmitted)
  447. FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalExternalMsgsSubmitted)
  448. FIELD3(FieldTypeLong, CAQSvrInst, m_cNDRs)
  449. FIELD3(FieldTypeLong, CAQSvrInst, m_cDelayedDSNs)
  450. FIELD3(FieldTypeLong, CAQSvrInst, m_cDeliveredDSNs)
  451. FIELD3(FieldTypeLong, CAQSvrInst, m_cRelayedDSNs)
  452. FIELD3(FieldTypeLong, CAQSvrInst, m_cExpandedDSNs)
  453. FIELD3(FieldTypeLong, CAQSvrInst, m_cDMTRetries)
  454. FIELD3(FieldTypeLong, CAQSvrInst, m_cSupersededMsgs)
  455. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingDeferredDelivery)
  456. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentResourceFailedMsgsPendingRetry)
  457. FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalMsgsBadmailed)
  458. FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalResetRoutes)
  459. FIELD3(FieldTypeLong, CAQSvrInst, m_cTotalDSNFailures)
  460. FIELD3(FieldTypeLong, CAQSvrInst, m_cCatMsgCalled)
  461. FIELD3(FieldTypeLong, CAQSvrInst, m_cCatCompletionCalled)
  462. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsInLocalDelivery)
  463. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentPendingResetRoutes)
  464. FIELD3(FieldTypeLong, CAQSvrInst, m_cCurrentMsgsPendingSubmit)
  465. END_FIELD_DESCRIPTOR
  466. BEGIN_FIELD_DESCRIPTOR(MsgGuidListFields)
  467. FIELD3(FieldTypeClassSignature, CAQMsgGuidList, m_dwSignature)
  468. FIELD3(FieldTypeListEntry, CAQMsgGuidList, m_liMsgGuidListHead)
  469. FIELD3(FieldTypeStruct, CAQMsgGuidList, m_slPrivateData)
  470. END_FIELD_DESCRIPTOR
  471. BEGIN_FIELD_DESCRIPTOR(MsgGuidListEntryFields)
  472. FIELD3(FieldTypeClassSignature, CAQMsgGuidListEntry, m_dwSignature)
  473. FIELD3(FieldTypeDword, CAQMsgGuidListEntry, m_lReferences)
  474. FIELD3(FieldTypePointer, CAQMsgGuidListEntry, m_pmsgref)
  475. FIELD3(FieldTypePointer, CAQMsgGuidListEntry, m_pmgl)
  476. FIELD3(FieldTypeStruct, CAQMsgGuidListEntry, m_liMsgGuidList)
  477. FIELD3(FieldTypeGuid, CAQMsgGuidListEntry, m_guidMsgID)
  478. END_FIELD_DESCRIPTOR
  479. BEGIN_FIELD_DESCRIPTOR(DomainInfoFields)
  480. FIELD3(FieldTypeDword, DomainInfo, cbVersion)
  481. FIELD3(FieldTypeDword, DomainInfo, dwDomainInfoFlags)
  482. FIELD3(FieldTypeDword, DomainInfo, cbDomainNameLength)
  483. FIELD3(FieldTypePStr, DomainInfo, szDomainName)
  484. END_FIELD_DESCRIPTOR
  485. BEGIN_FIELD_DESCRIPTOR(MsgRefFields)
  486. FIELD3(FieldTypeClassSignature, CMsgRef, m_dwSignature)
  487. FIELD3(FieldTypeDword, CMsgRef, m_lReferences)
  488. FIELD3(FieldTypePointer, CMsgRef, m_paqinst)
  489. FIELD3(FieldTypePointer, CMsgRef, m_pIMailMsgProperties)
  490. FIELD4(FieldTypeDWordBitMask, CMsgRef, m_dwDataFlags, GET_BIT_MASK_DESCRIPTOR(MsgRefBitMask))
  491. FIELD3(FieldTypeDword, CMsgRef, m_cbMsgSize)
  492. FIELD3(FieldTypeDword, CMsgRef, m_cDomains)
  493. FIELD3(FieldTypeDword, CMsgRef, m_cTimesRetried)
  494. FIELD3(FieldTypeStruct, CMsgRef, m_rgpdmqDomains)
  495. FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftQueueEntry)
  496. FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftLocalExpireDelay)
  497. FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftLocalExpireNDR)
  498. FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftRemoteExpireDelay)
  499. FIELD3(FieldTypeLocalizedFiletime, CMsgRef, m_ftRemoteExpireNDR)
  500. END_FIELD_DESCRIPTOR
  501. BEGIN_FIELD_DESCRIPTOR(MsgAckFields)
  502. FIELD3(FieldTypePointer, MessageAck, pIMailMsgProperties)
  503. FIELD3(FieldTypePointer, MessageAck, pvMsgContext)
  504. FIELD4(FieldTypeDWordBitMask, MessageAck, dwMsgStatus, GET_BIT_MASK_DESCRIPTOR(MsgAckBitMask))
  505. FIELD3(FieldTypeDword, MessageAck, cbExtendedStatus)
  506. FIELD3(FieldTypePStr, MessageAck, szExtendedStatus)
  507. END_FIELD_DESCRIPTOR
  508. BEGIN_FIELD_DESCRIPTOR(DeliveryContextFields)
  509. FIELD3(FieldTypeClassSignature, CDeliveryContext, m_dwSignature)
  510. FIELD3(FieldTypePointer, CDeliveryContext, m_pmsgref)
  511. FIELD3(FieldTypePointer, CDeliveryContext, m_pmbmap)
  512. FIELD3(FieldTypeDword, CDeliveryContext, m_cRecips)
  513. FIELD3(FieldTypePointer, CDeliveryContext, m_rgdwRecips)
  514. END_FIELD_DESCRIPTOR
  515. BEGIN_FIELD_DESCRIPTOR(DomainEntryFields)
  516. FIELD3(FieldTypeClassSignature, CDomainEntry, m_dwSignature)
  517. FIELD3(FieldTypeDword, CDomainEntry, m_lReferences)
  518. FIELD3(FieldTypePStr, CDomainEntry, m_szDomainName)
  519. FIELD3(FieldTypeStruct, CDomainEntry, m_dmap)
  520. FIELD3(FieldTypeDword, CDomainEntry, m_cQueues)
  521. FIELD3(FieldTypeDword, CDomainEntry, m_cLinks)
  522. FIELD3(FieldTypeListEntry, CDomainEntry, m_liDestQueues)
  523. FIELD3(FieldTypeListEntry, CDomainEntry, m_liLinks)
  524. END_FIELD_DESCRIPTOR
  525. BEGIN_FIELD_DESCRIPTOR(DomainNameTableEntryFields)
  526. FIELD3(FieldTypeClassSignature, DOMAIN_NAME_TABLE_ENTRY, dwEntrySig)
  527. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pParentEntry)
  528. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pNextEntry)
  529. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pPrevEntry)
  530. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pFirstChildEntry)
  531. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pSiblingEntry)
  532. FIELD3(FieldTypeULong, DOMAIN_NAME_TABLE_ENTRY, NoOfChildren)
  533. FIELD3(FieldTypeAnsiString, DOMAIN_NAME_TABLE_ENTRY, PathSegment)
  534. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pData)
  535. FIELD3(FieldTypePointer, DOMAIN_NAME_TABLE_ENTRY, pWildCardData)
  536. END_FIELD_DESCRIPTOR
  537. BEGIN_FIELD_DESCRIPTOR(DomainConfigTableFields)
  538. FIELD3(FieldTypeClassSignature, CDomainConfigTable, m_dwSignature)
  539. FIELD3(FieldTypeDword, CDomainConfigTable, m_dwCurrentConfigVersion)
  540. FIELD3(FieldTypeStruct, CDomainConfigTable, m_dnt)
  541. FIELD3(FieldTypePointer, CDomainConfigTable, m_pDefaultDomainConfig)
  542. FIELD3(FieldTypeStruct, CDomainConfigTable, m_slPrivateData)
  543. FIELD4(FieldTypeDWordBitMask, CDomainConfigTable, m_dwFlags, GET_BIT_MASK_DESCRIPTOR(DCTFlags))
  544. END_FIELD_DESCRIPTOR
  545. BEGIN_FIELD_DESCRIPTOR(IntDomainInfoFields)
  546. FIELD3(FieldTypeClassSignature, CInternalDomainInfo, m_dwSignature)
  547. FIELD3(FieldTypeDword, CInternalDomainInfo, m_lReferences)
  548. FIELD3(FieldTypeDword, CInternalDomainInfo, m_dwVersion)
  549. FIELD4(FieldTypeDWordBitMask, CInternalDomainInfo, m_dwIntDomainInfoFlags, GET_BIT_MASK_DESCRIPTOR(InternalDomainInfoFlags))
  550. FIELD3(FieldTypeDword, CInternalDomainInfo, m_DomainInfo.cbVersion)
  551. FIELD3(FieldTypePStr, CInternalDomainInfo, m_DomainInfo.szDomainName)
  552. FIELD3(FieldTypePStr, CInternalDomainInfo, m_DomainInfo.szDropDirectory)
  553. FIELD3(FieldTypePStr, CInternalDomainInfo, m_DomainInfo.szSmartHostDomainName)
  554. FIELD4(FieldTypeDWordBitMask, CInternalDomainInfo, m_DomainInfo.dwDomainInfoFlags, GET_BIT_MASK_DESCRIPTOR(DomainInfoBitMask))
  555. END_FIELD_DESCRIPTOR
  556. BEGIN_FIELD_DESCRIPTOR(SMTPConnFields)
  557. FIELD3(FieldTypeClassSignature, CSMTPConn, m_dwSignature)
  558. FIELD3(FieldTypeDword, CSMTPConn, m_lReferences)
  559. FIELD3(FieldTypePointer, CSMTPConn, m_plmq)
  560. FIELD3(FieldTypePointer, CSMTPConn, m_pConnMgr)
  561. FIELD3(FieldTypePointer, CSMTPConn, m_pIntDomainInfo)
  562. FIELD3(FieldTypeDword, CSMTPConn, m_cFailedMsgs)
  563. FIELD3(FieldTypeDword, CSMTPConn, m_cTriedMsgs)
  564. FIELD3(FieldTypeDword, CSMTPConn, m_cAcks)
  565. FIELD3(FieldTypeDWordBitMask, CSMTPConn, m_dwTickCountOfLastAck)
  566. FIELD3(FieldTypePStr, CSMTPConn, m_szDomainName)
  567. FIELD4(FieldTypeDWordBitMask, CSMTPConn, m_dwConnectionStatus, GET_BIT_MASK_DESCRIPTOR(ConnectionAckFlags))
  568. END_FIELD_DESCRIPTOR
  569. BEGIN_FIELD_DESCRIPTOR(DestMsgQueueFields)
  570. FIELD3(FieldTypeClassSignature, CDestMsgQueue, m_dwSignature)
  571. FIELD3(FieldTypeDword, CDestMsgQueue, m_lReferences)
  572. FIELD3(FieldTypePointer, CDestMsgQueue, m_plmq)
  573. FIELD3(FieldTypePointer, CDestMsgQueue, m_pvLinkContext)
  574. FIELD3(FieldTypePointer, CDestMsgQueue, m_paqinst)
  575. FIELD3(FieldTypeListEntry, CDestMsgQueue, m_liDomainEntryDMQs)
  576. FIELD3(FieldTypeStruct, CDestMsgQueue, m_aqmt)
  577. FIELD3(FieldTypeDword, CDestMsgQueue, m_cMessageTypeRefs)
  578. FIELD3(FieldTypePointer, CDestMsgQueue, m_pIMessageRouter)
  579. FIELD3(FieldTypeListEntry, CDestMsgQueue, m_liEmptyDMQs)
  580. FIELD3(FieldTypeDword, CDestMsgQueue, m_cRemovedFromEmptyList)
  581. FIELD3(FieldTypePointer, CDestMsgQueue, m_rgpfqQueues[0])
  582. FIELD3(FieldTypePointer, CDestMsgQueue, m_rgpfqQueues[1])
  583. FIELD3(FieldTypePointer, CDestMsgQueue, m_rgpfqQueues[2])
  584. FIELD3(FieldTypeStruct, CDestMsgQueue, m_fqRetryQueue)
  585. FIELD3(FieldTypeStruct, CDestMsgQueue, m_dmap)
  586. FIELD3(FieldTypeLocalizedFiletime, CDestMsgQueue, m_ftOldest)
  587. FIELD3(FieldTypeDword, CDestMsgQueue, m_cCurrentThreadsEnqueuing)
  588. FIELD4(FieldTypeEmbeddedStruct, CDestMsgQueue, m_aqstats, EmbeddedAQStats)
  589. FIELD4(FieldTypeDWordBitMask, CDestMsgQueue, m_dwFlags, GET_BIT_MASK_DESCRIPTOR(DMQBitmask))
  590. END_FIELD_DESCRIPTOR
  591. BEGIN_FIELD_DESCRIPTOR(LinkMsgQueueFields)
  592. FIELD3(FieldTypeClassSignature, CLinkMsgQueue, m_dwSignature)
  593. FIELD3(FieldTypeDword, CLinkMsgQueue, m_lReferences)
  594. FIELD4(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwLinkFlags, GET_BIT_MASK_DESCRIPTOR(LinkFlagsBitMask))
  595. FIELD3(FieldTypePointer, CLinkMsgQueue, m_paqinst)
  596. FIELD3(FieldTypeDword, CLinkMsgQueue, m_cQueues)
  597. FIELD3(FieldTypeStruct, CLinkMsgQueue, m_qlstQueues)
  598. FIELD3(FieldTypePointer, CLinkMsgQueue, m_pdentryLink)
  599. FIELD3(FieldTypeDword, CLinkMsgQueue, m_cConnections)
  600. FIELD3(FieldTypePStr, CLinkMsgQueue, m_szSMTPDomain)
  601. FIELD3(FieldTypePStr, CLinkMsgQueue, m_szConnectorName)
  602. FIELD3(FieldTypePointer, CLinkMsgQueue, m_pIntDomainInfo)
  603. FIELD3(FieldTypeDword, CLinkMsgQueue, m_lConnMgrCount)
  604. FIELD3(FieldTypeDword, CLinkMsgQueue, m_lConsecutiveConnectionFailureCount)
  605. FIELD3(FieldTypeDword, CLinkMsgQueue, m_lConsecutiveMessageFailureCount)
  606. FIELD3(FieldTypeDWordBitMask, CLinkMsgQueue, m_hrDiagnosticError)
  607. FIELD3(FieldTypeStrBuffer, CLinkMsgQueue, m_szDiagnosticVerb)
  608. FIELD3(FieldTypeStrBuffer, CLinkMsgQueue, m_szDiagnosticResponse)
  609. FIELD4(FieldTypeEmbeddedStruct, CLinkMsgQueue, m_aqstats, EmbeddedAQStats)
  610. FIELD4(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwLinkStateFlags, GET_BIT_MASK_DESCRIPTOR(LinkStateBitMask))
  611. FIELD3(FieldTypeLocalizedFiletime, CLinkMsgQueue, m_ftNextScheduledCallback)
  612. FIELD3(FieldTypeStruct, CLinkMsgQueue, m_ftNextScheduledCallback)
  613. FIELD3(FieldTypeLocalizedFiletime, CLinkMsgQueue, m_ftNextRetry)
  614. FIELD3(FieldTypeStruct, CLinkMsgQueue, m_ftNextRetry)
  615. FIELD3(FieldTypeLocalizedFiletime, CLinkMsgQueue, m_ftEmptyExpireTime)
  616. FIELD3(FieldTypeStruct, CLinkMsgQueue, m_ftEmptyExpireTime)
  617. FIELD3(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwSupportedActions)
  618. FIELD3(FieldTypeDWordBitMask, CLinkMsgQueue, m_dwLinkType)
  619. END_FIELD_DESCRIPTOR
  620. BEGIN_FIELD_DESCRIPTOR(QuickListFields)
  621. FIELD3(FieldTypeClassSignature, CQuickList, m_dwSignature)
  622. FIELD3(FieldTypeDWordBitMask, CQuickList, m_dwCurrentIndexStart)
  623. FIELD3(FieldTypePointer, CQuickList, m_liListPages.Flink)
  624. FIELD3(FieldTypePointer, CQuickList, m_liListPages.Blink)
  625. FIELD3(FieldTypeDWordBitMask, CQuickList, m_cItems)
  626. FIELD3(FieldTypeStruct, CQuickList, m_rgpvData)
  627. END_FIELD_DESCRIPTOR
  628. BEGIN_FIELD_DESCRIPTOR(DSNBufferFields)
  629. FIELD3(FieldTypeClassSignature, CDSNBuffer, m_dwSignature)
  630. FIELD3(FieldTypeDword, CDSNBuffer, m_overlapped.Offset)
  631. FIELD3(FieldTypeDword, CDSNBuffer, m_overlapped.OffsetHigh)
  632. FIELD3(FieldTypePointer, CDSNBuffer, m_overlapped.hEvent)
  633. FIELD3(FieldTypeDword, CDSNBuffer, m_cbOffset)
  634. FIELD3(FieldTypeDword, CDSNBuffer, m_cbFileSize)
  635. FIELD3(FieldTypeDword, CDSNBuffer, m_cFileWrites)
  636. FIELD3(FieldTypePointer, CDSNBuffer, m_pDestFile)
  637. FIELD3(FieldTypeStruct, CDSNBuffer, m_pbFileBuffer)
  638. END_FIELD_DESCRIPTOR
  639. BEGIN_FIELD_DESCRIPTOR(AQQuickTimeFields)
  640. FIELD3(FieldTypeClassSignature, CAQQuickTime, m_dwSignature)
  641. FIELD3(FieldTypeDWordBitMask, CAQQuickTime, m_dwLastInternalTime)
  642. FIELD3(FieldTypeDWordBitMask, CAQQuickTime, m_ftSystemStart.dwHighDateTime)
  643. FIELD3(FieldTypeDWordBitMask, CAQQuickTime, m_ftSystemStart.dwLowDateTime)
  644. FIELD3(FieldTypeLocalizedFiletime, CAQQuickTime, m_ftSystemStart)
  645. END_FIELD_DESCRIPTOR
  646. BEGIN_FIELD_DESCRIPTOR(AsyncQueueBaseFields)
  647. FIELD3(FieldTypeClassSignature, CAsyncQueueBase, m_dwSignature)
  648. FIELD3(FieldTypeClassSignature, CAsyncQueueBase, m_dwTemplateSignature)
  649. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cMaxSyncThreads)
  650. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCurrentSyncThreads)
  651. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCurrentAsyncThreads)
  652. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cItemsPending)
  653. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cItemsPerATQThread)
  654. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cItemsPerSyncThread)
  655. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cScheduledWorkItems)
  656. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCurrentCompletionThreads)
  657. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cTotalAsyncCompletionThreads)
  658. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cTotalSyncCompletionThreads)
  659. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cTotalShortCircuitThreads)
  660. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cCompletionThreadsRequested)
  661. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cPendingAsyncCompletions)
  662. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cMaxPendingAsyncCompletions)
  663. FIELD3(FieldTypePointer, CAsyncQueueBase, m_pvContext)
  664. FIELD3(FieldTypePointer, CAsyncQueueBase, m_pAtqContext)
  665. FIELD3(FieldTypePointer, CAsyncQueueBase, m_hAtqHandle)
  666. FIELD3(FieldTypeDword, CAsyncQueueBase, m_cThreadsNeeded)
  667. END_FIELD_DESCRIPTOR
  668. BEGIN_FIELD_DESCRIPTOR(CPoolFields)
  669. FIELD3(FieldTypeClassSignature, CPool, m_dwSignature)
  670. FIELD3(FieldTypeDword, CPool, m_cMaxInstances)
  671. FIELD3(FieldTypeDword, CPool, m_cInstanceSize)
  672. FIELD3(FieldTypeDword, CPool, m_cNumberCommitted)
  673. FIELD3(FieldTypeDword, CPool, m_cNumberInUse)
  674. FIELD3(FieldTypeDword, CPool, m_cNumberAvail)
  675. FIELD3(FieldTypeStruct, CPool, m_PoolCriticalSection)
  676. FIELD3(FieldTypePointer, CPool, m_pFreeList)
  677. FIELD3(FieldTypePointer, CPool, m_pExtraFreeLink)
  678. FIELD3(FieldTypeDword, CPool, m_cIncrementInstances)
  679. FIELD3(FieldTypeDword, CPool, m_cTotalAllocs)
  680. FIELD3(FieldTypeDword, CPool, m_cTotalFrees)
  681. FIELD3(FieldTypeDword, CPool, m_cTotalExtraAllocs)
  682. FIELD3(FieldTypePointer, CPool, m_pLastAlloc)
  683. FIELD3(FieldTypePointer, CPool, m_pLastExtraAlloc)
  684. FIELD3(FieldTypeDword, CPool, m_cFragmentInstances)
  685. FIELD3(FieldTypeDword, CPool, m_cMaxInstances)
  686. FIELD3(FieldTypeDword, CPool, m_cFragments)
  687. FIELD3(FieldTypeStruct, CPool, m_pFragments)
  688. END_FIELD_DESCRIPTOR
  689. BEGIN_FIELD_DESCRIPTOR(CShareLockNHFields)
  690. FIELD3(FieldTypeDword, CShareLockNH, m_lock.m_lock)
  691. FIELD3(FieldTypeStruct, CShareLockNH, m_lock.m_queue)
  692. FIELD3(FieldTypeDword, CShareLockNH, m_cReadLock)
  693. FIELD3(FieldTypeDword, CShareLockNH, m_cOutReaders)
  694. FIELD3(FieldTypeDword, CShareLockNH, m_cOutAcquiringReaders)
  695. FIELD3(FieldTypeDword, CShareLockNH, m_cExclusiveRefs)
  696. FIELD3(FieldTypePointer, CShareLockNH, m_hWaitingReaders)
  697. FIELD3(FieldTypePointer, CShareLockNH, m_hWaitingWriters)
  698. END_FIELD_DESCRIPTOR
  699. BEGIN_FIELD_DESCRIPTOR(MsgEnumFilterFields)
  700. FIELD3(FieldTypeDword, MESSAGE_ENUM_FILTER, dwVersion)
  701. FIELD3(FieldTypeDword, MESSAGE_ENUM_FILTER, cMessages)
  702. FIELD3(FieldTypeDword, MESSAGE_ENUM_FILTER, cbSize)
  703. FIELD3(FieldTypeStruct, MESSAGE_ENUM_FILTER, stDate)
  704. FIELD4(FieldTypeDWordBitMask, MESSAGE_ENUM_FILTER, mefType, GET_BIT_MASK_DESCRIPTOR(MsgEnumFilterFlags))
  705. END_FIELD_DESCRIPTOR
  706. BEGIN_FIELD_DESCRIPTOR(MsgFilterFields)
  707. FIELD3(FieldTypeDword, MESSAGE_FILTER, dwVersion)
  708. FIELD3(FieldTypeDword, MESSAGE_FILTER, dwLargerThanSize)
  709. FIELD3(FieldTypePStr, MESSAGE_FILTER, szMessageId)
  710. FIELD3(FieldTypePStr, MESSAGE_FILTER, szMessageSender)
  711. FIELD3(FieldTypePStr, MESSAGE_FILTER, szMessageRecipient)
  712. FIELD3(FieldTypeStruct, MESSAGE_FILTER, stOlderThan)
  713. FIELD4(FieldTypeDWordBitMask, MESSAGE_FILTER, fFlags, GET_BIT_MASK_DESCRIPTOR(MsgFilterFlags))
  714. END_FIELD_DESCRIPTOR
  715. BEGIN_FIELD_DESCRIPTOR(InternalMsgFilterFields)
  716. FIELD3(FieldTypeClassSignature, CAQAdminMessageFilter, m_dwSignature)
  717. FIELD3(FieldTypeDword, CAQAdminMessageFilter, m_cMessagesToFind)
  718. FIELD3(FieldTypeDword, CAQAdminMessageFilter, m_cMessagesFound)
  719. FIELD3(FieldTypeDword, CAQAdminMessageFilter, m_dwThresholdSize)
  720. FIELD3(FieldTypePStr, CAQAdminMessageFilter, m_szMessageId)
  721. FIELD3(FieldTypePStr, CAQAdminMessageFilter, m_szMessageSender)
  722. FIELD3(FieldTypePStr, CAQAdminMessageFilter, m_szMessageRecipient)
  723. FIELD3(FieldTypeLocalizedFiletime, CAQAdminMessageFilter, m_ftThresholdTime)
  724. FIELD3(FieldTypePointer, CAQAdminMessageFilter, m_rgMsgInfo)
  725. FIELD3(FieldTypePointer, CAQAdminMessageFilter, m_pCurrentMsgInfo)
  726. FIELD4(FieldTypeDWordBitMask, CAQAdminMessageFilter, m_dwFilterFlags, GET_BIT_MASK_DESCRIPTOR(InternalMsgFilterFlags))
  727. END_FIELD_DESCRIPTOR
  728. BEGIN_FIELD_DESCRIPTOR(CAQDeferredDeliveryQueueFields)
  729. FIELD3(FieldTypeClassSignature, CAQDeferredDeliveryQueue, m_dwSignature)
  730. FIELD3(FieldTypeListEntry, CAQDeferredDeliveryQueue, m_liQueueHead)
  731. FIELD3(FieldTypeStruct, CAQDeferredDeliveryQueue, m_slPrivateData)
  732. END_FIELD_DESCRIPTOR
  733. BEGIN_FIELD_DESCRIPTOR(CAQDeferredDeliveryQueueEntryFields)
  734. FIELD3(FieldTypeClassSignature, CAQDeferredDeliveryQueueEntry, m_dwSignature)
  735. FIELD3(FieldTypeListEntry, CAQDeferredDeliveryQueueEntry, m_liQueueEntry)
  736. FIELD3(FieldTypePointer, CAQDeferredDeliveryQueueEntry, m_pIMailMsgProperties)
  737. FIELD3(FieldTypeLocalizedFiletime, CAQDeferredDeliveryQueueEntry, m_ftDeferredDeilveryTime)
  738. END_FIELD_DESCRIPTOR
  739. BEGIN_FIELD_DESCRIPTOR(LinkInfoFields)
  740. FIELD3(FieldTypeDword, LINK_INFO, dwVersion)
  741. FIELD3(FieldTypePStr, LINK_INFO, szLinkName)
  742. FIELD3(FieldTypeDword, LINK_INFO, cMessages)
  743. FIELD3(FieldTypeStruct, LINK_INFO, stOldestMessage)
  744. FIELD3(FieldTypeStruct, LINK_INFO, stNextScheduledConnection)
  745. //FIELD4(FieldTypeDWordBitMask, CAQAdminMessageFilter, fStateFlags, GET_BIT_MASK_DESCRIPTOR(LinkInfoFlags))
  746. END_FIELD_DESCRIPTOR
  747. BEGIN_FIELD_DESCRIPTOR(CAsyncWorkQueueItemFields)
  748. FIELD3(FieldTypeClassSignature, CAsyncWorkQueueItem, m_dwSignature)
  749. FIELD3(FieldTypeDword, CAsyncWorkQueueItem, m_lReferences)
  750. FIELD3(FieldTypePointer, CAsyncWorkQueueItem, m_pvData)
  751. FIELD3(FieldTypeSymbol, CAsyncWorkQueueItem, m_pfnCompletion)
  752. END_FIELD_DESCRIPTOR
  753. BEGIN_FIELD_DESCRIPTOR(CAsyncWorkQueueFields)
  754. FIELD3(FieldTypeClassSignature, CAsyncWorkQueue, m_dwSignature)
  755. FIELD3(FieldTypeDword, CAsyncWorkQueue, m_cWorkQueueItems)
  756. FIELD3(FieldTypeStruct, CAsyncWorkQueue, m_asyncq)
  757. END_FIELD_DESCRIPTOR
  758. BEGIN_FIELD_DESCRIPTOR(CShareLockInstFields)
  759. FIELD3(FieldTypeClassSignature, CShareLockInst, m_dwSignature)
  760. FIELD3(FieldTypeDWordBitMask, CShareLockInst, m_dwFlags)
  761. FIELD3(FieldTypeListEntry, CShareLockInst, m_liLocks)
  762. FIELD3(FieldTypeDword, CShareLockInst, m_cShareAttempts)
  763. FIELD3(FieldTypeDword, CShareLockInst, m_cShareAttemptsBlocked)
  764. FIELD3(FieldTypeDword, CShareLockInst, m_cExclusiveAttempts)
  765. FIELD3(FieldTypeDword, CShareLockInst, m_cExclusiveAttemptsBlocked)
  766. FIELD3(FieldTypePStr, CShareLockInst, m_szDescription)
  767. FIELD3(FieldTypeDWordBitMask, CShareLockInst, m_dwExclusiveThread)
  768. FIELD3(FieldTypePointer, CShareLockInst, m_rgtblkSharedThreadIDs)
  769. FIELD3(FieldTypeDword, CShareLockInst, m_cMaxTrackedSharedThreadIDs)
  770. FIELD3(FieldTypeDword, CShareLockInst, m_cCurrentSharedThreads)
  771. FIELD3(FieldTypeDword, CShareLockInst, m_cMaxConcurrentSharedThreads)
  772. END_FIELD_DESCRIPTOR
  773. BEGIN_FIELD_DESCRIPTOR(CSyncShutdownFields)
  774. FIELD3(FieldTypeClassSignature, CSyncShutdown, m_dwSignature)
  775. FIELD3(FieldTypeDWordBitMask, CSyncShutdown, m_cReadLocks)
  776. FIELD3(FieldTypeStruct, CSyncShutdown, m_slShutdownLock)
  777. END_FIELD_DESCRIPTOR
  778. BEGIN_STRUCT_DESCRIPTOR
  779. {"PerfCounters", sizeof(CAQSvrInst), AQCounterInfoFields},
  780. {"ft", sizeof(FILETIME), CFileTimeFields},
  781. //CAQSvrInst used to be called CCatMsgQueue
  782. {"CCatMsgQueue", sizeof(CAQSvrInst), CMQFields},
  783. STRUCT(CAQSvrInst, CMQFields)
  784. STRUCT(CConnMgr, ConnMgrFields)
  785. STRUCT(CDomainMappingTable, DMTFields)
  786. STRUCT(CDomainEntry, DomainEntryFields)
  787. STRUCT(CDomainConfigTable, DomainConfigTableFields)
  788. STRUCT(CInternalDomainInfo, IntDomainInfoFields)
  789. STRUCT(DomainInfo, DomainInfoFields)
  790. STRUCT(CMsgRef, MsgRefFields)
  791. STRUCT(MessageAck, MsgAckFields)
  792. STRUCT(CDeliveryContext, DeliveryContextFields)
  793. STRUCT(CSMTPConn, SMTPConnFields)
  794. STRUCT(DOMAIN_NAME_TABLE_ENTRY, DomainNameTableEntryFields)
  795. STRUCT(CDestMsgQueue, DestMsgQueueFields)
  796. STRUCT(CLinkMsgQueue, LinkMsgQueueFields)
  797. STRUCT(CQuickList, QuickListFields)
  798. STRUCT(CDSNBuffer, DSNBufferFields)
  799. STRUCT(CAQQuickTime, AQQuickTimeFields)
  800. STRUCT(CAsyncQueueBase, AsyncQueueBaseFields)
  801. STRUCT(CPool, CPoolFields)
  802. STRUCT(CShareLockNH, CShareLockNHFields)
  803. STRUCT(CRefCountedString, RSTRFields)
  804. STRUCT(CAQMsgGuidList, MsgGuidListFields)
  805. STRUCT(CAQMsgGuidListEntry, MsgGuidListEntryFields)
  806. STRUCT(CSMTP_RETRY_HANDLER, RetrySinkFields)
  807. STRUCT(CRETRY_Q, RetryQueueFields)
  808. STRUCT(CRETRY_HASH_ENTRY, RetryHashFields)
  809. STRUCT(CAQStats, AQStatsFields)
  810. STRUCT(CAQAdminMessageFilter, InternalMsgFilterFields)
  811. STRUCT(MESSAGE_FILTER, MsgFilterFields)
  812. STRUCT(MESSAGE_ENUM_FILTER, MsgEnumFilterFields)
  813. STRUCT(LINK_INFO, LinkInfoFields)
  814. STRUCT(CAQDeferredDeliveryQueue, CAQDeferredDeliveryQueueFields)
  815. STRUCT(CAQDeferredDeliveryQueueEntry, CAQDeferredDeliveryQueueEntryFields)
  816. STRUCT(CAsyncWorkQueueItem, CAsyncWorkQueueItemFields)
  817. STRUCT(CAsyncWorkQueue, CAsyncWorkQueueFields)
  818. STRUCT(CShareLockInst, CShareLockInstFields)
  819. STRUCT(CSyncShutdown, CSyncShutdownFields)
  820. END_STRUCT_DESCRIPTOR