1 ////////////////////////////////////////////////////////////////////////////////
3 // Visual Leak Detector - NT API Definitions
4 // Copyright (c) 2006-2009 Dan Moulding
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20 // See COPYING.txt for the full terms of the GNU Lesser General Public License.
22 ////////////////////////////////////////////////////////////////////////////////
28 "This header should only be included by Visual Leak Detector when building it from source. \
29 Applications should never include this header."
34 // Return code type used by LdrLoadDll.
35 typedef LONG NTSTATUS;
36 #define STATUS_SUCCESS 0
38 // Unicode string structure used by NT APIs.
39 typedef struct unicodestring_s {
40 USHORT length; // Length of the string.
41 USHORT maxlength; // Length of the buffer.
42 PWSTR buffer; // The buffer containing the string.
45 // Function pointer types for explicit dynamic linking with functions that can't
46 // be load-time linked (no import library is available for these).
47 typedef NTSTATUS (__stdcall *LdrLoadDll_t) (LPWSTR, PDWORD, unicodestring_t *, PHANDLE);
48 typedef LPVOID (__stdcall *RtlAllocateHeap_t) (HANDLE, DWORD, SIZE_T);
49 typedef BOOL (__stdcall *RtlFreeHeap_t) (HANDLE, DWORD, LPVOID);
50 typedef LPVOID (__stdcall *RtlReAllocateHeap_t) (HANDLE, DWORD, LPVOID, SIZE_T);
52 // Provide forward declarations for the NT APIs for any source files that
53 // include this header.
54 extern LdrLoadDll_t LdrLoadDll;
55 extern RtlAllocateHeap_t RtlAllocateHeap;
56 extern RtlFreeHeap_t RtlFreeHeap;
57 extern RtlReAllocateHeap_t RtlReAllocateHeap;