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