15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file holds definitions related to the ntdll API. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SANDBOX_WIN_SRC_NT_INTERNALS_H__ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SANDBOX_WIN_SRC_NT_INTERNALS_H__ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef LONG NTSTATUS; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NT_SUCCESS(st) (st >= 0) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_SUCCESS ((NTSTATUS)0x00000000L) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_BUFFER_OVERFLOW ((NTSTATUS)0x80000005L) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef STATUS_INVALID_PARAMETER 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// It is now defined in Windows 2008 SDK. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_INVALID_PARAMETER ((NTSTATUS)0xC000000DL) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_CONFLICTING_ADDRESSES ((NTSTATUS)0xC0000018L) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023L) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_OBJECT_NAME_NOT_FOUND ((NTSTATUS)0xC0000034L) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_PROCEDURE_NOT_FOUND ((NTSTATUS)0xC000007AL) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_INVALID_IMAGE_FORMAT ((NTSTATUS)0xC000007BL) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define STATUS_NO_TOKEN ((NTSTATUS)0xC000007CL) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CURRENT_PROCESS ((HANDLE) -1) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CURRENT_THREAD ((HANDLE) -2) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NtCurrentProcess CURRENT_PROCESS 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _UNICODE_STRING { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT Length; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT MaximumLength; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PWSTR Buffer; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} UNICODE_STRING; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UNICODE_STRING *PUNICODE_STRING; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef const UNICODE_STRING *PCUNICODE_STRING; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _STRING { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT Length; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT MaximumLength; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PCHAR Buffer; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} STRING; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef STRING *PSTRING; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef STRING ANSI_STRING; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PSTRING PANSI_STRING; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef CONST PSTRING PCANSI_STRING; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef STRING OEM_STRING; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PSTRING POEM_STRING; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef CONST STRING* PCOEM_STRING; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define OBJ_CASE_INSENSITIVE 0x00000040L 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _OBJECT_ATTRIBUTES { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Length; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HANDLE RootDirectory; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PUNICODE_STRING ObjectName; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Attributes; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID SecurityDescriptor; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID SecurityQualityOfService; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} OBJECT_ATTRIBUTES; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define InitializeObjectAttributes(p, n, a, r, s) { \ 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (p)->Length = sizeof(OBJECT_ATTRIBUTES);\ 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (p)->RootDirectory = r;\ 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (p)->Attributes = a;\ 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (p)->ObjectName = n;\ 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (p)->SecurityDescriptor = s;\ 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (p)->SecurityQualityOfService = NULL;\ 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _IO_STATUS_BLOCK { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) union { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NTSTATUS Status; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID Pointer; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG_PTR Information; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// File IO 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Create disposition values. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_SUPERSEDE 0x00000000 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN 0x00000001 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_CREATE 0x00000002 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_IF 0x00000003 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OVERWRITE 0x00000004 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OVERWRITE_IF 0x00000005 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_MAXIMUM_DISPOSITION 0x00000005 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Create/open option flags. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_DIRECTORY_FILE 0x00000001 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_WRITE_THROUGH 0x00000002 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_SEQUENTIAL_ONLY 0x00000004 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_NON_DIRECTORY_FILE 0x00000040 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_CREATE_TREE_CONNECTION 0x00000080 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_NO_EA_KNOWLEDGE 0x00000200 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_REMOTE_INSTANCE 0x00000400 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_RANDOM_ACCESS 0x00000800 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_DELETE_ON_CLOSE 0x00001000 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_BY_FILE_ID 0x00002000 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_NO_COMPRESSION 0x00008000 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_RESERVE_OPFILTER 0x00100000 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_REPARSE_POINT 0x00200000 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_NO_RECALL 0x00400000 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtCreateFileFunction)( 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE FileHandle, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PIO_STATUS_BLOCK IoStatusBlock, 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PLARGE_INTEGER AllocationSize OPTIONAL, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG FileAttributes, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ShareAccess, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG CreateDisposition, 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG CreateOptions, 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID EaBuffer OPTIONAL, 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG EaLength); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenFileFunction)( 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE FileHandle, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PIO_STATUS_BLOCK IoStatusBlock, 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ShareAccess, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG OpenOptions); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtCloseFunction)( 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE Handle); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _FILE_INFORMATION_CLASS { 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileRenameInformation = 10 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _FILE_RENAME_INFORMATION { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BOOLEAN ReplaceIfExists; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HANDLE RootDirectory; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG FileNameLength; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WCHAR FileName[1]; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtSetInformationFileFunction)( 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE FileHandle, 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PIO_STATUS_BLOCK IoStatusBlock, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID FileInformation, 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Length, 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN FILE_INFORMATION_CLASS FileInformationClass); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct FILE_BASIC_INFORMATION { 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER CreationTime; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER LastAccessTime; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER LastWriteTime; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER ChangeTime; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG FileAttributes; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQueryAttributesFileFunction)( 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PFILE_BASIC_INFORMATION FileAttributes); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _FILE_NETWORK_OPEN_INFORMATION { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER CreationTime; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER LastAccessTime; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER LastWriteTime; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER ChangeTime; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER AllocationSize; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER EndOfFile; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG FileAttributes; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQueryFullAttributesFileFunction)( 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PFILE_NETWORK_OPEN_INFORMATION FileAttributes); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sections 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtCreateSectionFunction)( 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE SectionHandle, 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PLARGE_INTEGER MaximumSize OPTIONAL, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG SectionPageProtection, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG AllocationAttributes, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE FileHandle OPTIONAL); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ULONG SECTION_INHERIT; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ViewShare 1 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ViewUnmap 2 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtMapViewOfSectionFunction)( 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE SectionHandle, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PVOID *BaseAddress, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG_PTR ZeroBits, 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T CommitSize, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PSIZE_T ViewSize, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SECTION_INHERIT InheritDisposition, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG AllocationType, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Win32Protect); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtUnmapViewOfSectionFunction)( 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID BaseAddress); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _SECTION_INFORMATION_CLASS { 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SectionBasicInformation = 0, 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SectionImageInformation 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} SECTION_INFORMATION_CLASS; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _SECTION_BASIC_INFORMATION { 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID BaseAddress; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Attributes; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER Size; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} SECTION_BASIC_INFORMATION, *PSECTION_BASIC_INFORMATION; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQuerySectionFunction)( 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE SectionHandle, 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SECTION_INFORMATION_CLASS SectionInformationClass, 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PVOID SectionInformation, 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T SectionInformationLength, 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PSIZE_T ReturnLength OPTIONAL); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Process and Thread 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _CLIENT_ID { 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID UniqueProcess; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID UniqueThread; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} CLIENT_ID, *PCLIENT_ID; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenThreadFunction) ( 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE ThreadHandle, 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PCLIENT_ID ClientId); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenProcessFunction) ( 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE ProcessHandle, 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PCLIENT_ID ClientId); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _NT_THREAD_INFORMATION_CLASS { 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadBasicInformation, 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadTimes, 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadPriority, 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadBasePriority, 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadAffinityMask, 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadImpersonationToken, 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadDescriptorTableEntry, 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadEnableAlignmentFaultFixup, 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadEventPair, 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadQuerySetWin32StartAddress, 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadZeroTlsCell, 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadPerformanceCount, 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadAmILastThread, 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadIdealProcessor, 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadPriorityBoost, 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadSetTlsArrayAddress, 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadIsIoPending, 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThreadHideFromDebugger 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} NT_THREAD_INFORMATION_CLASS, *PNT_THREAD_INFORMATION_CLASS; 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtSetInformationThreadFunction) ( 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ThreadHandle, 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN NT_THREAD_INFORMATION_CLASS ThreadInformationClass, 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID ThreadInformation, 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ThreadInformationLength); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Partial definition only: 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _PROCESSINFOCLASS { 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProcessBasicInformation = 0, 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProcessExecuteFlags = 0x22 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PROCESSINFOCLASS; 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PVOID PPEB; 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PVOID KPRIORITY; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _PROCESS_BASIC_INFORMATION { 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NTSTATUS ExitStatus; 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PPEB PebBaseAddress; 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) KAFFINITY AffinityMask; 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) KPRIORITY BasePriority; 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG UniqueProcessId; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG InheritedFromUniqueProcessId; 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQueryInformationProcessFunction)( 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PROCESSINFOCLASS ProcessInformationClass, 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PVOID ProcessInformation, 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ProcessInformationLength, 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG ReturnLength OPTIONAL); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtSetInformationProcessFunction)( 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HANDLE ProcessHandle, 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PROCESSINFOCLASS ProcessInformationClass, 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID ProcessInformation, 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ProcessInformationLength); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenThreadTokenFunction) ( 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ThreadHandle, 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN BOOLEAN OpenAsSelf, 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE TokenHandle); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenThreadTokenExFunction) ( 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ThreadHandle, 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN BOOLEAN OpenAsSelf, 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG HandleAttributes, 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE TokenHandle); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenProcessTokenFunction) ( 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE TokenHandle); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenProcessTokenExFunction) ( 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG HandleAttributes, 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE TokenHandle); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI * RtlCreateUserThreadFunction)( 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE Process, 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN BOOLEAN CreateSuspended, 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ZeroBits, 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T MaximumStackSize, 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T CommittedStackSize, 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN LPTHREAD_START_ROUTINE StartAddress, 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID Parameter, 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE Thread, 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PCLIENT_ID ClientId); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Registry 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtCreateKeyFunction)( 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE KeyHandle, 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG TitleIndex, 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PUNICODE_STRING Class OPTIONAL, 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG CreateOptions, 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG Disposition OPTIONAL); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenKeyFunction)( 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE KeyHandle, 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtOpenKeyExFunction)( 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE KeyHandle, 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN POBJECT_ATTRIBUTES ObjectAttributes, 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN DWORD open_options); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtDeleteKeyFunction)( 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE KeyHandle); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Memory 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Don't really need this structure right now. 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PVOID PRTL_HEAP_PARAMETERS; 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PVOID (WINAPI *RtlCreateHeapFunction)( 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Flags, 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID HeapBase OPTIONAL, 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T ReserveSize OPTIONAL, 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T CommitSize OPTIONAL, 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID Lock OPTIONAL, 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL); 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PVOID (WINAPI *RtlDestroyHeapFunction)( 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID HeapHandle); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef PVOID (WINAPI *RtlAllocateHeapFunction)( 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID HeapHandle, 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Flags, 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SIZE_T Size); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef BOOLEAN (WINAPI *RtlFreeHeapFunction)( 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID HeapHandle, 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Flags, 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID HeapBase); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtAllocateVirtualMemoryFunction) ( 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PVOID *BaseAddress, 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG_PTR ZeroBits, 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PSIZE_T RegionSize, 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG AllocationType, 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Protect); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtFreeVirtualMemoryFunction) ( 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PVOID *BaseAddress, 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PSIZE_T RegionSize, 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG FreeType); 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _MEMORY_INFORMATION_CLASS { 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MemoryBasicInformation = 0, 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MemoryWorkingSetList, 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MemorySectionName, 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MemoryBasicVlmInformation 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} MEMORY_INFORMATION_CLASS; 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _MEMORY_SECTION_NAME { // Information Class 2 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNICODE_STRING SectionFileName; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQueryVirtualMemoryFunction)( 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PVOID BaseAddress, 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN MEMORY_INFORMATION_CLASS MemoryInformationClass, 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PVOID MemoryInformation, 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG MemoryInformationLength, 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG ReturnLength OPTIONAL); 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtProtectVirtualMemoryFunction)( 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE ProcessHandle, 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PVOID* BaseAddress, 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PSIZE_T ProtectSize, 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG NewProtect, 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG OldProtect); 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Objects 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _OBJECT_INFORMATION_CLASS { 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObjectBasicInformation, 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObjectNameInformation, 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObjectTypeInformation, 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObjectAllInformation, 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObjectDataInformation 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _OBJDIR_INFORMATION { 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNICODE_STRING ObjectName; 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNICODE_STRING ObjectTypeName; 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BYTE Data[1]; 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} OBJDIR_INFORMATION; 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION { 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Attributes; 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ACCESS_MASK GrantedAccess; 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HandleCount; 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG PointerCount; 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Reserved[10]; // reserved for internal use 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION; 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION { 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNICODE_STRING TypeName; 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Reserved[22]; // reserved for internal use 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION; 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _POOL_TYPE { 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NonPagedPool, 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PagedPool, 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NonPagedPoolMustSucceed, 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReservedType, 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NonPagedPoolCacheAligned, 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PagedPoolCacheAligned, 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NonPagedPoolCacheAlignedMustS 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} POOL_TYPE; 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _OBJECT_BASIC_INFORMATION { 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Attributes; 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ACCESS_MASK GrantedAccess; 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HandleCount; 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG PointerCount; 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG PagedPoolUsage; 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG NonPagedPoolUsage; 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG Reserved[3]; 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG NameInformationLength; 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TypeInformationLength; 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG SecurityDescriptorLength; 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER CreateTime; 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _OBJECT_TYPE_INFORMATION { 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNICODE_STRING Name; 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TotalNumberOfObjects; 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TotalNumberOfHandles; 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TotalPagedPoolUsage; 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TotalNonPagedPoolUsage; 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TotalNamePoolUsage; 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG TotalHandleTableUsage; 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HighWaterNumberOfObjects; 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HighWaterNumberOfHandles; 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HighWaterPagedPoolUsage; 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HighWaterNonPagedPoolUsage; 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HighWaterNamePoolUsage; 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG HighWaterHandleTableUsage; 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG InvalidAttributes; 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GENERIC_MAPPING GenericMapping; 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG ValidAccess; 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BOOLEAN SecurityRequired; 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BOOLEAN MaintainHandleCount; 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT MaintainTypeList; 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) POOL_TYPE PoolType; 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG PagedPoolUsage; 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG NonPagedPoolUsage; 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum _SYSTEM_INFORMATION_CLASS { 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SystemHandleInformation = 16 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} SYSTEM_INFORMATION_CLASS; 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _SYSTEM_HANDLE_INFORMATION { 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT ProcessId; 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT CreatorBackTraceIndex; 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UCHAR ObjectTypeNumber; 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UCHAR Flags; 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) USHORT Handle; 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PVOID Object; 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ACCESS_MASK GrantedAccess; 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _SYSTEM_HANDLE_INFORMATION_EX { 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG NumberOfHandles; 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SYSTEM_HANDLE_INFORMATION Information[1]; 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX; 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _OBJECT_NAME_INFORMATION { 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNICODE_STRING ObjectName; 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQueryObjectFunction)( 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE Handle, 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OBJECT_INFORMATION_CLASS ObjectInformationClass, 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PVOID ObjectInformation OPTIONAL, 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ObjectInformationLength, 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG ReturnLength OPTIONAL); 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtDuplicateObjectFunction)( 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE SourceProcess, 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE SourceHandle, 5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE TargetProcess, 5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PHANDLE TargetHandle, 5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ACCESS_MASK DesiredAccess, 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Attributes, 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG Options); 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtSignalAndWaitForSingleObjectFunction)( 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE HandleToSignal, 5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE HandleToWait, 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN BOOLEAN Alertable, 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PLARGE_INTEGER Timeout OPTIONAL); 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQuerySystemInformation)( 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN SYSTEM_INFORMATION_CLASS SystemInformationClass, 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PVOID SystemInformation, 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG SystemInformationLength, 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG ReturnLength); 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *NtQueryObject)( 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN HANDLE Handle, 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OBJECT_INFORMATION_CLASS ObjectInformationClass, 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PVOID ObjectInformation, 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN ULONG ObjectInformationLength, 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OUT PULONG ReturnLength); 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------- 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Strings 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int (__cdecl *_strnicmpFunction)( 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN const char* _Str1, 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN const char* _Str2, 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN size_t _MaxCount); 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef size_t (__cdecl *strlenFunction)( 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN const char * _Str); 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef size_t (__cdecl *wcslenFunction)( 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN const wchar_t* _Str); 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef NTSTATUS (WINAPI *RtlAnsiStringToUnicodeStringFunction)( 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PUNICODE_STRING DestinationString, 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PANSI_STRING SourceString, 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN BOOLEAN AllocateDestinationString); 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef LONG (WINAPI *RtlCompareUnicodeStringFunction)( 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PCUNICODE_STRING String1, 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PCUNICODE_STRING String2, 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN BOOLEAN CaseInSensitive); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef VOID (WINAPI *RtlInitUnicodeStringFunction) ( 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN OUT PUNICODE_STRING DestinationString, 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IN PCWSTR SourceString); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // SANDBOX_WIN_SRC_NT_INTERNALS_H__ 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 620