Source code of Windows XP (NT5)
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.

217 lines
3.7 KiB

  1. /*++
  2. Copyright (c) 1999 Microsoft Corporation
  3. Module Name:
  4. w64logp.h
  5. Abstract:
  6. Private header for wow64log.dll
  7. Author:
  8. 03-OCt-1999 SamerA
  9. Revision History:
  10. --*/
  11. #ifndef _W64LOGP_INCLUDE
  12. #define _W64LOGP_INCLUDE
  13. #define _WOW64LOGAPI_
  14. #include <nt.h>
  15. #include <ntrtl.h>
  16. #include <nturtl.h>
  17. #include <windef.h>
  18. #include <stdio.h>
  19. #include <stdarg.h>
  20. #include "nt32.h"
  21. #include "wow64.h"
  22. #include "wow64log.h"
  23. //
  24. // bring in INVALID_HANDLE_VALUE
  25. //
  26. #include "winbase.h"
  27. //
  28. // Max buffer size for output logging
  29. //
  30. #define MAX_LOG_BUFFER 1024
  31. //
  32. // Default logging flags if no reg value is found
  33. //
  34. #define LF_DEFAULT (LF_ERROR)
  35. //
  36. // Prototype for data type handler log function
  37. //
  38. typedef NTSTATUS (*PFNLOGDATATYPEHANDLER)(PLOGINFO,
  39. ULONG_PTR,
  40. PSZ,
  41. BOOLEAN);
  42. typedef struct _LOGDATATYPE
  43. {
  44. PFNLOGDATATYPEHANDLER Handler;
  45. } LOGDATATYPE, *PLOGDATATYPE;
  46. //
  47. // The layout of each entry in thunk debug info should be as follow :
  48. //
  49. // "ServiceName1", ServiceNumber, NumerOfArgument,
  50. // "ArgName1", ArgType1, ...., ArgNameN, ArgTypeN
  51. // "ServiceName2", ...and so on
  52. //
  53. typedef struct _ArgTypes
  54. {
  55. char *Name;
  56. ULONG_PTR Type;
  57. } ArgType, *PArgType;
  58. //
  59. // helper structures to help parsing the thunk debugging info
  60. //
  61. typedef struct _ThunkDebugInfo
  62. {
  63. char *ApiName;
  64. UINT_PTR ServiceNumber;
  65. UINT_PTR NumberOfArg;
  66. ArgType Arg[0];
  67. } THUNK_DEBUG_INFO, *PTHUNK_DEBUG_INFO;
  68. typedef struct _LOGINFO
  69. {
  70. PSZ OutputBuffer;
  71. ULONG_PTR BufferSize;
  72. } LOGINFO, *PLOGINFO;
  73. // from whnt32.c
  74. extern PULONG_PTR NtThunkDebugInfo[];
  75. // from whwin32.c
  76. extern PULONG_PTR Win32ThunkDebugInfo[];
  77. // from whcon.c
  78. extern PULONG_PTR ConsoleThunkDebugInfo[];
  79. // from whbase.c
  80. extern PULONG_PTR BaseThunkDebugInfo[];
  81. // from wow64log.c
  82. extern UINT_PTR Wow64LogFlags;
  83. extern HANDLE Wow64LogFileHandle;
  84. NTSTATUS
  85. LogInitializeFlags(
  86. IN OUT PUINT_PTR Flags);
  87. ULONG
  88. GetThunkDebugTableSize(
  89. IN PTHUNK_DEBUG_INFO DebugInfoTable);
  90. NTSTATUS
  91. BuildDebugThunkInfo(
  92. IN PTHUNK_DEBUG_INFO DebugInfoTable,
  93. OUT PULONG_PTR *LogTable);
  94. NTSTATUS
  95. LogTypeValue(
  96. IN OUT PLOGINFO LogInfo,
  97. IN ULONG_PTR Data,
  98. IN PSZ FieldName,
  99. IN BOOLEAN ServiceReturn);
  100. NTSTATUS
  101. LogTypeUnicodeString(
  102. IN OUT PLOGINFO LogInfo,
  103. IN ULONG_PTR Data,
  104. IN PSZ FieldName,
  105. IN BOOLEAN ServiceReturn);
  106. NTSTATUS
  107. LogTypePULongInOut(
  108. IN OUT PLOGINFO LogInfo,
  109. IN ULONG_PTR Data,
  110. IN PSZ FieldName,
  111. IN BOOLEAN ServiceReturn);
  112. NTSTATUS
  113. LogTypePULongOut(
  114. IN OUT PLOGINFO LogInfo,
  115. IN ULONG_PTR Data,
  116. IN PSZ FieldName,
  117. IN BOOLEAN ServiceReturn);
  118. NTSTATUS
  119. LogTypeObjectAttrbiutes(
  120. IN OUT PLOGINFO LogInfo,
  121. IN ULONG_PTR Data,
  122. IN PSZ FieldName,
  123. IN BOOLEAN ServiceReturn);
  124. NTSTATUS
  125. LogTypeIoStatusBlock(
  126. IN OUT PLOGINFO LogInfo,
  127. IN ULONG_PTR Data,
  128. IN PSZ FieldName,
  129. IN BOOLEAN ServiceReturn);
  130. NTSTATUS
  131. LogTypePWStr(
  132. IN OUT PLOGINFO LogInfo,
  133. IN ULONG_PTR Data,
  134. IN PSZ FieldName,
  135. IN BOOLEAN ServiceReturn);
  136. NTSTATUS
  137. LogTypePRectIn(
  138. IN OUT PLOGINFO LogInfo,
  139. IN ULONG_PTR Data,
  140. IN PSZ FieldName,
  141. IN BOOLEAN ServiceReturn);
  142. NTSTATUS
  143. LogTypePLargeIntegerIn(
  144. IN OUT PLOGINFO LogInfo,
  145. IN ULONG_PTR Data,
  146. IN PSZ FieldName,
  147. IN BOOLEAN ServiceReturn);
  148. // from logutil.c
  149. NTSTATUS
  150. LogFormat(
  151. IN OUT PLOGINFO LogInfo,
  152. IN PSZ Format,
  153. ...);
  154. VOID
  155. LogOut(
  156. IN PSZ Text,
  157. UINT_PTR Flags
  158. );
  159. NTSTATUS
  160. LogWriteFile(
  161. IN HANDLE FileHandle,
  162. IN PSZ LogText);
  163. NTSTATUS
  164. Wow64LogMessageInternal(
  165. IN UINT_PTR Flags,
  166. IN PSZ Format,
  167. IN ...);
  168. #endif