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.

156 lines
2.0 KiB

  1. /*++
  2. Copyright (c) 1989 Microsoft Corporation
  3. Module Name:
  4. support.h
  5. Abstract:
  6. Internal support interfaces for the standard
  7. application verifier provider.
  8. Author:
  9. Silviu Calinoiu (SilviuC) 1-Mar-2001
  10. Revision History:
  11. --*/
  12. #ifndef _SUPPORT_H_
  13. #define _SUPPORT_H_
  14. //
  15. // Security checks
  16. //
  17. VOID
  18. CheckObjectAttributes (
  19. POBJECT_ATTRIBUTES Object
  20. );
  21. //
  22. // Handle management
  23. //
  24. #define MAX_TRACE_DEPTH 16
  25. #define HANDLE_TYPE_UNKNOWN 0
  26. #define HANDLE_TYPE_NTDLL 1
  27. #define HANDLE_TYPE_FILE 2
  28. #define HANDLE_TYPE_SECTION 3
  29. typedef struct _AVRF_HANDLE {
  30. LIST_ENTRY Links;
  31. struct {
  32. ULONG Type : 30;
  33. ULONG Delayed : 1;
  34. };
  35. HANDLE Handle;
  36. PWSTR Name;
  37. PVOID Context;
  38. PVOID Trace [MAX_TRACE_DEPTH];
  39. } AVRF_HANDLE, *PAVRF_HANDLE;
  40. VOID
  41. HandleInitialize (
  42. );
  43. PAVRF_HANDLE
  44. HandleFind (
  45. HANDLE Handle
  46. );
  47. PWSTR
  48. HandleName (
  49. PAVRF_HANDLE Handle
  50. );
  51. PAVRF_HANDLE
  52. HandleAdd (
  53. HANDLE Handle,
  54. ULONG Type,
  55. BOOLEAN Delayed,
  56. PWSTR Name,
  57. PVOID Context
  58. );
  59. VOID
  60. HandleDelete (
  61. HANDLE Handle,
  62. PAVRF_HANDLE Entry
  63. );
  64. VOID
  65. HandleDump (
  66. HANDLE Handle
  67. );
  68. //
  69. // Virtual space operations tracking
  70. //
  71. typedef enum _VS_CALL_TYPE {
  72. VsVirtualAlloc = 0,
  73. VsVirtualFree = 1,
  74. VsMapView = 2,
  75. VsUnmapView = 3
  76. } VS_CALL_TYPE;
  77. VOID
  78. VsLogCall (
  79. VS_CALL_TYPE Type,
  80. PVOID Address,
  81. SIZE_T Size,
  82. ULONG Operation,
  83. ULONG Protection
  84. );
  85. //
  86. // Heap operations tracking
  87. //
  88. VOID
  89. HeapLogCall (
  90. PVOID Address,
  91. SIZE_T Size
  92. );
  93. //
  94. // Write garbage in unused areas of stack.
  95. //
  96. VOID
  97. AVrfpDirtyThreadStack (
  98. );
  99. //
  100. // Standard function used for hooked CreateThread.
  101. //
  102. typedef struct _AVRF_THREAD_INFO {
  103. PTHREAD_START_ROUTINE Function;
  104. PVOID Parameter;
  105. } AVRF_THREAD_INFO, * PAVRF_THREAD_INFO;
  106. DWORD
  107. WINAPI
  108. AVrfpStandardThreadFunction (
  109. LPVOID Info
  110. );
  111. VOID
  112. AVrfpCheckThreadTermination (
  113. VOID
  114. );
  115. #endif // _SUPPORT_H_