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.

219 lines
4.0 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 ULONG TableNumber,
  93. IN PTHUNK_DEBUG_INFO DebugInfoTable,
  94. OUT PULONG_PTR *LogTable,
  95. OUT PULONG_PTR *ApiInfoTable);
  96. NTSTATUS
  97. LogTypeValue(
  98. IN OUT PLOGINFO LogInfo,
  99. IN ULONG_PTR Data,
  100. IN PSZ FieldName,
  101. IN BOOLEAN ServiceReturn);
  102. NTSTATUS
  103. LogTypeUnicodeString(
  104. IN OUT PLOGINFO LogInfo,
  105. IN ULONG_PTR Data,
  106. IN PSZ FieldName,
  107. IN BOOLEAN ServiceReturn);
  108. NTSTATUS
  109. LogTypePULongInOut(
  110. IN OUT PLOGINFO LogInfo,
  111. IN ULONG_PTR Data,
  112. IN PSZ FieldName,
  113. IN BOOLEAN ServiceReturn);
  114. NTSTATUS
  115. LogTypePULongOut(
  116. IN OUT PLOGINFO LogInfo,
  117. IN ULONG_PTR Data,
  118. IN PSZ FieldName,
  119. IN BOOLEAN ServiceReturn);
  120. NTSTATUS
  121. LogTypeObjectAttrbiutes(
  122. IN OUT PLOGINFO LogInfo,
  123. IN ULONG_PTR Data,
  124. IN PSZ FieldName,
  125. IN BOOLEAN ServiceReturn);
  126. NTSTATUS
  127. LogTypeIoStatusBlock(
  128. IN OUT PLOGINFO LogInfo,
  129. IN ULONG_PTR Data,
  130. IN PSZ FieldName,
  131. IN BOOLEAN ServiceReturn);
  132. NTSTATUS
  133. LogTypePWStr(
  134. IN OUT PLOGINFO LogInfo,
  135. IN ULONG_PTR Data,
  136. IN PSZ FieldName,
  137. IN BOOLEAN ServiceReturn);
  138. NTSTATUS
  139. LogTypePRectIn(
  140. IN OUT PLOGINFO LogInfo,
  141. IN ULONG_PTR Data,
  142. IN PSZ FieldName,
  143. IN BOOLEAN ServiceReturn);
  144. NTSTATUS
  145. LogTypePLargeIntegerIn(
  146. IN OUT PLOGINFO LogInfo,
  147. IN ULONG_PTR Data,
  148. IN PSZ FieldName,
  149. IN BOOLEAN ServiceReturn);
  150. // from logutil.c
  151. NTSTATUS
  152. LogFormat(
  153. IN OUT PLOGINFO LogInfo,
  154. IN PSZ Format,
  155. ...);
  156. VOID
  157. LogOut(
  158. IN PSZ Text,
  159. UINT_PTR Flags
  160. );
  161. NTSTATUS
  162. LogWriteFile(
  163. IN HANDLE FileHandle,
  164. IN PSZ LogText);
  165. NTSTATUS
  166. Wow64LogMessageInternal(
  167. IN UINT_PTR Flags,
  168. IN PSZ Format,
  169. IN ...);
  170. #endif