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.

449 lines
8.5 KiB

  1. /*++
  2. Copyright (c) 1989 Microsoft Corporation
  3. Module Name:
  4. verifier.h
  5. Abstract:
  6. Internal interfaces for the standard application verifier provider.
  7. Author:
  8. Silviu Calinoiu (SilviuC) 2-Feb-2001
  9. Revision History:
  10. --*/
  11. #ifndef _VERIFIER_H_
  12. #define _VERIFIER_H_
  13. //
  14. // Some global things.
  15. //
  16. extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpNtdllThunks[];
  17. extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpKernel32Thunks[];
  18. extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpAdvapi32Thunks[];
  19. extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpMsvcrtThunks[];
  20. PRTL_VERIFIER_THUNK_DESCRIPTOR
  21. AVrfpGetThunkDescriptor (
  22. PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks,
  23. ULONG Index);
  24. #define AVRFP_GET_ORIGINAL_EXPORT(DllThunks, Index) \
  25. (FUNCTION_TYPE)(AVrfpGetThunkDescriptor(DllThunks, Index)->ThunkOldAddress)
  26. extern RTL_VERIFIER_PROVIDER_DESCRIPTOR AVrfpProvider;
  27. /////////////////////////////////////////////////////////////////////
  28. ////////////////////////////////////////// ntdll.dll verified exports
  29. /////////////////////////////////////////////////////////////////////
  30. //NTSYSCALLAPI
  31. NTSTATUS
  32. NTAPI
  33. AVrfpNtAllocateVirtualMemory(
  34. IN HANDLE ProcessHandle,
  35. IN OUT PVOID *BaseAddress,
  36. IN ULONG_PTR ZeroBits,
  37. IN OUT PSIZE_T RegionSize,
  38. IN ULONG AllocationType,
  39. IN ULONG Protect
  40. );
  41. //NTSYSCALLAPI
  42. NTSTATUS
  43. NTAPI
  44. AVrfpNtFreeVirtualMemory(
  45. IN HANDLE ProcessHandle,
  46. IN OUT PVOID *BaseAddress,
  47. IN OUT PSIZE_T RegionSize,
  48. IN ULONG FreeType
  49. );
  50. //NTSYSCALLAPI
  51. NTSTATUS
  52. NTAPI
  53. AVrfpNtMapViewOfSection(
  54. IN HANDLE SectionHandle,
  55. IN HANDLE ProcessHandle,
  56. IN OUT PVOID *BaseAddress,
  57. IN ULONG_PTR ZeroBits,
  58. IN SIZE_T CommitSize,
  59. IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
  60. IN OUT PSIZE_T ViewSize,
  61. IN SECTION_INHERIT InheritDisposition,
  62. IN ULONG AllocationType,
  63. IN ULONG Protect
  64. );
  65. //NTSYSCALLAPI
  66. NTSTATUS
  67. NTAPI
  68. AVrfpNtUnmapViewOfSection(
  69. IN HANDLE ProcessHandle,
  70. IN PVOID BaseAddress
  71. );
  72. //NTSYSCALLAPI
  73. NTSTATUS
  74. NTAPI
  75. AVrfpNtCreateSection (
  76. OUT PHANDLE SectionHandle,
  77. IN ACCESS_MASK DesiredAccess,
  78. IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  79. IN PLARGE_INTEGER MaximumSize OPTIONAL,
  80. IN ULONG SectionPageProtection,
  81. IN ULONG AllocationAttributes,
  82. IN HANDLE FileHandle OPTIONAL
  83. );
  84. //NTSYSCALLAPI
  85. NTSTATUS
  86. NTAPI
  87. AVrfpNtOpenSection(
  88. OUT PHANDLE SectionHandle,
  89. IN ACCESS_MASK DesiredAccess,
  90. IN POBJECT_ATTRIBUTES ObjectAttributes
  91. );
  92. //NTSYSCALLAPI
  93. NTSTATUS
  94. NTAPI
  95. AVrfpNtCreateFile(
  96. OUT PHANDLE FileHandle,
  97. IN ACCESS_MASK DesiredAccess,
  98. IN POBJECT_ATTRIBUTES ObjectAttributes,
  99. OUT PIO_STATUS_BLOCK IoStatusBlock,
  100. IN PLARGE_INTEGER AllocationSize OPTIONAL,
  101. IN ULONG FileAttributes,
  102. IN ULONG ShareAccess,
  103. IN ULONG CreateDisposition,
  104. IN ULONG CreateOptions,
  105. IN PVOID EaBuffer OPTIONAL,
  106. IN ULONG EaLength
  107. );
  108. //NTSYSCALLAPI
  109. NTSTATUS
  110. NTAPI
  111. AVrfpNtOpenFile(
  112. OUT PHANDLE FileHandle,
  113. IN ACCESS_MASK DesiredAccess,
  114. IN POBJECT_ATTRIBUTES ObjectAttributes,
  115. OUT PIO_STATUS_BLOCK IoStatusBlock,
  116. IN ULONG ShareAccess,
  117. IN ULONG OpenOptions
  118. );
  119. //NTSYSAPI
  120. BOOL
  121. NTAPI
  122. AVrfpRtlTryEnterCriticalSection(
  123. PRTL_CRITICAL_SECTION CriticalSection
  124. );
  125. //NTSYSAPI
  126. NTSTATUS
  127. NTAPI
  128. AVrfpRtlEnterCriticalSection(
  129. volatile RTL_CRITICAL_SECTION *CriticalSection
  130. );
  131. //NTSYSAPI
  132. NTSTATUS
  133. NTAPI
  134. AVrfpRtlLeaveCriticalSection(
  135. volatile RTL_CRITICAL_SECTION *CriticalSection
  136. );
  137. //NTSYSAPI
  138. NTSTATUS
  139. NTAPI
  140. AVrfpRtlInitializeCriticalSection(
  141. PRTL_CRITICAL_SECTION CriticalSection
  142. );
  143. //NTSYSAPI
  144. NTSTATUS
  145. NTAPI
  146. AVrfpRtlInitializeCriticalSectionAndSpinCount(
  147. PRTL_CRITICAL_SECTION CriticalSection,
  148. ULONG SpinCount
  149. );
  150. //NTSYSAPI
  151. NTSTATUS
  152. NTAPI
  153. AVrfpRtlDeleteCriticalSection(
  154. PRTL_CRITICAL_SECTION CriticalSection
  155. );
  156. //NTSYSCALLAPI
  157. NTSTATUS
  158. NTAPI
  159. AVrfpNtClose(
  160. IN HANDLE Handle
  161. );
  162. //NTSYSCALLAPI
  163. NTSTATUS
  164. NTAPI
  165. AVrfpNtCreateEvent (
  166. OUT PHANDLE EventHandle,
  167. IN ACCESS_MASK DesiredAccess,
  168. IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  169. IN EVENT_TYPE EventType,
  170. IN BOOLEAN InitialState
  171. );
  172. //NTSYSAPI
  173. PVOID
  174. NTAPI
  175. AVrfpRtlAllocateHeap(
  176. IN PVOID HeapHandle,
  177. IN ULONG Flags,
  178. IN SIZE_T Size
  179. );
  180. //NTSYSAPI
  181. BOOLEAN
  182. NTAPI
  183. AVrfpRtlFreeHeap(
  184. IN PVOID HeapHandle,
  185. IN ULONG Flags,
  186. IN PVOID BaseAddress
  187. );
  188. //NTSYSAPI
  189. PVOID
  190. NTAPI
  191. AVrfpRtlReAllocateHeap(
  192. IN PVOID HeapHandle,
  193. IN ULONG Flags,
  194. IN PVOID BaseAddress,
  195. IN SIZE_T Size
  196. );
  197. //NTSYSAPI
  198. NTSTATUS
  199. NTAPI
  200. AVrfpRtlQueueWorkItem(
  201. IN WORKERCALLBACKFUNC Function,
  202. IN PVOID Context,
  203. IN ULONG Flags
  204. );
  205. //NTSYSAPI
  206. NTSTATUS
  207. NTAPI
  208. AVrfpRtlRegisterWait (
  209. OUT PHANDLE WaitHandle,
  210. IN HANDLE Handle,
  211. IN WAITORTIMERCALLBACKFUNC Function,
  212. IN PVOID Context,
  213. IN ULONG Milliseconds,
  214. IN ULONG Flags
  215. );
  216. //NTSYSAPI
  217. NTSTATUS
  218. NTAPI
  219. AVrfpRtlCreateTimer(
  220. IN HANDLE TimerQueueHandle,
  221. OUT HANDLE *Handle,
  222. IN WAITORTIMERCALLBACKFUNC Function,
  223. IN PVOID Context,
  224. IN ULONG DueTime,
  225. IN ULONG Period,
  226. IN ULONG Flags
  227. );
  228. /////////////////////////////////////////////////////////////////////
  229. /////////////////////////////////////// kernel32.dll verified exports
  230. /////////////////////////////////////////////////////////////////////
  231. #define AVRF_INDEX_KERNEL32_HEAPCREATE 0
  232. #define AVRF_INDEX_KERNEL32_HEAPDESTROY 1
  233. #define AVRF_INDEX_KERNEL32_CLOSEHANDLE 2
  234. #define AVRF_INDEX_KERNEL32_EXITTHREAD 3
  235. #define AVRF_INDEX_KERNEL32_TERMINATETHREAD 4
  236. #define AVRF_INDEX_KERNEL32_SUSPENDTHREAD 5
  237. #define AVRF_INDEX_KERNEL32_TLSALLOC 6
  238. #define AVRF_INDEX_KERNEL32_TLSFREE 7
  239. #define AVRF_INDEX_KERNEL32_TLSGETVALUE 8
  240. #define AVRF_INDEX_KERNEL32_TLSSETVALUE 9
  241. #define AVRF_INDEX_KERNEL32_CREATETHREAD 10
  242. //WINBASEAPI
  243. HANDLE
  244. WINAPI
  245. AVrfpHeapCreate(
  246. IN DWORD flOptions,
  247. IN SIZE_T dwInitialSize,
  248. IN SIZE_T dwMaximumSize
  249. );
  250. //WINBASEAPI
  251. BOOL
  252. WINAPI
  253. AVrfpHeapDestroy(
  254. IN OUT HANDLE hHeap
  255. );
  256. //WINBASEAPI
  257. BOOL
  258. WINAPI
  259. AVrfpCloseHandle(
  260. IN OUT HANDLE hObject
  261. );
  262. //WINBASEAPI
  263. DECLSPEC_NORETURN
  264. VOID
  265. WINAPI
  266. AVrfpExitThread(
  267. IN DWORD dwExitCode
  268. );
  269. //WINBASEAPI
  270. BOOL
  271. WINAPI
  272. AVrfpTerminateThread(
  273. IN OUT HANDLE hThread,
  274. IN DWORD dwExitCode
  275. );
  276. //WINBASEAPI
  277. DWORD
  278. WINAPI
  279. AVrfpSuspendThread(
  280. IN HANDLE hThread
  281. );
  282. //WINBASEAPI
  283. HANDLE
  284. WINAPI
  285. AVrfpCreateThread(
  286. IN LPSECURITY_ATTRIBUTES lpThreadAttributes,
  287. IN SIZE_T dwStackSize,
  288. IN LPTHREAD_START_ROUTINE lpStartAddress,
  289. IN LPVOID lpParameter,
  290. IN DWORD dwCreationFlags,
  291. OUT LPDWORD lpThreadId
  292. );
  293. //WINBASEAPI
  294. DWORD
  295. WINAPI
  296. AVrfpTlsAlloc(
  297. VOID
  298. );
  299. //WINBASEAPI
  300. BOOL
  301. WINAPI
  302. AVrfpTlsFree(
  303. IN DWORD dwTlsIndex
  304. );
  305. //WINBASEAPI
  306. LPVOID
  307. WINAPI
  308. AVrfpTlsGetValue(
  309. IN DWORD dwTlsIndex
  310. );
  311. //WINBASEAPI
  312. BOOL
  313. WINAPI
  314. AVrfpTlsSetValue(
  315. IN DWORD dwTlsIndex,
  316. IN LPVOID lpTlsValue
  317. );
  318. /////////////////////////////////////////////////////////////////////
  319. /////////////////////////////////////// advapi32.dll verified exports
  320. /////////////////////////////////////////////////////////////////////
  321. typedef ACCESS_MASK REGSAM;
  322. #define AVRF_INDEX_ADVAPI32_REGCREATEKEYEXW 0
  323. //WINADVAPI
  324. LONG
  325. APIENTRY
  326. AVrfpRegCreateKeyExW (
  327. IN HKEY hKey,
  328. IN LPCWSTR lpSubKey,
  329. IN DWORD Reserved,
  330. IN LPWSTR lpClass,
  331. IN DWORD dwOptions,
  332. IN REGSAM samDesired,
  333. IN LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  334. OUT PHKEY phkResult,
  335. OUT LPDWORD lpdwDisposition
  336. );
  337. /////////////////////////////////////////////////////////////////////
  338. /////////////////////////////////////// msvcrt.dll verified exports
  339. /////////////////////////////////////////////////////////////////////
  340. #define AVRF_INDEX_MSVCRT_MALLOC 0
  341. #define AVRF_INDEX_MSVCRT_CALLOC 1
  342. #define AVRF_INDEX_MSVCRT_REALLOC 2
  343. #define AVRF_INDEX_MSVCRT_FREE 3
  344. #define AVRF_INDEX_MSVCRT_NEW 4
  345. #define AVRF_INDEX_MSVCRT_DELETE 5
  346. #define AVRF_INDEX_MSVCRT_NEWARRAY 6
  347. #define AVRF_INDEX_MSVCRT_DELETEARRAY 7
  348. PVOID __cdecl
  349. AVrfp_malloc (
  350. IN SIZE_T Size
  351. );
  352. PVOID __cdecl
  353. AVrfp_calloc (
  354. IN SIZE_T Number,
  355. IN SIZE_T Size
  356. );
  357. PVOID __cdecl
  358. AVrfp_realloc (
  359. IN PVOID Address,
  360. IN SIZE_T Size
  361. );
  362. VOID __cdecl
  363. AVrfp_free (
  364. IN PVOID Address
  365. );
  366. PVOID __cdecl
  367. AVrfp_new (
  368. IN SIZE_T Size
  369. );
  370. VOID __cdecl
  371. AVrfp_delete (
  372. IN PVOID Address
  373. );
  374. PVOID __cdecl
  375. AVrfp_newarray (
  376. IN SIZE_T Size
  377. );
  378. VOID __cdecl
  379. AVrfp_deletearray (
  380. IN PVOID Address
  381. );
  382. #endif // _VERIFIER_H_