Files
dmex b02427417c PH1.x: fixed build
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@5614 21ef857c-d57f-4fe0-8362-d861dc6d29cd
2014-02-25 23:14:38 +00:00

3811 lines
133 KiB
C#

/*
* Process Hacker -
* native API functions
*
* Copyright (C) 2009 Flavio Erlich
* Copyright (C) 2008-2009 wj32
*
* This file is part of Process Hacker.
*
* Process Hacker is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Process Hacker is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
*/
/* This file contains function declarations for the Native API.
*
* Only functions from ntdll.dll are considered to be part of the
* Native API.
*/
// Parameter 'parameter' has no matching param tag in the XML comment for 'parameter' (but other parameters do)
#pragma warning disable 1573
using System;
using System.Runtime.InteropServices;
using ProcessHacker.Native.Security;
namespace ProcessHacker.Native.Api
{
public static partial class Win32
{
// IMPORTANT: All timeouts, etc. are in 100ns units except when stated otherwise.
// These definitions were gathered from these sources:
//
// * The NT API headers - almost everything
// * Alex Ionescu's NDK
// * ReactOS source code
// * The Windows DDK - Kernel Transaction Manager (KTM) types
#region System Calls
[DllImport("ntdll.dll")]
public static extern NtStatus NtAcceptConnectPort(
[Out] out IntPtr PortHandle,
[In] [Optional] IntPtr PortContext,
[In] IntPtr ConnectionRequest,
[In] bool AcceptConnection,
[Optional] ref PortView ServerView,
[Optional] ref RemotePortView ClientView
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAcceptConnectPort(
[Out] out IntPtr PortHandle,
[In] [Optional] IntPtr PortContext,
[In] IntPtr ConnectionRequest,
[In] bool AcceptConnection,
[Optional] IntPtr ServerView,
[Optional] IntPtr ClientView
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAccessCheck(
[In] IntPtr SecurityDescriptor,
[In] IntPtr ClientToken,
[In] int DesiredAccess,
[In] ref GenericMapping GenericMapping,
[In] [Optional] IntPtr PrivilegeSet, // out PrivilegeSet*
ref int PrivilegeSetLength,
[Out] out int GrantedAccess,
[Out] out NtStatus AccessStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAdjustGroupsToken(
[In] IntPtr TokenHandle,
[In] bool ResetToDefault,
[In] ref TokenGroups NewState,
[In] [Optional] int BufferLength,
[In] [Optional] IntPtr PreviousState, // out TokenGroups*
[In] [Optional] IntPtr ReturnLength // out int*
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAdjustPrivilegesToken(
[In] IntPtr TokenHandle,
[In] bool DisableAllPrivileges,
[In] [Optional] ref TokenPrivileges NewState,
[In] [Optional] int BufferLength,
[In] [Optional] IntPtr PreviousState, // out TokenPrivileges*
[In] [Optional] IntPtr ReturnLength // out int*
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAlertThread(
[In] IntPtr ThreadHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAlertResumeThread(
[In] IntPtr ThreadHandle,
[Out] [Optional] out int PreviousSuspendCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAllocateLocallyUniqueId(
[Out] out Luid Luid
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAllocateVirtualMemory(
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
[In] IntPtr ZeroBits,
ref IntPtr RegionSize,
[In] MemoryFlags AllocationType,
[In] MemoryProtection Protect
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAreMappedFilesTheSame(
[In] IntPtr File1MappedAsAnImage,
[In] IntPtr File2MappedAsFile
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtAssignProcessToJobObject(
[In] IntPtr JobHandle,
[In] IntPtr ProcessHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCancelIoFile(
[In] IntPtr FileHandle,
[Out] out IoStatusBlock IoStatusBlock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCancelIoFile(
[In] IntPtr FileHandle,
[In] IntPtr IoStatusBlock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCancelTimer(
[In] IntPtr TimerHandle,
[Out] [Optional] out bool CurrentState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtClearEvent(
[In] IntPtr EventHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtClose(
[In] IntPtr Handle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCommitComplete(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCommitEnlistment(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCommitTransaction(
[In] IntPtr TransactionHandle,
[In] bool Wait
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCompareTokens(
[In] IntPtr FirstTokenHandle,
[In] IntPtr SecondTokenHandle,
[MarshalAs(UnmanagedType.I1)]
[Out] out bool Equal
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCompleteConnectPort(
[In] IntPtr PortHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtConnectPort(
[Out] out IntPtr PortHandle,
[In] ref UnicodeString PortName,
[In] ref SecurityQualityOfService SecurityQos,
[Optional] ref PortView ClientView,
[Optional] ref RemotePortView ServerView,
[Out] [Optional] out int MaxMessageLength,
[Optional] IntPtr ConnectionInformation,
[Optional] ref int ConnectionInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtConnectPort(
[Out] out IntPtr PortHandle,
[In] ref UnicodeString PortName,
[In] ref SecurityQualityOfService SecurityQos,
[Optional] IntPtr ClientView,
[Optional] IntPtr ServerView,
[Out] [Optional] out int MaxMessageLength,
[Optional] IntPtr ConnectionInformation,
[Optional] ref int ConnectionInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtConnectPort(
[Out] out IntPtr PortHandle,
[In] ref UnicodeString PortName,
[In] ref SecurityQualityOfService SecurityQos,
[Optional] ref PortView ClientView,
[Optional] ref RemotePortView ServerView,
[Out] [Optional] IntPtr MaxMessageLength,
[Optional] IntPtr ConnectionInformation,
[Optional] IntPtr ConnectionInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtConnectPort(
[Out] out IntPtr PortHandle,
[In] ref UnicodeString PortName,
[In] ref SecurityQualityOfService SecurityQos,
[Optional] IntPtr ClientView,
[Optional] IntPtr ServerView,
[Out] [Optional] IntPtr MaxMessageLength,
[Optional] IntPtr ConnectionInformation,
[Optional] IntPtr ConnectionInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateDebugObject(
[Out] out IntPtr DebugObjectHandle,
[In] DebugObjectAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] DebugObjectFlags Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateDebugObject(
[Out] out IntPtr DebugObjectHandle,
[In] DebugObjectAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] DebugObjectFlags Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateDirectoryObject(
[Out] out IntPtr DirectoryHandle,
[In] DirectoryAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateEnlistment(
[Out] out IntPtr EnlistmentHandle,
[In] EnlistmentAccess DesiredAccess,
[In] IntPtr ResourceManagerHandle,
[In] IntPtr TransactionHandle,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] EnlistmentOptions CreateOptions,
[In] NotificationMask NotificationMask,
[In] [Optional] IntPtr EnlistmentKey
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateEvent(
[Out] out IntPtr EventHandle,
[In] EventAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] EventType EventType,
[In] bool InitialState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateEvent(
[Out] out IntPtr EventHandle,
[In] EventAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] EventType EventType,
[In] bool InitialState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateEventPair(
[Out] out IntPtr EventPairHandle,
[In] EventPairAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateEventPair(
[Out] out IntPtr EventPairHandle,
[In] EventPairAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateFile(
[Out] out IntPtr FileHandle,
[In] FileAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[Out] out IoStatusBlock IoStatusBlock,
[In] [Optional] ref long allocationSize,
[In] FileAttributes fileAttributes,
[In] FileShareMode shareAccess,
[In] FileCreationDisposition createDisposition,
[In] FileCreateOptions createOptions,
[In] [Optional] IntPtr EaBuffer,
[In] int EaLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateIoCompletion(
[Out] out IntPtr IoCompletionHandle,
[In] IoCompletionAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] int Count
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateIoCompletion(
[Out] out IntPtr IoCompletionHandle,
[In] IoCompletionAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] [Optional] int Count
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateJobObject(
[Out] out IntPtr JobHandle,
[In] JobObjectAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateJobObject(
[Out] out IntPtr JobHandle,
[In] JobObjectAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateJobSet(
[In] int NumJob,
JobSetArray[] UserJobSet,
[In] int Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateKey(
[Out] out IntPtr KeyHandle,
[In] KeyAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] int TitleIndex,
[In] [Optional] ref UnicodeString Class,
[In] RegOptions CreateOptions,
[Out] [Optional] out KeyCreationDisposition Disposition
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateKey(
[Out] out IntPtr KeyHandle,
[In] KeyAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] int TitleIndex,
[In] [Optional] IntPtr Class,
[In] RegOptions CreateOptions,
[Out] [Optional] out KeyCreationDisposition Disposition
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateKeyedEvent(
[Out] out IntPtr KeyedEventHandle,
[In] KeyedEventAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] int Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateKeyedEvent(
[Out] out IntPtr KeyedEventHandle,
[In] KeyedEventAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] int Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateMailslotFile(
[Out] out IntPtr FileHandle,
[In] FileAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[Out] out IoStatusBlock IoStatusBlock,
[In] FileCreateOptions CreateOptions,
[In] int MailslotQuota,
[In] int MaximumMessageSize,
[In] ref long ReadTimeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateMutant(
[Out] out IntPtr MutantHandle,
[In] MutantAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] bool InitialOwner
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateMutant(
[Out] out IntPtr MutantHandle,
[In] MutantAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] bool InitialOwner
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateNamedPipeFile(
[Out] out IntPtr FileHandle,
[In] FileAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[Out] out IoStatusBlock IoStatusBlock,
[In] FileShareMode ShareAccess,
[In] FileCreationDisposition CreateDisposition,
[In] FileCreateOptions CreateOptions,
[In] PipeType NamedPipeType,
[In] PipeType ReadMode,
[In] PipeCompletionMode CompletionMode,
[In] int MaximumInstances,
[In] int InboundQuota,
[In] int OutboundQuota,
[In] [Optional] ref long DefaultTimeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreatePort(
[Out] out IntPtr PortHandle,
[In] ref ObjectAttributes ObjectAttributes,
[In] int MaxConnectionInfoLength,
[In] int MaxMessageLength,
[In] [Optional] int MaxPoolUsage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateProcess(
[Out] out IntPtr ProcessHandle,
[In] ProcessAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] IntPtr ParentProcess,
[In] bool InheritHandleTable,
[In] [Optional] IntPtr SectionHandle,
[In] [Optional] IntPtr DebugPort,
[In] [Optional] IntPtr ExceptionPort
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateProcess(
[Out] out IntPtr ProcessHandle,
[In] ProcessAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] IntPtr ParentProcess,
[In] bool InheritHandleTable,
[In] [Optional] IntPtr SectionHandle,
[In] [Optional] IntPtr DebugPort,
[In] [Optional] IntPtr ExceptionPort
);
/// <summary>
/// Creates a profile object.
/// </summary>
/// <param name="ProfileHandle">A handle to the profile object.</param>
/// <param name="ProcessHandle">
/// A handle to the process to profile. If NULL, all address spaces are profiled.
/// </param>
/// <param name="ProfileBase">
/// The first address at which to collect profiling information.
/// </param>
/// <param name="ProfileSize">
/// The size of the range to profile. ProfileBase &lt;= address &lt;
/// ProfileBase + ProfileSize will generate a hit.
/// </param>
/// <param name="BucketSize">
/// A log2 value of each address bucket. Acceptable values are from 2 to 30.
/// </param>
/// <param name="Buffer">An array of int hit counters.</param>
/// <param name="BufferSize">The size of the buffer, in bytes.</param>
/// <param name="ProfileSource">The profiling source.</param>
/// <param name="Affinity">The processors to profile.</param>
/// <returns>A NTSTATUS value.</returns>
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateProfile(
[Out] out IntPtr ProfileHandle,
[In] [Optional] IntPtr ProcessHandle,
[In] IntPtr ProfileBase,
[In] IntPtr ProfileSize,
[In] int BucketSize,
[In] IntPtr Buffer,
[In] int BufferSize,
[In] KProfileSource ProfileSource,
[In] IntPtr Affinity
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateResourceManager(
[Out] out IntPtr ResourceManagerHandle,
[In] ResourceManagerAccess DesiredAccess,
[In] IntPtr TmHandle,
[In] [Optional] ref Guid ResourceManagerGuid,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ResourceManagerOptions CreateOptions,
[In] [Optional] ref UnicodeString Description // should be null-terminated
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateSection(
[Out] out IntPtr SectionHandle,
[In] SectionAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ref long MaximumSize,
[In] MemoryProtection PageAttributes,
[In] SectionAttributes SectionAttributes,
[In] [Optional] IntPtr FileHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateSection(
[Out] out IntPtr SectionHandle,
[In] SectionAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] IntPtr MaximumSize,
[In] MemoryProtection PageAttributes,
[In] SectionAttributes SectionAttributes,
[In] [Optional] IntPtr FileHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateSection(
[Out] out IntPtr SectionHandle,
[In] SectionAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] [Optional] ref long MaximumSize,
[In] int PageAttributes,
[In] int SectionAttributes,
[In] [Optional] IntPtr FileHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateSemaphore(
[Out] out IntPtr SemaphoreHandle,
[In] SemaphoreAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] int InitialCount,
[In] int MaximumCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateSemaphore(
[Out] out IntPtr SemaphoreHandle,
[In] SemaphoreAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] int InitialCount,
[In] int MaximumCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateSymbolicLinkObject(
[Out] out IntPtr LinkHandle,
[In] SymbolicLinkAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] ref UnicodeString LinkTarget
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateThread(
[Out] out IntPtr ThreadHandle,
[In] ThreadAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] IntPtr ProcessHandle,
[Out] out ClientId ClientId,
[In] ref Context ThreadContext,
[In] ref InitialTeb InitialTeb,
[In] bool CreateSuspended
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateThreadEx(
[Out] out IntPtr ThreadHandle,
[In] ThreadAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] IntPtr ProcessHandle,
[In] IntPtr StartAddress,
[In] IntPtr Parameter,
[In] int Flags,
[In] [Optional] int Reserved,
[In] [Optional] int StackCommit,
[In] [Optional] int StackReserve,
[In] [Optional] IntPtr Unknown
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateTimer(
[Out] out IntPtr TimerHandle,
[In] TimerAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] TimerType TimerType
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateTimer(
[Out] out IntPtr TimerHandle,
[In] TimerAccess DesiredAccess,
[In] [Optional] IntPtr ObjectAttributes,
[In] TimerType TimerType
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateToken(
[Out] out IntPtr TokenHandle,
[In] TokenAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] TokenType TokenType,
[In] ref Luid AuthenticationId,
[In] ref long ExpirationTime,
[In] ref TokenUser User,
[In] ref TokenGroups Groups,
[In] ref TokenPrivileges Privileges,
[In] [Optional] ref TokenOwner Owner,
[In] ref TokenPrimaryGroup PrimaryGroup,
[In] [Optional] ref TokenDefaultDacl DefaultDacl,
[In] ref TokenSource TokenSource
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateTransaction(
[Out] out IntPtr TransactionHandle,
[In] TransactionAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ref Guid Uow, // Unit of work identifier
[In] [Optional] IntPtr TmHandle,
[In] [Optional] TransactionOptions CreateOptions,
[In] [Optional] int IsolationLevel, // Reserved
[In] [Optional] int IsolationFlags, // Reserved
[In] [Optional] ref long Timeout,
[In] [Optional] ref UnicodeString Description
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateTransactionManager(
[Out] out IntPtr TmHandle,
[In] TmAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ref UnicodeString LogFileName,
[In] [Optional] TmOptions CreateOptions,
[In] [Optional] int CreateStrength // Reserved
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtCreateWaitablePort(
[Out] out IntPtr PortHandle,
[In] ref ObjectAttributes ObjectAttributes,
[In] int MaxConnectionInfoLength,
[In] int MaxMessageLength,
[In] [Optional] int MaxPoolUsage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDebugActiveProcess(
[In] IntPtr ProcessHandle,
[In] IntPtr DebugObjectHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDebugContinue(
[In] IntPtr DebugObjectHandle,
[In] ref ClientId ClientId,
[In] NtStatus ContinueStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDelayExecution(
[In] bool Alertable,
[In] ref long DelayInterval
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDeleteFile(
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDeleteKey(
[In] IntPtr KeyHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDeleteValueKey(
[In] IntPtr KeyHandle,
[In] ref UnicodeString ValueName
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDeviceIoControlFile(
[In] IntPtr FileHandle,
[In] IntPtr Event,
[In] IoApcRoutine ApcRoutine,
[In] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] int IoControlCode,
[In] IntPtr InputBuffer,
[In] int InputBufferLength,
[In] IntPtr OutputBuffer,
[In] int OutputBufferLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDeviceIoControlFile(
[In] IntPtr FileHandle,
[In] IntPtr Event,
[In] IoApcRoutine ApcRoutine,
[In] IntPtr ApcContext,
[In] IntPtr IoStatusBlock,
[In] int IoControlCode,
[In] IntPtr InputBuffer,
[In] int InputBufferLength,
[In] IntPtr OutputBuffer,
[In] int OutputBufferLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDuplicateObject(
[In] IntPtr SourceProcessHandle,
[In] IntPtr SourceHandle,
[In] IntPtr TargetProcessHandle,
[Out] out IntPtr TargetHandle,
[In] int DesiredAccess,
[In] HandleFlags Attributes,
[In] DuplicateOptions Options
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtDuplicateToken(
[In] IntPtr ExistingTokenHandle,
[In] TokenAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] bool EffectiveOnly,
[In] TokenType TokenType,
[Out] out IntPtr NewTokenHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtEnumerateTransactionObject(
[In] [Optional] IntPtr RootObjectHandle,
[In] KtmObjectType QueryType,
ref KtmObjectCursor ObjectCursor,
[In] int ObjectCursorLength,
[Out] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtExtendSection(
[In] IntPtr SectionHandle,
ref long NewSectionSize
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFilterToken(
[In] IntPtr ExistingTokenHandle,
[In] int Flags,
[In] [Optional] ref TokenGroups SidsToDisable,
[In] [Optional] ref TokenPrivileges PrivilegesToDelete,
[In] [Optional] ref TokenGroups RestrictedSids,
[Out] out IntPtr NewTokenHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFlushBuffersFile(
[In] IntPtr FileHandle,
[Out] out IoStatusBlock IoStatusBlock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFlushKey(
[In] IntPtr KeyHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFlushVirtualMemory(
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
ref IntPtr RegionSize,
[Out] out IoStatusBlock IoStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFreeVirtualMemory(
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
ref IntPtr RegionSize,
[In] MemoryFlags FreeType
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFsControlFile(
[In] IntPtr FileHandle,
[In] IntPtr Event,
[In] IoApcRoutine ApcRoutine,
[In] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] int FsControlCode,
[In] IntPtr InputBuffer,
[In] int InputBufferLength,
[In] IntPtr OutputBuffer,
[In] int OutputBufferLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtFsControlFile(
[In] IntPtr FileHandle,
[In] IntPtr Event,
[In] IoApcRoutine ApcRoutine,
[In] IntPtr ApcContext,
[In] IntPtr IoStatusBlock,
[In] int FsControlCode,
[In] IntPtr InputBuffer,
[In] int InputBufferLength,
[In] IntPtr OutputBuffer,
[In] int OutputBufferLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetContextThread(
[In] IntPtr ThreadHandle,
[In] IntPtr ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetContextThread(
[In] IntPtr ThreadHandle,
ref Context ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetContextThread(
[In] IntPtr ThreadHandle,
ref ContextAmd64 ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetCurrentProcessorNumber();
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetNextProcess(
[In] [Optional] IntPtr ProcessHandle,
[In] ProcessAccess DesiredAccess,
[In] HandleFlags HandleAttributes,
[In] int Flags,
[Out] out IntPtr NewProcessHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetNextThread(
[In] [Optional] IntPtr ProcessHandle,
[In] [Optional] IntPtr ThreadHandle,
[In] ThreadAccess DesiredAccess,
[In] HandleFlags HandleAttributes,
[In] int Flags,
[Out] out IntPtr NewThreadHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtGetNotificationResourceManager(
[In] IntPtr ResourceManagerHandle,
[In] IntPtr TransactionNotification, // TransactionNotification*
[In] int NotificationLength,
[In] ref long Timeout,
[Out] [Optional] out int ReturnLength,
[In] int Asynchronous, // Must be zero.
[In] [Optional] IntPtr AsynchronousContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtImpersonateAnonymousToken(
[In] IntPtr ThreadHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtImpersonateClientOfPort(
[In] IntPtr PortHandle,
[In] IntPtr Message
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtImpersonateThread(
[In] IntPtr ServerThreadHandle,
[In] IntPtr ClientThreadHandle,
[In] ref SecurityQualityOfService SecurityQos
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtIsProcessInJob(
[In] IntPtr ProcessHandle,
[In] [Optional] IntPtr JobHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtListenPort(
[In] IntPtr PortHandle,
[In] IntPtr ConnectionRequest
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtLoadDriver(
[In] ref UnicodeString DriverServiceName
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtLockFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] ref long ByteOffset,
[In] ref long Length,
[In] int Key,
[In] bool FailImmediately,
[In] bool ExclusiveLock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtLockFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[In] IntPtr IoStatusBlock,
[In] ref long ByteOffset,
[In] ref long Length,
[In] int Key,
[In] bool FailImmediately,
[In] bool ExclusiveLock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtLockVirtualMemory(
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
ref IntPtr RegionSize,
[In] MemoryFlags MapType
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtMakePermanentObject(
[In] IntPtr Handle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtMakeTemporaryObject(
[In] IntPtr Handle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtMapViewOfSection(
[In] IntPtr SectionHandle,
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
[In] IntPtr ZeroBits,
[In] IntPtr CommitSize,
[Optional] ref long SectionOffset,
ref IntPtr ViewSize,
[In] SectionInherit InheritDisposition,
[In] MemoryFlags AllocationType,
[In] MemoryProtection Win32Protect
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtNotifyChangeDirectoryFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] FileNotifyFlags CompletionFilter,
[In] bool WatchTree
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtNotifyChangeDirectoryFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[In] IntPtr IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] FileNotifyFlags CompletionFilter,
[In] bool WatchTree
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenDirectoryObject(
[Out] out IntPtr DirectoryHandle,
[In] DirectoryAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenEnlistment(
[Out] out IntPtr EnlistmentHandle,
[In] EnlistmentAccess DesiredAccess,
[In] IntPtr RmHandle,
[In] ref Guid EnlistmentGuid,
[In] [Optional] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenEvent(
[Out] out IntPtr EventHandle,
[In] EventAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenEventPair(
[Out] out IntPtr EventPairHandle,
[In] EventPairAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenFile(
[Out] out IntPtr FileHandle,
[In] FileAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[Out] out IoStatusBlock IoStatusBlock,
[In] FileShareMode ShareAccess,
[In] FileCreateOptions OpenOptions
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenIoCompletion(
[Out] out IntPtr IoCompletionHandle,
[In] IoCompletionAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenJobObject(
[Out] out IntPtr JobHandle,
[In] JobObjectAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenKey(
[Out] out IntPtr KeyHandle,
[In] KeyAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenKeyedEvent(
[Out] out IntPtr KeyedEventHandle,
[In] KeyedEventAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenMutant(
[Out] out IntPtr MutantHandle,
[In] MutantAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenProcess(
[Out] out IntPtr ProcessHandle,
[In] ProcessAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ref ClientId ClientId
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenProcess(
[Out] out IntPtr ProcessHandle,
[In] ProcessAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] [Optional] IntPtr ClientId
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenProcessToken(
[In] IntPtr ProcessHandle,
[In] TokenAccess DesiredAccess,
[Out] out IntPtr TokenHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenProcessTokenEx(
[In] IntPtr ProcessHandle,
[In] TokenAccess DesiredAccess,
[In] int HandleAttributes,
[Out] out IntPtr TokenHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenResourceManager(
[Out] out IntPtr ResourceManagerHandle,
[In] ResourceManagerAccess DesiredAccess,
[In] IntPtr TmHandle,
[In] ref Guid ResourceManagerGuid,
[In] [Optional] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenSection(
[Out] out IntPtr SectionHandle,
[In] SectionAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenSemaphore(
[Out] out IntPtr SemaphoreHandle,
[In] SemaphoreAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenSymbolicLinkObject(
[Out] out IntPtr LinkHandle,
[In] SymbolicLinkAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenThread(
[Out] out IntPtr ThreadHandle,
[In] ThreadAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ref ClientId ClientId
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenThread(
[Out] out IntPtr ThreadHandle,
[In] ThreadAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes,
[In] [Optional] IntPtr ClientId
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenThreadToken(
[In] IntPtr ThreadHandle,
[In] TokenAccess DesiredAccess,
[In] bool OpenAsSelf,
[Out] out IntPtr TokenHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenThreadTokenEx(
[In] IntPtr ThreadHandle,
[In] TokenAccess DesiredAccess,
[In] bool OpenAsSelf,
[In] int HandleAttributes,
[Out] out IntPtr TokenHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenTimer(
[Out] out IntPtr TimerHandle,
[In] TimerAccess DesiredAccess,
[In] ref ObjectAttributes ObjectAttributes
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenTransaction(
[Out] out IntPtr TransactionHandle,
[In] TransactionAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] ref Guid Uow,
[In] [Optional] IntPtr TmHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenTransactionManager(
[Out] out IntPtr TmHandle,
[In] TmAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] ref UnicodeString LogFileName,
[In] [Optional] ref Guid TmIdentity,
[In] [Optional] int OpenOptions // Must be zero.
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtOpenTransactionManager(
[Out] out IntPtr TmHandle,
[In] TmAccess DesiredAccess,
[In] [Optional] ref ObjectAttributes ObjectAttributes,
[In] [Optional] IntPtr LogFileName,
[In] [Optional] IntPtr TmIdentity,
[In] [Optional] int OpenOptions // Must be zero.
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtPrepareComplete(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtPrepareEnlistment(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtPrePrepareComplete(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtPrePrepareEnlistment(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtPrivilegeCheck(
[In] IntPtr ClientToken,
[In] IntPtr RequiredPrivileges, // PrivilegeSet*
[MarshalAs(UnmanagedType.U1)]
[Out] out bool Result
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtProtectVirtualMemory(
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
ref IntPtr RegionSize,
[In] MemoryProtection NewProtect,
[Out] out MemoryProtection OldProtect
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtPulseEvent(
[In] IntPtr EventHandle,
[Out] [Optional] out int PreviousState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryDebugFilterState(
[In] int ComponentId,
[In] int Level
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryDirectoryFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr FileInformation,
[In] int Length,
[In] FileInformationClass FileInformationClass,
[In] bool ReturnSingleEntry,
[In] [Optional] IntPtr FileName,
[In] bool RestartScan
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryDirectoryObject(
[In] IntPtr DirectoryHandle,
[In] IntPtr Buffer,
[In] int Length,
[In] bool ReturnSingleEntry,
[In] bool RestartScan,
ref int Context,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryEvent(
[In] IntPtr EventHandle,
[In] EventInformationClass EventInformationClass,
[Out] out EventBasicInformation EventInformation,
[In] int EventInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationEnlistment(
[In] IntPtr EnlistmentHandle,
[In] EnlistmentInformationClass EnlistmentInformationClass,
[In] IntPtr EnlistmentInformation,
[In] int EnlistmentInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationEnlistment(
[In] IntPtr EnlistmentHandle,
[In] EnlistmentInformationClass EnlistmentInformationClass,
[Out] out EnlistmentBasicInformation EnlistmentInformation,
[In] int EnlistmentInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationFile(
[In] IntPtr FileHandle,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr FileInformation,
[In] int FileInformationLength,
[In] FileInformationClass FileInformationClass
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationJobObject(
[In] [Optional] IntPtr JobHandle,
[In] JobObjectInformationClass JobObjectInformationClass,
[In] IntPtr JobObjectInformation,
[In] int JobObjectInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
IntPtr ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out int ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out IntPtr ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out IoCounters ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out PooledUsageAndLimits ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out ProcessPriorityClassStruct ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out QuotaLimits ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out VmCounters ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out MemExecuteOptions ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out ProcessBasicInformation ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[Out] out UnicodeString ProcessInformation,
[In] int ProcessInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationResourceManager(
[In] IntPtr ResourceManagerHandle,
[In] ResourceManagerInformationClass ResourceManagerInformationClass,
[In] IntPtr ResourceManagerInformation,
[In] int ResourceManagerInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
ref ThreadBasicInformation ThreadInformation,
[In] int ThreadInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
[Out] out int ThreadInformation,
[In] int ThreadInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
[Out] out IntPtr ThreadInformation,
[In] int ThreadInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
IntPtr ThreadInformation,
[In] int ThreadInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public unsafe static extern NtStatus NtQueryInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
void* ThreadInformation,
[In] int ThreadInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationToken(
[In] IntPtr TokenHandle,
[In] TokenInformationClass TokenInformationClass,
[In] IntPtr TokenInformation,
[In] int TokenInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationToken(
[In] IntPtr TokenHandle,
[In] TokenInformationClass TokenInformationClass,
[Out] out int TokenInformation,
[In] int TokenInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationToken(
[In] IntPtr TokenHandle,
[In] TokenInformationClass TokenInformationClass,
[Out] out IntPtr TokenInformation,
[In] int TokenInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationTransaction(
[In] IntPtr TransactionHandle,
[In] TransactionInformationClass TransactionInformationClass,
[In] IntPtr TransactionInformation,
[In] int TransactionInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationTransaction(
[In] IntPtr TransactionHandle,
[In] TransactionInformationClass TransactionInformationClass,
[Out] out TransactionBasicInformation TransactionInformation,
[In] int TransactionInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationTransactionManager(
[In] IntPtr TransactionManagerHandle,
[In] TmInformationClass TransactionManagerInformationClass,
[In] IntPtr TransactionManagerInformation,
[In] int TransactionManagerInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationTransactionManager(
[In] IntPtr TransactionManagerHandle,
[In] TmInformationClass TransactionManagerInformationClass,
[Out] out TmBasicInformation TransactionManagerInformation,
[In] int TransactionManagerInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationTransactionManager(
[In] IntPtr TransactionManagerHandle,
[In] TmInformationClass TransactionManagerInformationClass,
[Out] out TmLogInformation TransactionManagerInformation,
[In] int TransactionManagerInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryInformationTransactionManager(
[In] IntPtr TransactionManagerHandle,
[In] TmInformationClass TransactionManagerInformationClass,
[Out] out TmRecoveryInformation TransactionManagerInformation,
[In] int TransactionManagerInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryIntervalProfile(
[In] KProfileSource Source,
[Out] out int Interval
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryIoCompletion(
[In] IntPtr IoCompletionHandle,
[In] IoCompletionInformationClass IoCompletionInformationClass,
[Out] out IoCompletionBasicInformation IoCompletionInformation,
[In] int IoCompletionInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryMutant(
[In] IntPtr MutantHandle,
[In] MutantInformationClass MutantInformationClass,
[Out] out MutantBasicInformation MutantInformation,
[In] int MutantInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryMutant(
[In] IntPtr MutantHandle,
[In] MutantInformationClass MutantInformationClass,
[Out] out MutantOwnerInformation MutantInformation,
[In] int MutantInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryObject(
[In] IntPtr Handle,
[In] ObjectInformationClass ObjectInformationClass,
[Out] IntPtr ObjectInformation,
[In] int ObjectInformationLength,
[Out] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryPortInformationProcess();
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySection(
[In] IntPtr SectionHandle,
[In] SectionInformationClass SectionInformationClass,
[Out] out SectionBasicInformation SectionInformation,
[In] IntPtr SectionInformationLength,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySection(
[In] IntPtr SectionHandle,
[In] SectionInformationClass SectionInformationClass,
[Out] out SectionImageInformation SectionInformation,
[In] IntPtr SectionInformationLength,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySecurityObject(
[In] IntPtr Handle,
[In] SecurityInformation SecurityInformation,
[In] IntPtr SecurityDescriptor,
[In] int SecurityDescriptorLength,
[Out] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySemaphore(
[In] IntPtr SemaphoreHandle,
[In] SemaphoreInformationClass SemaphoreInformationClass,
[Out] out SemaphoreBasicInformation SemaphoreInformation,
[In] int SemaphoreInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySymbolicLinkObject(
[In] IntPtr LinkHandle,
ref UnicodeString LinkName,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySystemInformation(
[In] SystemInformationClass SystemInformationClass,
[Out] out SystemBasicInformation SystemInformation,
[In] int SystemInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySystemInformation(
[In] SystemInformationClass SystemInformationClass,
IntPtr SystemInformation,
[In] int SystemInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySystemInformation(
[In] SystemInformationClass SystemInformationClass,
[MarshalAs(UnmanagedType.LPArray)] SystemProcessorPerformanceInformation[] SystemInformation,
[In] int SystemInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySystemInformation(
[In] SystemInformationClass SystemInformationClass,
[Out] out SystemPerformanceInformation SystemInformation,
[In] int SystemInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySystemInformation(
[In] SystemInformationClass SystemInformationClass,
[Out] out SystemTimeOfDayInformation SystemInformation,
[In] int SystemInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQuerySystemInformation(
[In] SystemInformationClass SystemInformationClass,
[Out] out SystemCacheInformation SystemInformation,
[In] int SystemInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryTimer(
[In] IntPtr TimerHandle,
[In] TimerInformationClass TimerInformationClass,
[Out] out TimerBasicInformation TimerInformation,
[In] int TimerInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryVirtualMemory(
[In] IntPtr ProcessHandle,
[In] IntPtr BaseAddress,
[In] MemoryInformationClass MemoryInformationClass,
[In] IntPtr Buffer,
[In] IntPtr MemoryInformationLength,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryVirtualMemory(
[In] IntPtr ProcessHandle,
[In] IntPtr BaseAddress,
[In] MemoryInformationClass MemoryInformationClass,
[Out] out MemoryBasicInformation Buffer,
[In] IntPtr MemoryInformationLength,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueryVolumeInformationFile(
[In] IntPtr FileHandle,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr FsInformation,
[In] int FsInformationLength,
[In] FsInformationClass FsInformationClass
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtQueueApcThread(
[In] IntPtr ThreadHandle,
[In] IntPtr ApcRoutine,
[In] [Optional] IntPtr ApcArgument1,
[In] [Optional] IntPtr ApcArgument2,
[In] [Optional] IntPtr ApcArgument3
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReadFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] [Optional] ref long ByteOffset,
[In] [Optional] ref int Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReadFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] [Optional] IntPtr ByteOffset,
[In] [Optional] IntPtr Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReadFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[In] IntPtr IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] [Optional] IntPtr ByteOffset,
[In] [Optional] IntPtr Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReadOnlyEnlistment(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReadRequestData(
[In] IntPtr PortHandle,
[In] IntPtr Message,
[In] int DataEntryIndex,
[In] IntPtr Buffer,
[In] IntPtr BufferSize,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReadVirtualMemory(
[In] IntPtr ProcessHandle,
[In] [Optional] IntPtr BaseAddress,
[In] IntPtr Buffer,
[In] IntPtr BufferSize,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRecoverEnlistment(
[In] IntPtr EnlistmentHandle,
[In] [Optional] IntPtr EnlistmentKey
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRecoverResourceManager(
[In] IntPtr ResourceManagerHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRecoverTransactionManager(
[In] IntPtr TransactionManagerHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRegisterThreadTerminatePort(
[In] IntPtr PortHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReleaseKeyedEvent(
[In] IntPtr KeyedEventHandle,
[In] IntPtr KeyValue,
[In] bool Alertable,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReleaseMutant(
[In] IntPtr MutantHandle,
[Out] [Optional] out int PreviousCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReleaseSemaphore(
[In] IntPtr SemaphoreHandle,
[In] int ReleaseCount,
[Out] [Optional] out int PreviousCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRemoveIoCompletion(
[In] IntPtr IoCompletionHandle,
[Out] out IntPtr KeyContext,
[Out] out IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRemoveProcessDebug(
[In] IntPtr ProcessHandle,
[In] IntPtr DebugObjectHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReplyPort(
[In] IntPtr PortHandle,
[In] IntPtr ReplyMessage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReplyWaitReceivePort(
[In] IntPtr PortHandle,
[Out] [Optional] out IntPtr PortContext,
[In] [Optional] IntPtr ReplyMessage,
[In] IntPtr ReceiveMessage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReplyWaitReceivePortEx(
[In] IntPtr PortHandle,
[Out] [Optional] out IntPtr PortContext,
[In] [Optional] IntPtr ReplyMessage,
[In] IntPtr ReceiveMessage,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtReplyWaitReplyPort(
[In] IntPtr PortHandle,
[In] IntPtr ReplyMessage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRequestPort(
[In] IntPtr PortHandle,
[In] IntPtr RequestMessage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRequestWaitReplyPort(
[In] IntPtr PortHandle,
[In] IntPtr RequestMessage,
[In] IntPtr ReplyMessage
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtResetEvent(
[In] IntPtr EventHandle,
[Out] [Optional] out int PreviousState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtResumeProcess(
[In] IntPtr ProcessHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtResumeThread(
[In] IntPtr ThreadHandle,
[Out] [Optional] out int PreviousSuspendCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRollbackComplete(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRollbackEnlistment(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRollbackTransaction(
[In] IntPtr TransactionHandle,
[In] bool Wait
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtRollforwardTransactionManager(
[In] IntPtr TransactionManagerHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetContextThread(
[In] IntPtr ThreadHandle,
[In] IntPtr ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetContextThread(
[In] IntPtr ThreadHandle,
[In] ref Context ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetContextThread(
[In] IntPtr ThreadHandle,
[In] ref ContextAmd64 ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetDebugFilterState(
[In] int ComponentId,
[In] int Level,
[In] bool State
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetEvent(
[In] IntPtr EventHandle,
[Out] [Optional] out int PreviousState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetEventBoostPriority(
[In] IntPtr EventHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetHighEventPair(
[In] IntPtr EventPairHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetHighWaitLowEventPair(
[In] IntPtr EventPairHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationDebugObject(
[In] IntPtr DebugObjectHandle,
[In] DebugObjectInformationClass DebugObjectInformationClass,
[In] IntPtr DebugObjectInformation,
[In] int DebugObjectInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationFile(
[In] IntPtr FileHandle,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr FileInformation,
[In] int Length,
[In] FileInformationClass FileInformationClass
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationJobObject(
[In] IntPtr JobHandle,
[In] JobObjectInformationClass JobObjectInformationClass,
[In] IntPtr JobObjectInformation,
[In] int JobObjectInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationObject(
[In] IntPtr Handle,
[In] ObjectInformationClass ObjectInformationClass,
[In] IntPtr ObjectInformation,
[In] int ObjectInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[In] IntPtr ProcessInformation,
[In] int ProcessInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[In] ref int ProcessInformation,
[In] int ProcessInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[In] ref ProcessHandleTracingEnable ProcessInformation,
[In] int ProcessInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationProcess(
[In] IntPtr ProcessHandle,
[In] ProcessInformationClass ProcessInformationClass,
[In] ref ProcessPriorityClassStruct ProcessInformation,
[In] int ProcessInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
[In] IntPtr ThreadInformation,
[In] int ThreadInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
[In] ref int ThreadInformation,
[In] int ThreadInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationThread(
[In] IntPtr ThreadHandle,
[In] ThreadInformationClass ThreadInformationClass,
[In] ref IntPtr ThreadInformation,
[In] int ThreadInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationToken(
[In] IntPtr TokenHandle,
[In] TokenInformationClass TokenInformationClass,
[In] IntPtr TokenInformation,
[In] int TokenInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetInformationToken(
[In] IntPtr TokenHandle,
[In] TokenInformationClass TokenInformationClass,
[In] ref int TokenInformation,
[In] int TokenInformationLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetIntervalProfile(
[In] int Interval,
[In] KProfileSource Source
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetIoCompletion(
[In] IntPtr IoCompletionHandle,
[In] IntPtr KeyContext,
[In] [Optional] IntPtr ApcContext,
[In] NtStatus IoStatus,
[In] IntPtr IoStatusInformation
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetLowEventPair(
[In] IntPtr EventPairHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetLowWaitHighEventPair(
[In] IntPtr EventPairHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetSecurityObject(
[In] IntPtr Handle,
[In] SecurityInformation SecurityInformation,
[In] IntPtr SecurityDescriptor
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetSystemInformation(
[In] SystemInformationClass SystemInformationClass,
[In] ref SystemLoadAndCallImage SystemInformation,
[In] int SystemInformationLength
);
/// <param name="Period">Period, in milliseconds.</param>
[DllImport("ntdll.dll")]
public static extern NtStatus NtSetTimer(
[In] IntPtr TimerHandle,
[In] ref long DueTime,
[In] [Optional] TimerApcRoutine TimerApcRoutine,
[In] [Optional] IntPtr TimerContext,
[In] bool ResumeTimer,
[In] [Optional] int Period,
[Out] [Optional] out bool PreviousState
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSignalAndWaitForSingleObject(
[In] IntPtr SignalHandle,
[In] IntPtr WaitHandle,
[In] bool Alertable,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSinglePhaseReject(
[In] IntPtr EnlistmentHandle,
[In] [Optional] ref long TmVirtualClock
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtStartProfile(
[In] IntPtr ProfileHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtStopProfile(
[In] IntPtr ProfileHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSuspendProcess(
[In] IntPtr ProcessHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtSuspendThread(
[In] IntPtr ThreadHandle,
[Out] [Optional] out int PreviousSuspendCount
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtTerminateJobObject(
[In] IntPtr JobHandle,
[In] NtStatus ExitStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtTerminateProcess(
[In] [Optional] IntPtr ProcessHandle,
[In] NtStatus ExitStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtTerminateThread(
[In] [Optional] IntPtr ThreadHandle,
[In] NtStatus ExitStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtTestAlert();
[DllImport("ntdll.dll")]
public static extern NtStatus NtUnloadDriver(
[In] ref UnicodeString DriverServiceName
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtUnlockFile(
[In] IntPtr FileHandle,
[Out] out IoStatusBlock IoStatusBlock,
[In] ref long ByteOffset,
[In] ref long Length,
[In] int Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtUnlockVirtualMemory(
[In] IntPtr ProcessHandle,
ref IntPtr BaseAddress,
ref IntPtr RegionSize,
[In] MemoryFlags MapType
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtUnmapViewOfSection(
[In] IntPtr ProcessHandle,
[In] IntPtr BaseAddress
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitForDebugEvent(
[In] IntPtr DebugObjectHandle,
[In] bool Alertable,
[In] [Optional] ref long Timeout,
[In] IntPtr WaitStateChange
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitForKeyedEvent(
[In] IntPtr KeyedEventHandle,
[In] IntPtr KeyValue,
[In] bool Alertable,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitForMultipleObjects(
[In] int Count,
[In] IntPtr[] Handles,
[In] WaitType WaitType,
[In] bool Alertable,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitForMultipleObjects32(
[In] int Count,
[In] int[] Handles,
[In] WaitType WaitType,
[In] bool Alertable,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitForSingleObject(
[In] IntPtr Handle,
[In] bool Alertable,
[In] [Optional] ref long Timeout
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitHighEventPair(
[In] IntPtr EventPairHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWaitLowEventPair(
[In] IntPtr EventPairHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWriteFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] [Optional] ref long ByteOffset,
[In] [Optional] ref int Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWriteFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[Out] out IoStatusBlock IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] [Optional] IntPtr ByteOffset,
[In] [Optional] IntPtr Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWriteFile(
[In] IntPtr FileHandle,
[In] [Optional] IntPtr Event,
[In] [Optional] IoApcRoutine ApcRoutine,
[In] [Optional] IntPtr ApcContext,
[In] IntPtr IoStatusBlock,
[In] IntPtr Buffer,
[In] int Length,
[In] [Optional] IntPtr ByteOffset,
[In] [Optional] IntPtr Key
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWriteRequestData(
[In] IntPtr PortHandle,
[In] IntPtr Message,
[In] int DataEntryIndex,
[In] IntPtr Buffer,
[In] IntPtr BufferSize,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtWriteVirtualMemory(
[In] IntPtr ProcessHandle,
[In] [Optional] IntPtr BaseAddress,
[In] IntPtr Buffer,
[In] IntPtr BufferSize,
[Out] [Optional] out IntPtr ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus NtYieldExecution();
#endregion
#region CSR
[DllImport("ntdll.dll")]
// return: CsrCaptureHeader*
public static extern IntPtr CsrAllocateCaptureBuffer(
[In] int CountMessagePointers,
[In] int Size
);
[DllImport("ntdll.dll")]
public static extern int CsrAllocateMessagePointer(
[In] IntPtr CaptureBuffer, // CsrCaptureHeader*
[In] int Length,
[Out] out IntPtr Pointer
);
[DllImport("ntdll.dll")]
public static extern void CsrCaptureMessageBuffer(
[In] IntPtr CaptureBuffer, // CsrCaptureHeader*
[In] [Optional] IntPtr Buffer,
[In] int Length,
[Out] out IntPtr CapturedBuffer
);
[DllImport("ntdll.dll")]
public static extern void CsrCaptureMessageString(
[In] IntPtr CaptureBuffer, // CsrCaptureHeader*
[MarshalAs(UnmanagedType.LPStr)]
[In] string String,
[In] int Length,
[In] int MaximumLength,
[Out] out AnsiString CapturedString
);
[DllImport("ntdll.dll")]
public static extern NtStatus CsrClientCallServer(
[In] IntPtr Message, // CsrApiMsg*
[In] [Optional] IntPtr CaptureBuffer, // CsrCaptureHeader*
[In] int ApiNumber,
[In] int ArgLength
);
[DllImport("ntdll.dll")]
public static extern void CsrFreeCaptureBuffer(
[In] IntPtr CaptureBuffer // CsrCaptureHeader*
);
#endregion
#region Debugging
[DllImport("ntdll.dll")]
public static extern void DbgBreakPoint();
[DllImport("ntdll.dll")]
public static extern void DbgBreakPointWithStatus(
[In] int Status
);
[DllImport("ntdll.dll")]
public static extern int DbgPrompt(
[MarshalAs(UnmanagedType.LPStr)]
[In] string Prompt,
[In] IntPtr Response,
[In] int MaximumResponseLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgQueryDebugFilterState(
[In] int ComponentId,
[In] int Level
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgSetDebugFilterState(
[In] int ComponentId,
[In] int Level,
[In] bool State
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiConnectToDbg();
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiContinue(
[In] ref ClientId ClientId,
[In] NtStatus ContinueStatus
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiConvertStateChangeStructure(
[In] IntPtr WaitStateChange, // DbgUiWaitStateChange*
[In] IntPtr Win32DebugEvent // DebugEvent*
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiDebugActiveProcess(
[In] IntPtr ProcessHandle
);
[DllImport("ntdll.dll")]
public static extern IntPtr DbgUiGetThreadDebugObject();
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiIssueRemoteBreakin(
[In] IntPtr ProcessHandle
);
[DllImport("ntdll.dll")]
public static extern void DbgUiRemoteBreakin(
[In] IntPtr Parameter
);
[DllImport("ntdll.dll")]
public static extern void DbgUiSetThreadDebugObject(
[In] IntPtr DebugObjectHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiStopDebugging(
[In] IntPtr ProcessHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus DbgUiWaitStateChange(
[In] IntPtr WaitStateChange, // DbgUiWaitStateChange*
[In] [Optional] ref long Timeout
);
#endregion
#region Loader
[DllImport("ntdll.dll", CharSet = CharSet.Unicode)]
public static extern NtStatus LdrGetDllHandle(
[In] [Optional] string DllPath,
[In] [Optional] ref int DllCharacteristics,
[In] ref UnicodeString DllName,
[Out] out IntPtr DllHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus LdrGetProcedureAddress(
[In] IntPtr DllHandle,
[In] [Optional] ref AnsiString ProcedureName,
[In] [Optional] int ProcedureNumber,
[Out] out IntPtr ProcedureAddress
);
[DllImport("ntdll.dll", CharSet = CharSet.Unicode)]
public static extern NtStatus LdrLoadDll(
[In] [Optional] string DllPath,
[In] [Optional] ref int DllCharacteristics,
[In] ref UnicodeString DllName,
[Out] out IntPtr DllHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus LdrQueryProcessModuleInformation(
[In] IntPtr ModuleInformation, // RtlProcessModules*
[In] int ModuleInformationLength,
[Out] [Optional] out int ReturnLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus LdrUnloadDll(
[In] IntPtr DllHandle
);
#endregion
#region Misc.
[DllImport("ntdll.dll")]
public static extern IntPtr NtCurrentTeb();
#endregion
#region Run-Time Library
#region Access Control
#region Access Control Entries
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAccessAllowedAce(
[In] IntPtr Acl,
[In] int AceRevision,
[In] int AccessMask,
[In] IntPtr Sid // Sid*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAccessAllowedAceEx(
[In] IntPtr Acl,
[In] int AceRevision,
[In] AceFlags AceFlags,
[In] int AccessMask,
[In] IntPtr Sid // Sid*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAccessDeniedAce(
[In] IntPtr Acl,
[In] int AceRevision,
[In] int AccessMask,
[In] IntPtr Sid // Sid*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAccessDeniedAceEx(
[In] IntPtr Acl,
[In] int AceRevision,
[In] AceFlags AceFlags,
[In] int AccessMask,
[In] IntPtr Sid // Sid*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAce(
[In] IntPtr Acl,
[In] int AceRevision,
[In] int StartingAceIndex,
[In] IntPtr AceList, // Ace**
[In] int AceListLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAuditAccessAce(
[In] IntPtr Acl,
[In] int AceRevision,
[In] int AccessMask,
[In] IntPtr Sid, // Sid*
[In] bool AuditSuccess,
[In] bool AuditFailure
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddAuditAccessAceEx(
[In] IntPtr Acl,
[In] int AceRevision,
[In] AceFlags AceFlags,
[In] int AccessMask,
[In] IntPtr Sid, // Sid*
[In] bool AuditSuccess,
[In] bool AuditFailure
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAddCompoundAce(
[In] IntPtr Acl,
[In] int AceRevision,
[In] AceType AceType,
[In] int AccessMask,
[In] IntPtr ServerSid, // Sid*
[In] IntPtr ClientSid
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeleteAce(
[In] IntPtr Acl,
[In] int AceIndex
);
[DllImport("ntdll.dll")]
public static extern bool RtlFirstFreeAce(
[In] IntPtr Acl,
[Out] out IntPtr FirstFree
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlGetAce(
[In] IntPtr Acl,
[In] int AceIndex,
[Out] out IntPtr Ace // Ace**
);
#endregion
#region Access Control Lists
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateAcl(
[In] IntPtr Acl, // Acl*
[In] int AclLength,
[In] int AclRevision
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryInformationAcl(
[In] IntPtr Acl,
[In] IntPtr AclInformation,
[In] int AclInformationLength,
[In] AclInformationClass AclInformationClass
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryInformationAcl(
[In] IntPtr Acl,
[Out] out AclRevisionInformation AclInformation,
[In] int AclInformationLength,
[In] AclInformationClass AclInformationClass
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryInformationAcl(
[In] IntPtr Acl,
[Out] out AclSizeInformation AclInformation,
[In] int AclInformationLength,
[In] AclInformationClass AclInformationClass
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetInformationAcl(
[In] IntPtr Acl,
[In] IntPtr AclInformation,
[In] int AclInformationLength,
[In] AclInformationClass AclInformationClass
);
[DllImport("ntdll.dll")]
public static extern bool RtlValidAcl(
[In] IntPtr Acl
);
#endregion
#region Access Masks
[DllImport("ntdll.dll")]
public static extern bool RtlAreAllAccessesGranted(
[In] int GrantedAccess,
[In] int DesiredAccess
);
[DllImport("ntdll.dll")]
public static extern bool RtlAreAnyAccessesGranted(
[In] int GrantedAccess,
[In] int DesiredAccess
);
[DllImport("ntdll.dll")]
public static extern void RtlMapGenericMask(
ref int AccessMask,
[In] ref GenericMapping GenericMapping
);
#endregion
#region Security Descriptors
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAbsoluteToSelfRelativeSD(
[In] IntPtr AbsoluteSecurityDescriptor,
[In] IntPtr SelfRelativeSecurityDescriptor,
ref int BufferLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateSecurityDescriptor(
[In] IntPtr SecurityDescriptor, // SecurityDescriptor*
[In] int Revision
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateSecurityDescriptorRelative(
[In] IntPtr SecurityDescriptor, // SecurityDescriptorRelative*
[In] int Revision
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlGetControlSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[Out] out SecurityDescriptorControlFlags Control,
[Out] out int Revision
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlGetDaclSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[MarshalAs(UnmanagedType.U1)]
[Out] out bool DaclPresent,
[Out] out IntPtr Dacl, // Acl**
[MarshalAs(UnmanagedType.U1)]
[Out] out bool DaclDefaulted
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlGetGroupSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[Out] out IntPtr Group, // Sid**
[MarshalAs(UnmanagedType.U1)]
[Out] out bool GroupDefaulted
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlGetOwnerSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[Out] out IntPtr Owner, // Sid**
[MarshalAs(UnmanagedType.U1)]
[Out] out bool OwnerDefaulted
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlGetSaclSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[MarshalAs(UnmanagedType.U1)]
[Out] out bool SaclPresent,
[Out] out IntPtr Sacl, // Acl**
[MarshalAs(UnmanagedType.U1)]
[Out] out bool SaclDefaulted
);
[DllImport("ntdll.dll")]
public static extern bool RtlGetSecurityDescriptorRMControl(
[In] IntPtr SecurityDescriptor,
[Out] out byte RMControl
);
[DllImport("ntdll.dll")]
public static extern int RtlLengthSecurityDescriptor(
[In] IntPtr SecurityDescriptor
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlMakeSelfRelativeSD(
[In] IntPtr AbsoluteSecurityDescriptor,
[In] IntPtr SelfRelativeSecurityDescriptor,
ref int BufferLength
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSelfRelativeToAbsoluteSD(
[In] IntPtr SelfRelativeSecurityDescriptor,
[In] IntPtr AbsoluteSecurityDescriptor,
ref int AbsoluteSecurityDescriptorSize,
[In] IntPtr Dacl, // Acl*
ref int DaclSize,
[In] IntPtr Sacl, // Acl*
ref int SaclSize,
[In] IntPtr Owner, // Sid*
ref int OwnerSize,
[In] IntPtr PrimaryGroup, // Sid*
ref int PrimaryGroupSize
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSelfRelativeToAbsoluteSD2(
[In] IntPtr SelfRelativeSecurityDescriptor,
ref int BufferSize
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetAttributesSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[In] SecurityDescriptorControlFlags Control,
ref int Revision
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetControlSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[In] SecurityDescriptorControlFlags ControlBitsOfInterest,
[In] SecurityDescriptorControlFlags ControlBitsToSet
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetDaclSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[In] bool DaclPresent,
[In] IntPtr Dacl, // Acl*
[In] bool DaclDefaulted
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetGroupSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[In] IntPtr Group, // Sid*
[In] bool GroupDefaulted
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetOwnerSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[In] IntPtr Owner, // Sid*
[In] bool OwnerDefaulted
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetSaclSecurityDescriptor(
[In] IntPtr SecurityDescriptor,
[In] bool SaclPresent,
[In] IntPtr Sacl, // Acl*
[In] bool SaclDefaulted
);
[DllImport("ntdll.dll")]
public static extern void RtlSetSecurityDescriptorRMControl(
[In] IntPtr SecurityDescriptor,
[In] [Optional] ref byte RMControl
);
[DllImport("ntdll.dll")]
public static extern bool RtlValidRelativeSecurityDescriptor(
[In] IntPtr SecurityDescriptorInput,
[In] int SecurityDescriptorLength,
[In] SecurityInformation RequiredInformation
);
[DllImport("ntdll.dll")]
public static extern bool RtlValidSecurityDescriptor(
[In] IntPtr SecurityDescriptor
);
#endregion
#region Security Objects
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCopySecurityDescriptor(
[In] IntPtr InputSecurityDescriptor,
[Out] out IntPtr OutputSecurityDescriptor
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateUserSecurityObject(
[In] RtlAceData[] AceData,
[In] int AceCount,
[In] IntPtr OwnerSid, // Sid*
[In] IntPtr GroupSid, // Sid*
[In] bool IsDirectoryObject,
[In] ref GenericMapping GenericMapping,
[Out] out IntPtr NewDescriptor // SecurityDescriptor**
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeleteSecurityObject(
ref IntPtr ObjectDescriptor // SecurityDescriptor**
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlNewSecurityObject(
[In] IntPtr ParentDescriptor,
[In] IntPtr CreatorDescriptor,
[Out] out IntPtr NewDescriptor, // SecurityDescriptor**
[In] bool IsDirectoryObject,
[In] IntPtr Token,
[In] ref GenericMapping GenericMapping
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetSecurityObject(
[In] SecurityInformation SecurityInformation,
[In] IntPtr ModificationDescriptor,
[Out] out IntPtr ObjectsSecurityDescriptor, // SecurityDescriptor**
[In] ref GenericMapping GenericMapping,
[In] IntPtr Token
);
#endregion
#endregion
#region Bitmaps
[DllImport("ntdll.dll")]
public static extern bool RtlAreBitsClear(
[In] ref RtlBitmap BitMapHeader,
[In] int StartingIndex,
[In] int Length
);
[DllImport("ntdll.dll")]
public static extern bool RtlAreBitsSet(
[In] ref RtlBitmap BitMapHeader,
[In] int StartingIndex,
[In] int Length
);
public static int RtlCheckBit(
ref RtlBitmap BitMapHeader,
int BitPosition
)
{
unsafe
{
int* buffer = (int*)BitMapHeader.Buffer;
return (buffer[BitPosition / 32] >> (BitPosition % 32)) & 0x1;
}
}
[DllImport("ntdll.dll")]
public static extern void RtlClearAllBits(
[In] ref RtlBitmap BitMapHeader
);
[DllImport("ntdll.dll")]
public static extern void RtlClearBit(
[In] ref RtlBitmap BitMapHeader,
[In] int BitNumber
);
[DllImport("ntdll.dll")]
public static extern void RtlClearBits(
[In] ref RtlBitmap BitMapHeader,
[In] int StartingIndex,
[In] int NumberToClear
);
[DllImport("ntdll.dll")]
public static extern int RtlFindClearBits(
[In] ref RtlBitmap BitMapHeader,
[In] int NumberToFind,
[In] int HintIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlFindClearBitsAndSet(
[In] ref RtlBitmap BitMapHeader,
[In] int NumberToFind,
[In] int HintIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlFindClearRuns(
[In] ref RtlBitmap BitMapHeader,
RtlBitmapRun[] RunArray,
[In] int SizeOfRunArray,
[In] bool LocateLongestRuns
);
[DllImport("ntdll.dll")]
public static extern int RtlFindLastBackwardRunClear(
[In] ref RtlBitmap BitMapHeader,
[In] int FromIndex,
[Out] out int StartingRunIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlFindNextForwardRunClear(
[In] ref RtlBitmap BitMapHeader,
[In] int FromIndex,
[Out] out int StartingRunIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlFindSetBits(
[In] ref RtlBitmap BitMapHeader,
[In] int NumberToFind,
[In] int HintIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlFindSetBitsAndClear(
[In] ref RtlBitmap BitMapHeader,
[In] int NumberToFind,
[In] int HintIndex
);
[DllImport("ntdll.dll")]
public static extern void RtlInitializeBitMap(
[Out] out RtlBitmap BitMapHeader,
[In] IntPtr BitMapBuffer, // int*
[In] int SizeOfBitMap
);
[DllImport("ntdll.dll")]
public static extern int RtlFindFirstRunClear(
[In] ref RtlBitmap BitMapHeader,
[Out] out int StartingIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlFindLongestRunClear(
[In] ref RtlBitmap BitMapHeader,
[Out] out int StartingIndex
);
[DllImport("ntdll.dll")]
public static extern int RtlNumberOfClearBits(
[In] ref RtlBitmap BitMapHeader
);
[DllImport("ntdll.dll")]
public static extern int RtlNumberOfSetBits(
[In] ref RtlBitmap BitMapHeader
);
[DllImport("ntdll.dll")]
public static extern void RtlSetBit(
[In] ref RtlBitmap BitMapHeader,
[In] int BitNumber
);
[DllImport("ntdll.dll")]
public static extern void RtlSetBits(
[In] ref RtlBitmap BitMapHeader,
[In] int StartingIndex,
[In] int NumberToSet
);
[DllImport("ntdll.dll")]
public static extern void RtlSetAllBits(
[In] ref RtlBitmap BitMapHeader
);
[DllImport("ntdll.dll")]
public static extern bool RtlTestBit(
[In] ref RtlBitmap BitMapHeader,
[In] int BitNumber
);
#endregion
#region Bits
[DllImport("ntdll.dll")]
public static extern sbyte RtlFindLeastSignificantBit(
[In] long Set
);
[DllImport("ntdll.dll")]
public static extern sbyte RtlFindMostSignificantBit(
[In] long Set
);
#endregion
#region Debugging
[DllImport("ntdll.dll")]
// return: RtlDebugInformation*
public static extern IntPtr RtlCreateQueryDebugBuffer(
[In] [Optional] int MaximumCommit,
[In] bool UseEventPair
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDestroyQueryDebugBuffer(
[In] IntPtr Buffer // RtlDebugInformation*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryProcessBackTraceInformation(
[In] IntPtr Buffer // RtlDebugInformation*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryProcessDebugInformation(
[In] IntPtr UniqueProcessId,
[In] RtlQueryProcessDebugFlags Flags,
[In] IntPtr Buffer // RtlDebugInformation*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryProcessHeapInformation(
[In] IntPtr Buffer // RtlDebugInformation*
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryProcessLockInformation(
[In] IntPtr Buffer // RtlDebugInformation*
);
// Not exported.
//[DllImport("ntdll.dll")]
//public static extern NtStatus RtlQueryProcessModuleInformation(
// [In] [Optional] IntPtr ProcessHandle,
// [In] RtlQueryProcessDebugFlags Flags,
// [In] IntPtr Buffer // RtlDebugInformation*
// );
#endregion
#region Handle Tables
[DllImport("ntdll.dll")]
public static extern IntPtr RtlAllocateHandle(
[In] ref RtlHandleTable HandleTable,
[Out] [Optional] out int HandleIndex
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDestroyHandleTable(
ref RtlHandleTable HandleTable
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlFreeHandle(
[In] ref RtlHandleTable HandleTable,
[In] IntPtr Handle
);
[DllImport("ntdll.dll")]
public static extern void RtlInitializeHandleTable(
[In] int MaximumNumberOfHandles,
[In] int SizeOfHandleTableEntry,
[Out] out RtlHandleTable HandleTable
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlIsValidHandle(
[In] ref RtlHandleTable HandleTable,
[In] IntPtr Handle
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlIsValidIndexHandle(
[In] ref RtlHandleTable HandleTable,
[In] int HandleIndex,
[Out] out IntPtr Handle
);
#endregion
#region Heaps
[DllImport("ntdll.dll")]
public static extern IntPtr RtlAllocateHeap(
[In] IntPtr HeapHandle,
[In] HeapFlags Flags,
[In] IntPtr Size
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlCompactHeap(
[In] IntPtr HeapHandle,
[In] HeapFlags Flags
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlCreateHeap(
[In] HeapFlags Flags,
[In] [Optional] IntPtr HeapBase,
[In] [Optional] IntPtr ReserveSize,
[In] [Optional] IntPtr CommitSize,
[In] [Optional] IntPtr Lock,
[In] [Optional] IntPtr Parameters
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlDestroyHeap(
[In] IntPtr HeapHandle
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.U1)]
public static extern bool RtlFreeHeap(
[In] IntPtr HeapHandle,
[In] HeapFlags Flags,
[In] IntPtr BaseAddress
);
[DllImport("ntdll.dll")]
public static extern int RtlGetProcessHeaps(
[In] int NumberOfHeaps,
IntPtr[] ProcessHeaps
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.U1)]
public static extern bool RtlLockHeap(
[In] IntPtr HeapHandle
);
[DllImport("ntdll.dll")]
public static extern void RtlProtectHeap(
[In] IntPtr HeapHandle,
[In] bool MakeReadOnly
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlReAllocateHeap(
[In] IntPtr HeapHandle,
[In] HeapFlags Flags,
[In] IntPtr BaseAddress,
[In] IntPtr Size
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlSizeHeap(
[In] IntPtr HeapHandle,
[In] HeapFlags Flags,
[In] IntPtr BaseAddress
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.U1)]
public static extern bool RtlUnlockHeap(
[In] IntPtr HeapHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlZeroHeap(
[In] IntPtr HeapHandle,
[In] HeapFlags Flags
);
#endregion
#region Memory
[DllImport("ntdll.dll")]
public static extern IntPtr RtlCompareMemory(
[In] IntPtr Source1,
[In] IntPtr Source2,
[In] IntPtr Length
);
[DllImport("ntdll.dll")]
public static extern void RtlFillMemory(
[In] IntPtr Destination,
[In] IntPtr Length,
[In] byte Fill
);
[DllImport("ntdll.dll")]
public static extern void RtlMoveMemory(
[In] IntPtr Destination,
[In] IntPtr Source,
[In] IntPtr Length
);
[DllImport("ntdll.dll")]
public static extern void RtlZeroMemory(
[In] IntPtr Destination,
[In] IntPtr Length
);
#endregion
#region Message Resources
[DllImport("ntdll.dll")]
public static extern NtStatus RtlFindMessage(
[In] IntPtr DllHandle,
[In] int MessageTableId,
[In] int MessageLanguageId,
[In] int MessageId,
[Out] out IntPtr MessageEntry // MessageResourceEntry*
);
#endregion
#region Privileges
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAcquirePrivilege(
[In] uint[] Privilege,
[In] int NumPriv,
[In] RtlAcquirePrivilegeFlags Flags,
[Out] out IntPtr ReturnedState
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAdjustPrivilege(
[In] uint Privilege,
[In] bool Enable,
[In] bool Client,
[MarshalAs(UnmanagedType.I1)]
[Out] bool WasEnabled
);
[DllImport("ntdll.dll")]
public static extern void RtlReleasePrivilege(
[In] IntPtr StatePointer
);
#endregion
#region Processes and Threads
[DllImport("ntdll.dll")]
public static extern void RtlAcquirePebLock();
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAllocateFromPeb(
[In] int Size,
[Out] out IntPtr Block
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateEnvironment(
[In] bool CloneCurrentEnvironment,
[Out] out IntPtr Environment
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateProcessParameters(
[Out] out IntPtr ProcessParameters,
[In] ref UnicodeString ImagePathName,
[In] ref UnicodeString DllPath,
[In] ref UnicodeString CurrentDirectory,
[In] ref UnicodeString CommandLine,
[In] IntPtr Environment,
[In] ref UnicodeString WindowTitle,
[In] ref UnicodeString DesktopInfo,
[In] ref UnicodeString ShellInfo,
[In] ref UnicodeString RuntimeData
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateUserProcess(
[In] ref UnicodeString NtImagePathName,
[In] ObjectFlags Attributes,
[In] ref RtlUserProcessParameters ProcessParameters,
[In] IntPtr ProcessSecurityDescriptor,
[In] IntPtr ThreadSecurityDescriptor,
[In] IntPtr ParentProcess,
[In] bool InheritHandles,
[In] IntPtr DebugPort,
[In] IntPtr ExceptionPort,
[Out] out RtlUserProcessInformation ProcessInformation
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateUserThread(
[In] IntPtr Process,
[In] IntPtr ThreadSecurityDescriptor,
[In] bool CreateSuspended,
[In] int StackZeroBits,
[In] [Optional] IntPtr MaximumStackSize,
[In] [Optional] IntPtr InitialStackSize,
[In] IntPtr StartAddress,
[In] IntPtr Parameter,
[Out] out IntPtr Thread,
[Out] out ClientId ClientId
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlDeNormalizeProcessParameters(
[In] IntPtr ProcessParameters
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDestroyEnvironment(
[In] IntPtr Environment
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDestroyProcessParameters(
[In] IntPtr ProcessParameters
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlExitUserProcess(
[In] NtStatus ExitStatus
);
[DllImport("ntdll.dll")]
public static extern void RtlExitUserThread(
[In] NtStatus ExitStatus
);
[DllImport("ntdll.dll")]
public static extern void RtlFreeUserThreadStack(
[In] IntPtr Process,
[In] IntPtr Thread
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlFreeToPeb(
[In] IntPtr Block,
[In] int Size
);
[DllImport("ntdll.dll")]
public static extern void RtlInitializeContext(
[In] IntPtr Process,
ref Context Context,
[In] IntPtr Parameter,
[In] IntPtr InitialPc,
[In] IntPtr InitialSp
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlNormalizeProcessParameters(
[In] IntPtr ProcessParameters
);
[DllImport("ntdll.dll")]
public static extern Win32Error RtlNtStatusToDosError(
[In] NtStatus Status
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueryEnvironmentVariable_U(
[In] [Optional] IntPtr Environment,
[In] ref UnicodeString Name,
ref UnicodeString Value
);
[DllImport("ntdll.dll")]
public static extern void RtlReleasePebLock();
[DllImport("ntdll.dll")]
public static extern NtStatus RtlRemoteCall(
[In] IntPtr Process,
[In] IntPtr Thread,
[In] IntPtr CallSite,
[In] int ArgumentCount,
[In] IntPtr[] Arguments,
[In] bool PassContext,
[In] bool AlreadySuspended
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetCurrentEnvironment(
[In] IntPtr Environment,
[Out] out IntPtr PreviousEnvironment
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetEnvironmentVariable(
ref IntPtr Environment,
[In] ref UnicodeString Name,
[In] [Optional] ref UnicodeString Value
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetEnvironmentVariable(
[In] [Optional] IntPtr Environment,
[In] ref UnicodeString Name,
[In] [Optional] ref UnicodeString Value
);
#endregion
#region Security IDs
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAllocateAndInitializeSid(
[In] ref SidIdentifierAuthority IdentifierAuthority,
[In] int SubAuthorityCount,
[In] int SubAuthority0,
[In] int SubAuthority1,
[In] int SubAuthority2,
[In] int SubAuthority3,
[In] int SubAuthority4,
[In] int SubAuthority5,
[In] int SubAuthority6,
[In] int SubAuthority7,
[Out] out IntPtr Sid
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlConvertSidToUnicodeString(
ref UnicodeString UnicodeString,
[In] IntPtr Sid,
[In] bool AllocateDestinationString
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCopySid(
[In] int DestinationSidLength,
[In] IntPtr DestinationSid,
[In] IntPtr SourceSid
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlEqualSid(
[In] IntPtr Sid1,
[In] IntPtr Sid2
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlEqualPrefixSid(
[In] IntPtr Sid1,
[In] IntPtr Sid2
);
[DllImport("ntdll.dll")]
public static extern IntPtr RtlFreeSid(
[In] IntPtr Sid
);
[DllImport("ntdll.dll")]
public unsafe static extern SidIdentifierAuthority* RtlIdentifierAuthoritySid(
[In] IntPtr Sid
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlInitializeSid(
[In] IntPtr Sid,
[In] ref SidIdentifierAuthority IdentifierAuthority,
[In] int SubAuthorityCount
);
[DllImport("ntdll.dll")]
public static extern int RtlLengthRequiredSid(
[In] int SubAuthorityCount
);
[DllImport("ntdll.dll")]
public static extern int RtlLengthSid(
[In] IntPtr Sid
);
[DllImport("ntdll.dll")]
public unsafe static extern int* RtlSubAuthoritySid(
[In] IntPtr Sid,
[In] int SubAuthority
);
[DllImport("ntdll.dll")]
public unsafe static extern byte* RtlSubAuthorityCountSid(
[In] IntPtr Sid
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlValidSid(
[In] IntPtr Sid
);
#endregion
#region Strings
#region ANSI
[DllImport("ntdll.dll")]
public static extern NtStatus RtlAnsiStringToUnicodeString(
ref UnicodeString DestinationString,
[In] ref AnsiString SourceString,
[In] bool AllocateDestinationString
);
[DllImport("ntdll.dll")]
public static extern void RtlFreeAnsiString(
[In] ref AnsiString AnsiString
);
#endregion
#region Unicode
[DllImport("ntdll.dll")]
public static extern int RtlCompareUnicodeString(
[In] ref UnicodeString String1,
[In] ref UnicodeString String2,
[In] bool CaseInSensitive
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlCreateUnicodeString(
[Out] out UnicodeString DestinationString,
[MarshalAs(UnmanagedType.LPWStr)]
[In] string SourceString
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlCreateUnicodeStringFromAsciiz(
[Out] out UnicodeString DestinationString,
[MarshalAs(UnmanagedType.LPStr)]
[In] string SourceString
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDuplicateUnicodeString(
[In] RtlDuplicateUnicodeStringFlags Flags,
[In] ref UnicodeString StringIn,
[Out] out UnicodeString StringOut
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlEqualUnicodeString(
[In] ref UnicodeString String1,
[In] ref UnicodeString String2,
[In] bool CaseInSensitive
);
[DllImport("ntdll.dll")]
public static extern void RtlFreeUnicodeString(
[In] ref UnicodeString UnicodeString
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlHashUnicodeString(
[In] ref UnicodeString String,
[In] bool CaseInSensitive,
[In] HashStringAlgorithm HashAlgorithm,
[Out] out int HashValue
);
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlPrefixUnicodeString(
[In] ref UnicodeString String1,
[In] ref UnicodeString String2,
[In] bool CaseInSensitive
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlUnicodeStringToAnsiString(
ref AnsiString DestinationString,
[In] ref UnicodeString SourceString,
[In] bool AllocateDestinationString
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlUpcaseUnicodeStringToAnsiString(
ref AnsiString DestinationString,
[In] ref UnicodeString SourceString,
[In] bool AllocateDestinationString
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlValidateUnicodeString(
[In] int Flags,
[In] ref UnicodeString String
);
#endregion
#endregion
#region Threading
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateTimer(
[In] IntPtr TimerQueueHandle,
[Out] out IntPtr Handle,
[In] WaitOrTimerCallbackDelegate Function,
[In] IntPtr Context,
[In] int DueTime,
[In] int Period,
[In] WtFlags Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlCreateTimerQueue(
[Out] out IntPtr TimerQueueHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeleteTimer(
[In] IntPtr TimerQueueHandle,
[In] IntPtr TimerToCancel,
[In] IntPtr Event
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeleteTimerQueue(
[In] IntPtr TimerQueueHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeleteTimerQueueEx(
[In] IntPtr TimerQueueHandle,
[In] IntPtr Event
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeregisterWait(
[In] IntPtr WaitHandle
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlDeregisterWaitEx(
[In] IntPtr WaitHandle,
[In] IntPtr Event
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlQueueWorkItem(
[MarshalAs(UnmanagedType.FunctionPtr)]
[In] WorkerCallbackDelegate Function,
[In] IntPtr Context,
[In] WtFlags Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlRegisterWait(
[Out] out IntPtr WaitHandle,
[In] IntPtr Handle,
[MarshalAs(UnmanagedType.FunctionPtr)]
[In] WaitOrTimerCallbackDelegate Function,
[In] IntPtr Context,
[In] int Milliseconds,
[In] WtFlags Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlSetIoCompletionCallback(
[In] IntPtr FileHandle,
[In] ApcCallbackDelegate CompletionProc,
[In] WtFlags Flags
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlUpdateTimer(
[In] IntPtr TimerQueueHandle,
[In] IntPtr TimerHandle,
[In] int DueTime,
[In] int Period
);
#endregion
#region Transactions
[DllImport("ntdll.dll")]
public static extern IntPtr RtlGetCurrentTransaction();
[DllImport("ntdll.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RtlSetCurrentTransaction(
[In] IntPtr TransactionHandle
);
#endregion
#region WOW64
[DllImport("ntdll.dll")]
public static extern NtStatus RtlWow64GetThreadContext(
[In] IntPtr ThreadHandle,
ref Context ThreadContext
);
[DllImport("ntdll.dll")]
public static extern NtStatus RtlWow64SetThreadContext(
[In] IntPtr ThreadHandle,
[In] ref Context ThreadContext
);
#endregion
#endregion
}
}