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.

187 lines
3.6 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. extapi.hxx
  5. Abstract:
  6. This header file declares general macros and routines for
  7. debugger extension routines.
  8. Author:
  9. JasonHa
  10. --*/
  11. #ifndef _EXTAPI_HXX_
  12. #define _EXTAPI_HXX_
  13. extern const BOOL ClientInitialized;
  14. #define INIT_API() \
  15. HRESULT Status; \
  16. const BOOL ClientInitialized = TRUE; \
  17. if ((Status = ExtQuery(Client)) != S_OK) return Status
  18. #define EXIT_API(hr) \
  19. do { \
  20. if (ClientInitialized) ExtRelease(); \
  21. return (hr); \
  22. } while (0)
  23. // Safe release and NULL.
  24. #define EXT_RELEASE(Unk) \
  25. ((Unk) != NULL ? ((Unk)->Release(), (Unk) = NULL) : NULL)
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29. // Global variables initialized by ExtQuery/INIT_API.
  30. extern PDEBUG_ADVANCED g_pExtAdvanced;
  31. extern PDEBUG_CLIENT g_pExtClient;
  32. extern PDEBUG_CONTROL g_pExtControl;
  33. extern PDEBUG_DATA_SPACES g_pExtData;
  34. extern PDEBUG_REGISTERS g_pExtRegisters;
  35. extern PDEBUG_SYMBOLS g_pExtSymbols;
  36. extern PDEBUG_SYSTEM_OBJECTS g_pExtSystem;
  37. HRESULT
  38. ExtQuery(PDEBUG_CLIENT Client);
  39. void
  40. ExtRelease(BOOL Cleanup = FALSE);
  41. // Normal output.
  42. void __cdecl ExtOut(PCSTR Format, ...);
  43. // Error output.
  44. void __cdecl ExtErr(PCSTR Format, ...);
  45. // Warning output.
  46. void __cdecl ExtWarn(PCSTR Format, ...);
  47. // Verbose output.
  48. void __cdecl ExtVerb(PCSTR Format, ...);
  49. HRESULT
  50. ReadSymbolData(
  51. IN PDEBUG_CLIENT Client,
  52. IN PCSTR Symbol,
  53. OUT PVOID Buffer,
  54. IN ULONG BufferSize,
  55. OUT OPTIONAL PULONG SizeRead
  56. );
  57. #define EVALUATE_DEFAULT_TYPE DEBUG_VALUE_INVALID
  58. #define EVALUATE_DEFAULT_RADIX 0
  59. #define EVALUATE_COMPACT_EXPR 1
  60. #define EVALUATE_DEFAULT_FLAGS 0
  61. HRESULT
  62. Evaluate(
  63. IN PDEBUG_CLIENT Client,
  64. IN PCSTR Expression,
  65. IN ULONG DesiredType,
  66. IN ULONG Radix,
  67. OUT PDEBUG_VALUE Value,
  68. OUT OPTIONAL PULONG RemainderIndex = NULL,
  69. OUT OPTIONAL PULONG StartIndex = NULL,
  70. IN OPTIONAL FLONG Flags = EVALUATE_DEFAULT_FLAGS
  71. );
  72. HRESULT
  73. DumpType(
  74. IN PDEBUG_CLIENT Client,
  75. IN PCSTR Type,
  76. IN ULONG64 Offset,
  77. IN ULONG Flags = DEBUG_OUTTYPE_DEFAULT,
  78. IN OutputControl *OutCtl = NULL,
  79. IN BOOL Physical = FALSE
  80. );
  81. HRESULT
  82. ExtDumpType(
  83. IN PDEBUG_CLIENT Client,
  84. IN PCSTR ExtName,
  85. IN PCSTR Type,
  86. IN PCSTR Args
  87. );
  88. HRESULT
  89. ReadPointerPhysical(
  90. IN PDEBUG_CLIENT Client,
  91. IN ULONG64 Offset,
  92. OUT PULONG64 Ptr
  93. );
  94. HRESULT
  95. GetTypeId(
  96. IN PDEBUG_CLIENT Client,
  97. IN PCSTR Type,
  98. OUT PULONG TypeId,
  99. OUT OPTIONAL PULONG64 Module
  100. );
  101. HRESULT
  102. GetFieldSize(
  103. IN PDEBUG_CLIENT Client,
  104. IN ULONG64 Module,
  105. IN ULONG TypeId,
  106. IN PCSTR FieldPath,
  107. OUT PULONG Size,
  108. OUT OPTIONAL PULONG Length = NULL,
  109. OUT OPTIONAL PULONG EntrySize = NULL
  110. );
  111. ULONG
  112. DbgIntValTypeFromSize(
  113. IN ULONG Size
  114. );
  115. BOOL
  116. GetArrayDimensions(
  117. IN PDEBUG_CLIENT Client,
  118. IN PCSTR Type,
  119. OPTIONAL IN PCSTR Field,
  120. OPTIONAL OUT PULONG ArraySize,
  121. OPTIONAL OUT PULONG Length,
  122. OPTIONAL OUT PULONG EntrySize
  123. );
  124. #ifdef __cplusplus
  125. }
  126. #endif
  127. class ExtApiClass
  128. {
  129. public:
  130. ExtApiClass(PDEBUG_CLIENT);
  131. ~ExtApiClass();
  132. PDEBUG_CLIENT Client;
  133. };
  134. #endif _EXTAPI_HXX_