mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-27 01:57:41 +00:00
20357 lines
555 KiB
ObjectPascal
20357 lines
555 KiB
ObjectPascal
{******************************************************************************}
|
|
{ }
|
|
{ Windows Base Services API interface Unit for Object Pascal }
|
|
{ }
|
|
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
|
|
{ Corporation. All Rights Reserved. }
|
|
{ }
|
|
{ The original file is: winbase.h, released August 2001. The original Pascal }
|
|
{ code is: WinBase.pas, released December 2000. The initial developer of the }
|
|
{ Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
|
|
{ }
|
|
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
|
|
{ Marcel van Brakel. All Rights Reserved. }
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ }
|
|
{ You may retrieve the latest version of this file at the Project JEDI }
|
|
{ APILIB home page, located at http://jedi-apilib.sourceforge.net }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{******************************************************************************}
|
|
|
|
// $Id: JwaWinBase.pas,v 1.17 2007/09/14 06:48:47 marquardt Exp $
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
unit JwaWinBase;
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$WEAKPACKAGEUNIT}
|
|
|
|
{$HPPEMIT ''}
|
|
{$HPPEMIT '#include "WinBase.h"'}
|
|
{$HPPEMIT ''}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
|
|
{$I ..\Includes\JediAPILib.inc}
|
|
|
|
{$STACKFRAMES ON} // must be after include. FPC's $MODE command resets this
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF USE_DELPHI_TYPES}
|
|
Windows,
|
|
{$ENDIF USE_DELPHI_TYPES}
|
|
JwaNtStatus, JwaWinNT, JwaWinType;
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
const
|
|
INVALID_HANDLE_VALUE = HANDLE(-1);
|
|
{$EXTERNALSYM INVALID_HANDLE_VALUE}
|
|
INVALID_FILE_SIZE = DWORD($FFFFFFFF);
|
|
{$EXTERNALSYM INVALID_FILE_SIZE}
|
|
INVALID_SET_FILE_POINTER = DWORD(-1);
|
|
{$EXTERNALSYM INVALID_SET_FILE_POINTER}
|
|
INVALID_FILE_ATTRIBUTES = DWORD(-1);
|
|
{$EXTERNALSYM INVALID_FILE_ATTRIBUTES}
|
|
|
|
FILE_BEGIN = 0;
|
|
{$EXTERNALSYM FILE_BEGIN}
|
|
FILE_CURRENT = 1;
|
|
{$EXTERNALSYM FILE_CURRENT}
|
|
FILE_END = 2;
|
|
{$EXTERNALSYM FILE_END}
|
|
|
|
TIME_ZONE_ID_INVALID = DWORD($FFFFFFFF);
|
|
{$EXTERNALSYM TIME_ZONE_ID_INVALID}
|
|
|
|
WAIT_FAILED = DWORD($FFFFFFFF);
|
|
{$EXTERNALSYM WAIT_FAILED}
|
|
WAIT_OBJECT_0 = STATUS_WAIT_0 + 0;
|
|
{$EXTERNALSYM WAIT_OBJECT_0}
|
|
|
|
WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0 + 0;
|
|
{$EXTERNALSYM WAIT_ABANDONED}
|
|
WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0 + 0;
|
|
{$EXTERNALSYM WAIT_ABANDONED_0}
|
|
|
|
WAIT_IO_COMPLETION = STATUS_USER_APC;
|
|
{$EXTERNALSYM WAIT_IO_COMPLETION}
|
|
STILL_ACTIVE = STATUS_PENDING;
|
|
{$EXTERNALSYM STILL_ACTIVE}
|
|
EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION;
|
|
{$EXTERNALSYM EXCEPTION_ACCESS_VIOLATION}
|
|
EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT;
|
|
{$EXTERNALSYM EXCEPTION_DATATYPE_MISALIGNMENT}
|
|
EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT;
|
|
{$EXTERNALSYM EXCEPTION_BREAKPOINT}
|
|
EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP;
|
|
{$EXTERNALSYM EXCEPTION_SINGLE_STEP}
|
|
EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED;
|
|
{$EXTERNALSYM EXCEPTION_ARRAY_BOUNDS_EXCEEDED}
|
|
EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND;
|
|
{$EXTERNALSYM EXCEPTION_FLT_DENORMAL_OPERAND}
|
|
EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO;
|
|
{$EXTERNALSYM EXCEPTION_FLT_DIVIDE_BY_ZERO}
|
|
EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT;
|
|
{$EXTERNALSYM EXCEPTION_FLT_INEXACT_RESULT}
|
|
EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION;
|
|
{$EXTERNALSYM EXCEPTION_FLT_INVALID_OPERATION}
|
|
EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW;
|
|
{$EXTERNALSYM EXCEPTION_FLT_OVERFLOW}
|
|
EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK;
|
|
{$EXTERNALSYM EXCEPTION_FLT_STACK_CHECK}
|
|
EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW;
|
|
{$EXTERNALSYM EXCEPTION_FLT_UNDERFLOW}
|
|
EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO;
|
|
{$EXTERNALSYM EXCEPTION_INT_DIVIDE_BY_ZERO}
|
|
EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW;
|
|
{$EXTERNALSYM EXCEPTION_INT_OVERFLOW}
|
|
EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION;
|
|
{$EXTERNALSYM EXCEPTION_PRIV_INSTRUCTION}
|
|
EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR;
|
|
{$EXTERNALSYM EXCEPTION_IN_PAGE_ERROR}
|
|
EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION;
|
|
{$EXTERNALSYM EXCEPTION_ILLEGAL_INSTRUCTION}
|
|
EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION;
|
|
{$EXTERNALSYM EXCEPTION_NONCONTINUABLE_EXCEPTION}
|
|
EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW;
|
|
{$EXTERNALSYM EXCEPTION_STACK_OVERFLOW}
|
|
EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION;
|
|
{$EXTERNALSYM EXCEPTION_INVALID_DISPOSITION}
|
|
EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION;
|
|
{$EXTERNALSYM EXCEPTION_GUARD_PAGE}
|
|
EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE;
|
|
{$EXTERNALSYM EXCEPTION_INVALID_HANDLE}
|
|
EXCEPTION_POSSIBLE_DEADLOCK = STATUS_POSSIBLE_DEADLOCK;
|
|
{$EXTERNALSYM EXCEPTION_POSSIBLE_DEADLOCK}
|
|
CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT;
|
|
{$EXTERNALSYM CONTROL_C_EXIT}
|
|
|
|
procedure MoveMemory(Destination, Source: PVOID; Length: SIZE_T);
|
|
{$EXTERNALSYM MoveMemory}
|
|
procedure CopyMemory(Destination, Source: PVOID; Length: SIZE_T);
|
|
{$EXTERNALSYM CopyMemory}
|
|
procedure FillMemory(Destination: PVOID; Length: SIZE_T; Fill: BYTE);
|
|
{$EXTERNALSYM FillMemory}
|
|
procedure ZeroMemory(Destination: PVOID; Length: SIZE_T);
|
|
{$EXTERNALSYM ZeroMemory}
|
|
|
|
|
|
function SecureZeroMemory({__in}ptr : PVOID;{__in}cnt : SIZE_T) : Pointer;{$IFDEF DELPHI2005_UP}inline;{$ENDIF}
|
|
{$EXTERNALSYM ZeroMemory}
|
|
|
|
//
|
|
// File creation flags must start at the high end since they
|
|
// are combined with the attributes
|
|
//
|
|
|
|
const
|
|
FILE_FLAG_WRITE_THROUGH = DWORD($80000000);
|
|
{$EXTERNALSYM FILE_FLAG_WRITE_THROUGH}
|
|
FILE_FLAG_OVERLAPPED = $40000000;
|
|
{$EXTERNALSYM FILE_FLAG_OVERLAPPED}
|
|
FILE_FLAG_NO_BUFFERING = $20000000;
|
|
{$EXTERNALSYM FILE_FLAG_NO_BUFFERING}
|
|
FILE_FLAG_RANDOM_ACCESS = $10000000;
|
|
{$EXTERNALSYM FILE_FLAG_RANDOM_ACCESS}
|
|
FILE_FLAG_SEQUENTIAL_SCAN = $08000000;
|
|
{$EXTERNALSYM FILE_FLAG_SEQUENTIAL_SCAN}
|
|
FILE_FLAG_DELETE_ON_CLOSE = $04000000;
|
|
{$EXTERNALSYM FILE_FLAG_DELETE_ON_CLOSE}
|
|
FILE_FLAG_BACKUP_SEMANTICS = $02000000;
|
|
{$EXTERNALSYM FILE_FLAG_BACKUP_SEMANTICS}
|
|
FILE_FLAG_POSIX_SEMANTICS = $01000000;
|
|
{$EXTERNALSYM FILE_FLAG_POSIX_SEMANTICS}
|
|
FILE_FLAG_OPEN_REPARSE_POINT = $00200000;
|
|
{$EXTERNALSYM FILE_FLAG_OPEN_REPARSE_POINT}
|
|
FILE_FLAG_OPEN_NO_RECALL = $00100000;
|
|
{$EXTERNALSYM FILE_FLAG_OPEN_NO_RECALL}
|
|
FILE_FLAG_FIRST_PIPE_INSTANCE = $00080000;
|
|
{$EXTERNALSYM FILE_FLAG_FIRST_PIPE_INSTANCE}
|
|
|
|
CREATE_NEW = 1;
|
|
{$EXTERNALSYM CREATE_NEW}
|
|
CREATE_ALWAYS = 2;
|
|
{$EXTERNALSYM CREATE_ALWAYS}
|
|
OPEN_EXISTING = 3;
|
|
{$EXTERNALSYM OPEN_EXISTING}
|
|
OPEN_ALWAYS = 4;
|
|
{$EXTERNALSYM OPEN_ALWAYS}
|
|
TRUNCATE_EXISTING = 5;
|
|
{$EXTERNALSYM TRUNCATE_EXISTING}
|
|
|
|
//
|
|
// Define possible return codes from the CopyFileEx callback routine
|
|
//
|
|
|
|
PROGRESS_CONTINUE = 0;
|
|
{$EXTERNALSYM PROGRESS_CONTINUE}
|
|
PROGRESS_CANCEL = 1;
|
|
{$EXTERNALSYM PROGRESS_CANCEL}
|
|
PROGRESS_STOP = 2;
|
|
{$EXTERNALSYM PROGRESS_STOP}
|
|
PROGRESS_QUIET = 3;
|
|
{$EXTERNALSYM PROGRESS_QUIET}
|
|
|
|
//
|
|
// Define CopyFileEx callback routine state change values
|
|
//
|
|
|
|
CALLBACK_CHUNK_FINISHED = $00000000;
|
|
{$EXTERNALSYM CALLBACK_CHUNK_FINISHED}
|
|
CALLBACK_STREAM_SWITCH = $00000001;
|
|
{$EXTERNALSYM CALLBACK_STREAM_SWITCH}
|
|
|
|
//
|
|
// Define CopyFileEx option flags
|
|
//
|
|
|
|
COPY_FILE_FAIL_IF_EXISTS = $00000001;
|
|
{$EXTERNALSYM COPY_FILE_FAIL_IF_EXISTS}
|
|
COPY_FILE_RESTARTABLE = $00000002;
|
|
{$EXTERNALSYM COPY_FILE_RESTARTABLE}
|
|
COPY_FILE_OPEN_SOURCE_FOR_WRITE = $00000004;
|
|
{$EXTERNALSYM COPY_FILE_OPEN_SOURCE_FOR_WRITE}
|
|
COPY_FILE_ALLOW_DECRYPTED_DESTINATION = $00000008;
|
|
{$EXTERNALSYM COPY_FILE_ALLOW_DECRYPTED_DESTINATION}
|
|
|
|
//
|
|
// Define ReplaceFile option flags
|
|
//
|
|
|
|
REPLACEFILE_WRITE_THROUGH = $00000001;
|
|
{$EXTERNALSYM REPLACEFILE_WRITE_THROUGH}
|
|
REPLACEFILE_IGNORE_MERGE_ERRORS = $00000002;
|
|
{$EXTERNALSYM REPLACEFILE_IGNORE_MERGE_ERRORS}
|
|
|
|
//
|
|
// Define the NamedPipe definitions
|
|
//
|
|
|
|
//
|
|
// Define the dwOpenMode values for CreateNamedPipe
|
|
//
|
|
|
|
PIPE_ACCESS_INBOUND = $00000001;
|
|
{$EXTERNALSYM PIPE_ACCESS_INBOUND}
|
|
PIPE_ACCESS_OUTBOUND = $00000002;
|
|
{$EXTERNALSYM PIPE_ACCESS_OUTBOUND}
|
|
PIPE_ACCESS_DUPLEX = $00000003;
|
|
{$EXTERNALSYM PIPE_ACCESS_DUPLEX}
|
|
|
|
//
|
|
// Define the Named Pipe End flags for GetNamedPipeInfo
|
|
//
|
|
|
|
PIPE_CLIENT_END = $00000000;
|
|
{$EXTERNALSYM PIPE_CLIENT_END}
|
|
PIPE_SERVER_END = $00000001;
|
|
{$EXTERNALSYM PIPE_SERVER_END}
|
|
|
|
//
|
|
// Define the dwPipeMode values for CreateNamedPipe
|
|
//
|
|
|
|
PIPE_WAIT = $00000000;
|
|
{$EXTERNALSYM PIPE_WAIT}
|
|
PIPE_NOWAIT = $00000001;
|
|
{$EXTERNALSYM PIPE_NOWAIT}
|
|
PIPE_READMODE_BYTE = $00000000;
|
|
{$EXTERNALSYM PIPE_READMODE_BYTE}
|
|
PIPE_READMODE_MESSAGE = $00000002;
|
|
{$EXTERNALSYM PIPE_READMODE_MESSAGE}
|
|
PIPE_TYPE_BYTE = $00000000;
|
|
{$EXTERNALSYM PIPE_TYPE_BYTE}
|
|
PIPE_TYPE_MESSAGE = $00000004;
|
|
{$EXTERNALSYM PIPE_TYPE_MESSAGE}
|
|
|
|
//
|
|
// Define the well known values for CreateNamedPipe nMaxInstances
|
|
//
|
|
|
|
PIPE_UNLIMITED_INSTANCES = 255;
|
|
{$EXTERNALSYM PIPE_UNLIMITED_INSTANCES}
|
|
|
|
//
|
|
// Define the Security Quality of Service bits to be passed
|
|
// into CreateFile
|
|
//
|
|
|
|
SECURITY_ANONYMOUS = Ord(SecurityAnonymous) shl 16;
|
|
{$EXTERNALSYM SECURITY_ANONYMOUS}
|
|
SECURITY_IDENTIFICATION = Ord(SecurityIdentification) shl 16;
|
|
{$EXTERNALSYM SECURITY_IDENTIFICATION}
|
|
SECURITY_IMPERSONATION = Ord(SecurityImpersonation) shl 16;
|
|
{$EXTERNALSYM SECURITY_IMPERSONATION}
|
|
SECURITY_DELEGATION = Ord(SecurityDelegation) shl 16;
|
|
{$EXTERNALSYM SECURITY_DELEGATION}
|
|
|
|
SECURITY_CONTEXT_TRACKING = $00040000;
|
|
{$EXTERNALSYM SECURITY_CONTEXT_TRACKING}
|
|
SECURITY_EFFECTIVE_ONLY = $00080000;
|
|
{$EXTERNALSYM SECURITY_EFFECTIVE_ONLY}
|
|
|
|
SECURITY_SQOS_PRESENT = $00100000;
|
|
{$EXTERNALSYM SECURITY_SQOS_PRESENT}
|
|
SECURITY_VALID_SQOS_FLAGS = $001F0000;
|
|
{$EXTERNALSYM SECURITY_VALID_SQOS_FLAGS}
|
|
|
|
//
|
|
// File structures
|
|
//
|
|
|
|
type
|
|
LPOVERLAPPED = ^OVERLAPPED;
|
|
{$EXTERNALSYM LPOVERLAPPED}
|
|
_OVERLAPPED = record
|
|
Internal: ULONG_PTR;
|
|
InternalHigh: ULONG_PTR;
|
|
Union: record
|
|
case Integer of
|
|
0: (
|
|
Offset: DWORD;
|
|
OffsetHigh: DWORD);
|
|
1: (
|
|
Pointer: PVOID);
|
|
end;
|
|
hEvent: HANDLE;
|
|
end;
|
|
{$EXTERNALSYM _OVERLAPPED}
|
|
OVERLAPPED = _OVERLAPPED;
|
|
{$EXTERNALSYM OVERLAPPED}
|
|
TOverlapped = OVERLAPPED;
|
|
POverlapped = LPOVERLAPPED;
|
|
|
|
PSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
|
|
{$EXTERNALSYM PSECURITY_ATTRIBUTES}
|
|
_SECURITY_ATTRIBUTES = record
|
|
nLength: DWORD;
|
|
lpSecurityDescriptor: LPVOID;
|
|
bInheritHandle: BOOL;
|
|
end;
|
|
{$EXTERNALSYM _SECURITY_ATTRIBUTES}
|
|
SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES;
|
|
{$EXTERNALSYM SECURITY_ATTRIBUTES}
|
|
LPSECURITY_ATTRIBUTES = PSECURITY_ATTRIBUTES;
|
|
{$EXTERNALSYM LPSECURITY_ATTRIBUTES}
|
|
TSecurityAttributes = SECURITY_ATTRIBUTES;
|
|
PSecurityAttributes = LPSECURITY_ATTRIBUTES;
|
|
|
|
PPROCESS_INFORMATION = ^PROCESS_INFORMATION;
|
|
{$EXTERNALSYM PPROCESS_INFORMATION}
|
|
_PROCESS_INFORMATION = record
|
|
hProcess: HANDLE;
|
|
hThread: HANDLE;
|
|
dwProcessId: DWORD;
|
|
dwThreadId: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _PROCESS_INFORMATION}
|
|
PROCESS_INFORMATION = _PROCESS_INFORMATION;
|
|
{$EXTERNALSYM PROCESS_INFORMATION}
|
|
LPPROCESS_INFORMATION = PPROCESS_INFORMATION;
|
|
{$EXTERNALSYM LPPROCESS_INFORMATION}
|
|
TProcessInformation = PROCESS_INFORMATION;
|
|
PProcessInformation = LPPROCESS_INFORMATION;
|
|
|
|
//
|
|
// File System time stamps are represented with the following structure:
|
|
//
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
LPFILETIME = ^FILETIME;
|
|
{$EXTERNALSYM LPFILETIME}
|
|
_FILETIME = record
|
|
dwLowDateTime: DWORD;
|
|
dwHighDateTime: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _FILETIME}
|
|
FILETIME = _FILETIME;
|
|
{$EXTERNALSYM FILETIME}
|
|
TFileTime = FILETIME;
|
|
PFileTime = LPFILETIME;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
//
|
|
// System time is represented with the following structure:
|
|
//
|
|
|
|
LPSYSTEMTIME = ^SYSTEMTIME;
|
|
{$EXTERNALSYM LPSYSTEMTIME}
|
|
{$IFDEF USE_DELPHI_TYPES}
|
|
_SYSTEMTIME = Windows._SYSTEMTIME;
|
|
SYSTEMTIME = Windows.SYSTEMTIME;
|
|
TSystemTime = Windows.TSystemTime;
|
|
PSystemtime = Windows.PSystemTime;
|
|
{$ELSE}
|
|
_SYSTEMTIME = record
|
|
wYear: Word;
|
|
wMonth: Word;
|
|
wDayOfWeek: Word;
|
|
wDay: Word;
|
|
wHour: Word;
|
|
wMinute: Word;
|
|
wSecond: Word;
|
|
wMilliseconds: Word;
|
|
end;
|
|
{$EXTERNALSYM _SYSTEMTIME}
|
|
SYSTEMTIME = _SYSTEMTIME;
|
|
{$EXTERNALSYM SYSTEMTIME}
|
|
TSystemTime = SYSTEMTIME;
|
|
PSystemTime = LPSYSTEMTIME;
|
|
{$ENDIF USE_DELPHI_TYPES}
|
|
|
|
PTHREAD_START_ROUTINE = function(lpThreadParameter: LPVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM PTHREAD_START_ROUTINE}
|
|
LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
|
|
{$EXTERNALSYM LPTHREAD_START_ROUTINE}
|
|
TThreadStartRoutine = PTHREAD_START_ROUTINE;
|
|
|
|
PFIBER_START_ROUTINE = procedure(lpFiberParameter: LPVOID); stdcall;
|
|
{$EXTERNALSYM PFIBER_START_ROUTINE}
|
|
LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE;
|
|
{$EXTERNALSYM LPFIBER_START_ROUTINE}
|
|
TFiberStartRoutine = PFIBER_START_ROUTINE;
|
|
|
|
CRITICAL_SECTION = RTL_CRITICAL_SECTION;
|
|
{$EXTERNALSYM CRITICAL_SECTION}
|
|
PCRITICAL_SECTION = PRTL_CRITICAL_SECTION;
|
|
{$EXTERNALSYM PCRITICAL_SECTION}
|
|
LPCRITICAL_SECTION = PRTL_CRITICAL_SECTION;
|
|
{$EXTERNALSYM LPCRITICAL_SECTION}
|
|
TCriticalSection = CRITICAL_SECTION;
|
|
PCriticalSection = PCRITICAL_SECTION;
|
|
|
|
CRITICAL_SECTION_DEBUG = RTL_CRITICAL_SECTION_DEBUG;
|
|
{$EXTERNALSYM CRITICAL_SECTION_DEBUG}
|
|
PCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;
|
|
{$EXTERNALSYM PCRITICAL_SECTION_DEBUG}
|
|
LPCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;
|
|
{$EXTERNALSYM LPCRITICAL_SECTION_DEBUG}
|
|
TCriticalSectionDebug = CRITICAL_SECTION_DEBUG;
|
|
PCriticalSectionDebug = PCRITICAL_SECTION_DEBUG;
|
|
|
|
LPLDT_ENTRY = PLDT_ENTRY;
|
|
{$EXTERNALSYM LPLDT_ENTRY}
|
|
|
|
{$IFNDEF JWA_INCLUDEMODE}
|
|
PLdtEntry = LPLDT_ENTRY;
|
|
{$ENDIF JWA_INCLUDEMODE}
|
|
|
|
const
|
|
MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE;
|
|
{$EXTERNALSYM MUTEX_MODIFY_STATE}
|
|
MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS;
|
|
{$EXTERNALSYM MUTEX_ALL_ACCESS}
|
|
|
|
//
|
|
// Serial provider type.
|
|
//
|
|
|
|
SP_SERIALCOMM = DWORD($00000001);
|
|
{$EXTERNALSYM SP_SERIALCOMM}
|
|
|
|
//
|
|
// Provider SubTypes
|
|
//
|
|
|
|
PST_UNSPECIFIED = DWORD($00000000);
|
|
{$EXTERNALSYM PST_UNSPECIFIED}
|
|
PST_RS232 = DWORD($00000001);
|
|
{$EXTERNALSYM PST_RS232}
|
|
PST_PARALLELPORT = DWORD($00000002);
|
|
{$EXTERNALSYM PST_PARALLELPORT}
|
|
PST_RS422 = DWORD($00000003);
|
|
{$EXTERNALSYM PST_RS422}
|
|
PST_RS423 = DWORD($00000004);
|
|
{$EXTERNALSYM PST_RS423}
|
|
PST_RS449 = DWORD($00000005);
|
|
{$EXTERNALSYM PST_RS449}
|
|
PST_MODEM = DWORD($00000006);
|
|
{$EXTERNALSYM PST_MODEM}
|
|
PST_FAX = DWORD($00000021);
|
|
{$EXTERNALSYM PST_FAX}
|
|
PST_SCANNER = DWORD($00000022);
|
|
{$EXTERNALSYM PST_SCANNER}
|
|
PST_NETWORK_BRIDGE = DWORD($00000100);
|
|
{$EXTERNALSYM PST_NETWORK_BRIDGE}
|
|
PST_LAT = DWORD($00000101);
|
|
{$EXTERNALSYM PST_LAT}
|
|
PST_TCPIP_TELNET = DWORD($00000102);
|
|
{$EXTERNALSYM PST_TCPIP_TELNET}
|
|
PST_X25 = DWORD($00000103);
|
|
{$EXTERNALSYM PST_X25}
|
|
|
|
//
|
|
// Provider capabilities flags.
|
|
//
|
|
|
|
PCF_DTRDSR = DWORD($0001);
|
|
{$EXTERNALSYM PCF_DTRDSR}
|
|
PCF_RTSCTS = DWORD($0002);
|
|
{$EXTERNALSYM PCF_RTSCTS}
|
|
PCF_RLSD = DWORD($0004);
|
|
{$EXTERNALSYM PCF_RLSD}
|
|
PCF_PARITY_CHECK = DWORD($0008);
|
|
{$EXTERNALSYM PCF_PARITY_CHECK}
|
|
PCF_XONXOFF = DWORD($0010);
|
|
{$EXTERNALSYM PCF_XONXOFF}
|
|
PCF_SETXCHAR = DWORD($0020);
|
|
{$EXTERNALSYM PCF_SETXCHAR}
|
|
PCF_TOTALTIMEOUTS = DWORD($0040);
|
|
{$EXTERNALSYM PCF_TOTALTIMEOUTS}
|
|
PCF_INTTIMEOUTS = DWORD($0080);
|
|
{$EXTERNALSYM PCF_INTTIMEOUTS}
|
|
PCF_SPECIALCHARS = DWORD($0100);
|
|
{$EXTERNALSYM PCF_SPECIALCHARS}
|
|
PCF_16BITMODE = DWORD($0200);
|
|
{$EXTERNALSYM PCF_16BITMODE}
|
|
|
|
//
|
|
// Comm provider settable parameters.
|
|
//
|
|
|
|
SP_PARITY = DWORD($0001);
|
|
{$EXTERNALSYM SP_PARITY}
|
|
SP_BAUD = DWORD($0002);
|
|
{$EXTERNALSYM SP_BAUD}
|
|
SP_DATABITS = DWORD($0004);
|
|
{$EXTERNALSYM SP_DATABITS}
|
|
SP_STOPBITS = DWORD($0008);
|
|
{$EXTERNALSYM SP_STOPBITS}
|
|
SP_HANDSHAKING = DWORD($0010);
|
|
{$EXTERNALSYM SP_HANDSHAKING}
|
|
SP_PARITY_CHECK = DWORD($0020);
|
|
{$EXTERNALSYM SP_PARITY_CHECK}
|
|
SP_RLSD = DWORD($0040);
|
|
{$EXTERNALSYM SP_RLSD}
|
|
|
|
//
|
|
// Settable baud rates in the provider.
|
|
//
|
|
|
|
BAUD_075 = DWORD($00000001);
|
|
{$EXTERNALSYM BAUD_075}
|
|
BAUD_110 = DWORD($00000002);
|
|
{$EXTERNALSYM BAUD_110}
|
|
BAUD_134_5 = DWORD($00000004);
|
|
{$EXTERNALSYM BAUD_134_5}
|
|
BAUD_150 = DWORD($00000008);
|
|
{$EXTERNALSYM BAUD_150}
|
|
BAUD_300 = DWORD($00000010);
|
|
{$EXTERNALSYM BAUD_300}
|
|
BAUD_600 = DWORD($00000020);
|
|
{$EXTERNALSYM BAUD_600}
|
|
BAUD_1200 = DWORD($00000040);
|
|
{$EXTERNALSYM BAUD_1200}
|
|
BAUD_1800 = DWORD($00000080);
|
|
{$EXTERNALSYM BAUD_1800}
|
|
BAUD_2400 = DWORD($00000100);
|
|
{$EXTERNALSYM BAUD_2400}
|
|
BAUD_4800 = DWORD($00000200);
|
|
{$EXTERNALSYM BAUD_4800}
|
|
BAUD_7200 = DWORD($00000400);
|
|
{$EXTERNALSYM BAUD_7200}
|
|
BAUD_9600 = DWORD($00000800);
|
|
{$EXTERNALSYM BAUD_9600}
|
|
BAUD_14400 = DWORD($00001000);
|
|
{$EXTERNALSYM BAUD_14400}
|
|
BAUD_19200 = DWORD($00002000);
|
|
{$EXTERNALSYM BAUD_19200}
|
|
BAUD_38400 = DWORD($00004000);
|
|
{$EXTERNALSYM BAUD_38400}
|
|
BAUD_56K = DWORD($00008000);
|
|
{$EXTERNALSYM BAUD_56K}
|
|
BAUD_128K = DWORD($00010000);
|
|
{$EXTERNALSYM BAUD_128K}
|
|
BAUD_115200 = DWORD($00020000);
|
|
{$EXTERNALSYM BAUD_115200}
|
|
BAUD_57600 = DWORD($00040000);
|
|
{$EXTERNALSYM BAUD_57600}
|
|
BAUD_USER = DWORD($10000000);
|
|
{$EXTERNALSYM BAUD_USER}
|
|
|
|
//
|
|
// Settable Data Bits
|
|
//
|
|
|
|
DATABITS_5 = WORD($0001);
|
|
{$EXTERNALSYM DATABITS_5}
|
|
DATABITS_6 = WORD($0002);
|
|
{$EXTERNALSYM DATABITS_6}
|
|
DATABITS_7 = WORD($0004);
|
|
{$EXTERNALSYM DATABITS_7}
|
|
DATABITS_8 = WORD($0008);
|
|
{$EXTERNALSYM DATABITS_8}
|
|
DATABITS_16 = WORD($0010);
|
|
{$EXTERNALSYM DATABITS_16}
|
|
DATABITS_16X = WORD($0020);
|
|
{$EXTERNALSYM DATABITS_16X}
|
|
|
|
//
|
|
// Settable Stop and Parity bits.
|
|
//
|
|
|
|
STOPBITS_10 = WORD($0001);
|
|
{$EXTERNALSYM STOPBITS_10}
|
|
STOPBITS_15 = WORD($0002);
|
|
{$EXTERNALSYM STOPBITS_15}
|
|
STOPBITS_20 = WORD($0004);
|
|
{$EXTERNALSYM STOPBITS_20}
|
|
PARITY_NONE = WORD($0100);
|
|
{$EXTERNALSYM PARITY_NONE}
|
|
PARITY_ODD = WORD($0200);
|
|
{$EXTERNALSYM PARITY_ODD}
|
|
PARITY_EVEN = WORD($0400);
|
|
{$EXTERNALSYM PARITY_EVEN}
|
|
PARITY_MARK = WORD($0800);
|
|
{$EXTERNALSYM PARITY_MARK}
|
|
PARITY_SPACE = WORD($1000);
|
|
{$EXTERNALSYM PARITY_SPACE}
|
|
|
|
type
|
|
LPCOMMPROP = ^COMMPROP;
|
|
{$EXTERNALSYM LPCOMMPROP}
|
|
_COMMPROP = record
|
|
wPacketLength: Word;
|
|
wPacketVersion: Word;
|
|
dwServiceMask: DWORD;
|
|
dwReserved1: DWORD;
|
|
dwMaxTxQueue: DWORD;
|
|
dwMaxRxQueue: DWORD;
|
|
dwMaxBaud: DWORD;
|
|
dwProvSubType: DWORD;
|
|
dwProvCapabilities: DWORD;
|
|
dwSettableParams: DWORD;
|
|
dwSettableBaud: DWORD;
|
|
wSettableData: Word;
|
|
wSettableStopParity: Word;
|
|
dwCurrentTxQueue: DWORD;
|
|
dwCurrentRxQueue: DWORD;
|
|
dwProvSpec1: DWORD;
|
|
dwProvSpec2: DWORD;
|
|
wcProvChar: array [0..0] of WCHAR;
|
|
end;
|
|
{$EXTERNALSYM _COMMPROP}
|
|
COMMPROP = _COMMPROP;
|
|
{$EXTERNALSYM COMMPROP}
|
|
TCommProp = COMMPROP;
|
|
PCommProp = LPCOMMPROP;
|
|
|
|
//
|
|
// Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
|
|
// is valid before a call to GetCommProperties().
|
|
//
|
|
|
|
const
|
|
COMMPROP_INITIALIZED = DWORD($E73CF52E);
|
|
{$EXTERNALSYM COMMPROP_INITIALIZED}
|
|
|
|
//_COMSTAT Flags (bitfield)
|
|
|
|
COMSTAT_CTS_HOLD = 1 shl 0;
|
|
COMSTAT_DSR_HOLD = 1 shl 1;
|
|
COMSTAT_RLSD_HOLD = 1 shl 2;
|
|
COMSTAT_XOFF_HOLD = 1 shl 3;
|
|
COMSTAT_XOFF_SENT = 1 shl 4;
|
|
COMSTAT_F_EOF = 1 shl 5;
|
|
COMSTAT_F_TXIM = 1 shl 6;
|
|
|
|
type
|
|
LPCOMSTAT = ^COMSTAT;
|
|
{$EXTERNALSYM LPCOMSTAT}
|
|
_COMSTAT = record
|
|
Flags: DWORD;
|
|
cbInQue: DWORD;
|
|
cbOutQue: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _COMSTAT}
|
|
COMSTAT = _COMSTAT;
|
|
{$EXTERNALSYM COMSTAT}
|
|
TComstat = COMSTAT;
|
|
PComstat = LPCOMSTAT;
|
|
|
|
//
|
|
// DTR Control Flow Values.
|
|
//
|
|
|
|
const
|
|
DTR_CONTROL_DISABLE = $00;
|
|
{$EXTERNALSYM DTR_CONTROL_DISABLE}
|
|
DTR_CONTROL_ENABLE = $01;
|
|
{$EXTERNALSYM DTR_CONTROL_ENABLE}
|
|
DTR_CONTROL_HANDSHAKE = $02;
|
|
{$EXTERNALSYM DTR_CONTROL_HANDSHAKE}
|
|
|
|
//
|
|
// RTS Control Flow Values
|
|
//
|
|
|
|
RTS_CONTROL_DISABLE = $00;
|
|
{$EXTERNALSYM RTS_CONTROL_DISABLE}
|
|
RTS_CONTROL_ENABLE = $01;
|
|
{$EXTERNALSYM RTS_CONTROL_ENABLE}
|
|
RTS_CONTROL_HANDSHAKE = $02;
|
|
{$EXTERNALSYM RTS_CONTROL_HANDSHAKE}
|
|
RTS_CONTROL_TOGGLE = $03;
|
|
{$EXTERNALSYM RTS_CONTROL_TOGGLE}
|
|
|
|
// _DCB.Flags
|
|
|
|
const
|
|
fDcbBinary = 1 shl 0; // Binary Mode (skip EOF check)
|
|
fDcbParity = 1 shl 1; // Enable parity checking
|
|
fDcbOutxCtsFlow = 1 shl 2; // CTS handshaking on output
|
|
fDcbOutxDsrFlow = 1 shl 3; // DSR handshaking on output
|
|
fDcbDtrControl = $0030; // DTR Flow control
|
|
fDcbDsrSensitivity = 1 shl 6; // DSR Sensitivity
|
|
fDcbTXContinueOnXoff = 1 shl 7; // Continue TX when Xoff sent
|
|
fDcbOutX = 1 shl 8; // Enable output X-ON/X-OFF
|
|
fDcbInX = 1 shl 9; // Enable input X-ON/X-OFF
|
|
fDcbErrorChar = 1 shl 10; // Enable Err Replacement
|
|
fDcbNull = 1 shl 11; // Enable Null stripping
|
|
fDcbRtsControl = $3000; // Rts Flow control
|
|
fAbortOnError = 1 shl 14; // Abort all reads and writes on Error
|
|
|
|
type
|
|
LPDCB = ^DCB;
|
|
{$EXTERNALSYM LPDCB}
|
|
_DCB = record
|
|
DCBlength: DWORD; // sizeof(DCB)
|
|
BaudRate: DWORD; // Baudrate at which running
|
|
Flags: DWORD; // See constants above
|
|
wReserved: WORD; // Not currently used
|
|
XonLim: WORD; // Transmit X-ON threshold
|
|
XoffLim: WORD; // Transmit X-OFF threshold
|
|
ByteSize: BYTE; // Number of bits/byte, 4-8
|
|
Parity: BYTE; // 0-4=None,Odd,Even,Mark,Space
|
|
StopBits: BYTE; // 0,1,2 = 1, 1.5, 2
|
|
XonChar: AnsiChar; // Tx and Rx X-ON character
|
|
XoffChar: AnsiChar; // Tx and Rx X-OFF character
|
|
ErrorChar: AnsiChar; // Error replacement AnsiChar
|
|
EofChar: AnsiChar; // End of Input character
|
|
EvtChar: AnsiChar; // Received Event character
|
|
wReserved1: WORD; // Fill for now.
|
|
end;
|
|
{$EXTERNALSYM _DCB}
|
|
DCB = _DCB;
|
|
{$EXTERNALSYM DCB}
|
|
TDCB = DCB;
|
|
PDCB = LPDCB;
|
|
|
|
LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
|
|
{$EXTERNALSYM LPCOMMTIMEOUTS}
|
|
_COMMTIMEOUTS = record
|
|
ReadIntervalTimeout: DWORD; // Maximum time between read chars.
|
|
ReadTotalTimeoutMultiplier: DWORD; // Multiplier of characters.
|
|
ReadTotalTimeoutConstant: DWORD; // Constant in milliseconds.
|
|
WriteTotalTimeoutMultiplier: DWORD; // Multiplier of characters.
|
|
WriteTotalTimeoutConstant: DWORD; // Constant in milliseconds.
|
|
end;
|
|
{$EXTERNALSYM _COMMTIMEOUTS}
|
|
COMMTIMEOUTS = _COMMTIMEOUTS;
|
|
{$EXTERNALSYM COMMTIMEOUTS}
|
|
TCommTimeouts = COMMTIMEOUTS;
|
|
PCommTimeouts = LPCOMMTIMEOUTS;
|
|
|
|
LPCOMMCONFIG = ^COMMCONFIG;
|
|
{$EXTERNALSYM LPCOMMCONFIG}
|
|
_COMMCONFIG = record
|
|
dwSize: DWORD; // Size of the entire struct
|
|
wVersion: Word; // version of the structure
|
|
wReserved: Word; // alignment
|
|
dcb: DCB; // device control block
|
|
dwProviderSubType: DWORD; // ordinal value for identifying
|
|
// provider-defined data structure format
|
|
dwProviderOffset: DWORD; // Specifies the offset of provider specific
|
|
// data field in bytes from the start
|
|
dwProviderSize: DWORD; // size of the provider-specific data field
|
|
wcProviderData: array [0..0] of WCHAR; // provider-specific data
|
|
end;
|
|
{$EXTERNALSYM _COMMCONFIG}
|
|
COMMCONFIG = _COMMCONFIG;
|
|
{$EXTERNALSYM COMMCONFIG}
|
|
TCommConfig = COMMCONFIG;
|
|
PCommConfig = LPCOMMCONFIG;
|
|
|
|
LPSYSTEM_INFO = ^SYSTEM_INFO;
|
|
{$EXTERNALSYM LPSYSTEM_INFO}
|
|
_SYSTEM_INFO = record
|
|
case Integer of
|
|
0: (
|
|
dwOemId: DWORD); // absolete, do not use
|
|
1: (
|
|
wProcessorArchitecture: WORD;
|
|
wReserved: WORD;
|
|
dwPageSize: DWORD;
|
|
lpMinimumApplicationAddress: LPVOID;
|
|
lpMaximumApplicationAddress: LPVOID;
|
|
dwActiveProcessorMask: DWORD_PTR;
|
|
dwNumberOfProcessors: DWORD;
|
|
dwProcessorType: DWORD;
|
|
dwAllocationGranularity: DWORD;
|
|
wProcessorLevel: WORD;
|
|
wProcessorRevision: WORD);
|
|
end;
|
|
{$EXTERNALSYM _SYSTEM_INFO}
|
|
SYSTEM_INFO = _SYSTEM_INFO;
|
|
{$EXTERNALSYM SYSTEM_INFO}
|
|
TSystemInfo = SYSTEM_INFO;
|
|
PSystemInfo = LPSYSTEM_INFO;
|
|
|
|
//
|
|
//
|
|
|
|
function FreeModule(hLibModule: HMODULE): BOOL;
|
|
{$EXTERNALSYM FreeModule}
|
|
function MakeProcInstance(lpProc: FARPROC; hInstance: HINST): FARPROC;
|
|
{$EXTERNALSYM MakeProcInstance}
|
|
procedure FreeProcInstance(lpProc: FARPROC);
|
|
{$EXTERNALSYM FreeProcInstance}
|
|
|
|
// Global Memory Flags
|
|
|
|
const
|
|
GMEM_FIXED = $0000;
|
|
{$EXTERNALSYM GMEM_FIXED}
|
|
GMEM_MOVEABLE = $0002;
|
|
{$EXTERNALSYM GMEM_MOVEABLE}
|
|
GMEM_NOCOMPACT = $0010;
|
|
{$EXTERNALSYM GMEM_NOCOMPACT}
|
|
GMEM_NODISCARD = $0020;
|
|
{$EXTERNALSYM GMEM_NODISCARD}
|
|
GMEM_ZEROINIT = $0040;
|
|
{$EXTERNALSYM GMEM_ZEROINIT}
|
|
GMEM_MODIFY = $0080;
|
|
{$EXTERNALSYM GMEM_MODIFY}
|
|
GMEM_DISCARDABLE = $0100;
|
|
{$EXTERNALSYM GMEM_DISCARDABLE}
|
|
GMEM_NOT_BANKED = $1000;
|
|
{$EXTERNALSYM GMEM_NOT_BANKED}
|
|
GMEM_SHARE = $2000;
|
|
{$EXTERNALSYM GMEM_SHARE}
|
|
GMEM_DDESHARE = $2000;
|
|
{$EXTERNALSYM GMEM_DDESHARE}
|
|
GMEM_NOTIFY = $4000;
|
|
{$EXTERNALSYM GMEM_NOTIFY}
|
|
GMEM_LOWER = GMEM_NOT_BANKED;
|
|
{$EXTERNALSYM GMEM_LOWER}
|
|
GMEM_VALID_FLAGS = $7F72;
|
|
{$EXTERNALSYM GMEM_VALID_FLAGS}
|
|
GMEM_INVALID_HANDLE = $8000;
|
|
{$EXTERNALSYM GMEM_INVALID_HANDLE}
|
|
|
|
GHND = GMEM_MOVEABLE or GMEM_ZEROINIT;
|
|
{$EXTERNALSYM GHND}
|
|
GPTR = GMEM_FIXED or GMEM_ZEROINIT;
|
|
{$EXTERNALSYM GPTR}
|
|
|
|
function GlobalLRUNewest(h: HANDLE): HANDLE;
|
|
{$EXTERNALSYM GlobalLRUNewest}
|
|
function GlobalLRUOldest(h: HANDLE): HANDLE;
|
|
{$EXTERNALSYM GlobalLRUOldest}
|
|
function GlobalDiscard(h: HANDLE): HANDLE;
|
|
{$EXTERNALSYM GlobalDiscard}
|
|
|
|
// Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE)
|
|
|
|
const
|
|
GMEM_DISCARDED = $4000;
|
|
{$EXTERNALSYM GMEM_DISCARDED}
|
|
GMEM_LOCKCOUNT = $00FF;
|
|
{$EXTERNALSYM GMEM_LOCKCOUNT}
|
|
|
|
type
|
|
LPMEMORYSTATUS = ^MEMORYSTATUS;
|
|
{$EXTERNALSYM LPMEMORYSTATUS}
|
|
_MEMORYSTATUS = record
|
|
dwLength: DWORD;
|
|
dwMemoryLoad: DWORD;
|
|
dwTotalPhys: SIZE_T;
|
|
dwAvailPhys: SIZE_T;
|
|
dwTotalPageFile: SIZE_T;
|
|
dwAvailPageFile: SIZE_T;
|
|
dwTotalVirtual: SIZE_T;
|
|
dwAvailVirtual: SIZE_T;
|
|
end;
|
|
{$EXTERNALSYM _MEMORYSTATUS}
|
|
MEMORYSTATUS = _MEMORYSTATUS;
|
|
{$EXTERNALSYM MEMORYSTATUS}
|
|
TMemoryStatus = MEMORYSTATUS;
|
|
PMemoryStatus = LPMEMORYSTATUS;
|
|
|
|
// Local Memory Flags
|
|
|
|
const
|
|
LMEM_FIXED = $0000;
|
|
{$EXTERNALSYM LMEM_FIXED}
|
|
LMEM_MOVEABLE = $0002;
|
|
{$EXTERNALSYM LMEM_MOVEABLE}
|
|
LMEM_NOCOMPACT = $0010;
|
|
{$EXTERNALSYM LMEM_NOCOMPACT}
|
|
LMEM_NODISCARD = $0020;
|
|
{$EXTERNALSYM LMEM_NODISCARD}
|
|
LMEM_ZEROINIT = $0040;
|
|
{$EXTERNALSYM LMEM_ZEROINIT}
|
|
LMEM_MODIFY = $0080;
|
|
{$EXTERNALSYM LMEM_MODIFY}
|
|
LMEM_DISCARDABLE = $0F00;
|
|
{$EXTERNALSYM LMEM_DISCARDABLE}
|
|
LMEM_VALID_FLAGS = $0F72;
|
|
{$EXTERNALSYM LMEM_VALID_FLAGS}
|
|
LMEM_INVALID_HANDLE = $8000;
|
|
{$EXTERNALSYM LMEM_INVALID_HANDLE}
|
|
|
|
LHND = LMEM_MOVEABLE or LMEM_ZEROINIT;
|
|
{$EXTERNALSYM LHND}
|
|
LPTR = LMEM_FIXED or LMEM_ZEROINIT;
|
|
{$EXTERNALSYM LPTR}
|
|
|
|
NONZEROLHND = LMEM_MOVEABLE;
|
|
{$EXTERNALSYM NONZEROLHND}
|
|
NONZEROLPTR = LMEM_FIXED;
|
|
{$EXTERNALSYM NONZEROLPTR}
|
|
|
|
function LocalDiscard(h: HLOCAL): HLOCAL;
|
|
{$EXTERNALSYM LocalDiscard}
|
|
|
|
// Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE)
|
|
|
|
const
|
|
LMEM_DISCARDED = $4000;
|
|
{$EXTERNALSYM LMEM_DISCARDED}
|
|
LMEM_LOCKCOUNT = $00FF;
|
|
{$EXTERNALSYM LMEM_LOCKCOUNT}
|
|
|
|
//
|
|
// dwCreationFlag values
|
|
//
|
|
|
|
DEBUG_PROCESS = $00000001;
|
|
{$EXTERNALSYM DEBUG_PROCESS}
|
|
DEBUG_ONLY_THIS_PROCESS = $00000002;
|
|
{$EXTERNALSYM DEBUG_ONLY_THIS_PROCESS}
|
|
|
|
CREATE_SUSPENDED = $00000004;
|
|
{$EXTERNALSYM CREATE_SUSPENDED}
|
|
|
|
DETACHED_PROCESS = $00000008;
|
|
{$EXTERNALSYM DETACHED_PROCESS}
|
|
|
|
CREATE_NEW_CONSOLE = $00000010;
|
|
{$EXTERNALSYM CREATE_NEW_CONSOLE}
|
|
|
|
NORMAL_PRIORITY_CLASS = $00000020;
|
|
{$EXTERNALSYM NORMAL_PRIORITY_CLASS}
|
|
IDLE_PRIORITY_CLASS = $00000040;
|
|
{$EXTERNALSYM IDLE_PRIORITY_CLASS}
|
|
HIGH_PRIORITY_CLASS = $00000080;
|
|
{$EXTERNALSYM HIGH_PRIORITY_CLASS}
|
|
REALTIME_PRIORITY_CLASS = $00000100;
|
|
{$EXTERNALSYM REALTIME_PRIORITY_CLASS}
|
|
|
|
CREATE_NEW_PROCESS_GROUP = $00000200;
|
|
{$EXTERNALSYM CREATE_NEW_PROCESS_GROUP}
|
|
CREATE_UNICODE_ENVIRONMENT = $00000400;
|
|
{$EXTERNALSYM CREATE_UNICODE_ENVIRONMENT}
|
|
|
|
CREATE_SEPARATE_WOW_VDM = $00000800;
|
|
{$EXTERNALSYM CREATE_SEPARATE_WOW_VDM}
|
|
CREATE_SHARED_WOW_VDM = $00001000;
|
|
{$EXTERNALSYM CREATE_SHARED_WOW_VDM}
|
|
CREATE_FORCEDOS = $00002000;
|
|
{$EXTERNALSYM CREATE_FORCEDOS}
|
|
|
|
CREATE_PROTECTED_PROCESS = $00040000;
|
|
{$EXTERNALSYM CREATE_PROTECTED_PROCESS}
|
|
|
|
EXTENDED_STARTUPINFO_PRESENT = $00080000;
|
|
{$EXTERNALSYM EXTENDED_STARTUPINFO_PRESENT}
|
|
|
|
BELOW_NORMAL_PRIORITY_CLASS = $00004000;
|
|
{$EXTERNALSYM BELOW_NORMAL_PRIORITY_CLASS}
|
|
ABOVE_NORMAL_PRIORITY_CLASS = $00008000;
|
|
{$EXTERNALSYM ABOVE_NORMAL_PRIORITY_CLASS}
|
|
STACK_SIZE_PARAM_IS_A_RESERVATION = $00010000;
|
|
{$EXTERNALSYM STACK_SIZE_PARAM_IS_A_RESERVATION}
|
|
|
|
CREATE_BREAKAWAY_FROM_JOB = $01000000;
|
|
{$EXTERNALSYM CREATE_BREAKAWAY_FROM_JOB}
|
|
CREATE_PRESERVE_CODE_AUTHZ_LEVEL = $02000000;
|
|
{$EXTERNALSYM CREATE_PRESERVE_CODE_AUTHZ_LEVEL}
|
|
|
|
CREATE_DEFAULT_ERROR_MODE = $04000000;
|
|
{$EXTERNALSYM CREATE_DEFAULT_ERROR_MODE}
|
|
CREATE_NO_WINDOW = $08000000;
|
|
{$EXTERNALSYM CREATE_NO_WINDOW}
|
|
|
|
PROFILE_USER = $10000000;
|
|
{$EXTERNALSYM PROFILE_USER}
|
|
PROFILE_KERNEL = $20000000;
|
|
{$EXTERNALSYM PROFILE_KERNEL}
|
|
PROFILE_SERVER = $40000000;
|
|
{$EXTERNALSYM PROFILE_SERVER}
|
|
|
|
CREATE_IGNORE_SYSTEM_DEFAULT = DWORD($80000000);
|
|
{$EXTERNALSYM CREATE_IGNORE_SYSTEM_DEFAULT}
|
|
|
|
THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN;
|
|
{$EXTERNALSYM THREAD_PRIORITY_LOWEST}
|
|
THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1;
|
|
{$EXTERNALSYM THREAD_PRIORITY_BELOW_NORMAL}
|
|
THREAD_PRIORITY_NORMAL = 0;
|
|
{$EXTERNALSYM THREAD_PRIORITY_NORMAL}
|
|
THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX;
|
|
{$EXTERNALSYM THREAD_PRIORITY_HIGHEST}
|
|
THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1;
|
|
{$EXTERNALSYM THREAD_PRIORITY_ABOVE_NORMAL}
|
|
THREAD_PRIORITY_ERROR_RETURN = MAXLONG;
|
|
{$EXTERNALSYM THREAD_PRIORITY_ERROR_RETURN}
|
|
|
|
THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT;
|
|
{$EXTERNALSYM THREAD_PRIORITY_TIME_CRITICAL}
|
|
THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE;
|
|
{$EXTERNALSYM THREAD_PRIORITY_IDLE}
|
|
|
|
//
|
|
// Debug APIs
|
|
//
|
|
|
|
EXCEPTION_DEBUG_EVENT = 1;
|
|
{$EXTERNALSYM EXCEPTION_DEBUG_EVENT}
|
|
CREATE_THREAD_DEBUG_EVENT = 2;
|
|
{$EXTERNALSYM CREATE_THREAD_DEBUG_EVENT}
|
|
CREATE_PROCESS_DEBUG_EVENT = 3;
|
|
{$EXTERNALSYM CREATE_PROCESS_DEBUG_EVENT}
|
|
EXIT_THREAD_DEBUG_EVENT = 4;
|
|
{$EXTERNALSYM EXIT_THREAD_DEBUG_EVENT}
|
|
EXIT_PROCESS_DEBUG_EVENT = 5;
|
|
{$EXTERNALSYM EXIT_PROCESS_DEBUG_EVENT}
|
|
LOAD_DLL_DEBUG_EVENT = 6;
|
|
{$EXTERNALSYM LOAD_DLL_DEBUG_EVENT}
|
|
UNLOAD_DLL_DEBUG_EVENT = 7;
|
|
{$EXTERNALSYM UNLOAD_DLL_DEBUG_EVENT}
|
|
OUTPUT_DEBUG_STRING_EVENT = 8;
|
|
{$EXTERNALSYM OUTPUT_DEBUG_STRING_EVENT}
|
|
RIP_EVENT = 9;
|
|
{$EXTERNALSYM RIP_EVENT}
|
|
|
|
type
|
|
LPEXCEPTION_DEBUG_INFO = ^EXCEPTION_DEBUG_INFO;
|
|
{$EXTERNALSYM LPEXCEPTION_DEBUG_INFO}
|
|
_EXCEPTION_DEBUG_INFO = record
|
|
ExceptionRecord: EXCEPTION_RECORD;
|
|
dwFirstChance: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _EXCEPTION_DEBUG_INFO}
|
|
EXCEPTION_DEBUG_INFO = _EXCEPTION_DEBUG_INFO;
|
|
{$EXTERNALSYM EXCEPTION_DEBUG_INFO}
|
|
TExceptionDebugInfo = EXCEPTION_DEBUG_INFO;
|
|
PExceptionDebugInfo = LPEXCEPTION_DEBUG_INFO;
|
|
|
|
LPCREATE_THREAD_DEBUG_INFO = ^CREATE_THREAD_DEBUG_INFO;
|
|
{$EXTERNALSYM LPCREATE_THREAD_DEBUG_INFO}
|
|
_CREATE_THREAD_DEBUG_INFO = record
|
|
hThread: HANDLE;
|
|
lpThreadLocalBase: LPVOID;
|
|
lpStartAddress: LPTHREAD_START_ROUTINE;
|
|
end;
|
|
{$EXTERNALSYM _CREATE_THREAD_DEBUG_INFO}
|
|
CREATE_THREAD_DEBUG_INFO = _CREATE_THREAD_DEBUG_INFO;
|
|
{$EXTERNALSYM CREATE_THREAD_DEBUG_INFO}
|
|
TCreateThreadDebugInfo = CREATE_THREAD_DEBUG_INFO;
|
|
PCreateThreadDebugInfo = LPCREATE_THREAD_DEBUG_INFO;
|
|
|
|
LPCREATE_PROCESS_DEBUG_INFO = ^CREATE_PROCESS_DEBUG_INFO;
|
|
{$EXTERNALSYM LPCREATE_PROCESS_DEBUG_INFO}
|
|
_CREATE_PROCESS_DEBUG_INFO = record
|
|
hFile: HANDLE;
|
|
hProcess: HANDLE;
|
|
hThread: HANDLE;
|
|
lpBaseOfImage: LPVOID;
|
|
dwDebugInfoFileOffset: DWORD;
|
|
nDebugInfoSize: DWORD;
|
|
lpThreadLocalBase: LPVOID;
|
|
lpStartAddress: LPTHREAD_START_ROUTINE;
|
|
lpImageName: LPVOID;
|
|
fUnicode: Word;
|
|
end;
|
|
{$EXTERNALSYM _CREATE_PROCESS_DEBUG_INFO}
|
|
CREATE_PROCESS_DEBUG_INFO = _CREATE_PROCESS_DEBUG_INFO;
|
|
{$EXTERNALSYM CREATE_PROCESS_DEBUG_INFO}
|
|
TCreateProcessDebugInfo = CREATE_PROCESS_DEBUG_INFO;
|
|
PCreateProcessDebugInfo = LPCREATE_PROCESS_DEBUG_INFO;
|
|
|
|
LPEXIT_THREAD_DEBUG_INFO = ^EXIT_THREAD_DEBUG_INFO;
|
|
{$EXTERNALSYM LPEXIT_THREAD_DEBUG_INFO}
|
|
_EXIT_THREAD_DEBUG_INFO = record
|
|
dwExitCode: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _EXIT_THREAD_DEBUG_INFO}
|
|
EXIT_THREAD_DEBUG_INFO = _EXIT_THREAD_DEBUG_INFO;
|
|
{$EXTERNALSYM EXIT_THREAD_DEBUG_INFO}
|
|
TExitThreadDebugInfo = EXIT_THREAD_DEBUG_INFO;
|
|
PExitThreadDebugInfo = LPEXIT_THREAD_DEBUG_INFO;
|
|
|
|
LPEXIT_PROCESS_DEBUG_INFO = ^EXIT_PROCESS_DEBUG_INFO;
|
|
{$EXTERNALSYM LPEXIT_PROCESS_DEBUG_INFO}
|
|
_EXIT_PROCESS_DEBUG_INFO = record
|
|
dwExitCode: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _EXIT_PROCESS_DEBUG_INFO}
|
|
EXIT_PROCESS_DEBUG_INFO = _EXIT_PROCESS_DEBUG_INFO;
|
|
{$EXTERNALSYM EXIT_PROCESS_DEBUG_INFO}
|
|
TExitProcessDebugInfo = EXIT_PROCESS_DEBUG_INFO;
|
|
PExitProcessDebugInfo = LPEXIT_PROCESS_DEBUG_INFO;
|
|
|
|
LPLOAD_DLL_DEBUG_INFO = ^LOAD_DLL_DEBUG_INFO;
|
|
{$EXTERNALSYM LPLOAD_DLL_DEBUG_INFO}
|
|
_LOAD_DLL_DEBUG_INFO = record
|
|
hFile: HANDLE;
|
|
lpBaseOfDll: LPVOID;
|
|
dwDebugInfoFileOffset: DWORD;
|
|
nDebugInfoSize: DWORD;
|
|
lpImageName: LPVOID;
|
|
fUnicode: Word;
|
|
end;
|
|
{$EXTERNALSYM _LOAD_DLL_DEBUG_INFO}
|
|
LOAD_DLL_DEBUG_INFO = _LOAD_DLL_DEBUG_INFO;
|
|
{$EXTERNALSYM LOAD_DLL_DEBUG_INFO}
|
|
TLoadDllDebugInfo = LOAD_DLL_DEBUG_INFO;
|
|
PLoadDllDebugInfo = LPLOAD_DLL_DEBUG_INFO;
|
|
|
|
LPUNLOAD_DLL_DEBUG_INFO = ^UNLOAD_DLL_DEBUG_INFO;
|
|
{$EXTERNALSYM LPUNLOAD_DLL_DEBUG_INFO}
|
|
_UNLOAD_DLL_DEBUG_INFO = record
|
|
lpBaseOfDll: LPVOID;
|
|
end;
|
|
{$EXTERNALSYM _UNLOAD_DLL_DEBUG_INFO}
|
|
UNLOAD_DLL_DEBUG_INFO = _UNLOAD_DLL_DEBUG_INFO;
|
|
{$EXTERNALSYM UNLOAD_DLL_DEBUG_INFO}
|
|
TUnloadDllDebugInfo = UNLOAD_DLL_DEBUG_INFO;
|
|
PUnloadDllDebugInfo = LPUNLOAD_DLL_DEBUG_INFO;
|
|
|
|
LPOUTPUT_DEBUG_STRING_INFO = ^OUTPUT_DEBUG_STRING_INFO;
|
|
{$EXTERNALSYM LPOUTPUT_DEBUG_STRING_INFO}
|
|
_OUTPUT_DEBUG_STRING_INFO = record
|
|
lpDebugStringData: LPSTR;
|
|
fUnicode: Word;
|
|
nDebugStringLength: Word;
|
|
end;
|
|
{$EXTERNALSYM _OUTPUT_DEBUG_STRING_INFO}
|
|
OUTPUT_DEBUG_STRING_INFO = _OUTPUT_DEBUG_STRING_INFO;
|
|
{$EXTERNALSYM OUTPUT_DEBUG_STRING_INFO}
|
|
TOutputDebugStringInfo = OUTPUT_DEBUG_STRING_INFO;
|
|
POutputDebugStringInfo = LPOUTPUT_DEBUG_STRING_INFO;
|
|
|
|
LPRIP_INFO = ^RIP_INFO;
|
|
{$EXTERNALSYM LPRIP_INFO}
|
|
_RIP_INFO = record
|
|
dwError: DWORD;
|
|
dwType: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _RIP_INFO}
|
|
RIP_INFO = _RIP_INFO;
|
|
{$EXTERNALSYM RIP_INFO}
|
|
TRipInfo = RIP_INFO;
|
|
PRipInfo = LPRIP_INFO;
|
|
|
|
LPDEBUG_EVENT = ^DEBUG_EVENT;
|
|
{$EXTERNALSYM LPDEBUG_EVENT}
|
|
_DEBUG_EVENT = record
|
|
dwDebugEventCode: DWORD;
|
|
dwProcessId: DWORD;
|
|
dwThreadId: DWORD;
|
|
case Integer of
|
|
0: (Exception: EXCEPTION_DEBUG_INFO);
|
|
1: (CreateThread: CREATE_THREAD_DEBUG_INFO);
|
|
2: (CreateProcessInfo: CREATE_PROCESS_DEBUG_INFO);
|
|
3: (ExitThread: EXIT_THREAD_DEBUG_INFO);
|
|
4: (ExitProcess: EXIT_PROCESS_DEBUG_INFO);
|
|
5: (LoadDll: LOAD_DLL_DEBUG_INFO);
|
|
6: (UnloadDll: UNLOAD_DLL_DEBUG_INFO);
|
|
7: (DebugString: OUTPUT_DEBUG_STRING_INFO);
|
|
8: (RipInfo: RIP_INFO);
|
|
end;
|
|
{$EXTERNALSYM _DEBUG_EVENT}
|
|
DEBUG_EVENT = _DEBUG_EVENT;
|
|
{$EXTERNALSYM DEBUG_EVENT}
|
|
TDebugEvent = DEBUG_EVENT;
|
|
PDebugEvent = LPDEBUG_EVENT;
|
|
|
|
LPCONTEXT = PCONTEXT;
|
|
{$EXTERNALSYM LPCONTEXT}
|
|
LPEXCEPTION_RECORD = PEXCEPTION_RECORD;
|
|
{$EXTERNALSYM LPEXCEPTION_RECORD}
|
|
LPEXCEPTION_POINTERS = PEXCEPTION_POINTERS;
|
|
{$EXTERNALSYM LPEXCEPTION_POINTERS}
|
|
|
|
const
|
|
DRIVE_UNKNOWN = 0;
|
|
{$EXTERNALSYM DRIVE_UNKNOWN}
|
|
DRIVE_NO_ROOT_DIR = 1;
|
|
{$EXTERNALSYM DRIVE_NO_ROOT_DIR}
|
|
DRIVE_REMOVABLE = 2;
|
|
{$EXTERNALSYM DRIVE_REMOVABLE}
|
|
DRIVE_FIXED = 3;
|
|
{$EXTERNALSYM DRIVE_FIXED}
|
|
DRIVE_REMOTE = 4;
|
|
{$EXTERNALSYM DRIVE_REMOTE}
|
|
DRIVE_CDROM = 5;
|
|
{$EXTERNALSYM DRIVE_CDROM}
|
|
DRIVE_RAMDISK = 6;
|
|
{$EXTERNALSYM DRIVE_RAMDISK}
|
|
|
|
function GetFreeSpace(w: WORD): DWORD;
|
|
{$EXTERNALSYM GetFreeSpace}
|
|
|
|
const
|
|
FILE_TYPE_UNKNOWN = $0000;
|
|
{$EXTERNALSYM FILE_TYPE_UNKNOWN}
|
|
FILE_TYPE_DISK = $0001;
|
|
{$EXTERNALSYM FILE_TYPE_DISK}
|
|
FILE_TYPE_CHAR = $0002;
|
|
{$EXTERNALSYM FILE_TYPE_CHAR}
|
|
FILE_TYPE_PIPE = $0003;
|
|
{$EXTERNALSYM FILE_TYPE_PIPE}
|
|
FILE_TYPE_REMOTE = $8000;
|
|
{$EXTERNALSYM FILE_TYPE_REMOTE}
|
|
|
|
STD_INPUT_HANDLE = DWORD(-10);
|
|
{$EXTERNALSYM STD_INPUT_HANDLE}
|
|
STD_OUTPUT_HANDLE = DWORD(-11);
|
|
{$EXTERNALSYM STD_OUTPUT_HANDLE}
|
|
STD_ERROR_HANDLE = DWORD(-12);
|
|
{$EXTERNALSYM STD_ERROR_HANDLE}
|
|
|
|
NOPARITY = 0;
|
|
{$EXTERNALSYM NOPARITY}
|
|
ODDPARITY = 1;
|
|
{$EXTERNALSYM ODDPARITY}
|
|
EVENPARITY = 2;
|
|
{$EXTERNALSYM EVENPARITY}
|
|
MARKPARITY = 3;
|
|
{$EXTERNALSYM MARKPARITY}
|
|
SPACEPARITY = 4;
|
|
{$EXTERNALSYM SPACEPARITY}
|
|
|
|
ONESTOPBIT = 0;
|
|
{$EXTERNALSYM ONESTOPBIT}
|
|
ONE5STOPBITS = 1;
|
|
{$EXTERNALSYM ONE5STOPBITS}
|
|
TWOSTOPBITS = 2;
|
|
{$EXTERNALSYM TWOSTOPBITS}
|
|
|
|
IGNORE = 0; // Ignore signal
|
|
{$EXTERNALSYM IGNORE}
|
|
INFINITE = DWORD($FFFFFFFF); // Infinite timeout
|
|
{$EXTERNALSYM INFINITE}
|
|
|
|
//
|
|
// Baud rates at which the communication device operates
|
|
//
|
|
|
|
CBR_110 = 110;
|
|
{$EXTERNALSYM CBR_110}
|
|
CBR_300 = 300;
|
|
{$EXTERNALSYM CBR_300}
|
|
CBR_600 = 600;
|
|
{$EXTERNALSYM CBR_600}
|
|
CBR_1200 = 1200;
|
|
{$EXTERNALSYM CBR_1200}
|
|
CBR_2400 = 2400;
|
|
{$EXTERNALSYM CBR_2400}
|
|
CBR_4800 = 4800;
|
|
{$EXTERNALSYM CBR_4800}
|
|
CBR_9600 = 9600;
|
|
{$EXTERNALSYM CBR_9600}
|
|
CBR_14400 = 14400;
|
|
{$EXTERNALSYM CBR_14400}
|
|
CBR_19200 = 19200;
|
|
{$EXTERNALSYM CBR_19200}
|
|
CBR_38400 = 38400;
|
|
{$EXTERNALSYM CBR_38400}
|
|
CBR_56000 = 56000;
|
|
{$EXTERNALSYM CBR_56000}
|
|
CBR_57600 = 57600;
|
|
{$EXTERNALSYM CBR_57600}
|
|
CBR_115200 = 115200;
|
|
{$EXTERNALSYM CBR_115200}
|
|
CBR_128000 = 128000;
|
|
{$EXTERNALSYM CBR_128000}
|
|
CBR_256000 = 256000;
|
|
{$EXTERNALSYM CBR_256000}
|
|
|
|
//
|
|
// Error Flags
|
|
//
|
|
|
|
CE_RXOVER = $0001; // Receive Queue overflow
|
|
{$EXTERNALSYM CE_RXOVER}
|
|
CE_OVERRUN = $0002; // Receive Overrun Error
|
|
{$EXTERNALSYM CE_OVERRUN}
|
|
CE_RXPARITY = $0004; // Receive Parity Error
|
|
{$EXTERNALSYM CE_RXPARITY}
|
|
CE_FRAME = $0008; // Receive Framing error
|
|
{$EXTERNALSYM CE_FRAME}
|
|
CE_BREAK = $0010; // Break Detected
|
|
{$EXTERNALSYM CE_BREAK}
|
|
CE_TXFULL = $0100; // TX Queue is full
|
|
{$EXTERNALSYM CE_TXFULL}
|
|
CE_PTO = $0200; // LPTx Timeout
|
|
{$EXTERNALSYM CE_PTO}
|
|
CE_IOE = $0400; // LPTx I/O Error
|
|
{$EXTERNALSYM CE_IOE}
|
|
CE_DNS = $0800; // LPTx Device not selected
|
|
{$EXTERNALSYM CE_DNS}
|
|
CE_OOP = $1000; // LPTx Out-Of-Paper
|
|
{$EXTERNALSYM CE_OOP}
|
|
CE_MODE = $8000; // Requested mode unsupported
|
|
{$EXTERNALSYM CE_MODE}
|
|
|
|
IE_BADID = DWORD(-1); // Invalid or unsupported id
|
|
{$EXTERNALSYM IE_BADID}
|
|
IE_OPEN = DWORD(-2); // Device Already Open
|
|
{$EXTERNALSYM IE_OPEN}
|
|
IE_NOPEN = DWORD(-3); // Device Not Open
|
|
{$EXTERNALSYM IE_NOPEN}
|
|
IE_MEMORY = DWORD(-4); // Unable to allocate queues
|
|
{$EXTERNALSYM IE_MEMORY}
|
|
IE_DEFAULT = DWORD(-5); // Error in default parameters
|
|
{$EXTERNALSYM IE_DEFAULT}
|
|
IE_HARDWARE = DWORD(-10); // Hardware Not Present
|
|
{$EXTERNALSYM IE_HARDWARE}
|
|
IE_BYTESIZE = DWORD(-11); // Illegal Byte Size
|
|
{$EXTERNALSYM IE_BYTESIZE}
|
|
IE_BAUDRATE = DWORD(-12); // Unsupported BaudRate
|
|
{$EXTERNALSYM IE_BAUDRATE}
|
|
|
|
//
|
|
// Events
|
|
//
|
|
|
|
EV_RXCHAR = $0001; // Any Character received
|
|
{$EXTERNALSYM EV_RXCHAR}
|
|
EV_RXFLAG = $0002; // Received certain character
|
|
{$EXTERNALSYM EV_RXFLAG}
|
|
EV_TXEMPTY = $0004; // Transmitt Queue Empty
|
|
{$EXTERNALSYM EV_TXEMPTY}
|
|
EV_CTS = $0008; // CTS changed state
|
|
{$EXTERNALSYM EV_CTS}
|
|
EV_DSR = $0010; // DSR changed state
|
|
{$EXTERNALSYM EV_DSR}
|
|
EV_RLSD = $0020; // RLSD changed state
|
|
{$EXTERNALSYM EV_RLSD}
|
|
EV_BREAK = $0040; // BREAK received
|
|
{$EXTERNALSYM EV_BREAK}
|
|
EV_ERR = $0080; // Line status error occurred
|
|
{$EXTERNALSYM EV_ERR}
|
|
EV_RING = $0100; // Ring signal detected
|
|
{$EXTERNALSYM EV_RING}
|
|
EV_PERR = $0200; // Printer error occured
|
|
{$EXTERNALSYM EV_PERR}
|
|
EV_RX80FULL = $0400; // Receive buffer is 80 percent full
|
|
{$EXTERNALSYM EV_RX80FULL}
|
|
EV_EVENT1 = $0800; // Provider specific event 1
|
|
{$EXTERNALSYM EV_EVENT1}
|
|
EV_EVENT2 = $1000; // Provider specific event 2
|
|
{$EXTERNALSYM EV_EVENT2}
|
|
|
|
//
|
|
// Escape Functions
|
|
//
|
|
|
|
SETXOFF = 1; // Simulate XOFF received
|
|
{$EXTERNALSYM SETXOFF}
|
|
SETXON = 2; // Simulate XON received
|
|
{$EXTERNALSYM SETXON}
|
|
SETRTS = 3; // Set RTS high
|
|
{$EXTERNALSYM SETRTS}
|
|
CLRRTS = 4; // Set RTS low
|
|
{$EXTERNALSYM CLRRTS}
|
|
SETDTR = 5; // Set DTR high
|
|
{$EXTERNALSYM SETDTR}
|
|
CLRDTR = 6; // Set DTR low
|
|
{$EXTERNALSYM CLRDTR}
|
|
RESETDEV = 7; // Reset device if possible
|
|
{$EXTERNALSYM RESETDEV}
|
|
SETBREAK = 8; // Set the device break line.
|
|
{$EXTERNALSYM SETBREAK}
|
|
CLRBREAK = 9; // Clear the device break line.
|
|
{$EXTERNALSYM CLRBREAK}
|
|
|
|
//
|
|
// PURGE function flags.
|
|
//
|
|
|
|
PURGE_TXABORT = $0001; // Kill the pending/current writes to the comm port.
|
|
{$EXTERNALSYM PURGE_TXABORT}
|
|
PURGE_RXABORT = $0002; // Kill the pending/current reads to the comm port.
|
|
{$EXTERNALSYM PURGE_RXABORT}
|
|
PURGE_TXCLEAR = $0004; // Kill the transmit queue if there.
|
|
{$EXTERNALSYM PURGE_TXCLEAR}
|
|
PURGE_RXCLEAR = $0008; // Kill the typeahead buffer if there.
|
|
{$EXTERNALSYM PURGE_RXCLEAR}
|
|
|
|
LPTx = $80; // Set if ID is for LPT device
|
|
{$EXTERNALSYM LPTx}
|
|
|
|
//
|
|
// Modem Status Flags
|
|
//
|
|
|
|
MS_CTS_ON = DWORD($0010);
|
|
{$EXTERNALSYM MS_CTS_ON}
|
|
MS_DSR_ON = DWORD($0020);
|
|
{$EXTERNALSYM MS_DSR_ON}
|
|
MS_RING_ON = DWORD($0040);
|
|
{$EXTERNALSYM MS_RING_ON}
|
|
MS_RLSD_ON = DWORD($0080);
|
|
{$EXTERNALSYM MS_RLSD_ON}
|
|
|
|
//
|
|
// WaitSoundState() Constants
|
|
//
|
|
|
|
S_QUEUEEMPTY = 0;
|
|
{$EXTERNALSYM S_QUEUEEMPTY}
|
|
S_THRESHOLD = 1;
|
|
{$EXTERNALSYM S_THRESHOLD}
|
|
S_ALLTHRESHOLD = 2;
|
|
{$EXTERNALSYM S_ALLTHRESHOLD}
|
|
|
|
//
|
|
// Accent Modes
|
|
//
|
|
|
|
S_NORMAL = 0;
|
|
{$EXTERNALSYM S_NORMAL}
|
|
S_LEGATO = 1;
|
|
{$EXTERNALSYM S_LEGATO}
|
|
S_STACCATO = 2;
|
|
{$EXTERNALSYM S_STACCATO}
|
|
|
|
//
|
|
// SetSoundNoise() Sources
|
|
//
|
|
|
|
S_PERIOD512 = 0; // Freq = N/512 high pitch, less coarse hiss
|
|
{$EXTERNALSYM S_PERIOD512}
|
|
S_PERIOD1024 = 1; // Freq = N/1024
|
|
{$EXTERNALSYM S_PERIOD1024}
|
|
S_PERIOD2048 = 2; // Freq = N/2048 low pitch, more coarse hiss
|
|
{$EXTERNALSYM S_PERIOD2048}
|
|
S_PERIODVOICE = 3; // Source is frequency from voice channel (3)
|
|
{$EXTERNALSYM S_PERIODVOICE}
|
|
S_WHITE512 = 4; // Freq = N/512 high pitch, less coarse hiss
|
|
{$EXTERNALSYM S_WHITE512}
|
|
S_WHITE1024 = 5; // Freq = N/1024
|
|
{$EXTERNALSYM S_WHITE1024}
|
|
S_WHITE2048 = 6; // Freq = N/2048 low pitch, more coarse hiss
|
|
{$EXTERNALSYM S_WHITE2048}
|
|
S_WHITEVOICE = 7; // Source is frequency from voice channel (3)
|
|
{$EXTERNALSYM S_WHITEVOICE}
|
|
|
|
S_SERDVNA = DWORD(-1); // Device not available
|
|
{$EXTERNALSYM S_SERDVNA}
|
|
S_SEROFM = DWORD(-2); // Out of memory
|
|
{$EXTERNALSYM S_SEROFM}
|
|
S_SERMACT = DWORD(-3); // Music active
|
|
{$EXTERNALSYM S_SERMACT}
|
|
S_SERQFUL = DWORD(-4); // Queue full
|
|
{$EXTERNALSYM S_SERQFUL}
|
|
S_SERBDNT = DWORD(-5); // Invalid note
|
|
{$EXTERNALSYM S_SERBDNT}
|
|
S_SERDLN = DWORD(-6); // Invalid note length
|
|
{$EXTERNALSYM S_SERDLN}
|
|
S_SERDCC = DWORD(-7); // Invalid note count
|
|
{$EXTERNALSYM S_SERDCC}
|
|
S_SERDTP = DWORD(-8); // Invalid tempo
|
|
{$EXTERNALSYM S_SERDTP}
|
|
S_SERDVL = DWORD(-9); // Invalid volume
|
|
{$EXTERNALSYM S_SERDVL}
|
|
S_SERDMD = DWORD(-10); // Invalid mode
|
|
{$EXTERNALSYM S_SERDMD}
|
|
S_SERDSH = DWORD(-11); // Invalid shape
|
|
{$EXTERNALSYM S_SERDSH}
|
|
S_SERDPT = DWORD(-12); // Invalid pitch
|
|
{$EXTERNALSYM S_SERDPT}
|
|
S_SERDFQ = DWORD(-13); // Invalid frequency
|
|
{$EXTERNALSYM S_SERDFQ}
|
|
S_SERDDR = DWORD(-14); // Invalid duration
|
|
{$EXTERNALSYM S_SERDDR}
|
|
S_SERDSR = DWORD(-15); // Invalid source
|
|
{$EXTERNALSYM S_SERDSR}
|
|
S_SERDST = DWORD(-16); // Invalid state
|
|
{$EXTERNALSYM S_SERDST}
|
|
|
|
NMPWAIT_WAIT_FOREVER = DWORD($ffffffff);
|
|
{$EXTERNALSYM NMPWAIT_WAIT_FOREVER}
|
|
NMPWAIT_NOWAIT = $00000001;
|
|
{$EXTERNALSYM NMPWAIT_NOWAIT}
|
|
NMPWAIT_USE_DEFAULT_WAIT = $00000000;
|
|
{$EXTERNALSYM NMPWAIT_USE_DEFAULT_WAIT}
|
|
|
|
FS_CASE_IS_PRESERVED = FILE_CASE_PRESERVED_NAMES;
|
|
{$EXTERNALSYM FS_CASE_IS_PRESERVED}
|
|
FS_CASE_SENSITIVE = FILE_CASE_SENSITIVE_SEARCH;
|
|
{$EXTERNALSYM FS_CASE_SENSITIVE}
|
|
FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK;
|
|
{$EXTERNALSYM FS_UNICODE_STORED_ON_DISK}
|
|
FS_PERSISTENT_ACLS = FILE_PERSISTENT_ACLS;
|
|
{$EXTERNALSYM FS_PERSISTENT_ACLS}
|
|
FS_VOL_IS_COMPRESSED = FILE_VOLUME_IS_COMPRESSED;
|
|
{$EXTERNALSYM FS_VOL_IS_COMPRESSED}
|
|
FS_FILE_COMPRESSION = FILE_FILE_COMPRESSION;
|
|
{$EXTERNALSYM FS_FILE_COMPRESSION}
|
|
FS_FILE_ENCRYPTION = FILE_SUPPORTS_ENCRYPTION;
|
|
{$EXTERNALSYM FS_FILE_ENCRYPTION}
|
|
|
|
FILE_MAP_COPY = SECTION_QUERY;
|
|
{$EXTERNALSYM FILE_MAP_COPY}
|
|
FILE_MAP_WRITE = SECTION_MAP_WRITE;
|
|
{$EXTERNALSYM FILE_MAP_WRITE}
|
|
FILE_MAP_READ = SECTION_MAP_READ;
|
|
{$EXTERNALSYM FILE_MAP_READ}
|
|
FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS;
|
|
{$EXTERNALSYM FILE_MAP_ALL_ACCESS}
|
|
|
|
OF_READ = $00000000;
|
|
{$EXTERNALSYM OF_READ}
|
|
OF_WRITE = $00000001;
|
|
{$EXTERNALSYM OF_WRITE}
|
|
OF_READWRITE = $00000002;
|
|
{$EXTERNALSYM OF_READWRITE}
|
|
OF_SHARE_COMPAT = $00000000;
|
|
{$EXTERNALSYM OF_SHARE_COMPAT}
|
|
OF_SHARE_EXCLUSIVE = $00000010;
|
|
{$EXTERNALSYM OF_SHARE_EXCLUSIVE}
|
|
OF_SHARE_DENY_WRITE = $00000020;
|
|
{$EXTERNALSYM OF_SHARE_DENY_WRITE}
|
|
OF_SHARE_DENY_READ = $00000030;
|
|
{$EXTERNALSYM OF_SHARE_DENY_READ}
|
|
OF_SHARE_DENY_NONE = $00000040;
|
|
{$EXTERNALSYM OF_SHARE_DENY_NONE}
|
|
OF_PARSE = $00000100;
|
|
{$EXTERNALSYM OF_PARSE}
|
|
OF_DELETE = $00000200;
|
|
{$EXTERNALSYM OF_DELETE}
|
|
OF_VERIFY = $00000400;
|
|
{$EXTERNALSYM OF_VERIFY}
|
|
OF_CANCEL = $00000800;
|
|
{$EXTERNALSYM OF_CANCEL}
|
|
OF_CREATE = $00001000;
|
|
{$EXTERNALSYM OF_CREATE}
|
|
OF_PROMPT = $00002000;
|
|
{$EXTERNALSYM OF_PROMPT}
|
|
OF_EXIST = $00004000;
|
|
{$EXTERNALSYM OF_EXIST}
|
|
OF_REOPEN = $00008000;
|
|
{$EXTERNALSYM OF_REOPEN}
|
|
|
|
OFS_MAXPATHNAME = 128;
|
|
{$EXTERNALSYM OFS_MAXPATHNAME}
|
|
|
|
type
|
|
LPOFSTRUCT = ^OFSTRUCT;
|
|
{$EXTERNALSYM LPOFSTRUCT}
|
|
_OFSTRUCT = record
|
|
cBytes: Byte;
|
|
fFixedDisk: Byte;
|
|
nErrCode: Word;
|
|
Reserved1: Word;
|
|
Reserved2: Word;
|
|
szPathName: array [0..OFS_MAXPATHNAME - 1] of AnsiChar;
|
|
end;
|
|
{$EXTERNALSYM _OFSTRUCT}
|
|
OFSTRUCT = _OFSTRUCT;
|
|
{$EXTERNALSYM OFSTRUCT}
|
|
TOfStruct = OFSTRUCT;
|
|
POfStruct = LPOFSTRUCT;
|
|
|
|
// 64 bit interlocked functions, donated by Will DeWitt Jr.
|
|
|
|
function InterlockedCompareExchange64(var Destination: LONGLONG; Exchange, Comperand: LONGLONG): LONGLONG; stdcall;
|
|
{$EXTERNALSYM InterlockedCompareExchange64}
|
|
|
|
function InterlockedAnd64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedAnd64}
|
|
|
|
function InterlockedOr64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedOr64}
|
|
|
|
function InterlockedXor64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedXor64}
|
|
|
|
function InterlockedIncrement64(var Addend: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedIncrement64}
|
|
|
|
function InterlockedDecrement64(var Addend: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedDecrement}
|
|
|
|
function InterlockedExchange64(var Target: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedExchange64}
|
|
|
|
function InterlockedExchangeAdd64(var Addend: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
{$EXTERNALSYM InterlockedExchangeAdd64}
|
|
|
|
//
|
|
// The Risc compilers support intrinsic functions for interlocked
|
|
// increment, decrement, and exchange.
|
|
//
|
|
|
|
function InterlockedIncrement(var lpAddend: LONG): LONG; stdcall;
|
|
{$EXTERNALSYM InterlockedIncrement}
|
|
|
|
function InterlockedDecrement(var lpAddend: LONG): LONG; stdcall;
|
|
{$EXTERNALSYM InterlockedDecrement}
|
|
|
|
function InterlockedExchange(var Target: LONG; Value: LONG): LONG; stdcall;
|
|
{$EXTERNALSYM InterlockedExchange}
|
|
|
|
function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
|
|
{$EXTERNALSYM InterlockedExchangePointer}
|
|
|
|
function InterlockedExchangeAdd(var Addend: LONG; Value: LONG): LONG; stdcall;
|
|
{$EXTERNALSYM InterlockedExchangeAdd}
|
|
|
|
function InterlockedCompareExchange(var Destination: LONG; Exchange: LONG;
|
|
Comperand: LONG): LONG; stdcall;
|
|
{$EXTERNALSYM InterlockedCompareExchange}
|
|
|
|
function InterlockedCompareExchangePointer(var Destination: PVOID;
|
|
Exchange, Comperand: PVOID): PVOID;
|
|
{$EXTERNALSYM InterlockedCompareExchangePointer}
|
|
|
|
{
|
|
#define InterlockedIncrementAcquire InterlockedIncrement
|
|
#define InterlockedIncrementRelease InterlockedIncrement
|
|
#define InterlockedDecrementAcquire InterlockedDecrement
|
|
#define InterlockedDecrementRelease InterlockedDecrement
|
|
#define InterlockedIncrementAcquire InterlockedIncrement
|
|
#define InterlockedIncrementRelease InterlockedIncrement
|
|
#define InterlockedCompareExchangeAcquire InterlockedCompareExchange
|
|
#define InterlockedCompareExchangeRelease InterlockedCompareExchange
|
|
#define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
|
|
#define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
|
|
}
|
|
|
|
procedure InitializeSListHead(ListHead: PSLIST_HEADER); stdcall;
|
|
{$EXTERNALSYM InitializeSListHead}
|
|
|
|
function InterlockedPopEntrySList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
|
|
{$EXTERNALSYM InterlockedPopEntrySList}
|
|
|
|
function InterlockedPushEntrySList(ListHead: PSLIST_HEADER; ListEntry: PSLIST_ENTRY): PSLIST_ENTRY; stdcall;
|
|
{$EXTERNALSYM InterlockedPushEntrySList}
|
|
|
|
function InterlockedFlushSList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
|
|
{$EXTERNALSYM InterlockedFlushSList}
|
|
|
|
function QueryDepthSList(ListHead: PSLIST_HEADER): USHORT; stdcall;
|
|
{$EXTERNALSYM QueryDepthSList}
|
|
|
|
function FreeResource(hResData: HGLOBAL): BOOL; stdcall;
|
|
{$EXTERNALSYM FreeResource}
|
|
|
|
function LockResource(hResData: HGLOBAL): LPVOID; stdcall;
|
|
{$EXTERNALSYM LockResource}
|
|
|
|
function UnlockResource(hResData: HANDLE): BOOL;
|
|
{$EXTERNALSYM UnlockResource}
|
|
|
|
const
|
|
MAXINTATOM = $C000;
|
|
{$EXTERNALSYM MAXINTATOM}
|
|
INVALID_ATOM = ATOM(0);
|
|
{$EXTERNALSYM INVALID_ATOM}
|
|
|
|
type
|
|
MAKEINTATOMA = PAnsiChar;
|
|
MAKEINTATOMW = PWideChar;
|
|
{$IFDEF UNICODE}
|
|
MAKEINTATOM = MAKEINTATOMW;
|
|
{$EXTERNALSYM MAKEINTATOM}
|
|
{$ELSE}
|
|
MAKEINTATOM = MAKEINTATOMA;
|
|
{$EXTERNALSYM MAKEINTATOM}
|
|
{$ENDIF UNICODE}
|
|
|
|
function FreeLibrary(hLibModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM FreeLibrary}
|
|
|
|
procedure FreeLibraryAndExitThread(hLibModule: HMODULE; dwExitCode: DWORD); stdcall;
|
|
{$EXTERNALSYM FreeLibraryAndExitThread}
|
|
|
|
function DisableThreadLibraryCalls(hLibModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM DisableThreadLibraryCalls}
|
|
|
|
function GetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC; stdcall;
|
|
{$EXTERNALSYM GetProcAddress}
|
|
|
|
function GetVersion: DWORD; stdcall;
|
|
{$EXTERNALSYM GetVersion)}
|
|
|
|
function GlobalAlloc(uFlags: UINT; dwBytes: SIZE_T): HGLOBAL; stdcall;
|
|
{$EXTERNALSYM GlobalAlloc}
|
|
|
|
function GlobalReAlloc(hMem: HGLOBAL; dwBytes: SIZE_T; uFlags: UINT): HGLOBAL; stdcall;
|
|
{$EXTERNALSYM GlobalReAlloc}
|
|
|
|
function GlobalSize(hMem: HGLOBAL): SIZE_T; stdcall;
|
|
{$EXTERNALSYM GlobalSize}
|
|
|
|
function GlobalFlags(hMem: HGLOBAL): UINT; stdcall;
|
|
{$EXTERNALSYM GlobalFlags}
|
|
|
|
function GlobalLock(hMem: HGLOBAL): LPVOID; stdcall;
|
|
{$EXTERNALSYM GlobalLock}
|
|
|
|
//!!!MWH My version win31 = DWORD WINAPI GlobalHandle(UINT)
|
|
|
|
function GlobalHandle(pMem: LPCVOID): HGLOBAL; stdcall;
|
|
{$EXTERNALSYM GlobalHandle}
|
|
|
|
function GlobalUnlock(hMem: HGLOBAL): BOOL; stdcall;
|
|
{$EXTERNALSYM GlobalUnlock}
|
|
|
|
function GlobalFree(hMem: HGLOBAL): HGLOBAL; stdcall;
|
|
{$EXTERNALSYM GlobalFree}
|
|
|
|
function GlobalCompact(dwMinFree: DWORD): SIZE_T; stdcall;
|
|
{$EXTERNALSYM GlobalCompact}
|
|
|
|
procedure GlobalFix(hMem: HGLOBAL); stdcall;
|
|
{$EXTERNALSYM GlobalFix}
|
|
|
|
procedure GlobalUnfix(hMem: HGLOBAL); stdcall;
|
|
{$EXTERNALSYM GlobalUnfix}
|
|
|
|
function GlobalWire(hMem: HGLOBAL): LPVOID; stdcall;
|
|
{$EXTERNALSYM GlobalWire}
|
|
|
|
function GlobalUnWire(hMem: HGLOBAL): BOOL; stdcall;
|
|
{$EXTERNALSYM GlobalUnWire}
|
|
|
|
procedure GlobalMemoryStatus(var lpBuffer: MEMORYSTATUS); stdcall;
|
|
{$EXTERNALSYM GlobalMemoryStatus}
|
|
|
|
type
|
|
LPMEMORYSTATUSEX = ^MEMORYSTATUSEX;
|
|
{$EXTERNALSYM LPMEMORYSTATUSEX}
|
|
_MEMORYSTATUSEX = record
|
|
dwLength: DWORD;
|
|
dwMemoryLoad: DWORD;
|
|
ullTotalPhys: DWORDLONG;
|
|
ullAvailPhys: DWORDLONG;
|
|
ullTotalPageFile: DWORDLONG;
|
|
ullAvailPageFile: DWORDLONG;
|
|
ullTotalVirtual: DWORDLONG;
|
|
ullAvailVirtual: DWORDLONG;
|
|
ullAvailExtendedVirtual: DWORDLONG;
|
|
end;
|
|
{$EXTERNALSYM _MEMORYSTATUSEX}
|
|
MEMORYSTATUSEX = _MEMORYSTATUSEX;
|
|
{$EXTERNALSYM MEMORYSTATUSEX}
|
|
TMemoryStatusEx = MEMORYSTATUSEX;
|
|
PMemoryStatusEx = LPMEMORYSTATUSEX;
|
|
|
|
function GlobalMemoryStatusEx(var lpBuffer: MEMORYSTATUSEX): BOOL; stdcall;
|
|
{$EXTERNALSYM GlobalMemoryStatusEx}
|
|
|
|
function LocalAlloc(uFlags: UINT; uBytes: SIZE_T): HLOCAL; stdcall;
|
|
{$EXTERNALSYM LocalAlloc}
|
|
|
|
function LocalReAlloc(hMem: HLOCAL; uBytes: SIZE_T; uFlags: UINT): HLOCAL; stdcall;
|
|
{$EXTERNALSYM LocalReAlloc}
|
|
|
|
function LocalLock(hMem: HLOCAL): LPVOID; stdcall;
|
|
{$EXTERNALSYM LocalLock}
|
|
|
|
function LocalHandle(pMem: LPCVOID): HLOCAL; stdcall;
|
|
{$EXTERNALSYM LocalHandle}
|
|
|
|
function LocalUnlock(hMem: HLOCAL): BOOL; stdcall;
|
|
{$EXTERNALSYM LocalUnlock}
|
|
|
|
function LocalSize(hMem: HLOCAL): SIZE_T; stdcall;
|
|
{$EXTERNALSYM LocalSize}
|
|
|
|
function LocalFlags(hMem: HLOCAL): UINT; stdcall;
|
|
{$EXTERNALSYM LocalFlags}
|
|
|
|
function LocalFree(hMem: HLOCAL): HLOCAL; stdcall;
|
|
{$EXTERNALSYM LocalFree}
|
|
|
|
function LocalShrink(hMem: HLOCAL; cbNewSize: UINT): SIZE_T; stdcall;
|
|
{$EXTERNALSYM LocalShrink}
|
|
|
|
function LocalCompact(uMinFree: UINT): SIZE_T; stdcall;
|
|
{$EXTERNALSYM LocalCompact}
|
|
|
|
function FlushInstructionCache(hProcess: HANDLE; lpBaseAddress: LPCVOID;
|
|
dwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FlushInstructionCache}
|
|
|
|
function VirtualAlloc(lpAddress: LPVOID; dwSize: SIZE_T; flAllocationType: DWORD;
|
|
flProtect: DWORD): LPVOID; stdcall;
|
|
{$EXTERNALSYM VirtualAlloc}
|
|
|
|
function VirtualFree(lpAddress: LPVOID; dwSize: SIZE_T; dwFreeType: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM VirtualFree}
|
|
|
|
function VirtualProtect(lpAddress: LPVOID; dwSize: SIZE_T; flNewProtect: DWORD;
|
|
lpflOldProtect: PDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM VirtualProtect}
|
|
|
|
function VirtualQuery(lpAddress: LPCVOID; var lpBuffer: MEMORY_BASIC_INFORMATION;
|
|
dwLength: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM VirtualQuery}
|
|
|
|
function VirtualAllocEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
|
|
flAllocationType: DWORD; flProtect: DWORD): LPVOID; stdcall;
|
|
{$EXTERNALSYM VirtualAllocEx}
|
|
|
|
function GetWriteWatch(dwFlags: DWORD; lpBaseAddress: PVOID;
|
|
dwRegionSize: SIZE_T; var lpAddresses: PVOID; var lpdwCount: ULONG_PTR;
|
|
var lpdwGranularity: ULONG): UINT; stdcall;
|
|
{$EXTERNALSYM GetWriteWatch}
|
|
|
|
function ResetWriteWatch(lpBaseAddress: LPVOID; dwRegionSize: SIZE_T): UINT; stdcall;
|
|
{$EXTERNALSYM ResetWriteWatch}
|
|
|
|
function GetLargePageMinimum: SIZE_T; stdcall;
|
|
{$EXTERNALSYM GetLargePageMinimum}
|
|
|
|
function VirtualFreeEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
|
|
dwFreeType: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM VirtualFreeEx}
|
|
|
|
function VirtualProtectEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
|
|
flNewProtect: DWORD; lpflOldProtect: PDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM VirtualProtectEx}
|
|
|
|
function VirtualQueryEx(hProcess: HANDLE; lpAddress: LPCVOID;
|
|
var lpBuffer: MEMORY_BASIC_INFORMATION; dwLength: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM VirtualQueryEx}
|
|
|
|
function HeapCreate(flOptions: DWORD; dwInitialSize: SIZE_T;
|
|
dwMaximumSize: SIZE_T): HANDLE; stdcall;
|
|
{$EXTERNALSYM HeapCreate}
|
|
|
|
function HeapDestroy(hHeap: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapDestroy}
|
|
|
|
function HeapAlloc(hHeap: HANDLE; dwFlags: DWORD; dwBytes: SIZE_T): LPVOID; stdcall;
|
|
{$EXTERNALSYM HeapAlloc}
|
|
|
|
function HeapReAlloc(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPVOID; dwBytes: SIZE_T): LPVOID; stdcall;
|
|
{$EXTERNALSYM HeapReAlloc}
|
|
|
|
function HeapFree(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapFree}
|
|
|
|
function HeapSize(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPCVOID): SIZE_T; stdcall;
|
|
{$EXTERNALSYM HeapSize}
|
|
|
|
function HeapValidate(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPCVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapValidate}
|
|
|
|
function HeapCompact(hHeap: HANDLE; dwFlags: DWORD): SIZE_T; stdcall;
|
|
{$EXTERNALSYM HeapCompact}
|
|
|
|
function GetProcessHeap: HANDLE; stdcall;
|
|
{$EXTERNALSYM GetProcessHeap)}
|
|
|
|
function GetProcessHeaps(NumberOfHeaps: DWORD; var ProcessHeaps: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProcessHeaps}
|
|
|
|
type
|
|
PPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
|
|
{$EXTERNALSYM PPROCESS_HEAP_ENTRY}
|
|
_PROCESS_HEAP_ENTRY = record
|
|
lpData: PVOID;
|
|
cbData: DWORD;
|
|
cbOverhead: BYTE;
|
|
iRegionIndex: BYTE;
|
|
wFlags: WORD;
|
|
case Integer of
|
|
0: (
|
|
hMem: HANDLE;
|
|
dwReserved: array [0..2] of DWORD);
|
|
1: (
|
|
dwComittedSize: DWORD;
|
|
dwUnComittedSize: DWORD;
|
|
lpFirstBlock: LPVOID;
|
|
lpLastBlock: LPVOID);
|
|
end;
|
|
{$EXTERNALSYM _PROCESS_HEAP_ENTRY}
|
|
PROCESS_HEAP_ENTRY = _PROCESS_HEAP_ENTRY;
|
|
{$EXTERNALSYM PROCESS_HEAP_ENTRY}
|
|
LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
|
|
{$EXTERNALSYM LPPROCESS_HEAP_ENTRY}
|
|
TProcessHeapEntry = PROCESS_HEAP_ENTRY;
|
|
PProcessHeapEntry = PPROCESS_HEAP_ENTRY;
|
|
|
|
const
|
|
PROCESS_HEAP_REGION = $0001;
|
|
{$EXTERNALSYM PROCESS_HEAP_REGION}
|
|
PROCESS_HEAP_UNCOMMITTED_RANGE = $0002;
|
|
{$EXTERNALSYM PROCESS_HEAP_UNCOMMITTED_RANGE}
|
|
PROCESS_HEAP_ENTRY_BUSY = $0004;
|
|
{$EXTERNALSYM PROCESS_HEAP_ENTRY_BUSY}
|
|
PROCESS_HEAP_ENTRY_MOVEABLE = $0010;
|
|
{$EXTERNALSYM PROCESS_HEAP_ENTRY_MOVEABLE}
|
|
PROCESS_HEAP_ENTRY_DDESHARE = $0020;
|
|
{$EXTERNALSYM PROCESS_HEAP_ENTRY_DDESHARE}
|
|
|
|
function HeapLock(hHeap: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapLock}
|
|
|
|
function HeapUnlock(hHeap: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapUnlock}
|
|
|
|
function HeapWalk(hHeap: HANDLE; var lpEntry: PROCESS_HEAP_ENTRY): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapWalk}
|
|
|
|
function HeapSetInformation(HeapHandle: HANDLE; HeapInformationClass: HEAP_INFORMATION_CLASS;
|
|
HeapInformation: PVOID; HeapInformationLength: SIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapSetInformation}
|
|
|
|
function HeapQueryInformation(HeapHandle: HANDLE; HeapInformationClass: HEAP_INFORMATION_CLASS;
|
|
HeapInformation: PVOID; HeapInformationLength: SIZE_T; ReturnLength: PSIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM HeapQueryInformation}
|
|
|
|
// GetBinaryType return values.
|
|
|
|
const
|
|
SCS_32BIT_BINARY = 0;
|
|
{$EXTERNALSYM SCS_32BIT_BINARY}
|
|
SCS_DOS_BINARY = 1;
|
|
{$EXTERNALSYM SCS_DOS_BINARY}
|
|
SCS_WOW_BINARY = 2;
|
|
{$EXTERNALSYM SCS_WOW_BINARY}
|
|
SCS_PIF_BINARY = 3;
|
|
{$EXTERNALSYM SCS_PIF_BINARY}
|
|
SCS_POSIX_BINARY = 4;
|
|
{$EXTERNALSYM SCS_POSIX_BINARY}
|
|
SCS_OS216_BINARY = 5;
|
|
{$EXTERNALSYM SCS_OS216_BINARY}
|
|
SCS_64BIT_BINARY = 6;
|
|
{$EXTERNALSYM SCS_64BIT_BINARY}
|
|
|
|
SCS_THIS_PLATFORM_BINARY = SCS_32BIT_BINARY;
|
|
{$EXTERNALSYM SCS_THIS_PLATFORM_BINARY}
|
|
|
|
function GetBinaryTypeA(lpApplicationName: LPCSTR; var lpBinaryType: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetBinaryTypeA}
|
|
function GetBinaryTypeW(lpApplicationName: LPCWSTR; var lpBinaryType: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetBinaryTypeW}
|
|
function GetBinaryType(lpApplicationName: LPCTSTR; var lpBinaryType: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetBinaryType}
|
|
|
|
function GetShortPathNameA(lpszLongPath: LPCSTR; lpszShortPath: LPSTR;
|
|
cchBuffer: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetShortPathNameA}
|
|
function GetShortPathNameW(lpszLongPath: LPCWSTR; lpszShortPath: LPWSTR;
|
|
cchBuffer: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetShortPathNameW}
|
|
function GetShortPathName(lpszLongPath: LPCTSTR; lpszShortPath: LPTSTR;
|
|
cchBuffer: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetShortPathName}
|
|
|
|
function GetLongPathNameA(lpszShortPath: LPCSTR; lpszLongPath: LPSTR;
|
|
cchBuffer: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLongPathNameA}
|
|
function GetLongPathNameW(lpszShortPath: LPCWSTR; lpszLongPath: LPWSTR;
|
|
cchBuffer: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLongPathNameW}
|
|
function GetLongPathName(lpszShortPath: LPCTSTR; lpszLongPath: LPTSTR;
|
|
cchBuffer: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLongPathName}
|
|
|
|
function GetProcessAffinityMask(hProcess: HANDLE;
|
|
var lpProcessAffinityMask, lpSystemAffinityMask: DWORD_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessAffinityMask}
|
|
|
|
function SetProcessAffinityMask(hProcess: HANDLE;
|
|
dwProcessAffinityMask: DWORD_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetProcessAffinityMask}
|
|
|
|
function GetProcessHandleCount(hProcess: HANDLE; out pdwHandleCount: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessHandleCount}
|
|
|
|
function GetProcessTimes(hProcess: HANDLE; var lpCreationTime, lpExitTime,
|
|
lpKernelTime, lpUserTime: FILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessTimes}
|
|
|
|
function GetProcessIoCounters(hProcess: HANDLE; var lpIoCounters: IO_COUNTERS): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessIoCounters}
|
|
|
|
function GetProcessWorkingSetSize(hProcess: HANDLE;
|
|
var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: SIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessWorkingSetSize}
|
|
|
|
function GetProcessWorkingSetSizeEx(hProcess: HANDLE; out lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: SIZE_T; out Flags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessWorkingSetSizeEx}
|
|
|
|
function SetProcessWorkingSetSize(hProcess: HANDLE; dwMinimumWorkingSetSize,
|
|
dwMaximumWorkingSetSize: SIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM SetProcessWorkingSetSize}
|
|
|
|
function SetProcessWorkingSetSizeEx(hProcess: HANDLE; dwMinimumWorkingSetSize, dwMaximumWorkingSetSize: SIZE_T; Flags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetProcessWorkingSetSizeEx}
|
|
|
|
function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
dwProcessId: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenProcess}
|
|
|
|
function GetCurrentProcess: HANDLE; stdcall;
|
|
{$EXTERNALSYM GetCurrentProcess}
|
|
|
|
function GetCurrentProcessId: DWORD; stdcall;
|
|
{$EXTERNALSYM GetCurrentProcessId}
|
|
|
|
procedure ExitProcess(uExitCode: UINT); stdcall;
|
|
{$EXTERNALSYM ExitProcess}
|
|
|
|
function TerminateProcess(hProcess: HANDLE; uExitCode: UINT): BOOL; stdcall;
|
|
{$EXTERNALSYM TerminateProcess}
|
|
|
|
function GetExitCodeProcess(hProcess: HANDLE; var lpExitCode: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetExitCodeProcess}
|
|
|
|
procedure FatalExit(ExitCode: Integer); stdcall;
|
|
{$EXTERNALSYM FatalExit}
|
|
|
|
function GetEnvironmentStringsW: LPWSTR; stdcall;
|
|
{$EXTERNALSYM GetEnvironmentStringsW}
|
|
|
|
function GetEnvironmentStrings: LPTSTR; stdcall;
|
|
{$EXTERNALSYM GetEnvironmentStrings}
|
|
|
|
function GetEnvironmentStringsA: LPSTR; stdcall;
|
|
{$EXTERNALSYM GetEnvironmentStringsA}
|
|
|
|
|
|
|
|
{$IFDEF WIN2003_UP}
|
|
//This function is only available in Windows 2003, Vista and 2008
|
|
//http://sourceforge.net/support/tracker.php?aid=1846987
|
|
function SetEnvironmentStringsA(NewEnvironment: LPSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEnvironmentStringsA}
|
|
|
|
function SetEnvironmentStringsW(NewEnvironment: LPWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEnvironmentStringsW}
|
|
function SetEnvironmentStrings(NewEnvironment: LPTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEnvironmentStrings}
|
|
{$ENDIF WIN2003_UP}
|
|
|
|
function FreeEnvironmentStringsA(pstr: LPSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM FreeEnvironmentStringsA}
|
|
function FreeEnvironmentStringsW(pstr: LPWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM FreeEnvironmentStringsW}
|
|
function FreeEnvironmentStrings(pstr: LPTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM FreeEnvironmentStrings}
|
|
|
|
procedure RaiseException(dwExceptionCode: DWORD; dwExceptionFlags: DWORD;
|
|
nNumberOfArguments: DWORD; lpArguments: PULONG_PTR); stdcall;
|
|
{$EXTERNALSYM RaiseException}
|
|
|
|
function UnhandledExceptionFilter(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
|
|
{$EXTERNALSYM UnhandledExceptionFilter}
|
|
|
|
type
|
|
PTOP_LEVEL_EXCEPTION_FILTER = function(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
|
|
{$EXTERNALSYM PTOP_LEVEL_EXCEPTION_FILTER}
|
|
LPTOP_LEVEL_EXCEPTION_FILTER = PTOP_LEVEL_EXCEPTION_FILTER;
|
|
{$EXTERNALSYM LPTOP_LEVEL_EXCEPTION_FILTER}
|
|
TTopLevelExceptionFilter = PTOP_LEVEL_EXCEPTION_FILTER;
|
|
|
|
function SetUnhandledExceptionFilter(lpTopLevelExceptionFilter: LPTOP_LEVEL_EXCEPTION_FILTER): LPTOP_LEVEL_EXCEPTION_FILTER; stdcall;
|
|
{$EXTERNALSYM SetUnhandledExceptionFilter}
|
|
|
|
//
|
|
// Fiber creation flags
|
|
//
|
|
|
|
const
|
|
FIBER_FLAG_FLOAT_SWITCH = $1; // context switch floating point
|
|
{$EXTERNALSYM FIBER_FLAG_FLOAT_SWITCH}
|
|
|
|
function CreateFiber(dwStackSize: DWORD; lpStartAddress: LPFIBER_START_ROUTINE;
|
|
lpParameter: LPVOID): LPVOID; stdcall;
|
|
{$EXTERNALSYM CreateFiber}
|
|
|
|
function CreateFiberEx(dwStackCommitSize, dwStackReserveSize: SIZE_T; dwFlags: DWORD;
|
|
lpStartAddress: LPFIBER_START_ROUTINE; lpParameter: LPVOID): LPVOID; stdcall;
|
|
{$EXTERNALSYM CreateFiberEx}
|
|
|
|
procedure DeleteFiber(lpFiber: LPVOID); stdcall;
|
|
{$EXTERNALSYM DeleteFiber}
|
|
|
|
function ConvertThreadToFiber(lpParameter: LPVOID): LPVOID; stdcall;
|
|
{$EXTERNALSYM ConvertThreadToFiber}
|
|
|
|
function ConvertThreadToFiberEx(lpParameter: LPVOID; dwFlags: DWORD): LPVOID; stdcall;
|
|
{$EXTERNALSYM ConvertThreadToFiberEx}
|
|
|
|
function ConvertFiberToThread: BOOL; stdcall;
|
|
{$EXTERNALSYM ConvertFiberToThread}
|
|
|
|
procedure SwitchToFiber(lpFiber: LPVOID); stdcall;
|
|
{$EXTERNALSYM SwitchToFiber}
|
|
|
|
function SwitchToThread: BOOL; stdcall;
|
|
{$EXTERNALSYM SwitchToThread}
|
|
|
|
function CreateThread(lpThreadAttributes: LPSECURITY_ATTRIBUTES;
|
|
dwStackSize: DWORD; lpStartAddress: LPTHREAD_START_ROUTINE; lpParameter: LPVOID;
|
|
dwCreationFlags: DWORD; lpThreadId: LPDWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateThread}
|
|
|
|
function CreateRemoteThread(hProcess: HANDLE;
|
|
lpThreadAttributes: LPSECURITY_ATTRIBUTES; dwStackSize: DWORD;
|
|
lpStartAddress: LPTHREAD_START_ROUTINE; lpParameter: LPVOID;
|
|
dwCreationFlags: DWORD; lpThreadId: LPDWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateRemoteThread}
|
|
|
|
function GetCurrentThread: HANDLE; stdcall;
|
|
{$EXTERNALSYM GetCurrentThread}
|
|
|
|
function GetCurrentThreadId: DWORD; stdcall;
|
|
{$EXTERNALSYM GetCurrentThreadId}
|
|
|
|
function GetProcessIdOfThread(Thread: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProcessIdOfThread}
|
|
|
|
function GetThreadId(Thread: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetThreadId}
|
|
|
|
function GetProcessId(Process: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProcessId}
|
|
|
|
function GetCurrentProcessorNumber: DWORD; stdcall;
|
|
{$EXTERNALSYM GetCurrentProcessorNumber}
|
|
|
|
function SetThreadAffinityMask(hThread: HANDLE;
|
|
dwThreadAffinityMask: DWORD_PTR): DWORD_PTR; stdcall;
|
|
{$EXTERNALSYM SetThreadAffinityMask}
|
|
|
|
function SetThreadIdealProcessor(hThread: HANDLE; dwIdealProcessor: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM SetThreadIdealProcessor}
|
|
|
|
function SetProcessPriorityBoost(hProcess: HANDLE;
|
|
bDisablePriorityBoost: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetProcessPriorityBoost}
|
|
|
|
function GetProcessPriorityBoost(hProcess: HANDLE;
|
|
var pDisablePriorityBoost: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessPriorityBoost}
|
|
|
|
function RequestWakeupLatency(latency: LATENCY_TIME): BOOL; stdcall;
|
|
{$EXTERNALSYM RequestWakeupLatency}
|
|
|
|
function IsSystemResumeAutomatic: BOOL; stdcall;
|
|
{$EXTERNALSYM IsSystemResumeAutomatic}
|
|
|
|
function OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
dwThreadId: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenThread}
|
|
|
|
function SetThreadPriority(hThread: HANDLE; nPriority: Integer): BOOL; stdcall;
|
|
{$EXTERNALSYM SetThreadPriority}
|
|
|
|
function SetThreadPriorityBoost(hThread: HANDLE; bDisablePriorityBoost: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetThreadPriorityBoost}
|
|
|
|
function GetThreadPriorityBoost(hThread: HANDLE;
|
|
var pDisablePriorityBoost: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetThreadPriorityBoost}
|
|
|
|
function GetThreadPriority(hThread: HANDLE): Integer; stdcall;
|
|
{$EXTERNALSYM GetThreadPriority}
|
|
|
|
function GetThreadTimes(hThread: HANDLE; var lpCreationTime, lpExitTime,
|
|
lpKernelTime, lpUserTime: FILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM GetThreadTimes}
|
|
|
|
function GetThreadIOPendingFlag(hThread: HANDLE; out lpIOIsPending: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetThreadIOPendingFlag}
|
|
|
|
procedure ExitThread(dwExitCode: DWORD); stdcall;
|
|
{$EXTERNALSYM ExitThread}
|
|
|
|
function TerminateThread(hThread: HANDLE; dwExitCode: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM TerminateThread}
|
|
|
|
function GetExitCodeThread(hThread: HANDLE; var lpExitCode: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetExitCodeThread}
|
|
|
|
function GetThreadSelectorEntry(hThread: HANDLE; dwSelector: DWORD;
|
|
var lpSelectorEntry: LDT_ENTRY): BOOL; stdcall;
|
|
{$EXTERNALSYM GetThreadSelectorEntry}
|
|
|
|
function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE; stdcall;
|
|
{$EXTERNALSYM SetThreadExecutionState}
|
|
|
|
function GetLastError: DWORD; stdcall;
|
|
{$EXTERNALSYM GetLastError}
|
|
|
|
procedure SetLastError(dwErrCode: DWORD); stdcall;
|
|
{$EXTERNALSYM SetLastError}
|
|
|
|
procedure RestoreLastError(dwErrCode: DWORD); stdcall;
|
|
{$EXTERNALSYM RestoreLastError}
|
|
|
|
type
|
|
PRESTORE_LAST_ERROR = procedure(dwErrCode: DWORD); stdcall;
|
|
{$EXTERNALSYM PRESTORE_LAST_ERROR}
|
|
|
|
const
|
|
RESTORE_LAST_ERROR_NAME_A = 'RestoreLastError';
|
|
{$EXTERNALSYM RESTORE_LAST_ERROR_NAME_A}
|
|
RESTORE_LAST_ERROR_NAME_W = WideString('RestoreLastError');
|
|
{$EXTERNALSYM RESTORE_LAST_ERROR_NAME_W}
|
|
RESTORE_LAST_ERROR_NAME = __TEXT('RestoreLastError');
|
|
{$EXTERNALSYM RESTORE_LAST_ERROR_NAME}
|
|
|
|
function HasOverlappedIoCompleted(const lpOverlapped: OVERLAPPED): BOOL;
|
|
{$EXTERNALSYM HasOverlappedIoCompleted}
|
|
|
|
function GetOverlappedResult(hFile: HANDLE; const lpOverlapped: OVERLAPPED;
|
|
var lpNumberOfBytesTransferred: DWORD; bWait: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetOverlappedResult}
|
|
|
|
function CreateIoCompletionPort(FileHandle: HANDLE; ExistingCompletionPort: HANDLE;
|
|
CompletionKey: ULONG_PTR; NumberOfConcurrentThreads: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateIoCompletionPort}
|
|
|
|
function GetQueuedCompletionStatus(CompletionPort: HANDLE;
|
|
var lpNumberOfBytesTransferred: DWORD; var lpCompletionKey: ULONG_PTR;
|
|
var lpOverlapped: LPOVERLAPPED; dwMilliseconds: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetQueuedCompletionStatus}
|
|
|
|
function PostQueuedCompletionStatus(CompletionPort: HANDLE;
|
|
dwNumberOfBytesTransferred: DWORD; dwCompletionKey: ULONG_PTR;
|
|
lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM PostQueuedCompletionStatus}
|
|
|
|
const
|
|
SEM_FAILCRITICALERRORS = $0001;
|
|
{$EXTERNALSYM SEM_FAILCRITICALERRORS}
|
|
SEM_NOGPFAULTERRORBOX = $0002;
|
|
{$EXTERNALSYM SEM_NOGPFAULTERRORBOX}
|
|
SEM_NOALIGNMENTFAULTEXCEPT = $0004;
|
|
{$EXTERNALSYM SEM_NOALIGNMENTFAULTEXCEPT}
|
|
SEM_NOOPENFILEERRORBOX = $8000;
|
|
{$EXTERNALSYM SEM_NOOPENFILEERRORBOX}
|
|
|
|
function SetErrorMode(uMode: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM SetErrorMode}
|
|
|
|
function ReadProcessMemory(hProcess: HANDLE; lpBaseAddress: LPCVOID;
|
|
lpBuffer: LPVOID; nSize: DWORD; lpNumberOfBytesRead: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadProcessMemory}
|
|
|
|
function WriteProcessMemory(hProcess: HANDLE; lpBaseAddress: LPVOID;
|
|
lpBuffer: LPVOID; nSize: DWORD; lpNumberOfBytesWritten: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProcessMemory}
|
|
|
|
function GetThreadContext(hThread: HANDLE; var lpContext: CONTEXT): BOOL; stdcall;
|
|
{$EXTERNALSYM GetThreadContext}
|
|
|
|
function SetThreadContext(hThread: HANDLE; const lpContext: CONTEXT): BOOL; stdcall;
|
|
{$EXTERNALSYM SetThreadContext}
|
|
|
|
function SuspendThread(hThread: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM SuspendThread}
|
|
|
|
function ResumeThread(hThread: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM ResumeThread}
|
|
|
|
type
|
|
PAPCFUNC = procedure(dwParam: ULONG_PTR); stdcall;
|
|
{$EXTERNALSYM PAPCFUNC}
|
|
TApcFunc = PAPCFUNC;
|
|
|
|
function QueueUserAPC(pfnAPC: PAPCFUNC; hThread: HANDLE; dwData: ULONG_PTR): DWORD; stdcall;
|
|
{$EXTERNALSYM QueueUserAPC}
|
|
|
|
function IsDebuggerPresent: BOOL; stdcall;
|
|
{$EXTERNALSYM IsDebuggerPresent}
|
|
|
|
function CheckRemoteDebuggerPresent(hProcess: HANDLE; out pbDebuggerPresent: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM CheckRemoteDebuggerPresent}
|
|
|
|
procedure DebugBreak; stdcall;
|
|
{$EXTERNALSYM DebugBreak}
|
|
|
|
function WaitForDebugEvent(var lpDebugEvent: DEBUG_EVENT; dwMilliseconds: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM WaitForDebugEvent}
|
|
|
|
function ContinueDebugEvent(dwProcessId: DWORD; dwThreadId: DWORD;
|
|
dwContinueStatus: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM ContinueDebugEvent}
|
|
|
|
function DebugActiveProcess(dwProcessId: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DebugActiveProcess}
|
|
|
|
function DebugActiveProcessStop(dwProcessId: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DebugActiveProcessStop}
|
|
|
|
function DebugSetProcessKillOnExit(KillOnExit: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM DebugSetProcessKillOnExit}
|
|
|
|
function DebugBreakProcess(Process: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DebugBreakProcess}
|
|
|
|
procedure InitializeCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
|
|
{$EXTERNALSYM InitializeCriticalSection}
|
|
|
|
procedure EnterCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
|
|
{$EXTERNALSYM EnterCriticalSection}
|
|
|
|
procedure LeaveCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
|
|
{$EXTERNALSYM LeaveCriticalSection}
|
|
|
|
function InitializeCriticalSectionAndSpinCount(var lpCriticalSection: CRITICAL_SECTION;
|
|
dwSpinCount: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM InitializeCriticalSectionAndSpinCount}
|
|
|
|
function SetCriticalSectionSpinCount(var lpCriticalSection: CRITICAL_SECTION;
|
|
dwSpinCount: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM SetCriticalSectionSpinCount}
|
|
|
|
function TryEnterCriticalSection(var lpCriticalSection: CRITICAL_SECTION): BOOL; stdcall;
|
|
{$EXTERNALSYM TryEnterCriticalSection}
|
|
|
|
procedure DeleteCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
|
|
{$EXTERNALSYM DeleteCriticalSection}
|
|
|
|
function SetEvent(hEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEvent}
|
|
|
|
function ResetEvent(hEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ResetEvent}
|
|
|
|
function PulseEvent(hEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM PulseEvent}
|
|
|
|
function ReleaseSemaphore(hSemaphore: HANDLE; lReleaseCount: LONG;
|
|
lpPreviousCount: LPLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM ReleaseSemaphore}
|
|
|
|
function ReleaseMutex(hMutex: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ReleaseMutex}
|
|
|
|
function WaitForSingleObject(hHandle: HANDLE; dwMilliseconds: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM WaitForSingleObject}
|
|
|
|
function WaitForMultipleObjects(nCount: DWORD; lpHandles: PHANDLE; bWaitAll: BOOL;
|
|
dwMilliseconds: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM WaitForMultipleObjects}
|
|
|
|
procedure Sleep(dwMilliseconds: DWORD); stdcall;
|
|
{$EXTERNALSYM Sleep}
|
|
|
|
function LoadResource(hModule: HMODULE; hResInfo: HRSRC): HGLOBAL; stdcall;
|
|
{$EXTERNALSYM LoadResource}
|
|
|
|
function SizeofResource(hModule: HMODULE; hResInfo: HRSRC): DWORD; stdcall;
|
|
{$EXTERNALSYM SizeofResource}
|
|
|
|
function GlobalDeleteAtom(nAtom: ATOM): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalDeleteAtom}
|
|
|
|
function InitAtomTable(nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM InitAtomTable}
|
|
|
|
function DeleteAtom(nAtom: ATOM): ATOM; stdcall;
|
|
{$EXTERNALSYM DeleteAtom}
|
|
|
|
function SetHandleCount(uNumber: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM SetHandleCount}
|
|
|
|
function GetLogicalDrives: DWORD; stdcall;
|
|
{$EXTERNALSYM GetLogicalDrives}
|
|
|
|
function LockFile(hFile: HANDLE; dwFileOffsetLow: DWORD; dwFileOffsetHigh: DWORD;
|
|
nNumberOfBytesToLockLow: DWORD; nNumberOfBytesToLockHigh: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LockFile}
|
|
|
|
function UnlockFile(hFile: HANDLE; dwFileOffsetLow: DWORD; dwFileOffsetHigh: DWORD;
|
|
nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM UnlockFile}
|
|
|
|
function LockFileEx(hFile: HANDLE; dwFlags: DWORD; dwReserved: DWORD;
|
|
nNumberOfBytesToLockLow: DWORD; nNumberOfBytesToLockHigh: DWORD;
|
|
const lpOverlapped: OVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM LockFileEx}
|
|
|
|
const
|
|
LOCKFILE_FAIL_IMMEDIATELY = $00000001;
|
|
{$EXTERNALSYM LOCKFILE_FAIL_IMMEDIATELY}
|
|
LOCKFILE_EXCLUSIVE_LOCK = $00000002;
|
|
{$EXTERNALSYM LOCKFILE_EXCLUSIVE_LOCK}
|
|
|
|
function UnlockFileEx(hFile: HANDLE; dwReserved: DWORD;
|
|
nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD;
|
|
const lpOverlapped: OVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM UnlockFileEx}
|
|
|
|
type
|
|
PBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
|
|
{$EXTERNALSYM PBY_HANDLE_FILE_INFORMATION}
|
|
_BY_HANDLE_FILE_INFORMATION = record
|
|
dwFileAttributes: DWORD;
|
|
ftCreationTime: FILETIME;
|
|
ftLastAccessTime: FILETIME;
|
|
ftLastWriteTime: FILETIME;
|
|
dwVolumeSerialNumber: DWORD;
|
|
nFileSizeHigh: DWORD;
|
|
nFileSizeLow: DWORD;
|
|
nNumberOfLinks: DWORD;
|
|
nFileIndexHigh: DWORD;
|
|
nFileIndexLow: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _BY_HANDLE_FILE_INFORMATION}
|
|
BY_HANDLE_FILE_INFORMATION = _BY_HANDLE_FILE_INFORMATION;
|
|
{$EXTERNALSYM BY_HANDLE_FILE_INFORMATION}
|
|
LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
|
|
{$EXTERNALSYM LPBY_HANDLE_FILE_INFORMATION}
|
|
TByHandleFileInformation = BY_HANDLE_FILE_INFORMATION;
|
|
PByHandleFileInformation = PBY_HANDLE_FILE_INFORMATION;
|
|
|
|
function GetFileInformationByHandle(hFile: HANDLE;
|
|
var lpFileInformation: BY_HANDLE_FILE_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileInformationByHandle}
|
|
|
|
function GetFileType(hFile: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileType}
|
|
|
|
function GetFileSize(hFile: HANDLE; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileSize}
|
|
|
|
function GetFileSizeEx(hFile: HANDLE; var lpFileSize: LARGE_INTEGER): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileSizeEx}
|
|
|
|
function GetStdHandle(nStdHandle: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM GetStdHandle}
|
|
|
|
function SetStdHandle(nStdHandle: DWORD; hHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetStdHandle}
|
|
|
|
function WriteFile(hFile: HANDLE; lpBuffer: LPCVOID; nNumberOfBytesToWrite: DWORD;
|
|
lpNumberOfBytesWritten: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteFile}
|
|
|
|
function ReadFile(hFile: HANDLE; lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
|
|
lpNumberOfBytesRead: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadFile}
|
|
|
|
function FlushFileBuffers(hFile: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM FlushFileBuffers}
|
|
|
|
function DeviceIoControl(hDevice: HANDLE; dwIoControlCode: DWORD;
|
|
lpInBuffer: LPVOID; nInBufferSize: DWORD; lpOutBuffer: LPVOID;
|
|
nOutBufferSize: DWORD; lpBytesReturned: LPDWORD;
|
|
lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM DeviceIoControl}
|
|
|
|
function RequestDeviceWakeup(hDevice: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM RequestDeviceWakeup}
|
|
|
|
function CancelDeviceWakeupRequest(hDevice: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CancelDeviceWakeupRequest}
|
|
|
|
function GetDevicePowerState(hDevice: HANDLE; var pfOn: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDevicePowerState}
|
|
|
|
function SetMessageWaitingIndicator(hMsgIndicator: HANDLE; ulMsgCount: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM SetMessageWaitingIndicator}
|
|
|
|
function SetEndOfFile(hFile: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEndOfFile}
|
|
|
|
function SetFilePointer(hFile: HANDLE; lDistanceToMove: LONG;
|
|
lpDistanceToMoveHigh: PLONG; dwMoveMethod: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM SetFilePointer}
|
|
|
|
function SetFilePointerEx(hFile: HANDLE; liDistanceToMove: LARGE_INTEGER;
|
|
lpNewFilePointer: PLARGE_INTEGER; dwMoveMethod: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFilePointerEx}
|
|
|
|
function FindClose(hFindFile: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM FindClose}
|
|
|
|
function GetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
|
|
lpLastWriteTime: PFILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileTime}
|
|
|
|
function SetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
|
|
lpLastWriteTime: PFILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileTime}
|
|
|
|
function SetFileValidData(hFile: HANDLE; ValidDataLength: LONGLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileValidData}
|
|
|
|
function SetFileShortNameA(hFile: HANDLE; lpShortName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileShortNameA}
|
|
function SetFileShortNameW(hFile: HANDLE; lpShortName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileShortNameW}
|
|
function SetFileShortName(hFile: HANDLE; lpShortName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileShortName}
|
|
|
|
function CloseHandle(hObject: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CloseHandle}
|
|
|
|
function DuplicateHandle(hSourceProcessHandle: HANDLE; hSourceHandle: HANDLE;
|
|
hTargetProcessHandle: HANDLE; lpTargetHandle: LPHANDLE;
|
|
dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwOptions: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DuplicateHandle}
|
|
|
|
function GetHandleInformation(hObject: HANDLE; var lpdwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetHandleInformation}
|
|
|
|
function SetHandleInformation(hObject: HANDLE; dwMask: DWORD; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetHandleInformation}
|
|
|
|
const
|
|
HANDLE_FLAG_INHERIT = $00000001;
|
|
{$EXTERNALSYM HANDLE_FLAG_INHERIT}
|
|
HANDLE_FLAG_PROTECT_FROM_CLOSE = $00000002;
|
|
{$EXTERNALSYM HANDLE_FLAG_PROTECT_FROM_CLOSE}
|
|
|
|
HINSTANCE_ERROR = 32;
|
|
{$EXTERNALSYM HINSTANCE_ERROR}
|
|
|
|
function LoadModule(lpModuleName: LPCSTR; lpParameterBlock: LPVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM LoadModule}
|
|
|
|
function WinExec(lpCmdLine: LPCSTR; uCmdShow: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM WinExec}
|
|
|
|
function ClearCommBreak(hFile: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ClearCommBreak}
|
|
|
|
function ClearCommError(hFile: HANDLE; var lpErrors: DWORD;
|
|
lpStat: LPCOMSTAT): BOOL; stdcall;
|
|
{$EXTERNALSYM ClearCommError}
|
|
|
|
function SetupComm(hFile: HANDLE; dwInQueue: DWORD; dwOutQueue: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetupComm}
|
|
|
|
function EscapeCommFunction(hFile: HANDLE; dwFunc: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM EscapeCommFunction}
|
|
|
|
function GetCommConfig(hCommDev: HANDLE; var lpCC: COMMCONFIG;
|
|
var lpdwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCommConfig}
|
|
|
|
function GetCommMask(hFile: HANDLE; var lpEvtMask: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCommMask}
|
|
|
|
function GetCommProperties(hFile: HANDLE; var lpCommProp: COMMPROP): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCommProperties}
|
|
|
|
function GetCommModemStatus(hFile: HANDLE; var lpModemStat: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCommModemStatus}
|
|
|
|
function GetCommState(hFile: HANDLE; var lpDCB: DCB): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCommState}
|
|
|
|
function GetCommTimeouts(hFile: HANDLE; var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCommTimeouts}
|
|
|
|
function PurgeComm(hFile: HANDLE; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM PurgeComm}
|
|
|
|
function SetCommBreak(hFile: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCommBreak}
|
|
|
|
function SetCommConfig(hCommDev: HANDLE; const lpCC: COMMCONFIG; dwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCommConfig}
|
|
|
|
function SetCommMask(hFile: HANDLE; dwEvtMask: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCommMask}
|
|
|
|
function SetCommState(hFile: HANDLE; const lpDCB: DCB): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCommState}
|
|
|
|
function SetCommTimeouts(hFile: HANDLE; const lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCommTimeouts}
|
|
|
|
function TransmitCommChar(hFile: HANDLE; cChar: AnsiChar): BOOL; stdcall;
|
|
{$EXTERNALSYM TransmitCommChar}
|
|
|
|
function WaitCommEvent(hFile: HANDLE; var lpEvtMask: DWORD;
|
|
lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM WaitCommEvent}
|
|
|
|
function SetTapePosition(hDevice: HANDLE; dwPositionMethod, dwPartition,
|
|
dwOffsetLow, dwOffsetHigh: DWORD; bImmediate: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM SetTapePosition}
|
|
|
|
function GetTapePosition(hDevice: HANDLE; dwPositionType: DWORD;
|
|
var lpdwPartition, lpdwOffsetLow: LPDWORD; lpdwOffsetHigh: LPDWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTapePosition}
|
|
|
|
function PrepareTape(hDevice: HANDLE; dwOperation: DWORD; bImmediate: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM PrepareTape}
|
|
|
|
function EraseTape(hDevice: HANDLE; dwEraseType: DWORD; bImmediate: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM EraseTape}
|
|
|
|
function CreateTapePartition(hDevice: HANDLE; dwPartitionMethod: DWORD;
|
|
dwCount: DWORD; dwSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM CreateTapePartition}
|
|
|
|
function WriteTapemark(hDevice: HANDLE; dwTapemarkType: DWORD;
|
|
dwTapemarkCount: DWORD; bImmediate: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM WriteTapemark}
|
|
|
|
function GetTapeStatus(hDevice: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTapeStatus}
|
|
|
|
function GetTapeParameters(hDevice: HANDLE; dwOperation: DWORD;
|
|
var lpdwSize: DWORD; lpTapeInformation: LPVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTapeParameters}
|
|
|
|
const
|
|
GET_TAPE_MEDIA_INFORMATION = 0;
|
|
{$EXTERNALSYM GET_TAPE_MEDIA_INFORMATION}
|
|
GET_TAPE_DRIVE_INFORMATION = 1;
|
|
{$EXTERNALSYM GET_TAPE_DRIVE_INFORMATION}
|
|
|
|
function SetTapeParameters(hDevice: HANDLE; dwOperation: DWORD; lpTapeInformation: LPVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM SetTapeParameters}
|
|
|
|
const
|
|
SET_TAPE_MEDIA_INFORMATION = 0;
|
|
{$EXTERNALSYM SET_TAPE_MEDIA_INFORMATION}
|
|
SET_TAPE_DRIVE_INFORMATION = 1;
|
|
{$EXTERNALSYM SET_TAPE_DRIVE_INFORMATION}
|
|
|
|
function Beep(dwFreq: DWORD; dwDuration: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM Beep}
|
|
|
|
function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; stdcall;
|
|
{$EXTERNALSYM MulDiv}
|
|
|
|
procedure GetSystemTime(var lpSystemTime: SYSTEMTIME); stdcall;
|
|
{$EXTERNALSYM GetSystemTime}
|
|
|
|
procedure GetSystemTimeAsFileTime(var lpSystemTimeAsFileTime: FILETIME); stdcall;
|
|
{$EXTERNALSYM GetSystemTimeAsFileTime}
|
|
|
|
function SetSystemTime(var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSystemTime}
|
|
|
|
procedure GetLocalTime(var lpSystemTime: SYSTEMTIME); stdcall;
|
|
{$EXTERNALSYM GetLocalTime}
|
|
|
|
function SetLocalTime(var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
|
|
{$EXTERNALSYM SetLocalTime}
|
|
|
|
procedure GetSystemInfo(var lpSystemInfo: SYSTEM_INFO); stdcall;
|
|
{$EXTERNALSYM GetSystemInfo}
|
|
|
|
function GetSystemRegistryQuota(out pdwQuotaAllowed, pdwQuotaUsed: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSystemRegistryQuota}
|
|
|
|
function GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime: LPFILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSystemTimes}
|
|
|
|
procedure GetNativeSystemInfo(lpSystemInfo: LPSYSTEM_INFO); stdcall;
|
|
{$EXTERNALSYM GetNativeSystemInfo}
|
|
|
|
function IsProcessorFeaturePresent(ProcessorFeature: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM IsProcessorFeaturePresent}
|
|
|
|
type
|
|
PTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
|
|
{$EXTERNALSYM PTIME_ZONE_INFORMATION}
|
|
_TIME_ZONE_INFORMATION = record
|
|
Bias: LONG;
|
|
StandardName: array [0..31] of WCHAR;
|
|
StandardDate: SYSTEMTIME;
|
|
StandardBias: LONG;
|
|
DaylightName: array [0..31] of WCHAR;
|
|
DaylightDate: SYSTEMTIME;
|
|
DaylightBias: LONG;
|
|
end;
|
|
{$EXTERNALSYM _TIME_ZONE_INFORMATION}
|
|
TIME_ZONE_INFORMATION = _TIME_ZONE_INFORMATION;
|
|
{$EXTERNALSYM TIME_ZONE_INFORMATION}
|
|
LPTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
|
|
{$EXTERNALSYM LPTIME_ZONE_INFORMATION}
|
|
TTimeZoneInformation = TIME_ZONE_INFORMATION;
|
|
PTimeZoneInformation = PTIME_ZONE_INFORMATION;
|
|
|
|
function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION;
|
|
var lpUniversalTime, lpLocalTime: SYSTEMTIME): BOOL; stdcall;
|
|
{$EXTERNALSYM SystemTimeToTzSpecificLocalTime}
|
|
|
|
function TzSpecificLocalTimeToSystemTime(const lpTimeZoneInformation: TIME_ZONE_INFORMATION;
|
|
const lpLocalTime: SYSTEMTIME; var lpUniversalTime: SYSTEMTIME): BOOL; stdcall;
|
|
{$EXTERNALSYM TzSpecificLocalTimeToSystemTime}
|
|
|
|
function GetTimeZoneInformation(var lpTimeZoneInformation: TIME_ZONE_INFORMATION): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTimeZoneInformation}
|
|
|
|
function SetTimeZoneInformation(const lpTimeZoneInformation: TIME_ZONE_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM SetTimeZoneInformation}
|
|
|
|
//
|
|
// Routines to convert back and forth between system time and file time
|
|
//
|
|
|
|
function SystemTimeToFileTime(const lpSystemTime: SYSTEMTIME; var lpFileTime: FILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM SystemTimeToFileTime}
|
|
|
|
function FileTimeToLocalFileTime(const lpFileTime: FILETIME; var lpLocalFileTime: FILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM FileTimeToLocalFileTime}
|
|
|
|
function LocalFileTimeToFileTime(const lpLocalFileTime: FILETIME; var lpFileTime: FILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM LocalFileTimeToFileTime}
|
|
|
|
function FileTimeToSystemTime(const lpFileTime: FILETIME; var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
|
|
{$EXTERNALSYM FileTimeToSystemTime}
|
|
|
|
function CompareFileTime(const lpFileTime1, lpFileTime2: FILETIME): LONG; stdcall;
|
|
{$EXTERNALSYM CompareFileTime}
|
|
|
|
function FileTimeToDosDateTime(const lpFileTime: FILETIME; var lpFatDate,
|
|
lpFatTime: WORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FileTimeToDosDateTime}
|
|
|
|
function DosDateTimeToFileTime(wFatDate, wFatTime: WORD; var lpFileTime: FILETIME): BOOL; stdcall;
|
|
{$EXTERNALSYM DosDateTimeToFileTime}
|
|
|
|
function GetTickCount: DWORD; stdcall;
|
|
{$EXTERNALSYM GetTickCount}
|
|
|
|
function SetSystemTimeAdjustment(dwTimeAdjustment: DWORD;
|
|
bTimeAdjustmentDisabled: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSystemTimeAdjustment}
|
|
|
|
function GetSystemTimeAdjustment(var lpTimeAdjustment, lpTimeIncrement: DWORD;
|
|
var lpTimeAdjustmentDisabled: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSystemTimeAdjustment}
|
|
|
|
function FormatMessageA(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
|
|
dwLanguageId: DWORD; lpBuffer: LPSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
|
|
{$EXTERNALSYM FormatMessageA}
|
|
function FormatMessageW(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
|
|
dwLanguageId: DWORD; lpBuffer: LPWSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
|
|
{$EXTERNALSYM FormatMessageW}
|
|
function FormatMessage(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
|
|
dwLanguageId: DWORD; lpBuffer: LPTSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
|
|
{$EXTERNALSYM FormatMessage}
|
|
|
|
const
|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER = $00000100;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_ALLOCATE_BUFFER}
|
|
FORMAT_MESSAGE_IGNORE_INSERTS = $00000200;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_IGNORE_INSERTS}
|
|
FORMAT_MESSAGE_FROM_STRING = $00000400;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_FROM_STRING}
|
|
FORMAT_MESSAGE_FROM_HMODULE = $00000800;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_FROM_HMODULE}
|
|
FORMAT_MESSAGE_FROM_SYSTEM = $00001000;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_FROM_SYSTEM}
|
|
FORMAT_MESSAGE_ARGUMENT_ARRAY = $00002000;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_ARGUMENT_ARRAY}
|
|
FORMAT_MESSAGE_MAX_WIDTH_MASK = $000000FF;
|
|
{$EXTERNALSYM FORMAT_MESSAGE_MAX_WIDTH_MASK}
|
|
|
|
function CreatePipe(var hReadPipe, hWritePipe: HANDLE;
|
|
lpPipeAttributes: LPSECURITY_ATTRIBUTES; nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CreatePipe}
|
|
|
|
function ConnectNamedPipe(hNamedPipe: HANDLE; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM ConnectNamedPipe}
|
|
|
|
function DisconnectNamedPipe(hNamedPipe: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DisconnectNamedPipe}
|
|
|
|
function SetNamedPipeHandleState(hNamedPipe: HANDLE; lpMode: LPDWORD;
|
|
lpMaxCollectionCount: LPDWORD; lpCollectDataTimeout: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetNamedPipeHandleState}
|
|
|
|
function GetNamedPipeInfo(hNamedPipe: HANDLE; lpFlags, lpOutBufferSize,
|
|
lpInBufferSize, lpMaxInstances: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeInfo}
|
|
|
|
function PeekNamedPipe(hNamedPipe: HANDLE; lpBuffer: LPVOID; nBufferSize: DWORD;
|
|
lpBytesRead, lpTotalBytesAvail, lpBytesLeftThisMessage: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM PeekNamedPipe}
|
|
|
|
function TransactNamedPipe(hNamedPipe: HANDLE; lpInBuffer: LPVOID;
|
|
nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
|
|
lpBytesRead: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM TransactNamedPipe}
|
|
|
|
function CreateMailslotA(lpName: LPCSTR; nMaxMessageSize, lReadTimeout: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateMailslotA}
|
|
function CreateMailslotW(lpName: LPCWSTR; nMaxMessageSize, lReadTimeout: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateMailslotW}
|
|
function CreateMailslot(lpName: LPCTSTR; nMaxMessageSize, lReadTimeout: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateMailslot}
|
|
|
|
function GetMailslotInfo(hMailslot: HANDLE; lpMaxMessageSize, lpNextSize,
|
|
lpMessageCount, lpReadTimeout: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetMailslotInfo}
|
|
|
|
function SetMailslotInfo(hMailslot: HANDLE; lReadTimeout: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetMailslotInfo}
|
|
|
|
function MapViewOfFile(hFileMappingObject: HANDLE; dwDesiredAccess: DWORD;
|
|
dwFileOffsetHigh, dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: SIZE_T): LPVOID; stdcall;
|
|
{$EXTERNALSYM MapViewOfFile}
|
|
|
|
function FlushViewOfFile(lpBaseAddress: LPCVOID; dwNumberOfBytesToFlush: SIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM FlushViewOfFile}
|
|
|
|
function UnmapViewOfFile(lpBaseAddress: LPCVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM UnmapViewOfFile}
|
|
|
|
//
|
|
// File Encryption API
|
|
//
|
|
|
|
function EncryptFileA(lpFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EncryptFileA}
|
|
function EncryptFileW(lpFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EncryptFileW}
|
|
function EncryptFile(lpFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EncryptFile}
|
|
|
|
function DecryptFileA(lpFileName: LPCSTR; dwReserved: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DecryptFileA}
|
|
function DecryptFileW(lpFileName: LPCWSTR; dwReserved: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DecryptFileW}
|
|
function DecryptFile(lpFileName: LPCTSTR; dwReserved: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DecryptFile}
|
|
|
|
//
|
|
// Encryption Status Value
|
|
//
|
|
|
|
const
|
|
FILE_ENCRYPTABLE = 0;
|
|
{$EXTERNALSYM FILE_ENCRYPTABLE}
|
|
FILE_IS_ENCRYPTED = 1;
|
|
{$EXTERNALSYM FILE_IS_ENCRYPTED}
|
|
FILE_SYSTEM_ATTR = 2;
|
|
{$EXTERNALSYM FILE_SYSTEM_ATTR}
|
|
FILE_ROOT_DIR = 3;
|
|
{$EXTERNALSYM FILE_ROOT_DIR}
|
|
FILE_SYSTEM_DIR = 4;
|
|
{$EXTERNALSYM FILE_SYSTEM_DIR}
|
|
FILE_UNKNOWN = 5;
|
|
{$EXTERNALSYM FILE_UNKNOWN}
|
|
FILE_SYSTEM_NOT_SUPPORT = 6;
|
|
{$EXTERNALSYM FILE_SYSTEM_NOT_SUPPORT}
|
|
FILE_USER_DISALLOWED = 7;
|
|
{$EXTERNALSYM FILE_USER_DISALLOWED}
|
|
FILE_READ_ONLY = 8;
|
|
{$EXTERNALSYM FILE_READ_ONLY}
|
|
FILE_DIR_DISALLOWED = 9;
|
|
{$EXTERNALSYM FILE_DIR_DISALLOWED}
|
|
|
|
function FileEncryptionStatusA(lpFileName: LPCSTR; var lpStatus: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FileEncryptionStatusA}
|
|
function FileEncryptionStatusW(lpFileName: LPCWSTR; var lpStatus: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FileEncryptionStatusW}
|
|
function FileEncryptionStatus(lpFileName: LPCTSTR; var lpStatus: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FileEncryptionStatus}
|
|
|
|
//
|
|
// Currently defined recovery flags
|
|
//
|
|
|
|
const
|
|
EFS_USE_RECOVERY_KEYS = $1;
|
|
{$EXTERNALSYM EFS_USE_RECOVERY_KEYS}
|
|
|
|
type
|
|
PFE_EXPORT_FUNC = function(pbData: PBYTE; pvCallbackContext: PVOID;
|
|
ulLength: ULONG): DWORD; stdcall;
|
|
{$EXTERNALSYM PFE_EXPORT_FUNC}
|
|
|
|
PFE_IMPORT_FUNC = function(pbData: PBYTE; pvCallbackContext: PVOID;
|
|
ulLength: PULONG): DWORD; stdcall;
|
|
{$EXTERNALSYM PFE_IMPORT_FUNC}
|
|
|
|
//
|
|
// OpenRaw flag values
|
|
//
|
|
|
|
const
|
|
CREATE_FOR_IMPORT = 1;
|
|
{$EXTERNALSYM CREATE_FOR_IMPORT}
|
|
CREATE_FOR_DIR = 2;
|
|
{$EXTERNALSYM CREATE_FOR_DIR}
|
|
OVERWRITE_HIDDEN = 4;
|
|
{$EXTERNALSYM OVERWRITE_HIDDEN}
|
|
|
|
function OpenEncryptedFileRawA(lpFileName: LPCSTR; ulFlags: ULONG;
|
|
pvContext: PVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM OpenEncryptedFileRawA}
|
|
function OpenEncryptedFileRawW(lpFileName: LPCWSTR; ulFlags: ULONG;
|
|
pvContext: PVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM OpenEncryptedFileRawW}
|
|
function OpenEncryptedFileRaw(lpFileName: LPCTSTR; ulFlags: ULONG;
|
|
pvContext: PVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM OpenEncryptedFileRaw}
|
|
|
|
function ReadEncryptedFileRaw(pfExportCallback: PFE_EXPORT_FUNC;
|
|
pvCallbackContext: PVOID; pvContext: PVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM ReadEncryptedFileRaw}
|
|
|
|
function WriteEncryptedFileRaw(pfImportCallback: PFE_IMPORT_FUNC;
|
|
pvCallbackContext: PVOID; pvContext: PVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM WriteEncryptedFileRaw}
|
|
|
|
procedure CloseEncryptedFileRaw(pvContext: PVOID); stdcall;
|
|
{$EXTERNALSYM CloseEncryptedFileRaw}
|
|
|
|
//
|
|
// _l Compat Functions
|
|
//
|
|
|
|
function lstrcmpA(lpString1, lpString2: LPCSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrcmpA}
|
|
function lstrcmpW(lpString1, lpString2: LPCWSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrcmpW}
|
|
function lstrcmp(lpString1, lpString2: LPCTSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrcmp}
|
|
|
|
function lstrcmpiA(lpString1, lpString2: LPCSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrcmpiA}
|
|
function lstrcmpiW(lpString1, lpString2: LPCWSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrcmpiW}
|
|
function lstrcmpi(lpString1, lpString2: LPCTSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrcmpi}
|
|
|
|
function lstrcpynA(lpString1: LPSTR; lpString2: LPCSTR; iMaxLength: Integer): LPSTR; stdcall;
|
|
{$EXTERNALSYM lstrcpynA}
|
|
function lstrcpynW(lpString1: LPWSTR; lpString2: LPCWSTR; iMaxLength: Integer): LPWSTR; stdcall;
|
|
{$EXTERNALSYM lstrcpynW}
|
|
function lstrcpyn(lpString1: LPTSTR; lpString2: LPCTSTR; iMaxLength: Integer): LPTSTR; stdcall;
|
|
{$EXTERNALSYM lstrcpyn}
|
|
|
|
function lstrcpyA(lpString1: LPSTR; lpString2: LPCSTR): LPSTR; stdcall;
|
|
{$EXTERNALSYM lstrcpyA}
|
|
function lstrcpyW(lpString1: LPWSTR; lpString2: LPCWSTR): LPWSTR; stdcall;
|
|
{$EXTERNALSYM lstrcpyW}
|
|
function lstrcpy(lpString1: LPTSTR; lpString2: LPCTSTR): LPTSTR; stdcall;
|
|
{$EXTERNALSYM lstrcpy}
|
|
|
|
function lstrcatA(lpString1: LPSTR; lpString2: LPCSTR): LPSTR; stdcall;
|
|
{$EXTERNALSYM lstrcatA}
|
|
function lstrcatW(lpString1: LPWSTR; lpString2: LPCWSTR): LPWSTR; stdcall;
|
|
{$EXTERNALSYM lstrcatW}
|
|
function lstrcat(lpString1: LPTSTR; lpString2: LPCTSTR): LPTSTR; stdcall;
|
|
{$EXTERNALSYM lstrcat}
|
|
|
|
function lstrlenA(lpString: LPCSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrlenA}
|
|
function lstrlenW(lpString: LPCWSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrlenW}
|
|
function lstrlen(lpString: LPCTSTR): Integer; stdcall;
|
|
{$EXTERNALSYM lstrlen}
|
|
|
|
function OpenFile(lpFileName: LPCSTR; var lpReOpenBuff: OFSTRUCT; uStyle: UINT): HFILE; stdcall;
|
|
{$EXTERNALSYM OpenFile}
|
|
|
|
function _lopen(lpPathName: LPCSTR; iReadWrite: Integer): HFILE; stdcall;
|
|
{$EXTERNALSYM _lopen}
|
|
|
|
function _lcreat(lpPathName: LPCSTR; iAttribute: Integer): HFILE; stdcall;
|
|
{$EXTERNALSYM _lcreat}
|
|
|
|
function _lread(hFile: HFILE; lpBuffer: LPVOID; uBytes: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM _lread}
|
|
|
|
function _lwrite(hFile: HFILE; lpBuffer: LPCSTR; uBytes: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM _lwrite}
|
|
|
|
function _hread(hFile: HFILE; lpBuffer: LPVOID; lBytes: Longint): Longint; stdcall;
|
|
{$EXTERNALSYM _hread}
|
|
|
|
function _hwrite(hFile: HFILE; lpBuffer: LPCSTR; lBytes: Longint): Longint; stdcall;
|
|
{$EXTERNALSYM _hwrite}
|
|
|
|
function _lclose(hFile: HFILE): HFILE; stdcall;
|
|
{$EXTERNALSYM _lclose}
|
|
|
|
function _llseek(hFile: HFILE; lOffset: LONG; iOrigin: Integer): LONG; stdcall;
|
|
{$EXTERNALSYM _llseek}
|
|
|
|
function IsTextUnicode(lpBuffer: LPVOID; cb: Integer; lpi: LPINT): BOOL; stdcall;
|
|
{$EXTERNALSYM IsTextUnicode}
|
|
|
|
type
|
|
PFLS_CALLBACK_FUNCTION = procedure(lpFlsData: PVOID); stdcall;
|
|
{$EXTERNALSYM PFLS_CALLBACK_FUNCTION}
|
|
TFlsCallbackFunction = PFLS_CALLBACK_FUNCTION;
|
|
|
|
const
|
|
FLS_OUT_OF_INDEXES = DWORD($FFFFFFFF);
|
|
{$EXTERNALSYM FLS_OUT_OF_INDEXES}
|
|
|
|
function FlsAlloc(lpCallback: PFLS_CALLBACK_FUNCTION): DWORD; stdcall;
|
|
{$EXTERNALSYM FlsAlloc}
|
|
|
|
function FlsGetValue(dwFlsIndex: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM FlsGetValue}
|
|
|
|
function FlsSetValue(dwFlsIndex: DWORD; lpFlsData: PVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM FlsSetValue}
|
|
|
|
function FlsFree(dwFlsIndex: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM FlsFree}
|
|
|
|
const
|
|
TLS_OUT_OF_INDEXES = DWORD($FFFFFFFF);
|
|
{$EXTERNALSYM TLS_OUT_OF_INDEXES}
|
|
|
|
function TlsAlloc: DWORD; stdcall;
|
|
{$EXTERNALSYM TlsAlloc}
|
|
|
|
function TlsGetValue(dwTlsIndex: DWORD): LPVOID; stdcall;
|
|
{$EXTERNALSYM TlsGetValue}
|
|
|
|
function TlsSetValue(dwTlsIndex: DWORD; lpTlsValue: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM TlsSetValue}
|
|
|
|
function TlsFree(dwTlsIndex: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM TlsFree}
|
|
|
|
type
|
|
LPOVERLAPPED_COMPLETION_ROUTINE = procedure(dwErrorCode: DWORD;
|
|
dwNumberOfBytesTransfered: DWORD; lpOverlapped: LPOVERLAPPED); stdcall;
|
|
{$EXTERNALSYM LPOVERLAPPED_COMPLETION_ROUTINE}
|
|
TOverlappedCompletionRoutine = LPOVERLAPPED_COMPLETION_ROUTINE;
|
|
|
|
function SleepEx(dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM SleepEx}
|
|
|
|
function WaitForSingleObjectEx(hHandle: HANDLE; dwMilliseconds: DWORD;
|
|
bAlertable: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM WaitForSingleObjectEx}
|
|
|
|
function WaitForMultipleObjectsEx(nCount: DWORD; lpHandles: PHANDLE;
|
|
bWaitAll: BOOL; dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM WaitForMultipleObjectsEx}
|
|
|
|
function SignalObjectAndWait(hObjectToSignal: HANDLE; hObjectToWaitOn: HANDLE;
|
|
dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
|
|
{$EXTERNALSYM SignalObjectAndWait}
|
|
|
|
function ReadFileEx(hFile: HANDLE; lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
|
|
lpOverlapped: LPOVERLAPPED; lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadFileEx}
|
|
|
|
function WriteFileEx(hFile: HANDLE; lpBuffer: LPCVOID; nNumberOfBytesToWrite: DWORD;
|
|
lpOverlapped: LPOVERLAPPED; lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteFileEx}
|
|
|
|
function BackupRead(hFile: HANDLE; lpBuffer: LPBYTE;
|
|
nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD;
|
|
bAbort, bProcessSecurity: BOOL; var lpContext: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM BackupRead}
|
|
|
|
function BackupSeek(hFile: HANDLE; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;
|
|
var lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD; var lpContext: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM BackupSeek}
|
|
|
|
function BackupWrite(hFile: HANDLE; lpBuffer: LPBYTE; nNumberOfBytesToWrite: DWORD;
|
|
var lpNumberOfBytesWritten: DWORD; bAbort, bProcessSecurity: BOOL;
|
|
var lpContext: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM BackupWrite}
|
|
|
|
//
|
|
// Stream id structure
|
|
//
|
|
|
|
type
|
|
LPWIN32_STREAM_ID = ^WIN32_STREAM_ID;
|
|
{$EXTERNALSYM LPWIN32_STREAM_ID}
|
|
_WIN32_STREAM_ID = record
|
|
dwStreamId: DWORD;
|
|
dwStreamAttributes: DWORD;
|
|
Size: TLargeInteger;
|
|
dwStreamNameSize: DWORD;
|
|
cStreamName: array [0..ANYSIZE_ARRAY - 1] of WCHAR;
|
|
end;
|
|
{$EXTERNALSYM _WIN32_STREAM_ID}
|
|
WIN32_STREAM_ID = _WIN32_STREAM_ID;
|
|
{$EXTERNALSYM WIN32_STREAM_ID}
|
|
TWin32StreamId = WIN32_STREAM_ID;
|
|
PWin32StreamId = LPWIN32_STREAM_ID;
|
|
|
|
//
|
|
// Stream Ids
|
|
//
|
|
|
|
const
|
|
BACKUP_INVALID = $00000000;
|
|
{$EXTERNALSYM BACKUP_INVALID}
|
|
BACKUP_DATA = $00000001;
|
|
{$EXTERNALSYM BACKUP_DATA}
|
|
BACKUP_EA_DATA = $00000002;
|
|
{$EXTERNALSYM BACKUP_EA_DATA}
|
|
BACKUP_SECURITY_DATA = $00000003;
|
|
{$EXTERNALSYM BACKUP_SECURITY_DATA}
|
|
BACKUP_ALTERNATE_DATA = $00000004;
|
|
{$EXTERNALSYM BACKUP_ALTERNATE_DATA}
|
|
BACKUP_LINK = $00000005;
|
|
{$EXTERNALSYM BACKUP_LINK}
|
|
BACKUP_PROPERTY_DATA = $00000006;
|
|
{$EXTERNALSYM BACKUP_PROPERTY_DATA}
|
|
BACKUP_OBJECT_ID = $00000007;
|
|
{$EXTERNALSYM BACKUP_OBJECT_ID}
|
|
BACKUP_REPARSE_DATA = $00000008;
|
|
{$EXTERNALSYM BACKUP_REPARSE_DATA}
|
|
BACKUP_SPARSE_BLOCK = $00000009;
|
|
{$EXTERNALSYM BACKUP_SPARSE_BLOCK}
|
|
|
|
//
|
|
// Stream Attributes
|
|
//
|
|
|
|
const
|
|
STREAM_NORMAL_ATTRIBUTE = $00000000;
|
|
{$EXTERNALSYM STREAM_NORMAL_ATTRIBUTE}
|
|
STREAM_MODIFIED_WHEN_READ = $00000001;
|
|
{$EXTERNALSYM STREAM_MODIFIED_WHEN_READ}
|
|
STREAM_CONTAINS_SECURITY = $00000002;
|
|
{$EXTERNALSYM STREAM_CONTAINS_SECURITY}
|
|
STREAM_CONTAINS_PROPERTIES = $00000004;
|
|
{$EXTERNALSYM STREAM_CONTAINS_PROPERTIES}
|
|
STREAM_SPARSE_ATTRIBUTE = $00000008;
|
|
{$EXTERNALSYM STREAM_SPARSE_ATTRIBUTE}
|
|
|
|
function ReadFileScatter(hFile: HANDLE; aSegmentArray: PFILE_SEGMENT_ELEMENT;
|
|
nNumberOfBytesToRead: DWORD; lpReserved: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadFileScatter}
|
|
|
|
function WriteFileGather(hFile: HANDLE; aSegmentArray: PFILE_SEGMENT_ELEMENT;
|
|
nNumberOfBytesToWrite: DWORD; lpReserved: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteFileGather}
|
|
|
|
|
|
|
|
//
|
|
// Extended process and thread attribute support
|
|
//
|
|
const
|
|
{$EXTERNALSYM SHUTDOWN_NORETRY}
|
|
PROC_THREAD_ATTRIBUTE_NUMBER = $0000FFFF;
|
|
{$EXTERNALSYM SHUTDOWN_NORETRY}
|
|
PROC_THREAD_ATTRIBUTE_THREAD = $00010000; // Attribute may be used with thread creation
|
|
{$EXTERNALSYM SHUTDOWN_NORETRY}
|
|
PROC_THREAD_ATTRIBUTE_INPUT = $00020000; // Attribute is input only
|
|
{$EXTERNALSYM SHUTDOWN_NORETRY}
|
|
PROC_THREAD_ATTRIBUTE_ADDITIVE = $00040000; // Attribute may be "accumulated," e.g. bitmasks, counters, etc.
|
|
|
|
type
|
|
{$EXTERNALSYM _PROC_THREAD_ATTRIBUTE_NUM}
|
|
_PROC_THREAD_ATTRIBUTE_NUM = (
|
|
{$EXTERNALSYM ProcThreadAttributeParentProcess}
|
|
ProcThreadAttributeParentProcess{ = 0},
|
|
{$EXTERNALSYM ProcThreadAttributeExtendedFlags}
|
|
ProcThreadAttributeExtendedFlags,
|
|
{$EXTERNALSYM ProcThreadAttributeHandleList}
|
|
ProcThreadAttributeHandleList,
|
|
{$EXTERNALSYM ProcThreadAttributeMax}
|
|
ProcThreadAttributeMax);
|
|
|
|
{$EXTERNALSYM PROC_THREAD_ATTRIBUTE_NUM}
|
|
PROC_THREAD_ATTRIBUTE_NUM = ^_PROC_THREAD_ATTRIBUTE_NUM;
|
|
TProcThreadAttributeNum = _PROC_THREAD_ATTRIBUTE_NUM;
|
|
PProcThreadAttributeNum = ^TProcThreadAttributeNum;
|
|
|
|
{Macro function}
|
|
function ProcThreadAttributeValue(const Number : DWORD;
|
|
Thread, Input, Additive : Boolean) : DWORD;
|
|
{Macro function}
|
|
function PROC_THREAD_ATTRIBUTE_PARENT_PROCESS : DWORD;
|
|
{Macro function}
|
|
function PROC_THREAD_ATTRIBUTE_EXTENDED_FLAGS : DWORD;
|
|
{Macro function}
|
|
function PROC_THREAD_ATTRIBUTE_HANDLE_LIST : DWORD;
|
|
|
|
type
|
|
{$EXTERNALSYM _PROC_THREAD_ATTRIBUTE_LIST}
|
|
_PROC_THREAD_ATTRIBUTE_LIST = record
|
|
end;
|
|
{$EXTERNALSYM PPROC_THREAD_ATTRIBUTE_LIST}
|
|
PPROC_THREAD_ATTRIBUTE_LIST = ^_PROC_THREAD_ATTRIBUTE_LIST;
|
|
{$EXTERNALSYM LPPROC_THREAD_ATTRIBUTE_LIST}
|
|
LPPROC_THREAD_ATTRIBUTE_LIST = PPROC_THREAD_ATTRIBUTE_LIST;
|
|
|
|
TProcThreadAttributeList = _PROC_THREAD_ATTRIBUTE_LIST;
|
|
PProcThreadAttributeList = PPROC_THREAD_ATTRIBUTE_LIST;
|
|
|
|
{$EXTERNALSYM InitializeProcThreadAttributeList}
|
|
function InitializeProcThreadAttributeList(
|
|
{__out_xcount_opt(*lpSize)} lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
|
|
{__in} dwAttributeCount : DWORD;
|
|
{__in __reserved} dwFlags : DWORD;
|
|
{__inout} var lpSize : SIZE_T
|
|
) : BOOL; stdcall;
|
|
|
|
{$EXTERNALSYM DeleteProcThreadAttributeList}
|
|
procedure DeleteProcThreadAttributeList(
|
|
{__inout} lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST
|
|
); stdcall;
|
|
|
|
const
|
|
{$EXTERNALSYM PROC_THREAD_ATTRIBUTE_REPLACE_VALUE}
|
|
PROC_THREAD_ATTRIBUTE_REPLACE_VALUE = $00000001;
|
|
|
|
{$EXTERNALSYM UpdateProcThreadAttribute}
|
|
function UpdateProcThreadAttribute(
|
|
{__inout} lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
|
|
{__in} dwFlags : DWORD;
|
|
{__in} Attribute : DWORD_PTR;
|
|
{__in_bcount_opt(cbSize)} lpValue : PVOID;
|
|
{__in} cbSize : SIZE_T;
|
|
{__out_bcount_opt(cbSize)} lpPreviousValue : PVOID;
|
|
{__in_opt} lpReturnSize : PSIZE_T
|
|
) : BOOL; stdcall;
|
|
|
|
|
|
|
|
|
|
//
|
|
// Dual Mode API below this line. Dual Mode Structures also included.
|
|
//
|
|
|
|
const
|
|
STARTF_USESHOWWINDOW = $00000001;
|
|
{$EXTERNALSYM STARTF_USESHOWWINDOW}
|
|
STARTF_USESIZE = $00000002;
|
|
{$EXTERNALSYM STARTF_USESIZE}
|
|
STARTF_USEPOSITION = $00000004;
|
|
{$EXTERNALSYM STARTF_USEPOSITION}
|
|
STARTF_USECOUNTCHARS = $00000008;
|
|
{$EXTERNALSYM STARTF_USECOUNTCHARS}
|
|
STARTF_USEFILLATTRIBUTE = $00000010;
|
|
{$EXTERNALSYM STARTF_USEFILLATTRIBUTE}
|
|
STARTF_RUNFULLSCREEN = $00000020; // ignored for non-x86 platforms
|
|
{$EXTERNALSYM STARTF_RUNFULLSCREEN}
|
|
STARTF_FORCEONFEEDBACK = $00000040;
|
|
{$EXTERNALSYM STARTF_FORCEONFEEDBACK}
|
|
STARTF_FORCEOFFFEEDBACK = $00000080;
|
|
{$EXTERNALSYM STARTF_FORCEOFFFEEDBACK}
|
|
STARTF_USESTDHANDLES = $00000100;
|
|
{$EXTERNALSYM STARTF_USESTDHANDLES}
|
|
|
|
STARTF_USEHOTKEY = $00000200;
|
|
{$EXTERNALSYM STARTF_USEHOTKEY}
|
|
|
|
type
|
|
LPSTARTUPINFOA = ^STARTUPINFOA;
|
|
{$EXTERNALSYM LPSTARTUPINFOA}
|
|
_STARTUPINFOA = record
|
|
cb: DWORD;
|
|
lpReserved: LPSTR;
|
|
lpDesktop: LPSTR;
|
|
lpTitle: LPSTR;
|
|
dwX: DWORD;
|
|
dwY: DWORD;
|
|
dwXSize: DWORD;
|
|
dwYSize: DWORD;
|
|
dwXCountChars: DWORD;
|
|
dwYCountChars: DWORD;
|
|
dwFillAttribute: DWORD;
|
|
dwFlags: DWORD;
|
|
wShowWindow: WORD;
|
|
cbReserved2: WORD;
|
|
lpReserved2: LPBYTE;
|
|
hStdInput: HANDLE;
|
|
hStdOutput: HANDLE;
|
|
hStdError: HANDLE;
|
|
end;
|
|
{$EXTERNALSYM _STARTUPINFOA}
|
|
STARTUPINFOA = _STARTUPINFOA;
|
|
{$EXTERNALSYM STARTUPINFOA}
|
|
TStartupInfoA = STARTUPINFOA;
|
|
PStartupInfoA = LPSTARTUPINFOA;
|
|
|
|
LPSTARTUPINFOW = ^STARTUPINFOW;
|
|
{$EXTERNALSYM LPSTARTUPINFOW}
|
|
_STARTUPINFOW = record
|
|
cb: DWORD;
|
|
lpReserved: LPWSTR;
|
|
lpDesktop: LPWSTR;
|
|
lpTitle: LPWSTR;
|
|
dwX: DWORD;
|
|
dwY: DWORD;
|
|
dwXSize: DWORD;
|
|
dwYSize: DWORD;
|
|
dwXCountChars: DWORD;
|
|
dwYCountChars: DWORD;
|
|
dwFillAttribute: DWORD;
|
|
dwFlags: DWORD;
|
|
wShowWindow: WORD;
|
|
cbReserved2: WORD;
|
|
lpReserved2: LPBYTE;
|
|
hStdInput: HANDLE;
|
|
hStdOutput: HANDLE;
|
|
hStdError: HANDLE;
|
|
end;
|
|
{$EXTERNALSYM _STARTUPINFOW}
|
|
STARTUPINFOW = _STARTUPINFOW;
|
|
{$EXTERNALSYM STARTUPINFOW}
|
|
TStartupInfoW = STARTUPINFOW;
|
|
PStartupInfoW = LPSTARTUPINFOW;
|
|
|
|
{$EXTERNALSYM _STARTUPINFOEXA}
|
|
_STARTUPINFOEXA = record
|
|
StartupInfo : STARTUPINFOA;
|
|
lpAttributeList : PPROC_THREAD_ATTRIBUTE_LIST;
|
|
end;
|
|
{$EXTERNALSYM STARTUPINFOEXA}
|
|
STARTUPINFOEXA = _STARTUPINFOEXA;
|
|
{$EXTERNALSYM LPSTARTUPINFOEXA}
|
|
LPSTARTUPINFOEXA = ^STARTUPINFOEXA;
|
|
|
|
TStartupInfoExA = _STARTUPINFOEXA;
|
|
PStartupInfoExA = LPSTARTUPINFOEXA;
|
|
|
|
{$EXTERNALSYM _STARTUPINFOEXW}
|
|
_STARTUPINFOEXW = record
|
|
StartupInfo : STARTUPINFOW;
|
|
lpAttributeList : PPROC_THREAD_ATTRIBUTE_LIST;
|
|
end;
|
|
{$EXTERNALSYM STARTUPINFOEXW}
|
|
STARTUPINFOEXW = _STARTUPINFOEXW;
|
|
{$EXTERNALSYM LPSTARTUPINFOEXW}
|
|
LPSTARTUPINFOEXW = ^STARTUPINFOEXW;
|
|
|
|
TStartupInfoExW = _STARTUPINFOEXW;
|
|
PStartupInfoExW = LPSTARTUPINFOEXW;
|
|
|
|
{$IFDEF UNICODE}
|
|
STARTUPINFO = STARTUPINFOW;
|
|
{$EXTERNALSYM STARTUPINFO}
|
|
LPSTARTUPINFO = LPSTARTUPINFOW;
|
|
{$EXTERNALSYM LPSTARTUPINFO}
|
|
TStartupInfo = TStartupInfoW;
|
|
PStartupInfo = PStartupInfoW;
|
|
|
|
{$EXTERNALSYM STARTUPINFOEX}
|
|
STARTUPINFOEX = _STARTUPINFOEXW;
|
|
{$EXTERNALSYM LPSTARTUPINFOEX}
|
|
LPSTARTUPINFOEX = PStartupInfoExW;
|
|
|
|
TStartupInfoEx = TStartupInfoExW;
|
|
PStartupInfoEx = PStartupInfoExW;
|
|
{$ELSE}
|
|
STARTUPINFO = STARTUPINFOA;
|
|
{$EXTERNALSYM STARTUPINFO}
|
|
LPSTARTUPINFO = LPSTARTUPINFOA;
|
|
{$EXTERNALSYM LPSTARTUPINFO}
|
|
TStartupInfo = TStartupInfoA;
|
|
PStartupInfo = PStartupInfoA;
|
|
|
|
{$EXTERNALSYM STARTUPINFOEX}
|
|
STARTUPINFOEX = _STARTUPINFOEXA;
|
|
{$EXTERNALSYM LPSTARTUPINFOEX}
|
|
LPSTARTUPINFOEX = PStartupInfoExA;
|
|
|
|
TStartupInfoEx = TStartupInfoExA;
|
|
PStartupInfoEx = PStartupInfoExA;
|
|
{$ENDIF UNICODE}
|
|
|
|
|
|
const
|
|
SHUTDOWN_NORETRY = $00000001;
|
|
{$EXTERNALSYM SHUTDOWN_NORETRY}
|
|
|
|
type
|
|
PWIN32_FIND_DATAA = ^WIN32_FIND_DATAA;
|
|
{$EXTERNALSYM PWIN32_FIND_DATAA}
|
|
_WIN32_FIND_DATAA = record
|
|
dwFileAttributes: DWORD;
|
|
ftCreationTime: FILETIME;
|
|
ftLastAccessTime: FILETIME;
|
|
ftLastWriteTime: FILETIME;
|
|
nFileSizeHigh: DWORD;
|
|
nFileSizeLow: DWORD;
|
|
dwReserved0: DWORD;
|
|
dwReserved1: DWORD;
|
|
cFileName: array [0..MAX_PATH - 1] of AnsiChar;
|
|
cAlternateFileName: array [0..13] of AnsiChar;
|
|
end;
|
|
{$EXTERNALSYM _WIN32_FIND_DATAA}
|
|
WIN32_FIND_DATAA = _WIN32_FIND_DATAA;
|
|
{$EXTERNALSYM WIN32_FIND_DATAA}
|
|
LPWIN32_FIND_DATAA = ^WIN32_FIND_DATAA;
|
|
{$EXTERNALSYM LPWIN32_FIND_DATAA}
|
|
TWin32FindDataA = WIN32_FIND_DATAA;
|
|
PWin32FindDataA = PWIN32_FIND_DATAA;
|
|
|
|
PWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
|
|
{$EXTERNALSYM PWIN32_FIND_DATAW}
|
|
_WIN32_FIND_DATAW = record
|
|
dwFileAttributes: DWORD;
|
|
ftCreationTime: FILETIME;
|
|
ftLastAccessTime: FILETIME;
|
|
ftLastWriteTime: FILETIME;
|
|
nFileSizeHigh: DWORD;
|
|
nFileSizeLow: DWORD;
|
|
dwReserved0: DWORD;
|
|
dwReserved1: DWORD;
|
|
cFileName: array [0..MAX_PATH - 1] of WCHAR;
|
|
cAlternateFileName: array [0..13] of WCHAR;
|
|
end;
|
|
{$EXTERNALSYM _WIN32_FIND_DATAW}
|
|
WIN32_FIND_DATAW = _WIN32_FIND_DATAW;
|
|
{$EXTERNALSYM WIN32_FIND_DATAW}
|
|
LPWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
|
|
{$EXTERNALSYM LPWIN32_FIND_DATAW}
|
|
TWin32FindDataW = WIN32_FIND_DATAW;
|
|
PWin32FindDataW = PWIN32_FIND_DATAW;
|
|
|
|
{$IFDEF UNICODE}
|
|
WIN32_FIND_DATA = WIN32_FIND_DATAW;
|
|
{$EXTERNALSYM WIN32_FIND_DATA}
|
|
PWIN32_FIND_DATA = PWIN32_FIND_DATAW;
|
|
{$EXTERNALSYM PWIN32_FIND_DATA}
|
|
LPWIN32_FIND_DATA = LPWIN32_FIND_DATAW;
|
|
{$EXTERNALSYM LPWIN32_FIND_DATA}
|
|
TWin32FindData = TWin32FindDataW;
|
|
PWin32FindData = PWin32FindDataW;
|
|
{$ELSE}
|
|
WIN32_FIND_DATA = WIN32_FIND_DATAA;
|
|
{$EXTERNALSYM WIN32_FIND_DATA}
|
|
PWIN32_FIND_DATA = PWIN32_FIND_DATAA;
|
|
{$EXTERNALSYM PWIN32_FIND_DATA}
|
|
LPWIN32_FIND_DATA = LPWIN32_FIND_DATAA;
|
|
{$EXTERNALSYM LPWIN32_FIND_DATA}
|
|
TWin32FindData = TWin32FindDataA;
|
|
PWin32FindData = PWin32FindDataA;
|
|
{$ENDIF UNICODE}
|
|
|
|
LPWIN32_FILE_ATTRIBUTE_DATA = ^WIN32_FILE_ATTRIBUTE_DATA;
|
|
{$EXTERNALSYM LPWIN32_FILE_ATTRIBUTE_DATA}
|
|
_WIN32_FILE_ATTRIBUTE_DATA = record
|
|
dwFileAttributes: DWORD;
|
|
ftCreationTime: FILETIME;
|
|
ftLastAccessTime: FILETIME;
|
|
ftLastWriteTime: FILETIME;
|
|
nFileSizeHigh: DWORD;
|
|
nFileSizeLow: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _WIN32_FILE_ATTRIBUTE_DATA}
|
|
WIN32_FILE_ATTRIBUTE_DATA = _WIN32_FILE_ATTRIBUTE_DATA;
|
|
{$EXTERNALSYM WIN32_FILE_ATTRIBUTE_DATA}
|
|
TWin32FileAttributeData = WIN32_FILE_ATTRIBUTE_DATA;
|
|
PWin32FileAttributeData = LPWIN32_FILE_ATTRIBUTE_DATA;
|
|
|
|
function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
|
|
{$EXTERNALSYM CreateMutexA}
|
|
function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
|
|
{$EXTERNALSYM CreateMutexW}
|
|
function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES;
|
|
bInitialOwner: BOOL; lpName: LPCTSTR): HANDLE;
|
|
{$EXTERNALSYM CreateMutex}
|
|
|
|
function OpenMutexA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenMutexA}
|
|
function OpenMutexW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenMutexW}
|
|
function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenMutex}
|
|
|
|
function CreateEventA(lpEventAttributes: LPSECURITY_ATTRIBUTES;
|
|
bManualReset, bInitialState: BOOL; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateEventA}
|
|
function CreateEventW(lpEventAttributes: LPSECURITY_ATTRIBUTES;
|
|
bManualReset, bInitialState: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateEventW}
|
|
function CreateEvent(lpEventAttributes: LPSECURITY_ATTRIBUTES;
|
|
bManualReset, bInitialState: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateEvent}
|
|
|
|
function OpenEventA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenEventA}
|
|
function OpenEventW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenEventW}
|
|
function OpenEvent(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenEvent}
|
|
|
|
function CreateSemaphoreA(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
|
|
lInitialCount, lMaximumCount: LONG; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateSemaphoreA}
|
|
function CreateSemaphoreW(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
|
|
lInitialCount, lMaximumCount: LONG; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateSemaphoreW}
|
|
function CreateSemaphore(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
|
|
lInitialCount, lMaximumCount: LONG; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateSemaphore}
|
|
|
|
function OpenSemaphoreA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenSemaphoreA}
|
|
function OpenSemaphoreW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenSemaphoreW}
|
|
function OpenSemaphore(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenSemaphore}
|
|
|
|
type
|
|
PTIMERAPCROUTINE = procedure(lpArgToCompletionRoutine: LPVOID;
|
|
dwTimerLowValue, dwTimerHighValue: DWORD); stdcall;
|
|
{$EXTERNALSYM PTIMERAPCROUTINE}
|
|
TTimerApcRoutine = PTIMERAPCROUTINE;
|
|
|
|
function CreateWaitableTimerA(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
|
|
bManualReset: BOOL; lpTimerName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateWaitableTimerA}
|
|
function CreateWaitableTimerW(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
|
|
bManualReset: BOOL; lpTimerName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateWaitableTimerW}
|
|
function CreateWaitableTimer(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
|
|
bManualReset: BOOL; lpTimerName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateWaitableTimer}
|
|
|
|
function OpenWaitableTimerA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpTimerName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenWaitableTimerA}
|
|
function OpenWaitableTimerW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpTimerName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenWaitableTimerW}
|
|
function OpenWaitableTimer(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpTimerName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenWaitableTimer}
|
|
|
|
function SetWaitableTimer(hTimer: HANDLE; var lpDueTime: LARGE_INTEGER;
|
|
lPeriod: LONG; pfnCompletionRoutine: PTIMERAPCROUTINE;
|
|
lpArgToCompletionRoutine: LPVOID; fResume: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetWaitableTimer}
|
|
|
|
function CancelWaitableTimer(hTimer: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CancelWaitableTimer}
|
|
|
|
function CreateFileMappingA(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
|
|
flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateFileMappingA}
|
|
function CreateFileMappingW(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
|
|
flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateFileMappingW}
|
|
function CreateFileMapping(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
|
|
flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateFileMapping}
|
|
|
|
function OpenFileMappingA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenFileMappingA}
|
|
function OpenFileMappingW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenFileMappingW}
|
|
function OpenFileMapping(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
|
|
lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenFileMapping}
|
|
|
|
function GetLogicalDriveStringsA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLogicalDriveStringsA}
|
|
function GetLogicalDriveStringsW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLogicalDriveStringsW}
|
|
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLogicalDriveStrings}
|
|
|
|
type
|
|
_MEMORY_RESOURCE_NOTIFICATION_TYPE = (
|
|
LowMemoryResourceNotification,
|
|
HighMemoryResourceNotification);
|
|
{$EXTERNALSYM _MEMORY_RESOURCE_NOTIFICATION_TYPE}
|
|
MEMORY_RESOURCE_NOTIFICATION_TYPE = _MEMORY_RESOURCE_NOTIFICATION_TYPE;
|
|
{$EXTERNALSYM MEMORY_RESOURCE_NOTIFICATION_TYPE}
|
|
TMemoryResourceNotification = MEMORY_RESOURCE_NOTIFICATION_TYPE;
|
|
|
|
function CreateMemoryResourceNotification(NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateMemoryResourceNotification}
|
|
|
|
function QueryMemoryResourceNotification(ResourceNotificationHandle: HANDLE;
|
|
ResourceState: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM QueryMemoryResourceNotification}
|
|
|
|
function LoadLibraryA(lpLibFileName: LPCSTR): HMODULE; stdcall;
|
|
{$EXTERNALSYM LoadLibraryA}
|
|
function LoadLibraryW(lpLibFileName: LPCWSTR): HMODULE; stdcall;
|
|
{$EXTERNALSYM LoadLibraryW}
|
|
function LoadLibrary(lpLibFileName: LPCTSTR): HMODULE; stdcall;
|
|
{$EXTERNALSYM LoadLibrary}
|
|
|
|
function LoadLibraryExA(lpLibFileName: LPCSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
|
|
{$EXTERNALSYM LoadLibraryExA}
|
|
function LoadLibraryExW(lpLibFileName: LPCWSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
|
|
{$EXTERNALSYM LoadLibraryExW}
|
|
function LoadLibraryEx(lpLibFileName: LPCTSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
|
|
{$EXTERNALSYM LoadLibraryEx}
|
|
|
|
const
|
|
DONT_RESOLVE_DLL_REFERENCES = $00000001;
|
|
{$EXTERNALSYM DONT_RESOLVE_DLL_REFERENCES}
|
|
LOAD_LIBRARY_AS_DATAFILE = $00000002;
|
|
{$EXTERNALSYM LOAD_LIBRARY_AS_DATAFILE}
|
|
LOAD_WITH_ALTERED_SEARCH_PATH = $00000008;
|
|
{$EXTERNALSYM LOAD_WITH_ALTERED_SEARCH_PATH}
|
|
LOAD_IGNORE_CODE_AUTHZ_LEVEL = $00000010;
|
|
{$EXTERNALSYM LOAD_IGNORE_CODE_AUTHZ_LEVEL}
|
|
|
|
function GetModuleFileNameA(hModule: HMODULE; lpFilename: LPSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetModuleFileNameA}
|
|
function GetModuleFileNameW(hModule: HMODULE; lpFilename: LPWSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetModuleFileNameW}
|
|
function GetModuleFileName(hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetModuleFileName}
|
|
|
|
function GetModuleHandleA(lpModuleName: LPCSTR): HMODULE; stdcall;
|
|
{$EXTERNALSYM GetModuleHandleA}
|
|
function GetModuleHandleW(lpModuleName: LPCWSTR): HMODULE; stdcall;
|
|
{$EXTERNALSYM GetModuleHandleW}
|
|
function GetModuleHandle(lpModuleName: LPCTSTR): HMODULE; stdcall;
|
|
{$EXTERNALSYM GetModuleHandle}
|
|
|
|
const
|
|
GET_MODULE_HANDLE_EX_FLAG_PIN = $00000001;
|
|
{$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_PIN}
|
|
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = $00000002;
|
|
{$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT}
|
|
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = $00000004;
|
|
{$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS}
|
|
|
|
type
|
|
PGET_MODULE_HANDLE_EXA = function(dwFlags: DWORD; lpModuleName: LPCSTR; var phModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM PGET_MODULE_HANDLE_EXA}
|
|
PGET_MODULE_HANDLE_EXW = function(dwFlags: DWORD; lpModuleName: LPCWSTR; var phModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM PGET_MODULE_HANDLE_EXW}
|
|
|
|
{$IFDEF UNICODE}
|
|
PGET_MODULE_HANDLE_EX = PGET_MODULE_HANDLE_EXW;
|
|
{$EXTERNALSYM PGET_MODULE_HANDLE_EX}
|
|
{$ELSE}
|
|
PGET_MODULE_HANDLE_EX = PGET_MODULE_HANDLE_EXA;
|
|
{$EXTERNALSYM PGET_MODULE_HANDLE_EX}
|
|
{$ENDIF UNICODE}
|
|
|
|
function GetModuleHandleExA(dwFlags: DWORD; lpModuleName: LPCSTR; var phModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM GetModuleHandleExA}
|
|
function GetModuleHandleExW(dwFlags: DWORD; lpModuleName: LPCWSTR; var phModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM GetModuleHandleExW}
|
|
function GetModuleHandleEx(dwFlags: DWORD; lpModuleName: LPCTSTR; var phModule: HMODULE): BOOL; stdcall;
|
|
{$EXTERNALSYM GetModuleHandleEx}
|
|
|
|
function NeedCurrentDirectoryForExePathA(ExeName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM NeedCurrentDirectoryForExePathA}
|
|
function NeedCurrentDirectoryForExePathW(ExeName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM NeedCurrentDirectoryForExePathW}
|
|
function NeedCurrentDirectoryForExePath(ExeName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM NeedCurrentDirectoryForExePath}
|
|
|
|
|
|
|
|
function CreateProcessA(lpApplicationName: LPCSTR; lpCommandLine: LPSTR;
|
|
lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
|
|
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
|
|
lpCurrentDirectory: LPCSTR; const lpStartupInfo: STARTUPINFOA;
|
|
var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessA}
|
|
function CreateProcessW(lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
|
|
lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
|
|
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
|
|
lpCurrentDirectory: LPCWSTR; const lpStartupInfo: STARTUPINFOW;
|
|
var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessW}
|
|
function CreateProcess(lpApplicationName: LPCTSTR; lpCommandLine: LPTSTR;
|
|
lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
|
|
bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
|
|
lpCurrentDirectory: LPCTSTR; const lpStartupInfo: STARTUPINFO;
|
|
var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcess}
|
|
|
|
function SetProcessShutdownParameters(dwLevel, dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetProcessShutdownParameters}
|
|
|
|
function GetProcessShutdownParameters(var lpdwLevel, lpdwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetProcessShutdownParameters}
|
|
|
|
function GetProcessVersion(ProcessId: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProcessVersion}
|
|
|
|
procedure FatalAppExitA(uAction: UINT; lpMessageText: LPCSTR); stdcall;
|
|
{$EXTERNALSYM FatalAppExitA}
|
|
procedure FatalAppExitW(uAction: UINT; lpMessageText: LPCWSTR); stdcall;
|
|
{$EXTERNALSYM FatalAppExitW}
|
|
procedure FatalAppExit(uAction: UINT; lpMessageText: LPCTSTR); stdcall;
|
|
{$EXTERNALSYM FatalAppExit}
|
|
|
|
procedure GetStartupInfoA(var lpStartupInfo: STARTUPINFOA); stdcall;
|
|
{$EXTERNALSYM GetStartupInfoA}
|
|
procedure GetStartupInfoW(var lpStartupInfo: STARTUPINFOW); stdcall;
|
|
{$EXTERNALSYM GetStartupInfoW}
|
|
procedure GetStartupInfo(var lpStartupInfo: STARTUPINFO); stdcall;
|
|
{$EXTERNALSYM GetStartupInfo}
|
|
|
|
function GetCommandLineA: LPSTR; stdcall;
|
|
{$EXTERNALSYM GetCommandLineA}
|
|
function GetCommandLineW: LPWSTR; stdcall;
|
|
{$EXTERNALSYM GetCommandLineW}
|
|
function GetCommandLine: LPTSTR; stdcall;
|
|
{$EXTERNALSYM GetCommandLine}
|
|
|
|
function GetEnvironmentVariableA(lpName: LPCSTR; lpBuffer: LPSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetEnvironmentVariableA}
|
|
function GetEnvironmentVariableW(lpName: LPCWSTR; lpBuffer: LPWSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetEnvironmentVariableW}
|
|
function GetEnvironmentVariable(lpName: LPCTSTR; lpBuffer: LPTSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetEnvironmentVariable}
|
|
|
|
function SetEnvironmentVariableA(lpName, lpValue: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEnvironmentVariableA}
|
|
function SetEnvironmentVariableW(lpName, lpValue: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEnvironmentVariableW}
|
|
function SetEnvironmentVariable(lpName, lpValue: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetEnvironmentVariable}
|
|
|
|
function ExpandEnvironmentStringsA(lpSrc: LPCSTR; lpDst: LPSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM ExpandEnvironmentStringsA}
|
|
function ExpandEnvironmentStringsW(lpSrc: LPCWSTR; lpDst: LPWSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM ExpandEnvironmentStringsW}
|
|
function ExpandEnvironmentStrings(lpSrc: LPCTSTR; lpDst: LPTSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM ExpandEnvironmentStrings}
|
|
|
|
function GetFirmwareEnvironmentVariableA(lpName, lpGuid: LPCSTR; pBuffer: PVOID;
|
|
nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFirmwareEnvironmentVariableA}
|
|
function GetFirmwareEnvironmentVariableW(lpName, lpGuid: LPCWSTR; pBuffer: PVOID;
|
|
nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFirmwareEnvironmentVariableW}
|
|
function GetFirmwareEnvironmentVariable(lpName, lpGuid: LPCTSTR; pBuffer: PVOID;
|
|
nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFirmwareEnvironmentVariable}
|
|
|
|
function SetFirmwareEnvironmentVariableA(lpName, lpGuid: LPCSTR; pValue: PVOID;
|
|
nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFirmwareEnvironmentVariableA}
|
|
function SetFirmwareEnvironmentVariableW(lpName, lpGuid: LPCWSTR; pValue: PVOID;
|
|
nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFirmwareEnvironmentVariableW}
|
|
function SetFirmwareEnvironmentVariable(lpName, lpGuid: LPCTSTR; pValue: PVOID;
|
|
nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFirmwareEnvironmentVariable}
|
|
|
|
procedure OutputDebugStringA(lpOutputString: LPCSTR); stdcall;
|
|
{$EXTERNALSYM OutputDebugStringA}
|
|
procedure OutputDebugStringW(lpOutputString: LPCWSTR); stdcall;
|
|
{$EXTERNALSYM OutputDebugStringW}
|
|
procedure OutputDebugString(lpOutputString: LPCTSTR); stdcall;
|
|
{$EXTERNALSYM OutputDebugString}
|
|
|
|
function FindResourceA(hModule: HMODULE; lpName, lpType: LPCSTR): HRSRC; stdcall;
|
|
{$EXTERNALSYM FindResourceA}
|
|
function FindResourceW(hModule: HMODULE; lpName, lpType: LPCWSTR): HRSRC; stdcall;
|
|
{$EXTERNALSYM FindResourceW}
|
|
function FindResource(hModule: HMODULE; lpName, lpType: LPCTSTR): HRSRC; stdcall;
|
|
{$EXTERNALSYM FindResource}
|
|
|
|
function FindResourceExA(hModule: HMODULE; lpType, lpName: LPCSTR; wLanguage: WORD): HRSRC; stdcall;
|
|
{$EXTERNALSYM FindResourceExA}
|
|
function FindResourceExW(hModule: HMODULE; lpType, lpName: LPCWSTR; wLanguage: WORD): HRSRC; stdcall;
|
|
{$EXTERNALSYM FindResourceExW}
|
|
function FindResourceEx(hModule: HMODULE; lpType, lpName: LPCTSTR; wLanguage: WORD): HRSRC; stdcall;
|
|
{$EXTERNALSYM FindResourceEx}
|
|
|
|
type
|
|
ENUMRESTYPEPROCA = function(hModule: HMODULE; lpType: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESTYPEPROCA}
|
|
ENUMRESTYPEPROCW = function(hModule: HMODULE; lpType: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESTYPEPROCW}
|
|
ENUMRESTYPEPROC = function(hModule: HMODULE; lpType: LPTSTR; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESTYPEPROC}
|
|
TEnumResTypeProcA = ENUMRESTYPEPROCA;
|
|
TEnumResTypeProcW = ENUMRESTYPEPROCW;
|
|
TEnumResTypeProc = ENUMRESTYPEPROC;
|
|
|
|
ENUMRESNAMEPROCA = function(hModule: HMODULE; lpType: LPCSTR; lpName: LPSTR;
|
|
lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESNAMEPROCA}
|
|
ENUMRESNAMEPROCW = function(hModule: HMODULE; lpType: LPCWSTR; lpName: LPWSTR;
|
|
lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESNAMEPROCW}
|
|
ENUMRESNAMEPROC = function(hModule: HMODULE; lpType: LPCTSTR; lpName: LPTSTR;
|
|
lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESNAMEPROC}
|
|
TEnumResNameProcA = ENUMRESNAMEPROCA;
|
|
TEnumResNameProcW = ENUMRESNAMEPROCW;
|
|
TEnumResNameProc = ENUMRESNAMEPROC;
|
|
|
|
ENUMRESLANGPROCA = function(hModule: HMODULE; lpType, lpName: LPCSTR;
|
|
wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESLANGPROCA}
|
|
ENUMRESLANGPROCW = function(hModule: HMODULE; lpType, lpName: LPCWSTR;
|
|
wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESLANGPROCW}
|
|
ENUMRESLANGPROC = function(hModule: HMODULE; lpType, lpName: LPCTSTR;
|
|
wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ENUMRESLANGPROC}
|
|
TEnumResLangProcA = ENUMRESLANGPROCA;
|
|
TEnumResLangProcW = ENUMRESLANGPROCW;
|
|
TEnumResLangProc = ENUMRESLANGPROC;
|
|
|
|
function EnumResourceTypesA(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROCA;
|
|
lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceTypesA}
|
|
function EnumResourceTypesW(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROCW;
|
|
lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceTypesW}
|
|
function EnumResourceTypes(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROC;
|
|
lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceTypes}
|
|
|
|
function EnumResourceNamesA(hModule: HMODULE; lpType: LPCSTR;
|
|
lpEnumFunc: ENUMRESNAMEPROCA; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceNamesA}
|
|
function EnumResourceNamesW(hModule: HMODULE; lpType: LPCWSTR;
|
|
lpEnumFunc: ENUMRESNAMEPROCW; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceNamesW}
|
|
function EnumResourceNames(hModule: HMODULE; lpType: LPCTSTR;
|
|
lpEnumFunc: ENUMRESNAMEPROC; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceNames}
|
|
|
|
function EnumResourceLanguagesA(hModule: HMODULE; lpType, lpName: LPCSTR;
|
|
lpEnumFunc: ENUMRESLANGPROCA; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceLanguagesA}
|
|
function EnumResourceLanguagesW(hModule: HMODULE; lpType, lpName: LPCWSTR;
|
|
lpEnumFunc: ENUMRESLANGPROCW; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceLanguagesW}
|
|
function EnumResourceLanguages(hModule: HMODULE; lpType, lpName: LPCTSTR;
|
|
lpEnumFunc: ENUMRESLANGPROC; lParam: LONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM EnumResourceLanguages}
|
|
|
|
function BeginUpdateResourceA(pFileName: LPCSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
|
|
{$EXTERNALSYM BeginUpdateResourceA}
|
|
function BeginUpdateResourceW(pFileName: LPCWSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
|
|
{$EXTERNALSYM BeginUpdateResourceW}
|
|
function BeginUpdateResource(pFileName: LPCTSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
|
|
{$EXTERNALSYM BeginUpdateResource}
|
|
|
|
function UpdateResourceA(hUpdate: HANDLE; lpType, lpName: LPCSTR;
|
|
wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM UpdateResourceA}
|
|
function UpdateResourceW(hUpdate: HANDLE; lpType, lpName: LPCWSTR;
|
|
wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM UpdateResourceW}
|
|
function UpdateResource(hUpdate: HANDLE; lpType, lpName: LPCTSTR;
|
|
wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM UpdateResource}
|
|
|
|
function EndUpdateResourceA(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM EndUpdateResourceA}
|
|
function EndUpdateResourceW(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM EndUpdateResourceW}
|
|
function EndUpdateResource(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM EndUpdateResource}
|
|
|
|
function GlobalAddAtomA(lpString: LPCSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalAddAtomA}
|
|
function GlobalAddAtomW(lpString: LPCWSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalAddAtomW}
|
|
function GlobalAddAtom(lpString: LPCTSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalAddAtom}
|
|
|
|
function GlobalFindAtomA(lpString: LPCSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalFindAtomA}
|
|
function GlobalFindAtomW(lpString: LPCWSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalFindAtomW}
|
|
function GlobalFindAtom(lpString: LPCTSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM GlobalFindAtom}
|
|
|
|
function GlobalGetAtomNameA(nAtom: ATOM; lpBuffer: LPSTR; nSize: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GlobalGetAtomNameA}
|
|
function GlobalGetAtomNameW(nAtom: ATOM; lpBuffer: LPWSTR; nSize: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GlobalGetAtomNameW}
|
|
function GlobalGetAtomName(nAtom: ATOM; lpBuffer: LPTSTR; nSize: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GlobalGetAtomName}
|
|
|
|
function AddAtomA(lpString: LPCSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM AddAtomA}
|
|
function AddAtomW(lpString: LPCWSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM AddAtomW}
|
|
function AddAtom(lpString: LPCTSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM AddAtom}
|
|
|
|
function FindAtomA(lpString: LPCSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM FindAtomA}
|
|
function FindAtomW(lpString: LPCWSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM FindAtomW}
|
|
function FindAtom(lpString: LPCTSTR): ATOM; stdcall;
|
|
{$EXTERNALSYM FindAtom}
|
|
|
|
function GetAtomNameA(nAtom: ATOM; lpBuffer: LPSTR; nSize: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GetAtomNameA}
|
|
function GetAtomNameW(nAtom: ATOM; lpBuffer: LPWSTR; nSize: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GetAtomNameW}
|
|
function GetAtomName(nAtom: ATOM; lpBuffer: LPTSTR; nSize: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GetAtomName}
|
|
|
|
function GetProfileIntA(lpAppName, lpKeyName: LPCSTR; nDefault: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GetProfileIntA}
|
|
function GetProfileIntW(lpAppName, lpKeyName: LPCWSTR; nDefault: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GetProfileIntW}
|
|
function GetProfileInt(lpAppName, lpKeyName: LPCTSTR; nDefault: Integer): UINT; stdcall;
|
|
{$EXTERNALSYM GetProfileInt}
|
|
|
|
function GetProfileStringA(lpAppName, lpKeyName, lpDefault: LPCSTR;
|
|
lpReturnedString: LPSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProfileStringA}
|
|
function GetProfileStringW(lpAppName, lpKeyName, lpDefault: LPCWSTR;
|
|
lpReturnedString: LPWSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProfileStringW}
|
|
function GetProfileString(lpAppName, lpKeyName, lpDefault: LPCTSTR;
|
|
lpReturnedString: LPTSTR; nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProfileString}
|
|
|
|
function WriteProfileStringA(lpAppName, lpKeyName, lpString: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProfileStringA}
|
|
function WriteProfileStringW(lpAppName, lpKeyName, lpString: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProfileStringW}
|
|
function WriteProfileString(lpAppName, lpKeyName, lpString: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProfileString}
|
|
|
|
function GetProfileSectionA(lpAppName: LPCSTR; lpReturnedString: LPSTR;
|
|
nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProfileSectionA}
|
|
function GetProfileSectionW(lpAppName: LPCWSTR; lpReturnedString: LPWSTR;
|
|
nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProfileSectionW}
|
|
function GetProfileSection(lpAppName: LPCTSTR; lpReturnedString: LPTSTR;
|
|
nSize: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetProfileSection}
|
|
|
|
function WriteProfileSectionA(lpAppName, lpString: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProfileSectionA}
|
|
function WriteProfileSectionW(lpAppName, lpString: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProfileSectionW}
|
|
function WriteProfileSection(lpAppName, lpString: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WriteProfileSection}
|
|
|
|
function GetPrivateProfileIntA(lpAppName, lpKeyName: LPCSTR; nDefault: Integer;
|
|
lpFileName: LPCSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileIntA}
|
|
function GetPrivateProfileIntW(lpAppName, lpKeyName: LPCWSTR; nDefault: Integer;
|
|
lpFileName: LPCWSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileIntW}
|
|
function GetPrivateProfileInt(lpAppName, lpKeyName: LPCTSTR; nDefault: Integer;
|
|
lpFileName: LPCTSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileInt}
|
|
|
|
function GetPrivateProfileStringA(lpAppName, lpKeyName, lpDefault: LPCSTR;
|
|
lpReturnedString: LPSTR; nSize: DWORD; lpFileName: LPCSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileStringA}
|
|
function GetPrivateProfileStringW(lpAppName, lpKeyName, lpDefault: LPCWSTR;
|
|
lpReturnedString: LPWSTR; nSize: DWORD; lpFileName: LPCWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileStringW}
|
|
function GetPrivateProfileString(lpAppName, lpKeyName, lpDefault: LPCTSTR;
|
|
lpReturnedString: LPTSTR; nSize: DWORD; lpFileName: LPCTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileString}
|
|
|
|
function WritePrivateProfileStringA(lpAppName, lpKeyName, lpString,
|
|
lpFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileStringA}
|
|
function WritePrivateProfileStringW(lpAppName, lpKeyName, lpString,
|
|
lpFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileStringW}
|
|
function WritePrivateProfileString(lpAppName, lpKeyName, lpString,
|
|
lpFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileString}
|
|
|
|
function GetPrivateProfileSectionA(lpAppName: LPCSTR; lpReturnedString: LPSTR;
|
|
nSize: DWORD; lpFileName: LPCSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileSectionA}
|
|
function GetPrivateProfileSectionW(lpAppName: LPCWSTR; lpReturnedString: LPWSTR;
|
|
nSize: DWORD; lpFileName: LPCWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileSectionW}
|
|
function GetPrivateProfileSection(lpAppName: LPCTSTR; lpReturnedString: LPTSTR;
|
|
nSize: DWORD; lpFileName: LPCTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileSection}
|
|
|
|
function WritePrivateProfileSectionA(lpAppName, lpString, lpFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileSectionA}
|
|
function WritePrivateProfileSectionW(lpAppName, lpString, lpFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileSectionW}
|
|
function WritePrivateProfileSection(lpAppName, lpString, lpFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileSection}
|
|
|
|
function GetPrivateProfileSectionNamesA(lpszReturnBuffer: LPSTR; nSize: DWORD;
|
|
lpFileName: LPCSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileSectionNamesA}
|
|
function GetPrivateProfileSectionNamesW(lpszReturnBuffer: LPWSTR; nSize: DWORD;
|
|
lpFileName: LPCWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileSectionNamesW}
|
|
function GetPrivateProfileSectionNames(lpszReturnBuffer: LPTSTR; nSize: DWORD;
|
|
lpFileName: LPCTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileSectionNames}
|
|
|
|
function GetPrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID;
|
|
uSizeStruct: UINT; szFile: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileStructA}
|
|
function GetPrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID;
|
|
uSizeStruct: UINT; szFile: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileStructW}
|
|
function GetPrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID;
|
|
uSizeStruct: UINT; szFile: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM GetPrivateProfileStruct}
|
|
|
|
function WritePrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID;
|
|
uSizeStruct: UINT; szFile: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileStructA}
|
|
function WritePrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID;
|
|
uSizeStruct: UINT; szFile: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileStructW}
|
|
function WritePrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID;
|
|
uSizeStruct: UINT; szFile: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM WritePrivateProfileStruct}
|
|
|
|
function GetDriveTypeA(lpRootPathName: LPCSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetDriveTypeA}
|
|
function GetDriveTypeW(lpRootPathName: LPCWSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetDriveTypeW}
|
|
function GetDriveType(lpRootPathName: LPCTSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetDriveType}
|
|
|
|
function GetSystemDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemDirectoryA}
|
|
function GetSystemDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemDirectoryW}
|
|
function GetSystemDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemDirectory}
|
|
|
|
function GetTempPathA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTempPathA}
|
|
function GetTempPathW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTempPathW}
|
|
function GetTempPath(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetTempPath}
|
|
|
|
function GetTempFileNameA(lpPathName, lpPrefixString: LPCSTR; uUnique: UINT;
|
|
lpTempFileName: LPSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetTempFileNameA}
|
|
function GetTempFileNameW(lpPathName, lpPrefixString: LPCWSTR; uUnique: UINT;
|
|
lpTempFileName: LPWSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetTempFileNameW}
|
|
function GetTempFileName(lpPathName, lpPrefixString: LPCTSTR; uUnique: UINT;
|
|
lpTempFileName: LPTSTR): UINT; stdcall;
|
|
{$EXTERNALSYM GetTempFileName}
|
|
|
|
function GetWindowsDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetWindowsDirectoryA}
|
|
function GetWindowsDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetWindowsDirectoryW}
|
|
function GetWindowsDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetWindowsDirectory}
|
|
|
|
function GetSystemWindowsDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemWindowsDirectoryA}
|
|
function GetSystemWindowsDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemWindowsDirectoryW}
|
|
function GetSystemWindowsDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemWindowsDirectory}
|
|
|
|
function GetSystemWow64DirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemWow64DirectoryA}
|
|
function GetSystemWow64DirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemWow64DirectoryW}
|
|
function GetSystemWow64Directory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM GetSystemWow64Directory}
|
|
|
|
function Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM Wow64EnableWow64FsRedirection}
|
|
|
|
//
|
|
// for GetProcAddress
|
|
//
|
|
|
|
type
|
|
PGET_SYSTEM_WOW64_DIRECTORY_A = function(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM PGET_SYSTEM_WOW64_DIRECTORY_A}
|
|
PGET_SYSTEM_WOW64_DIRECTORY_W = function(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
|
|
{$EXTERNALSYM PGET_SYSTEM_WOW64_DIRECTORY_W}
|
|
|
|
//
|
|
// GetProcAddress only accepts GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A,
|
|
// GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A, GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A.
|
|
// The others are if you want to use the strings in some other way.
|
|
//
|
|
|
|
const
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A = 'GetSystemWow64DirectoryA';
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W = WideString('GetSystemWow64DirectoryA');
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T = __TEXT('GetSystemWow64DirectoryA');
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A = 'GetSystemWow64DirectoryW';
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W = WideString('GetSystemWow64DirectoryW');
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T = __TEXT('GetSystemWow64DirectoryW');
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T}
|
|
|
|
{$IFDEF UNICODE}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A;
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W;
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T;
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T}
|
|
{$ELSE}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A;
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W;
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W}
|
|
GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T;
|
|
{$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T}
|
|
{$ENDIF UNICODE}
|
|
|
|
function SetCurrentDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCurrentDirectoryA}
|
|
function SetCurrentDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCurrentDirectoryW}
|
|
function SetCurrentDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetCurrentDirectory}
|
|
|
|
function GetCurrentDirectoryA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetCurrentDirectoryA}
|
|
function GetCurrentDirectoryW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetCurrentDirectoryW}
|
|
function GetCurrentDirectory(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetCurrentDirectory}
|
|
|
|
//#if _WIN32_WINNT >= 0x0502
|
|
|
|
function SetDllDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetDllDirectoryA}
|
|
function SetDllDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetDllDirectoryW}
|
|
function SetDllDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetDllDirectory}
|
|
|
|
function GetDllDirectoryA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetDllDirectoryA}
|
|
function GetDllDirectoryW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetDllDirectoryW}
|
|
function GetDllDirectory(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetDllDirectory}
|
|
|
|
//#endif // _WIN32_WINNT >= 0x0502
|
|
|
|
function GetDiskFreeSpaceA(lpRootPathName: LPCSTR; var lpSectorsPerCluster,
|
|
lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDiskFreeSpaceA}
|
|
function GetDiskFreeSpaceW(lpRootPathName: LPCWSTR; var lpSectorsPerCluster,
|
|
lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDiskFreeSpaceW}
|
|
function GetDiskFreeSpace(lpRootPathName: LPCTSTR; var lpSectorsPerCluster,
|
|
lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDiskFreeSpace}
|
|
|
|
function GetDiskFreeSpaceExA(lpDirectoryName: LPCSTR; var lpFreeBytesAvailableToCaller,
|
|
lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDiskFreeSpaceExA}
|
|
function GetDiskFreeSpaceExW(lpDirectoryName: LPCWSTR; var lpFreeBytesAvailableToCaller,
|
|
lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDiskFreeSpaceExW}
|
|
function GetDiskFreeSpaceEx(lpDirectoryName: LPCTSTR; var lpFreeBytesAvailableToCaller,
|
|
lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDiskFreeSpaceEx}
|
|
|
|
function CreateDirectoryA(lpPathName: LPCSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateDirectoryA}
|
|
function CreateDirectoryW(lpPathName: LPCWSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateDirectoryW}
|
|
function CreateDirectory(lpPathName: LPCTSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateDirectory}
|
|
|
|
function CreateDirectoryExA(lpTemplateDirectory: LPCSTR; lpNewDirectory: LPCSTR;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateDirectoryExA}
|
|
function CreateDirectoryExW(lpTemplateDirectory: LPCWSTR; lpNewDirectory: LPCWSTR;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateDirectoryExW}
|
|
function CreateDirectoryEx(lpTemplateDirectory: LPCTSTR; lpNewDirectory: LPCTSTR;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateDirectoryEx}
|
|
|
|
function RemoveDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM RemoveDirectoryA}
|
|
function RemoveDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM RemoveDirectoryW}
|
|
function RemoveDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM RemoveDirectory}
|
|
|
|
function GetFullPathNameA(lpFileName: LPCSTR; nBufferLength: DWORD;
|
|
lpBuffer: LPSTR; var lpFilePart: LPSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFullPathNameA}
|
|
function GetFullPathNameW(lpFileName: LPCWSTR; nBufferLength: DWORD;
|
|
lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFullPathNameA}
|
|
function GetFullPathName(lpFileName: LPCTSTR; nBufferLength: DWORD;
|
|
lpBuffer: LPTSTR; var lpFilePart: LPTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFullPathName}
|
|
|
|
const
|
|
DDD_RAW_TARGET_PATH = $00000001;
|
|
{$EXTERNALSYM DDD_RAW_TARGET_PATH}
|
|
DDD_REMOVE_DEFINITION = $00000002;
|
|
{$EXTERNALSYM DDD_REMOVE_DEFINITION}
|
|
DDD_EXACT_MATCH_ON_REMOVE = $00000004;
|
|
{$EXTERNALSYM DDD_EXACT_MATCH_ON_REMOVE}
|
|
DDD_NO_BROADCAST_SYSTEM = $00000008;
|
|
{$EXTERNALSYM DDD_NO_BROADCAST_SYSTEM}
|
|
DDD_LUID_BROADCAST_DRIVE = $00000010;
|
|
{$EXTERNALSYM DDD_LUID_BROADCAST_DRIVE}
|
|
|
|
function DefineDosDeviceA(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DefineDosDeviceA}
|
|
function DefineDosDeviceW(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DefineDosDeviceW}
|
|
function DefineDosDevice(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DefineDosDevice}
|
|
|
|
function QueryDosDeviceA(lpDeviceName, lpTargetPath: LPSTR; ucchMax: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM QueryDosDeviceA}
|
|
function QueryDosDeviceW(lpDeviceName, lpTargetPath: LPWSTR; ucchMax: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM QueryDosDeviceW}
|
|
function QueryDosDevice(lpDeviceName, lpTargetPath: LPTSTR; ucchMax: DWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM QueryDosDevice}
|
|
|
|
function CreateFileA(lpFileName: LPCSTR; dwDesiredAccess, dwShareMode: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
|
|
dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateFileA}
|
|
function CreateFileW(lpFileName: LPCWSTR; dwDesiredAccess, dwShareMode: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
|
|
dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateFileW}
|
|
function CreateFile(lpFileName: LPCTSTR; dwDesiredAccess, dwShareMode: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
|
|
dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateFile}
|
|
|
|
function ReOpenFile(hOriginalFile: HANDLE; dwDesiredAccess, dwShareMode, dwFlagsAndAttributes: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM ReOpenFile}
|
|
|
|
function SetFileAttributesA(lpFileName: LPCSTR; dwFileAttributes: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileAttributesA}
|
|
function SetFileAttributesW(lpFileName: LPCWSTR; dwFileAttributes: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileAttributesW}
|
|
function SetFileAttributes(lpFileName: LPCTSTR; dwFileAttributes: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileAttributes}
|
|
|
|
function GetFileAttributesA(lpFileName: LPCSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileAttributesA}
|
|
function GetFileAttributesW(lpFileName: LPCWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileAttributesW}
|
|
function GetFileAttributes(lpFileName: LPCTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetFileAttributes}
|
|
|
|
type
|
|
_GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel);
|
|
{$EXTERNALSYM _GET_FILEEX_INFO_LEVELS}
|
|
GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS;
|
|
{$EXTERNALSYM GET_FILEEX_INFO_LEVELS}
|
|
TGetFileExInfoLevels = GET_FILEEX_INFO_LEVELS;
|
|
|
|
function GetFileAttributesExA(lpFileName: LPCSTR;
|
|
fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileAttributesExA}
|
|
function GetFileAttributesExW(lpFileName: LPCWSTR;
|
|
fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileAttributesExW}
|
|
function GetFileAttributesEx(lpFileName: LPCTSTR;
|
|
fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileAttributesEx}
|
|
|
|
function GetCompressedFileSizeA(lpFileName: LPCSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetCompressedFileSizeA}
|
|
function GetCompressedFileSizeW(lpFileName: LPCWSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetCompressedFileSizeW}
|
|
function GetCompressedFileSize(lpFileName: LPCTSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
|
|
{$EXTERNALSYM GetCompressedFileSize}
|
|
|
|
function DeleteFileA(lpFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteFileA}
|
|
function DeleteFileW(lpFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteFileW}
|
|
function DeleteFile(lpFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteFile}
|
|
|
|
(* todo
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
CheckNameLegalDOS8Dot3A(
|
|
IN LPCSTR lpName,
|
|
OUT LPSTR lpOemName OPTIONAL,
|
|
IN DWORD OemNameSize OPTIONAL,
|
|
OUT PBOOL pbNameContainsSpaces OPTIONAL,
|
|
OUT PBOOL pbNameLegal
|
|
);
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
CheckNameLegalDOS8Dot3W(
|
|
IN LPCWSTR lpName,
|
|
OUT LPSTR lpOemName OPTIONAL,
|
|
IN DWORD OemNameSize OPTIONAL,
|
|
OUT PBOOL pbNameContainsSpaces OPTIONAL,
|
|
OUT PBOOL pbNameLegal
|
|
);
|
|
#ifdef UNICODE
|
|
#define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3W
|
|
#else
|
|
#define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3A
|
|
#endif // !UNICODE
|
|
*)
|
|
|
|
type
|
|
_FINDEX_INFO_LEVELS = (FindExInfoStandard, FindExInfoMaxInfoLevel);
|
|
{$EXTERNALSYM _FINDEX_INFO_LEVELS}
|
|
FINDEX_INFO_LEVELS = _FINDEX_INFO_LEVELS;
|
|
{$EXTERNALSYM FINDEX_INFO_LEVELS}
|
|
TFindExInfoLevels = FINDEX_INFO_LEVELS;
|
|
|
|
_FINDEX_SEARCH_OPS = (
|
|
FindExSearchNameMatch,
|
|
FindExSearchLimitToDirectories,
|
|
FindExSearchLimitToDevices,
|
|
FindExSearchMaxSearchOp);
|
|
{$EXTERNALSYM _FINDEX_SEARCH_OPS}
|
|
FINDEX_SEARCH_OPS = _FINDEX_SEARCH_OPS;
|
|
{$EXTERNALSYM FINDEX_SEARCH_OPS}
|
|
TFindExSearchOps = FINDEX_SEARCH_OPS;
|
|
|
|
const
|
|
FIND_FIRST_EX_CASE_SENSITIVE = $00000001;
|
|
{$EXTERNALSYM FIND_FIRST_EX_CASE_SENSITIVE}
|
|
|
|
function FindFirstFileExA(lpFileName: LPCSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
|
|
lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
|
|
dwAdditionalFlags: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstFileExA}
|
|
function FindFirstFileExW(lpFileName: LPCWSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
|
|
lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
|
|
dwAdditionalFlags: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstFileExW}
|
|
function FindFirstFileEx(lpFileName: LPCTSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
|
|
lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
|
|
dwAdditionalFlags: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstFileEx}
|
|
|
|
function FindFirstFileA(lpFileName: LPCSTR; var lpFindFileData: WIN32_FIND_DATAA): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstFileA}
|
|
function FindFirstFileW(lpFileName: LPCWSTR; var lpFindFileData: WIN32_FIND_DATAW): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstFileW}
|
|
function FindFirstFile(lpFileName: LPCTSTR; var lpFindFileData: WIN32_FIND_DATA): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstFile}
|
|
|
|
function FindNextFileA(hFindFile: HANDLE; var FindFileData: WIN32_FIND_DATAA): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextFileA}
|
|
function FindNextFileW(hFindFile: HANDLE; var lpFindFileData: WIN32_FIND_DATAW): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextFileW}
|
|
function FindNextFile(hFindFile: HANDLE; var lpFindFileData: WIN32_FIND_DATA): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextFile}
|
|
|
|
function SearchPathA(lpPath, lpFileName, lpExtension: LPCSTR; nBufferLength: DWORD;
|
|
lpBuffer: LPSTR; var lpFilePart: LPSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM SearchPathA}
|
|
function SearchPathW(lpPath, lpFileName, lpExtension: LPCWSTR; nBufferLength: DWORD;
|
|
lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM SearchPathW}
|
|
function SearchPath(lpPath, lpFileName, lpExtension: LPCTSTR; nBufferLength: DWORD;
|
|
lpBuffer: LPTSTR; var lpFilePart: LPTSTR): DWORD; stdcall;
|
|
{$EXTERNALSYM SearchPath}
|
|
|
|
function CopyFileA(lpExistingFileName, lpNewFileName: LPCSTR; bFailIfExists: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM CopyFileA}
|
|
function CopyFileW(lpExistingFileName, lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM CopyFileW}
|
|
function CopyFile(lpExistingFileName, lpNewFileName: LPCTSTR; bFailIfExists: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM CopyFile}
|
|
|
|
type
|
|
LPPROGRESS_ROUTINE = function(
|
|
TotalFileSize: LARGE_INTEGER;
|
|
TotalBytesTransferred: LARGE_INTEGER;
|
|
StreamSize: LARGE_INTEGER;
|
|
StreamBytesTransferred: LARGE_INTEGER;
|
|
dwStreamNumber: DWORD;
|
|
dwCallbackReason: DWORD;
|
|
hSourceFile: HANDLE;
|
|
hDestinationFile: HANDLE;
|
|
lpData: LPVOID): DWORD; stdcall;
|
|
{$EXTERNALSYM LPPROGRESS_ROUTINE}
|
|
TProgressRoutine = LPPROGRESS_ROUTINE;
|
|
|
|
function CopyFileExA(lpExistingFileName, lpNewFileName: LPCSTR;
|
|
lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
|
|
dwCopyFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CopyFileExA}
|
|
function CopyFileExW(lpExistingFileName, lpNewFileName: LPCWSTR;
|
|
lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
|
|
dwCopyFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CopyFileExW}
|
|
function CopyFileEx(lpExistingFileName, lpNewFileName: LPCTSTR;
|
|
lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
|
|
dwCopyFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CopyFileEx}
|
|
|
|
function MoveFileA(lpExistingFileName, lpNewFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileA}
|
|
function MoveFileW(lpExistingFileName, lpNewFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileW}
|
|
function MoveFile(lpExistingFileName, lpNewFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFile}
|
|
|
|
function MoveFileExA(lpExistingFileName, lpNewFileName: LPCSTR; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileExA}
|
|
function MoveFileExW(lpExistingFileName, lpNewFileName: LPCWSTR; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileExW}
|
|
function MoveFileEx(lpExistingFileName, lpNewFileName: LPCTSTR; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileEx}
|
|
|
|
function MoveFileWithProgressA(lpExistingFileName, lpNewFileName: LPCSTR;
|
|
lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileWithProgressA}
|
|
function MoveFileWithProgressW(lpExistingFileName, lpNewFileName: LPCWSTR;
|
|
lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileWithProgressW}
|
|
function MoveFileWithProgress(lpExistingFileName, lpNewFileName: LPCTSTR;
|
|
lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MoveFileWithProgress}
|
|
|
|
const
|
|
MOVEFILE_REPLACE_EXISTING = $00000001;
|
|
{$EXTERNALSYM MOVEFILE_REPLACE_EXISTING}
|
|
MOVEFILE_COPY_ALLOWED = $00000002;
|
|
{$EXTERNALSYM MOVEFILE_COPY_ALLOWED}
|
|
MOVEFILE_DELAY_UNTIL_REBOOT = $00000004;
|
|
{$EXTERNALSYM MOVEFILE_DELAY_UNTIL_REBOOT}
|
|
MOVEFILE_WRITE_THROUGH = $00000008;
|
|
{$EXTERNALSYM MOVEFILE_WRITE_THROUGH}
|
|
MOVEFILE_CREATE_HARDLINK = $00000010;
|
|
{$EXTERNALSYM MOVEFILE_CREATE_HARDLINK}
|
|
MOVEFILE_FAIL_IF_NOT_TRACKABLE = $00000020;
|
|
{$EXTERNALSYM MOVEFILE_FAIL_IF_NOT_TRACKABLE}
|
|
|
|
function ReplaceFileA(lpReplacedFileName, lpReplacementFileName,
|
|
lpBackupFileName: LPCSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
|
|
lpReserved: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM ReplaceFileA}
|
|
function ReplaceFileW(lpReplacedFileName, lpReplacementFileName,
|
|
lpBackupFileName: LPCWSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
|
|
lpReserved: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM ReplaceFileW}
|
|
function ReplaceFile(lpReplacedFileName, lpReplacementFileName,
|
|
lpBackupFileName: LPCTSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
|
|
lpReserved: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM ReplaceFile}
|
|
|
|
//
|
|
// API call to create hard links.
|
|
//
|
|
|
|
function CreateHardLinkA(lpFileName, lpExistingFileName: LPCSTR;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateHardLinkA}
|
|
function CreateHardLinkW(lpFileName, lpExistingFileName: LPCWSTR;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateHardLinkW}
|
|
function CreateHardLink(lpFileName, lpExistingFileName: LPCTSTR;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateHardLink}
|
|
|
|
//#if (_WIN32_WINNT >= 0x0501)
|
|
|
|
//
|
|
// API call to enumerate for streams within a file
|
|
//
|
|
|
|
type
|
|
_STREAM_INFO_LEVELS = (FindStreamInfoStandard, FindStreamInfoMaxInfoLevel);
|
|
{$EXTERNALSYM _STREAM_INFO_LEVELS}
|
|
STREAM_INFO_LEVELS = _STREAM_INFO_LEVELS;
|
|
{$EXTERNALSYM STREAM_INFO_LEVELS}
|
|
TStreamInfoLevels = STREAM_INFO_LEVELS;
|
|
|
|
_WIN32_FIND_STREAM_DATA = record
|
|
StreamSize: LARGE_INTEGER;
|
|
cStreamName: array [0..MAX_PATH + 35] of WCHAR;
|
|
end;
|
|
{$EXTERNALSYM _WIN32_FIND_STREAM_DATA}
|
|
WIN32_FIND_STREAM_DATA = _WIN32_FIND_STREAM_DATA;
|
|
{$EXTERNALSYM WIN32_FIND_STREAM_DATA}
|
|
PWIN32_FIND_STREAM_DATA = ^WIN32_FIND_STREAM_DATA;
|
|
{$EXTERNALSYM PWIN32_FIND_STREAM_DATA}
|
|
TWin32FindStreamData = WIN32_FIND_STREAM_DATA;
|
|
PWin32FindStreamData = PWIN32_FIND_STREAM_DATA;
|
|
|
|
function FindFirstStreamW(lpFileName: LPCWSTR; InfoLevel: STREAM_INFO_LEVELS; lpFindStreamData: LPVOID; dwFlags: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstStreamW}
|
|
|
|
function FindNextStreamW(hFindStream: HANDLE; lpFindStreamData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextStreamW}
|
|
|
|
//#endif // (_WIN32_WINNT >= 0x0500)
|
|
|
|
function CreateNamedPipeA(lpName: LPCSTR; dwOpenMode, dwPipeMode, nMaxInstances,
|
|
nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateNamedPipeA}
|
|
function CreateNamedPipeW(lpName: LPCWSTR; dwOpenMode, dwPipeMode, nMaxInstances,
|
|
nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateNamedPipeW}
|
|
function CreateNamedPipe(lpName: LPCTSTR; dwOpenMode, dwPipeMode, nMaxInstances,
|
|
nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
|
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateNamedPipe}
|
|
|
|
function GetNamedPipeHandleStateA(hNamedPipe: HANDLE; lpState, lpCurInstances,
|
|
lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPSTR;
|
|
nMaxUserNameSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeHandleStateA}
|
|
function GetNamedPipeHandleStateW(hNamedPipe: HANDLE; lpState, lpCurInstances,
|
|
lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPWSTR;
|
|
nMaxUserNameSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeHandleStateW}
|
|
function GetNamedPipeHandleState(hNamedPipe: HANDLE; lpState, lpCurInstances,
|
|
lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPTSTR;
|
|
nMaxUserNameSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeHandleState}
|
|
|
|
function CallNamedPipeA(lpNamedPipeName: LPCSTR; lpInBuffer: LPVOID;
|
|
nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
|
|
var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CallNamedPipeA}
|
|
function CallNamedPipeW(lpNamedPipeName: LPCWSTR; lpInBuffer: LPVOID;
|
|
nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
|
|
var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CallNamedPipeW}
|
|
function CallNamedPipe(lpNamedPipeName: LPCTSTR; lpInBuffer: LPVOID;
|
|
nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
|
|
var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CallNamedPipe}
|
|
|
|
function WaitNamedPipeA(lpNamedPipeName: LPCSTR; nTimeOut: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM WaitNamedPipeA}
|
|
function WaitNamedPipeW(lpNamedPipeName: LPCWSTR; nTimeOut: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM WaitNamedPipeW}
|
|
function WaitNamedPipe(lpNamedPipeName: LPCTSTR; nTimeOut: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM WaitNamedPipe}
|
|
|
|
function SetVolumeLabelA(lpRootPathName, lpVolumeName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetVolumeLabelA}
|
|
function SetVolumeLabelW(lpRootPathName, lpVolumeName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetVolumeLabelW}
|
|
function SetVolumeLabel(lpRootPathName, lpVolumeName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetVolumeLabel}
|
|
|
|
procedure SetFileApisToOEM; stdcall;
|
|
{$EXTERNALSYM SetFileApisToOEM}
|
|
|
|
procedure SetFileApisToANSI; stdcall;
|
|
{$EXTERNALSYM SetFileApisToANSI}
|
|
|
|
function AreFileApisANSI: BOOL; stdcall;
|
|
{$EXTERNALSYM AreFileApisANSI}
|
|
|
|
function GetVolumeInformationA(lpRootPathName: LPCSTR; lpVolumeNameBuffer: LPSTR;
|
|
nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
|
|
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
|
|
lpFileSystemNameBuffer: LPSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumeInformationA}
|
|
function GetVolumeInformationW(lpRootPathName: LPCWSTR; lpVolumeNameBuffer: LPWSTR;
|
|
nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
|
|
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
|
|
lpFileSystemNameBuffer: LPWSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumeInformationW}
|
|
function GetVolumeInformation(lpRootPathName: LPCTSTR; lpVolumeNameBuffer: LPTSTR;
|
|
nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
|
|
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
|
|
lpFileSystemNameBuffer: LPTSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumeInformation}
|
|
|
|
function CancelIo(hFile: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CancelIo}
|
|
|
|
//
|
|
// Event logging APIs
|
|
//
|
|
|
|
function ClearEventLogA(hEventLog: HANDLE; lpBackupFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ClearEventLogA}
|
|
function ClearEventLogW(hEventLog: HANDLE; lpBackupFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ClearEventLogW}
|
|
function ClearEventLog(hEventLog: HANDLE; lpBackupFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ClearEventLogA}
|
|
|
|
function BackupEventLogA(hEventLog: HANDLE; lpBackupFileName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM BackupEventLogA}
|
|
function BackupEventLogW(hEventLog: HANDLE; lpBackupFileName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM BackupEventLogW}
|
|
function BackupEventLog(hEventLog: HANDLE; lpBackupFileName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM BackupEventLogA}
|
|
|
|
function CloseEventLog(hEventLog: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CloseEventLog}
|
|
|
|
function DeregisterEventSource(hEventLog: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DeregisterEventSource}
|
|
|
|
function NotifyChangeEventLog(hEventLog, hEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM NotifyChangeEventLog}
|
|
|
|
function GetNumberOfEventLogRecords(hEventLog: HANDLE; var NumberOfRecords: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNumberOfEventLogRecords}
|
|
|
|
function GetOldestEventLogRecord(hEventLog: HANDLE; var OldestRecord: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetOldestEventLogRecord}
|
|
|
|
function OpenEventLogA(lpUNCServerName, lpSourceName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenEventLogA}
|
|
function OpenEventLogW(lpUNCServerName, lpSourceName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenEventLogW}
|
|
function OpenEventLog(lpUNCServerName, lpSourceName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenEventLogA}
|
|
|
|
function RegisterEventSourceA(lpUNCServerName, lpSourceName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM RegisterEventSourceA}
|
|
function RegisterEventSourceW(lpUNCServerName, lpSourceName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM RegisterEventSourceW}
|
|
function RegisterEventSource(lpUNCServerName, lpSourceName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM RegisterEventSourceA}
|
|
|
|
function OpenBackupEventLogA(lpUNCServerName, lpFileName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenBackupEventLogA}
|
|
function OpenBackupEventLogW(lpUNCServerName, lpFileName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenBackupEventLogW}
|
|
function OpenBackupEventLog(lpUNCServerName, lpFileName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenBackupEventLogA}
|
|
|
|
function ReadEventLogA(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
|
|
lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
|
|
var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadEventLogA}
|
|
function ReadEventLogW(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
|
|
lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
|
|
var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadEventLogW}
|
|
function ReadEventLog(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
|
|
lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
|
|
var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadEventLog}
|
|
|
|
function ReportEventA(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
|
|
lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCSTR;
|
|
lpRawData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM ReportEventA}
|
|
function ReportEventW(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
|
|
lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCWSTR;
|
|
lpRawData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM ReportEventW}
|
|
function ReportEvent(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
|
|
lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCTSTR;
|
|
lpRawData: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM ReportEvent}
|
|
|
|
const
|
|
EVENTLOG_FULL_INFO = 0;
|
|
{$EXTERNALSYM EVENTLOG_FULL_INFO}
|
|
|
|
type
|
|
LPEVENTLOG_FULL_INFORMATION = ^EVENTLOG_FULL_INFORMATION;
|
|
{$EXTERNALSYM LPEVENTLOG_FULL_INFORMATION}
|
|
_EVENTLOG_FULL_INFORMATION = record
|
|
dwFull: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _EVENTLOG_FULL_INFORMATION}
|
|
EVENTLOG_FULL_INFORMATION = _EVENTLOG_FULL_INFORMATION;
|
|
{$EXTERNALSYM EVENTLOG_FULL_INFORMATION}
|
|
TEventlogFullInformation = EVENTLOG_FULL_INFORMATION;
|
|
PEventlogFullInformation = LPEVENTLOG_FULL_INFORMATION;
|
|
|
|
function GetEventLogInformation(hEventLog: HANDLE; dwInfoLevel: DWORD;
|
|
lpBuffer: LPVOID; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetEventLogInformation}
|
|
|
|
//
|
|
// Security APIs
|
|
//
|
|
|
|
function DuplicateToken(ExistingTokenHandle: HANDLE;
|
|
ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL; DuplicateTokenHandle: PHANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DuplicateToken}
|
|
|
|
function GetKernelObjectSecurity(Handle: HANDLE;
|
|
RequestedInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
|
|
var lpnLengthNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetKernelObjectSecurity}
|
|
|
|
function ImpersonateNamedPipeClient(hNamedPipe: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ImpersonateNamedPipeClient}
|
|
|
|
function ImpersonateSelf(ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL): BOOL; stdcall;
|
|
{$EXTERNALSYM ImpersonateSelf}
|
|
|
|
function RevertToSelf : BOOL; stdcall;
|
|
{$EXTERNALSYM RevertToSelf}
|
|
|
|
function SetThreadToken(Thread: PHANDLE; Token: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetThreadToken}
|
|
|
|
function AccessCheck(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
ClientToken: HANDLE; DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
|
|
var PrivilegeSet: PRIVILEGE_SET; var PrivilegeSetLength,
|
|
GrantedAccess: DWORD; var AccessStatus: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheck}
|
|
|
|
function AccessCheckByType(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
PrincipalSelfSid: PSID; ClientToken: HANDLE; DesiredAccess: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; var PrivilegeSet: PRIVILEGE_SET;
|
|
var PrivilegeSetLength, GrantedAccess: DWORD; var AccessStatus: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByType}
|
|
|
|
function AccessCheckByTypeResultList(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
PrincipalSelfSid: PSID; ClientToken: HANDLE; DesiredAccess: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; var PrivilegeSet: PRIVILEGE_SET;
|
|
var PrivilegeSetLength, GrantedAccessList: DWORD;
|
|
var AccessStatusList: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultList}
|
|
|
|
function OpenProcessToken(ProcessHandle: HANDLE; DesiredAccess: DWORD;
|
|
var TokenHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM OpenProcessToken}
|
|
|
|
function OpenThreadToken(ThreadHandle: HANDLE; DesiredAccess: DWORD;
|
|
OpenAsSelf: BOOL; var TokenHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM OpenThreadToken}
|
|
|
|
function GetTokenInformation(TokenHandle: HANDLE;
|
|
TokenInformationClass: TOKEN_INFORMATION_CLASS; TokenInformation: LPVOID;
|
|
TokenInformationLength: DWORD; var ReturnLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetTokenInformation}
|
|
|
|
function SetTokenInformation(TokenHandle: HANDLE;
|
|
TokenInformationClass: TOKEN_INFORMATION_CLASS; TokenInformation: LPVOID;
|
|
TokenInformationLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetTokenInformation}
|
|
|
|
function AdjustTokenPrivileges(TokenHandle: HANDLE; DisableAllPrivileges: BOOL;
|
|
NewState: PTOKEN_PRIVILEGES; BufferLength: DWORD;
|
|
PreviousState: PTOKEN_PRIVILEGES; ReturnLength: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM AdjustTokenPrivileges}
|
|
|
|
function AdjustTokenGroups(TokenHandle: HANDLE; ResetToDefault: BOOL;
|
|
NewState: PTOKEN_GROUPS; BufferLength: DWORD; PreviousState: PTOKEN_GROUPS;
|
|
ReturnLength: PDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM AdjustTokenGroups}
|
|
|
|
function PrivilegeCheck(ClientToken: HANDLE;
|
|
RequiredPrivileges: PPRIVILEGE_SET; var pfResult: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM PrivilegeCheck}
|
|
|
|
function AccessCheckAndAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
|
|
ObjectTypeName, ObjectName: LPSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
|
|
ObjectCreation: BOOL; var GrantedAccess: DWORD;
|
|
var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckAndAuditAlarmA}
|
|
function AccessCheckAndAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
|
|
ObjectTypeName, ObjectName: LPWSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
|
|
ObjectCreation: BOOL; var GrantedAccess: DWORD;
|
|
var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckAndAuditAlarmW}
|
|
function AccessCheckAndAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
|
|
ObjectTypeName, ObjectName: LPTSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
|
|
ObjectCreation: BOOL; var GrantedAccess: DWORD;
|
|
var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckAndAuditAlarmA}
|
|
|
|
function AccessCheckByTypeAndAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
|
|
ObjectTypeName: LPCSTR; ObjectName: LPCSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
|
|
Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL; GrantedAccess: LPDWORD;
|
|
AccessStatus: LPBOOL; pfGenerateOnClose: LPBOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeAndAuditAlarmA}
|
|
function AccessCheckByTypeAndAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
|
|
ObjectTypeName: LPCWSTR; ObjectName: LPCWSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
|
|
Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL; GrantedAccess: LPDWORD;
|
|
AccessStatus: LPBOOL; pfGenerateOnClose: LPBOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeAndAuditAlarmW}
|
|
function AccessCheckByTypeAndAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
|
|
ObjectTypeName, ObjectName: LPCTSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
|
|
Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess: DWORD; var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeAndAuditAlarmA}
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmA(SubsystemName: LPCSTR;
|
|
HandleId: LPVOID; ObjectTypeName, ObjectName: LPCSTR;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
|
|
DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmA}
|
|
function AccessCheckByTypeResultListAndAuditAlarmW(SubsystemName: LPCWSTR;
|
|
HandleId: LPVOID; ObjectTypeName, ObjectName: LPCWSTR;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
|
|
DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmW}
|
|
function AccessCheckByTypeResultListAndAuditAlarm(SubsystemName: LPCTSTR;
|
|
HandleId: LPVOID; ObjectTypeName, ObjectName: LPCTSTR;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
|
|
DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmA}
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandleA(SubsystemName: LPCSTR;
|
|
HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCSTR;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
|
|
DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandleA}
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandleW(SubsystemName: LPCWSTR;
|
|
HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCWSTR;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
|
|
DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandleW}
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandle(SubsystemName: LPCTSTR;
|
|
HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCTSTR;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
|
|
DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
|
|
ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
|
|
const GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL;
|
|
var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandle}
|
|
|
|
function ObjectOpenAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
|
|
ObjectTypeName: LPSTR; ObjectName: LPSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
ClientToken: HANDLE; DesiredAccess, GrantedAccess: DWORD;
|
|
Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
|
|
var GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectOpenAuditAlarmA}
|
|
function ObjectOpenAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
|
|
ObjectTypeName, ObjectName: LPWSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
ClientToken: HANDLE; DesiredAccess: DWORD; GrantedAccess: DWORD;
|
|
Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
|
|
var GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectOpenAuditAlarmW}
|
|
function ObjectOpenAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
|
|
ObjectTypeName: LPTSTR; ObjectName: LPTSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
ClientToken: HANDLE; DesiredAccess: DWORD; GrantedAccess: DWORD;
|
|
Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
|
|
var GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectOpenAuditAlarmA}
|
|
|
|
function ObjectPrivilegeAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
|
|
ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
|
|
AccessGranted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectPrivilegeAuditAlarmA}
|
|
function ObjectPrivilegeAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
|
|
ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
|
|
AccessGranted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectPrivilegeAuditAlarmW}
|
|
function ObjectPrivilegeAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
|
|
ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
|
|
AccessGranted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectPrivilegeAuditAlarmA}
|
|
|
|
function ObjectCloseAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
|
|
GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectCloseAuditAlarmA}
|
|
function ObjectCloseAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
|
|
GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectCloseAuditAlarmW}
|
|
function ObjectCloseAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
|
|
GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectCloseAuditAlarmA}
|
|
|
|
function ObjectDeleteAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
|
|
GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectDeleteAuditAlarmA}
|
|
function ObjectDeleteAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
|
|
GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectDeleteAuditAlarmW}
|
|
function ObjectDeleteAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
|
|
GenerateOnClose: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM ObjectDeleteAuditAlarmA}
|
|
|
|
function PrivilegedServiceAuditAlarmA(SubsystemName, ServiceName: LPCSTR;
|
|
ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM PrivilegedServiceAuditAlarmA}
|
|
function PrivilegedServiceAuditAlarmW(SubsystemName, ServiceName: LPCWSTR;
|
|
ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM PrivilegedServiceAuditAlarmW}
|
|
function PrivilegedServiceAuditAlarm(SubsystemName, ServiceName: LPCTSTR;
|
|
ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM PrivilegedServiceAuditAlarmA}
|
|
|
|
function IsWellKnownSid(pSid: PSID; WellKnownSidType: WELL_KNOWN_SID_TYPE): BOOL; stdcall;
|
|
{$EXTERNALSYM IsWellKnownSid}
|
|
|
|
function CreateWellKnownSid(WellKnownSidType: WELL_KNOWN_SID_TYPE; DomainSid: PSID;
|
|
pSid: PSID; var cbSid: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateWellKnownSid}
|
|
|
|
function EqualDomainSid(pSid1, pSid2: PSID; pfEqual: PBOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM EqualDomainSid}
|
|
|
|
function GetWindowsAccountDomainSid(pSid, ppDomainSid: PSID; var cbSid: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetWindowsAccountDomainSid}
|
|
|
|
function IsValidSid(pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM IsValidSid}
|
|
|
|
function EqualSid(pSid1, pSid2: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM EqualSid}
|
|
|
|
function EqualPrefixSid(pSid1, pSid2: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM EqualPrefixSid}
|
|
|
|
function GetSidLengthRequired(nSubAuthorityCount: UCHAR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetSidLengthRequired}
|
|
|
|
function AllocateAndInitializeSid(pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY;
|
|
SubAuthorityCount: BYTE; nSubAuthority0, nSubAuthority1, nSubAuthority2,
|
|
nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6,
|
|
nSubAuthority7: DWORD; var pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AllocateAndInitializeSid}
|
|
|
|
function FreeSid(pSid: PSID): PVOID; stdcall;
|
|
{$EXTERNALSYM FreeSid}
|
|
|
|
function InitializeSid(Sid: PSID; pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY;
|
|
nSubAuthorityCount: BYTE): BOOL; stdcall;
|
|
{$EXTERNALSYM InitializeSid}
|
|
|
|
function GetSidIdentifierAuthority(pSid: PSID): PSID_IDENTIFIER_AUTHORITY; stdcall;
|
|
{$EXTERNALSYM GetSidIdentifierAuthority}
|
|
|
|
function GetSidSubAuthority(pSid: PSID; nSubAuthority: DWORD): PDWORD; stdcall;
|
|
{$EXTERNALSYM GetSidSubAuthority}
|
|
|
|
function GetSidSubAuthorityCount(pSid: PSID): PUCHAR; stdcall;
|
|
{$EXTERNALSYM GetSidSubAuthorityCount}
|
|
|
|
function GetLengthSid(pSid: PSID): DWORD; stdcall;
|
|
{$EXTERNALSYM GetLengthSid}
|
|
|
|
function CopySid(nDestinationSidLength: DWORD; pDestinationSid: PSID;
|
|
pSourceSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM CopySid}
|
|
|
|
function AreAllAccessesGranted(GrantedAccess, DesiredAccess: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM AreAllAccessesGranted}
|
|
|
|
function AreAnyAccessesGranted(GrantedAccess, DesiredAccess: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM AreAnyAccessesGranted}
|
|
|
|
procedure MapGenericMask(var AccessMask: DWORD; var GenericMapping: GENERIC_MAPPING); stdcall;
|
|
{$EXTERNALSYM MapGenericMask}
|
|
|
|
function IsValidAcl(pAcl: PACL): BOOL; stdcall;
|
|
{$EXTERNALSYM IsValidAcl}
|
|
|
|
function InitializeAcl(pAcl: PACL; nAclLength: DWORD; dwAclRevision: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM InitializeAcl}
|
|
|
|
function GetAclInformation(pAcl: PACL; pAclInformation: LPVOID;
|
|
nAclInformationLength: DWORD; dwAclInformationClass: ACL_INFORMATION_CLASS): BOOL; stdcall;
|
|
{$EXTERNALSYM GetAclInformation}
|
|
|
|
function SetAclInformation(pAcl: PACL; pAclInformation: LPVOID;
|
|
nAclInformationLength: DWORD; dwAclInformationClass: ACL_INFORMATION_CLASS): BOOL; stdcall;
|
|
{$EXTERNALSYM SetAclInformation}
|
|
|
|
function AddAce(pAcl: PACL; dwAceRevision: DWORD; dwStartingAceIndex: DWORD;
|
|
pAceList: LPVOID; nAceListLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAce}
|
|
|
|
function DeleteAce(pAcl: PACL; dwAceIndex: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteAce}
|
|
|
|
function GetAce(pAcl: PACL; dwAceIndex: DWORD; var pAce: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM GetAce}
|
|
|
|
function AddAccessAllowedAce(pAcl: PACL; dwAceRevision, AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAccessAllowedAce}
|
|
|
|
function AddAccessAllowedAceEx(pAcl: PACL; dwAceRevision, AceFlags,
|
|
AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAccessAllowedAceEx}
|
|
|
|
function AddAccessDeniedAce(pAcl: PACL; dwAceRevision, AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAccessDeniedAce}
|
|
|
|
function AddAccessDeniedAceEx(pAcl: PACL; dwAceRevision, AceFlags: DWORD;
|
|
AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAccessDeniedAceEx}
|
|
|
|
function AddAuditAccessAce(pAcl: PACL; dwAceRevision, dwAccessMask: DWORD;
|
|
pSid: PSID; bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAuditAccessAce}
|
|
|
|
function AddAuditAccessAceEx(pAcl: PACL; dwAceRevision, AceFlags,
|
|
dwAccessMask: DWORD; pSid: PSID; bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAuditAccessAceEx}
|
|
|
|
function AddAccessAllowedObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
|
|
AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAccessAllowedObjectAce}
|
|
|
|
function AddAccessDeniedObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
|
|
AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAccessDeniedObjectAce}
|
|
|
|
function AddAuditAccessObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
|
|
AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID;
|
|
bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM AddAuditAccessObjectAce}
|
|
|
|
function FindFirstFreeAce(pAcl: PACL; var pAce: LPVOID): BOOL; stdcall;
|
|
{$EXTERNALSYM FindFirstFreeAce}
|
|
|
|
function InitializeSecurityDescriptor(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
dwRevision: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM InitializeSecurityDescriptor}
|
|
|
|
function IsValidSecurityDescriptor(pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsValidSecurityDescriptor}
|
|
|
|
function GetSecurityDescriptorLength(pSecurityDescriptor: PSECURITY_DESCRIPTOR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorLength}
|
|
|
|
function GetSecurityDescriptorControl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var pControl: SECURITY_DESCRIPTOR_CONTROL; var lpdwRevision: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorControl}
|
|
|
|
function SetSecurityDescriptorControl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
ControlBitsOfInterest, ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSecurityDescriptorControl}
|
|
|
|
function SetSecurityDescriptorDacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
bDaclPresent: BOOL; pDacl: PACL; bDaclDefaulted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSecurityDescriptorDacl}
|
|
|
|
function GetSecurityDescriptorDacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var lpbDaclPresent: BOOL; var pDacl: PACL; var lpbDaclDefaulted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorDacl}
|
|
|
|
function SetSecurityDescriptorSacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
bSaclPresent: BOOL; pSacl: PACL; bSaclDefaulted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSecurityDescriptorSacl}
|
|
|
|
function GetSecurityDescriptorSacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var lpbSaclPresent: BOOL; var pSacl: PACL; var lpbSaclDefaulted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorSacl}
|
|
|
|
function SetSecurityDescriptorOwner(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
pOwner: PSID; bOwnerDefaulted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSecurityDescriptorOwner}
|
|
|
|
function GetSecurityDescriptorOwner(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var pOwner: PSID; lpbOwnerDefaulted: PBOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorOwner}
|
|
|
|
function SetSecurityDescriptorGroup(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
pGroup: PSID; bGroupDefaulted: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSecurityDescriptorGroup}
|
|
|
|
function GetSecurityDescriptorGroup(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var pGroup: PSID; lpbGroupDefaulted: PBOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorGroup}
|
|
|
|
function SetSecurityDescriptorRMControl(SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
RMControl: PUCHAR): DWORD; stdcall;
|
|
{$EXTERNALSYM SetSecurityDescriptorRMControl}
|
|
|
|
function GetSecurityDescriptorRMControl(SecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var RMControl: UCHAR): DWORD; stdcall;
|
|
{$EXTERNALSYM GetSecurityDescriptorRMControl}
|
|
|
|
function CreatePrivateObjectSecurity(ParentDescriptor, CreatorDescriptor: PSECURITY_DESCRIPTOR;
|
|
var NewDescriptor: PSECURITY_DESCRIPTOR; IsDirectoryObject: BOOL; Token: HANDLE;
|
|
const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
|
|
{$EXTERNALSYM CreatePrivateObjectSecurity}
|
|
|
|
function ConvertToAutoInheritPrivateObjectSecurity(ParentDescriptor,
|
|
CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var NewSecurityDescriptor: PSECURITY_DESCRIPTOR; ObjectType: LPGUID;
|
|
IsDirectoryObject: ByteBool; const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
|
|
{$EXTERNALSYM ConvertToAutoInheritPrivateObjectSecurity}
|
|
|
|
function CreatePrivateObjectSecurityEx(ParentDescriptor,
|
|
CreatorDescriptor: PSECURITY_DESCRIPTOR;
|
|
var NewDescriptor: PSECURITY_DESCRIPTOR; ObjectType: LPGUID;
|
|
IsContainerObject: BOOL; AutoInheritFlags: ULONG; Token: HANDLE;
|
|
const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
|
|
{$EXTERNALSYM CreatePrivateObjectSecurityEx}
|
|
|
|
function SetPrivateObjectSecurity(SecurityInformation: SECURITY_INFORMATION;
|
|
ModificationDescriptor: PSECURITY_DESCRIPTOR;
|
|
var ObjectsSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
const GenericMapping: GENERIC_MAPPING; Token: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetPrivateObjectSecurity}
|
|
|
|
function SetPrivateObjectSecurityEx(SecurityInformation: SECURITY_INFORMATION;
|
|
ModificationDescriptor: PSECURITY_DESCRIPTOR;
|
|
var ObjectsSecurityDescriptor: PSECURITY_DESCRIPTOR; AutoInheritFlags: ULONG;
|
|
const GenericMapping: GENERIC_MAPPING; Token: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM SetPrivateObjectSecurityEx}
|
|
|
|
function GetPrivateObjectSecurity(ObjectDescriptor: PSECURITY_DESCRIPTOR;
|
|
SecurityInformation: SECURITY_INFORMATION;
|
|
ResultantDescriptor: PSECURITY_DESCRIPTOR; DescriptorLength: DWORD;
|
|
var ReturnLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetPrivateObjectSecurity}
|
|
|
|
function DestroyPrivateObjectSecurity(var ObjectDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
|
|
{$EXTERNALSYM DestroyPrivateObjectSecurity}
|
|
|
|
function MakeSelfRelativeSD(pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR; var lpdwBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MakeSelfRelativeSD}
|
|
|
|
function MakeAbsoluteSD(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var lpdwAbsoluteSecurityDescriptorSize: DWORD; pDacl: PACL;
|
|
var lpdwDaclSize: DWORD; pSacl: PACL; var lpdwSaclSize: DWORD; pOwner: PSID;
|
|
var lpdwOwnerSize: DWORD; pPrimaryGroup: PSID; var lpdwPrimaryGroupSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MakeAbsoluteSD}
|
|
|
|
function MakeAbsoluteSD2(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR;
|
|
var lpdwBufferSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM MakeAbsoluteSD2}
|
|
|
|
function SetFileSecurityA(lpFileName: LPCSTR; SecurityInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileSecurityA}
|
|
function SetFileSecurityW(lpFileName: LPCWSTR; SecurityInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileSecurityW}
|
|
function SetFileSecurity(lpFileName: LPCTSTR; SecurityInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetFileSecurityA}
|
|
|
|
function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
|
|
var lpnLengthNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileSecurityA}
|
|
function GetFileSecurityW(lpFileName: LPCWSTR; RequestedInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
|
|
var lpnLengthNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileSecurityW}
|
|
function GetFileSecurity(lpFileName: LPCTSTR; RequestedInformation: SECURITY_INFORMATION;
|
|
pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
|
|
var lpnLengthNeeded: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetFileSecurityA}
|
|
|
|
function SetKernelObjectSecurity(Handle: HANDLE; SecurityInformation: SECURITY_INFORMATION;
|
|
SecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetKernelObjectSecurity}
|
|
|
|
function FindFirstChangeNotificationA(lpPathName: LPCSTR; bWatchSubtree: Cardinal;
|
|
dwNotifyFilter: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstChangeNotificationA}
|
|
function FindFirstChangeNotificationW(lpPathName: LPCWSTR; bWatchSubtree: Cardinal;
|
|
dwNotifyFilter: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstChangeNotificationW}
|
|
function FindFirstChangeNotification(lpPathName: LPCTSTR; bWatchSubtree: Cardinal;
|
|
dwNotifyFilter: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstChangeNotification}
|
|
|
|
function FindNextChangeNotification(hChangeHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextChangeNotification}
|
|
|
|
function FindCloseChangeNotification(hChangeHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM FindCloseChangeNotification}
|
|
|
|
function ReadDirectoryChangesW(hDirectory: HANDLE; lpBuffer: LPVOID;
|
|
nBufferLength: DWORD; bWatchSubtree: BOOL; dwNotifyFilter: DWORD;
|
|
lpBytesReturned: LPDWORD; lpOverlapped: LPOVERLAPPED;
|
|
lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
|
|
{$EXTERNALSYM ReadDirectoryChangesW}
|
|
|
|
function VirtualLock(lpAddress: LPVOID; dwSize: SIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM VirtualLock}
|
|
|
|
function VirtualUnlock(lpAddress: LPVOID; dwSize: SIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM VirtualUnlock}
|
|
|
|
function MapViewOfFileEx(hFileMappingObject: HANDLE; dwDesiredAccess: DWORD;
|
|
dwFileOffsetHigh: DWORD; dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: SIZE_T;
|
|
lpBaseAddress: LPVOID): LPVOID; stdcall;
|
|
{$EXTERNALSYM MapViewOfFileEx}
|
|
|
|
function SetPriorityClass(hProcess: HANDLE; dwPriorityClass: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetPriorityClass}
|
|
|
|
function GetPriorityClass(hProcess: HANDLE): DWORD; stdcall;
|
|
{$EXTERNALSYM GetPriorityClass}
|
|
|
|
function IsBadReadPtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadReadPtr}
|
|
|
|
function IsBadWritePtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadWritePtr}
|
|
|
|
function IsBadHugeReadPtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadHugeReadPtr}
|
|
|
|
function IsBadHugeWritePtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadHugeWritePtr}
|
|
|
|
function IsBadCodePtr(lpfn: FARPROC): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadCodePtr}
|
|
|
|
function IsBadStringPtrA(lpsz: LPCSTR; ucchMax: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadStringPtrA}
|
|
function IsBadStringPtrW(lpsz: LPCWSTR; ucchMax: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadStringPtrW}
|
|
function IsBadStringPtr(lpsz: LPCTSTR; ucchMax: UINT_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM IsBadStringPtr}
|
|
|
|
function LookupAccountSidA(lpSystemName: LPCSTR; Sid: PSID; Name: LPSTR;
|
|
var cchName: DWORD; ReferencedDomainName: LPSTR; var cchReferencedDomainName: DWORD;
|
|
var peUse: SID_NAME_USE): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupAccountSidA}
|
|
function LookupAccountSidW(lpSystemName: LPCWSTR; Sid: PSID; Name: LPWSTR;
|
|
var cchName: DWORD; ReferencedDomainName: LPWSTR; var cchReferencedDomainName: DWORD;
|
|
var peUse: SID_NAME_USE): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupAccountSidW}
|
|
function LookupAccountSid(lpSystemName: LPCTSTR; Sid: PSID; Name: LPTSTR;
|
|
var cchName: DWORD; ReferencedDomainName: LPTSTR; var cchReferencedDomainName: DWORD;
|
|
var peUse: SID_NAME_USE): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupAccountSid}
|
|
|
|
function LookupAccountNameA(lpSystemName, lpAccountName: LPCSTR; Sid: PSID;
|
|
var cbSid: DWORD; ReferencedDomainName: LPSTR; var cchReferencedDomainName: DWORD;
|
|
var peUse: SID_NAME_USE): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupAccountNameA}
|
|
function LookupAccountNameW(lpSystemName, lpAccountName: LPCWSTR; Sid: PSID;
|
|
var cbSid: DWORD; ReferencedDomainName: LPWSTR; var cchReferencedDomainName: DWORD;
|
|
var peUse: SID_NAME_USE): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupAccountNameW}
|
|
function LookupAccountName(lpSystemName: LPCTSTR; lpAccountName: LPCTSTR; Sid: PSID;
|
|
var cbSid: DWORD; ReferencedDomainName: LPTSTR; var cchReferencedDomainName: DWORD;
|
|
var peUse: SID_NAME_USE): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupAccountName}
|
|
|
|
function LookupPrivilegeValueA(lpSystemName, lpName: LPCSTR; var lpLuid: LUID): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeValueA}
|
|
function LookupPrivilegeValueW(lpSystemName, lpName: LPCWSTR; var lpLuid: LUID): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeValueW}
|
|
function LookupPrivilegeValue(lpSystemName, lpName: LPCTSTR; var lpLuid: LUID): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeValue}
|
|
|
|
function LookupPrivilegeNameA(lpSystemName: LPCSTR; const lpLuid: LUID;
|
|
lpName: LPSTR; var cbName: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeNameA}
|
|
function LookupPrivilegeNameW(lpSystemName: LPCWSTR; const lpLuid: LUID;
|
|
lpName: LPWSTR; var cbName: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeNameW}
|
|
function LookupPrivilegeName(lpSystemName: LPCTSTR; const lpLuid: LUID;
|
|
lpName: LPTSTR; var cbName: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeName}
|
|
|
|
function LookupPrivilegeDisplayNameA(lpSystemName, lpName: LPCSTR;
|
|
lpDisplayName: LPSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeDisplayNameA}
|
|
function LookupPrivilegeDisplayNameW(lpSystemName, lpName: LPCWSTR;
|
|
lpDisplayName: LPWSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeDisplayNameW}
|
|
function LookupPrivilegeDisplayName(lpSystemName, lpName: LPCTSTR;
|
|
lpDisplayName: LPTSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM LookupPrivilegeDisplayName}
|
|
|
|
function AllocateLocallyUniqueId(var Luid: LUID): BOOL; stdcall;
|
|
{$EXTERNALSYM AllocateLocallyUniqueId}
|
|
|
|
function BuildCommDCBA(lpDef: LPCSTR; var lpDCB: DCB): BOOL; stdcall;
|
|
{$EXTERNALSYM BuildCommDCBA}
|
|
function BuildCommDCBW(lpDef: LPCWSTR; var lpDCB: DCB): BOOL; stdcall;
|
|
{$EXTERNALSYM BuildCommDCBW}
|
|
function BuildCommDCB(lpDef: LPCTSTR; var lpDCB: DCB): BOOL; stdcall;
|
|
{$EXTERNALSYM BuildCommDCB}
|
|
|
|
function BuildCommDCBAndTimeoutsA(lpDef: LPCSTR; var lpDCB: DCB;
|
|
var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
|
|
{$EXTERNALSYM BuildCommDCBAndTimeoutsA}
|
|
function BuildCommDCBAndTimeoutsW(lpDef: LPCWSTR; var lpDCB: DCB;
|
|
var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
|
|
{$EXTERNALSYM BuildCommDCBAndTimeoutsW}
|
|
function BuildCommDCBAndTimeouts(lpDef: LPCTSTR; var lpDCB: DCB;
|
|
var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
|
|
{$EXTERNALSYM BuildCommDCBAndTimeouts}
|
|
|
|
function CommConfigDialogA(lpszName: LPCSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
|
|
{$EXTERNALSYM CommConfigDialogA}
|
|
function CommConfigDialogW(lpszName: LPCWSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
|
|
{$EXTERNALSYM CommConfigDialogW}
|
|
function CommConfigDialog(lpszName: LPCTSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
|
|
{$EXTERNALSYM CommConfigDialog}
|
|
|
|
function GetDefaultCommConfigA(lpszName: LPCSTR; var lpCC: COMMCONFIG;
|
|
var lpdwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDefaultCommConfigA}
|
|
function GetDefaultCommConfigW(lpszName: LPCWSTR; var lpCC: COMMCONFIG;
|
|
var lpdwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDefaultCommConfigW}
|
|
function GetDefaultCommConfig(lpszName: LPCTSTR; var lpCC: COMMCONFIG;
|
|
var lpdwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetDefaultCommConfig}
|
|
|
|
function SetDefaultCommConfigA(lpszName: LPCSTR; const lpCC: COMMCONFIG;
|
|
dwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetDefaultCommConfigA}
|
|
function SetDefaultCommConfigW(lpszName: LPCWSTR; const lpCC: COMMCONFIG;
|
|
dwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetDefaultCommConfigW}
|
|
function SetDefaultCommConfig(lpszName: LPCTSTR; const lpCC: COMMCONFIG;
|
|
dwSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetDefaultCommConfig}
|
|
|
|
const
|
|
MAX_COMPUTERNAME_LENGTH = 15;
|
|
{$EXTERNALSYM MAX_COMPUTERNAME_LENGTH}
|
|
|
|
function GetComputerNameA(lpBuffer: LPSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetComputerNameA}
|
|
function GetComputerNameW(lpBuffer: LPWSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetComputerNameW}
|
|
function GetComputerName(lpBuffer: LPTSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetComputerName}
|
|
|
|
function SetComputerNameA(lpComputerName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetComputerNameA}
|
|
function SetComputerNameW(lpComputerName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetComputerNameW}
|
|
function SetComputerName(lpComputerName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetComputerName}
|
|
|
|
type
|
|
_COMPUTER_NAME_FORMAT = (
|
|
ComputerNameNetBIOS,
|
|
ComputerNameDnsHostname,
|
|
ComputerNameDnsDomain,
|
|
ComputerNameDnsFullyQualified,
|
|
ComputerNamePhysicalNetBIOS,
|
|
ComputerNamePhysicalDnsHostname,
|
|
ComputerNamePhysicalDnsDomain,
|
|
ComputerNamePhysicalDnsFullyQualified,
|
|
ComputerNameMax);
|
|
{$EXTERNALSYM _COMPUTER_NAME_FORMAT}
|
|
COMPUTER_NAME_FORMAT = _COMPUTER_NAME_FORMAT;
|
|
{$EXTERNALSYM COMPUTER_NAME_FORMAT}
|
|
TComputerNameFormat = COMPUTER_NAME_FORMAT;
|
|
|
|
function GetComputerNameExA(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPSTR;
|
|
var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetComputerNameExA}
|
|
function GetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPWSTR;
|
|
var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetComputerNameExW}
|
|
function GetComputerNameEx(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPTSTR;
|
|
var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetComputerNameEx}
|
|
|
|
function SetComputerNameExA(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetComputerNameExA}
|
|
function SetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetComputerNameExW}
|
|
function SetComputerNameEx(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetComputerNameEx}
|
|
|
|
function DnsHostnameToComputerNameA(Hostname, ComputerName: LPSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DnsHostnameToComputerNameA}
|
|
function DnsHostnameToComputerNameW(Hostname, ComputerName: LPWSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DnsHostnameToComputerNameW}
|
|
function DnsHostnameToComputerName(Hostname, ComputerName: LPTSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM DnsHostnameToComputerName}
|
|
|
|
function GetUserNameA(lpBuffer: LPSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetUserNameA}
|
|
function GetUserNameW(lpBuffer: LPWSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetUserNameW}
|
|
function GetUserName(lpBuffer: LPTSTR; var nSize: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetUserName}
|
|
|
|
//
|
|
// Logon Support APIs
|
|
//
|
|
|
|
const
|
|
LOGON32_LOGON_INTERACTIVE = 2;
|
|
{$EXTERNALSYM LOGON32_LOGON_INTERACTIVE}
|
|
LOGON32_LOGON_NETWORK = 3;
|
|
{$EXTERNALSYM LOGON32_LOGON_NETWORK}
|
|
LOGON32_LOGON_BATCH = 4;
|
|
{$EXTERNALSYM LOGON32_LOGON_BATCH}
|
|
LOGON32_LOGON_SERVICE = 5;
|
|
{$EXTERNALSYM LOGON32_LOGON_SERVICE}
|
|
LOGON32_LOGON_UNLOCK = 7;
|
|
{$EXTERNALSYM LOGON32_LOGON_UNLOCK}
|
|
LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
|
|
{$EXTERNALSYM LOGON32_LOGON_NETWORK_CLEARTEXT}
|
|
LOGON32_LOGON_NEW_CREDENTIALS = 9;
|
|
{$EXTERNALSYM LOGON32_LOGON_NEW_CREDENTIALS}
|
|
|
|
LOGON32_PROVIDER_DEFAULT = 0;
|
|
{$EXTERNALSYM LOGON32_PROVIDER_DEFAULT}
|
|
LOGON32_PROVIDER_WINNT35 = 1;
|
|
{$EXTERNALSYM LOGON32_PROVIDER_WINNT35}
|
|
LOGON32_PROVIDER_WINNT40 = 2;
|
|
{$EXTERNALSYM LOGON32_PROVIDER_WINNT40}
|
|
LOGON32_PROVIDER_WINNT50 = 3;
|
|
{$EXTERNALSYM LOGON32_PROVIDER_WINNT50}
|
|
|
|
function LogonUserA(lpszUsername, lpszDomain, lpszPassword: LPCSTR;
|
|
dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM LogonUserA}
|
|
function LogonUserW(lpszUsername, lpszDomain, lpszPassword: LPCWSTR;
|
|
dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM LogonUserW}
|
|
function LogonUser(lpszUsername, lpszDomain, lpszPassword: LPCTSTR;
|
|
dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM LogonUser}
|
|
|
|
function LogonUserExA(lpszUsername, lpszDomain, lpszPassword: LPCSTR;
|
|
dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
|
|
ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
|
|
{$EXTERNALSYM LogonUserExA}
|
|
function LogonUserExW(lpszUsername, lpszDomain, lpszPassword: LPCWSTR;
|
|
dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
|
|
ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
|
|
{$EXTERNALSYM LogonUserExW}
|
|
function LogonUserEx(lpszUsername, lpszDomain, lpszPassword: LPCTSTR;
|
|
dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
|
|
ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
|
|
{$EXTERNALSYM LogonUserEx}
|
|
|
|
function ImpersonateLoggedOnUser(hToken: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ImpersonateLoggedOnUser}
|
|
|
|
function CreateProcessAsUserA(hToken: HANDLE; lpApplicationName: LPCSTR;
|
|
lpCommandLine: LPSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
|
|
lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
|
|
dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCSTR;
|
|
const lpStartupInfo: STARTUPINFOA; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessAsUserA}
|
|
function CreateProcessAsUserW(hToken: HANDLE; lpApplicationName: LPCWSTR;
|
|
lpCommandLine: LPWSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
|
|
lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
|
|
dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
|
|
const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessAsUserW}
|
|
function CreateProcessAsUser(hToken: HANDLE; lpApplicationName: LPCTSTR;
|
|
lpCommandLine: LPTSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
|
|
lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
|
|
dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCTSTR;
|
|
const lpStartupInfo: STARTUPINFO; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessAsUser}
|
|
|
|
//
|
|
// LogonFlags
|
|
//
|
|
|
|
const
|
|
LOGON_WITH_PROFILE = $00000001;
|
|
{$EXTERNALSYM LOGON_WITH_PROFILE}
|
|
LOGON_NETCREDENTIALS_ONLY = $00000002;
|
|
{$EXTERNALSYM LOGON_NETCREDENTIALS_ONLY}
|
|
LOGON_ZERO_PASSWORD_BUFFER = DWORD($80000000);
|
|
{$EXTERNALSYM LOGON_ZERO_PASSWORD_BUFFER}
|
|
|
|
function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: LPCWSTR;
|
|
dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
|
|
dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
|
|
const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessWithLogonW}
|
|
|
|
function CreateProcessWithTokenW(hToken: HANDLE; dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
|
|
dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR; lpStartupInfo: LPSTARTUPINFOW;
|
|
lpProcessInformation: LPPROCESS_INFORMATION): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateProcessWithTokenW}
|
|
|
|
function ImpersonateAnonymousToken(ThreadHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ImpersonateAnonymousToken}
|
|
|
|
function DuplicateTokenEx(hExistingToken: HANDLE; dwDesiredAccess: DWORD;
|
|
lpTokenAttributes: LPSECURITY_ATTRIBUTES; ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL;
|
|
TokenType: TOKEN_TYPE; var phNewToken: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DuplicateTokenEx}
|
|
|
|
function CreateRestrictedToken(ExistingTokenHandle: HANDLE; Flags: DWORD;
|
|
DisableSidCount: DWORD; SidsToDisable: PSID_AND_ATTRIBUTES;
|
|
DeletePrivilegeCount: DWORD; PrivilegesToDelete: PLUID_AND_ATTRIBUTES;
|
|
RestrictedSidCount: DWORD; SidsToRestrict: PSID_AND_ATTRIBUTES;
|
|
var NewTokenHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateRestrictedToken}
|
|
|
|
function IsTokenRestricted(TokenHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM IsTokenRestricted}
|
|
|
|
function CheckTokenMembership(TokenHandle: HANDLE; SidToCheck: PSID; var IsMember: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM CheckTokenMembership}
|
|
|
|
function IsTokenUntrusted(TokenHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM IsTokenUntrusted}
|
|
|
|
//
|
|
// Thread pool API's
|
|
//
|
|
|
|
type
|
|
WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;
|
|
{$EXTERNALSYM WAITORTIMERCALLBACK}
|
|
TWaitOrTimerCallback = WAITORTIMERCALLBACKFUNC;
|
|
|
|
function RegisterWaitForSingleObject(var phNewWaitObject: HANDLE; hObject: HANDLE;
|
|
Callback: WAITORTIMERCALLBACK; Context: PVOID; dwMilliseconds, dwFlags: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM RegisterWaitForSingleObject}
|
|
|
|
function RegisterWaitForSingleObjectEx(hObject: HANDLE;
|
|
Callback: WAITORTIMERCALLBACK; Context: PVOID; dwMilliseconds, dwFlags: ULONG): HANDLE; stdcall;
|
|
{$EXTERNALSYM RegisterWaitForSingleObjectEx}
|
|
|
|
function UnregisterWait(WaitHandle: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM UnregisterWait}
|
|
|
|
function UnregisterWaitEx(WaitHandle, CompletionEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM UnregisterWaitEx}
|
|
|
|
function QueueUserWorkItem(Function_: LPTHREAD_START_ROUTINE; Context: PVOID;
|
|
Flags: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM QueueUserWorkItem}
|
|
|
|
function BindIoCompletionCallback(FileHandle: HANDLE;
|
|
Function_: LPOVERLAPPED_COMPLETION_ROUTINE; Flags: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM BindIoCompletionCallback}
|
|
|
|
function CreateTimerQueue: HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateTimerQueue}
|
|
|
|
function CreateTimerQueueTimer(var phNewTimer: HANDLE; TimerQueue: HANDLE;
|
|
Callback: WAITORTIMERCALLBACK; Parameter: PVOID; DueTime, Period: DWORD;
|
|
Flags: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateTimerQueueTimer}
|
|
|
|
function ChangeTimerQueueTimer(TimerQueue, Timer: HANDLE; DueTime, Period: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM ChangeTimerQueueTimer}
|
|
|
|
function DeleteTimerQueueTimer(TimerQueue, Timer, CompletionEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteTimerQueueTimer}
|
|
|
|
function DeleteTimerQueueEx(TimerQueue, CompletionEvent: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteTimerQueueEx}
|
|
|
|
function SetTimerQueueTimer(TimerQueue, Callback: WAITORTIMERCALLBACK;
|
|
Parameter: PVOID; DueTime, Period: DWORD; PreferIo: BOOL): HANDLE; stdcall;
|
|
{$EXTERNALSYM SetTimerQueueTimer}
|
|
|
|
function CancelTimerQueueTimer(TimerQueue, Timer: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM CancelTimerQueueTimer}
|
|
|
|
function DeleteTimerQueue(TimerQueue: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteTimerQueue}
|
|
|
|
//
|
|
// Plug-and-Play API's
|
|
//
|
|
|
|
const
|
|
HW_PROFILE_GUIDLEN = 39; // 36-characters plus NULL terminator
|
|
{$EXTERNALSYM HW_PROFILE_GUIDLEN}
|
|
MAX_PROFILE_LEN = 80;
|
|
{$EXTERNALSYM MAX_PROFILE_LEN}
|
|
|
|
DOCKINFO_UNDOCKED = $1;
|
|
{$EXTERNALSYM DOCKINFO_UNDOCKED}
|
|
DOCKINFO_DOCKED = $2;
|
|
{$EXTERNALSYM DOCKINFO_DOCKED}
|
|
DOCKINFO_USER_SUPPLIED = $4;
|
|
{$EXTERNALSYM DOCKINFO_USER_SUPPLIED}
|
|
DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_UNDOCKED;
|
|
{$EXTERNALSYM DOCKINFO_USER_UNDOCKED}
|
|
DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_DOCKED;
|
|
{$EXTERNALSYM DOCKINFO_USER_DOCKED}
|
|
|
|
type
|
|
LPHW_PROFILE_INFOA = ^HW_PROFILE_INFOA;
|
|
{$EXTERNALSYM LPHW_PROFILE_INFOA}
|
|
tagHW_PROFILE_INFOA = record
|
|
dwDockInfo: DWORD;
|
|
szHwProfileGuid: array [0..HW_PROFILE_GUIDLEN - 1] of AnsiChar;
|
|
szHwProfileName: array [0..MAX_PROFILE_LEN - 1] of AnsiChar;
|
|
end;
|
|
{$EXTERNALSYM tagHW_PROFILE_INFOA}
|
|
HW_PROFILE_INFOA = tagHW_PROFILE_INFOA;
|
|
{$EXTERNALSYM HW_PROFILE_INFOA}
|
|
THWProfileInfoA = HW_PROFILE_INFOA;
|
|
PHWProfileInfoA = LPHW_PROFILE_INFOA;
|
|
|
|
LPHW_PROFILE_INFOW = ^HW_PROFILE_INFOW;
|
|
{$EXTERNALSYM LPHW_PROFILE_INFOW}
|
|
tagHW_PROFILE_INFOW = record
|
|
dwDockInfo: DWORD;
|
|
szHwProfileGuid: array [0..HW_PROFILE_GUIDLEN - 1] of WCHAR;
|
|
szHwProfileName: array [0..MAX_PROFILE_LEN - 1] of WCHAR;
|
|
end;
|
|
{$EXTERNALSYM tagHW_PROFILE_INFOW}
|
|
HW_PROFILE_INFOW = tagHW_PROFILE_INFOW;
|
|
{$EXTERNALSYM HW_PROFILE_INFOW}
|
|
THWProfileInfoW = HW_PROFILE_INFOW;
|
|
PHWProfileInfoW = LPHW_PROFILE_INFOW;
|
|
|
|
{$IFDEF UNICODE}
|
|
HW_PROFILE_INFO = HW_PROFILE_INFOW;
|
|
{$EXTERNALSYM HW_PROFILE_INFO}
|
|
LPHW_PROFILE_INFO = LPHW_PROFILE_INFOW;
|
|
{$EXTERNALSYM LPHW_PROFILE_INFO}
|
|
THWProfileInfo = THWProfileInfoW;
|
|
PHWProfileInfo = PHWProfileInfoW;
|
|
{$ELSE}
|
|
HW_PROFILE_INFO = HW_PROFILE_INFOA;
|
|
{$EXTERNALSYM HW_PROFILE_INFO}
|
|
LPHW_PROFILE_INFO = LPHW_PROFILE_INFOA;
|
|
{$EXTERNALSYM LPHW_PROFILE_INFO}
|
|
THWProfileInfo = THWProfileInfoA;
|
|
PHWProfileInfo = PHWProfileInfoA;
|
|
{$ENDIF UNICODE}
|
|
|
|
function GetCurrentHwProfileA(var lpHwProfileInfo: HW_PROFILE_INFOA): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCurrentHwProfileA}
|
|
function GetCurrentHwProfileW(var lpHwProfileInfo: HW_PROFILE_INFOW): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCurrentHwProfileW}
|
|
function GetCurrentHwProfile(var lpHwProfileInfo: HW_PROFILE_INFO): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCurrentHwProfile}
|
|
|
|
//
|
|
// Performance counter API's
|
|
//
|
|
|
|
function QueryPerformanceCounter(var lpPerformanceCount: LARGE_INTEGER): BOOL; stdcall;
|
|
{$EXTERNALSYM QueryPerformanceCounter}
|
|
|
|
function QueryPerformanceFrequency(var lpFrequency: LARGE_INTEGER): BOOL; stdcall;
|
|
{$EXTERNALSYM QueryPerformanceFrequency}
|
|
|
|
function GetVersionExA(lpVersionInformation: LPOSVERSIONINFOA): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVersionExA}
|
|
function GetVersionExW(lpVersionInformation: LPOSVERSIONINFOW): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVersionExW}
|
|
function GetVersionEx(lpVersionInformation: LPOSVERSIONINFO): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVersionEx}
|
|
|
|
function VerifyVersionInfoA(var lpVersionInformation: OSVERSIONINFOEXA;
|
|
dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM VerifyVersionInfoA}
|
|
function VerifyVersionInfoW(var lpVersionInformation: OSVERSIONINFOEXW;
|
|
dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM VerifyVersionInfoW}
|
|
function VerifyVersionInfo(var lpVersionInformation: OSVERSIONINFOEX;
|
|
dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM VerifyVersionInfo}
|
|
|
|
// DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
|
|
// API functions.
|
|
//
|
|
|
|
// #include <winerror.h>
|
|
|
|
// Abnormal termination codes
|
|
|
|
const
|
|
TC_NORMAL = 0;
|
|
{$EXTERNALSYM TC_NORMAL}
|
|
TC_HARDERR = 1;
|
|
{$EXTERNALSYM TC_HARDERR}
|
|
TC_GP_TRAP = 2;
|
|
{$EXTERNALSYM TC_GP_TRAP}
|
|
TC_SIGNAL = 3;
|
|
{$EXTERNALSYM TC_SIGNAL}
|
|
|
|
//
|
|
// Power Management APIs
|
|
//
|
|
|
|
AC_LINE_OFFLINE = $00;
|
|
{$EXTERNALSYM AC_LINE_OFFLINE}
|
|
AC_LINE_ONLINE = $01;
|
|
{$EXTERNALSYM AC_LINE_ONLINE}
|
|
AC_LINE_BACKUP_POWER = $02;
|
|
{$EXTERNALSYM AC_LINE_BACKUP_POWER}
|
|
AC_LINE_UNKNOWN = $FF;
|
|
{$EXTERNALSYM AC_LINE_UNKNOWN}
|
|
|
|
BATTERY_FLAG_HIGH = $01;
|
|
{$EXTERNALSYM BATTERY_FLAG_HIGH}
|
|
BATTERY_FLAG_LOW = $02;
|
|
{$EXTERNALSYM BATTERY_FLAG_LOW}
|
|
BATTERY_FLAG_CRITICAL = $04;
|
|
{$EXTERNALSYM BATTERY_FLAG_CRITICAL}
|
|
BATTERY_FLAG_CHARGING = $08;
|
|
{$EXTERNALSYM BATTERY_FLAG_CHARGING}
|
|
BATTERY_FLAG_NO_BATTERY = $80;
|
|
{$EXTERNALSYM BATTERY_FLAG_NO_BATTERY}
|
|
BATTERY_FLAG_UNKNOWN = $FF;
|
|
{$EXTERNALSYM BATTERY_FLAG_UNKNOWN}
|
|
|
|
BATTERY_PERCENTAGE_UNKNOWN = $FF;
|
|
{$EXTERNALSYM BATTERY_PERCENTAGE_UNKNOWN}
|
|
|
|
BATTERY_LIFE_UNKNOWN = DWORD($FFFFFFFF);
|
|
{$EXTERNALSYM BATTERY_LIFE_UNKNOWN}
|
|
|
|
type
|
|
LPSYSTEM_POWER_STATUS = ^SYSTEM_POWER_STATUS;
|
|
{$EXTERNALSYM LPSYSTEM_POWER_STATUS}
|
|
_SYSTEM_POWER_STATUS = record
|
|
ACLineStatus: BYTE;
|
|
BatteryFlag: BYTE;
|
|
BatteryLifePercent: BYTE;
|
|
Reserved1: BYTE;
|
|
BatteryLifeTime: DWORD;
|
|
BatteryFullLifeTime: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _SYSTEM_POWER_STATUS}
|
|
SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS;
|
|
{$EXTERNALSYM SYSTEM_POWER_STATUS}
|
|
TSystemPowerStatus = SYSTEM_POWER_STATUS;
|
|
PSystemPowerStatus = LPSYSTEM_POWER_STATUS;
|
|
|
|
function GetSystemPowerStatus(var lpSystemPowerStatus: SYSTEM_POWER_STATUS): BOOL; stdcall;
|
|
{$EXTERNALSYM GetSystemPowerStatus}
|
|
|
|
function SetSystemPowerState(fSuspend, fForce: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM SetSystemPowerState}
|
|
|
|
//
|
|
// Very Large Memory API Subset
|
|
//
|
|
|
|
function AllocateUserPhysicalPages(hProcess: HANDLE; var NumberOfPages: ULONG_PTR;
|
|
PageArray: PULONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM AllocateUserPhysicalPages}
|
|
|
|
function FreeUserPhysicalPages(hProcess: HANDLE; var NumberOfPages: ULONG_PTR;
|
|
PageArray: PULONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM FreeUserPhysicalPages}
|
|
|
|
function MapUserPhysicalPages(VirtualAddress: PVOID; NumberOfPages: ULONG_PTR;
|
|
PageArray: PULONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM MapUserPhysicalPages}
|
|
|
|
function MapUserPhysicalPagesScatter(VirtualAddresses: PVOID; NumberOfPages: ULONG_PTR;
|
|
PageArray: PULONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM MapUserPhysicalPagesScatter}
|
|
|
|
function CreateJobObjectA(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateJobObjectA}
|
|
function CreateJobObjectW(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateJobObjectW}
|
|
function CreateJobObject(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateJobObject}
|
|
|
|
function OpenJobObjectA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenJobObjectA}
|
|
function OpenJobObjectW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenJobObjectW}
|
|
function OpenJobObject(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
|
|
{$EXTERNALSYM OpenJobObject}
|
|
|
|
function AssignProcessToJobObject(hJob, hProcess: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM AssignProcessToJobObject}
|
|
|
|
function TerminateJobObject(hJob: HANDLE; uExitCode: UINT): BOOL; stdcall;
|
|
{$EXTERNALSYM TerminateJobObject}
|
|
|
|
function QueryInformationJobObject(hJob: HANDLE; JobObjectInformationClass: JOBOBJECTINFOCLASS;
|
|
lpJobObjectInformation: LPVOID; cbJobObjectInformationLength: DWORD;
|
|
lpReturnLength: LPDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM QueryInformationJobObject}
|
|
|
|
function SetInformationJobObject(hJob: HANDLE; JobObjectInformationClass: JOBOBJECTINFOCLASS;
|
|
lpJobObjectInformation: LPVOID; cbJobObjectInformationLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM SetInformationJobObject}
|
|
|
|
function IsProcessInJob(ProcessHandle, JobHandle: HANDLE; var Result_: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM IsProcessInJob}
|
|
|
|
function CreateJobSet(NumJob: ULONG; UserJobSet: PJOB_SET_ARRAY; Flags: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM CreateJobSet}
|
|
|
|
function AddVectoredExceptionHandler(FirstHandler: ULONG;
|
|
VectoredHandler: PVECTORED_EXCEPTION_HANDLER): PVOID; stdcall;
|
|
{$EXTERNALSYM AddVectoredExceptionHandler}
|
|
|
|
function RemoveVectoredExceptionHandler(VectoredHandlerHandle: PVOID): ULONG; stdcall;
|
|
{$EXTERNALSYM RemoveVectoredExceptionHandler}
|
|
|
|
//
|
|
// New Volume Mount Point API.
|
|
//
|
|
|
|
function FindFirstVolumeA(lpszVolumeName: LPSTR; cchBufferLength: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstVolumeA}
|
|
function FindFirstVolumeW(lpszVolumeName: LPWSTR; cchBufferLength: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstVolumeW}
|
|
function FindFirstVolume(lpszVolumeName: LPTSTR; cchBufferLength: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstVolume}
|
|
|
|
function FindNextVolumeA(hFindVolume: HANDLE; lpszVolumeName: LPSTR;
|
|
cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextVolumeA}
|
|
function FindNextVolumeW(hFindVolume: HANDLE; lpszVolumeName: LPWSTR;
|
|
cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextVolumeW}
|
|
function FindNextVolume(hFindVolume: HANDLE; lpszVolumeName: LPTSTR;
|
|
cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextVolume}
|
|
|
|
function FindVolumeClose(hFindVolume: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM FindVolumeClose}
|
|
|
|
function FindFirstVolumeMountPointA(lpszRootPathName: LPCSTR;
|
|
lpszVolumeMountPoint: LPSTR; cchBufferLength: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstVolumeMountPointA}
|
|
function FindFirstVolumeMountPointW(lpszRootPathName: LPCWSTR;
|
|
lpszVolumeMountPoint: LPWSTR; cchBufferLength: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstVolumeMountPointW}
|
|
function FindFirstVolumeMountPoint(lpszRootPathName: LPCTSTR;
|
|
lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): HANDLE; stdcall;
|
|
{$EXTERNALSYM FindFirstVolumeMountPoint}
|
|
|
|
function FindNextVolumeMountPointA(hFindVolumeMountPoint: HANDLE;
|
|
lpszVolumeMountPoint: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextVolumeMountPointA}
|
|
function FindNextVolumeMountPointW(hFindVolumeMountPoint: HANDLE;
|
|
lpszVolumeMountPoint: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextVolumeMountPointW}
|
|
function FindNextVolumeMountPoint(hFindVolumeMountPoint: HANDLE;
|
|
lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM FindNextVolumeMountPoint}
|
|
|
|
function FindVolumeMountPointClose(hFindVolumeMountPoint: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM FindVolumeMountPointClose}
|
|
|
|
function SetVolumeMountPointA(lpszVolumeMountPoint, lpszVolumeName: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetVolumeMountPointA}
|
|
function SetVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetVolumeMountPointW}
|
|
function SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM SetVolumeMountPoint}
|
|
|
|
function DeleteVolumeMountPointA(lpszVolumeMountPoint: LPCSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteVolumeMountPointA}
|
|
function DeleteVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteVolumeMountPointW}
|
|
function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCTSTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeleteVolumeMountPoint}
|
|
|
|
function GetVolumeNameForVolumeMountPointA(lpszVolumeMountPoint: LPCSTR;
|
|
lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumeNameForVolumeMountPointA}
|
|
function GetVolumeNameForVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR;
|
|
lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumeNameForVolumeMountPointW}
|
|
function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCTSTR;
|
|
lpszVolumeName: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumeNameForVolumeMountPoint}
|
|
|
|
function GetVolumePathNameA(lpszFileName: LPCSTR; lpszVolumePathName: LPSTR;
|
|
cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumePathNameA}
|
|
function GetVolumePathNameW(lpszFileName: LPCWSTR; lpszVolumePathName: LPWSTR;
|
|
cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumePathNameW}
|
|
function GetVolumePathName(lpszFileName: LPCTSTR; lpszVolumePathName: LPTSTR;
|
|
cchBufferLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumePathName}
|
|
|
|
function GetVolumePathNamesForVolumeNameA(lpszVolumeName, lpszVolumePathNames: LPCSTR;
|
|
cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumePathNamesForVolumeNameA}
|
|
function GetVolumePathNamesForVolumeNameW(lpszVolumeName, lpszVolumePathNames: LPCWSTR;
|
|
cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumePathNamesForVolumeNameW}
|
|
function GetVolumePathNamesForVolumeName(lpszVolumeName, lpszVolumePathNames: LPCTSTR;
|
|
cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetVolumePathNamesForVolumeName}
|
|
|
|
const
|
|
ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = $00000001;
|
|
{$EXTERNALSYM ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID}
|
|
ACTCTX_FLAG_LANGID_VALID = $00000002;
|
|
{$EXTERNALSYM ACTCTX_FLAG_LANGID_VALID}
|
|
ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = $00000004;
|
|
{$EXTERNALSYM ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID}
|
|
ACTCTX_FLAG_RESOURCE_NAME_VALID = $00000008;
|
|
{$EXTERNALSYM ACTCTX_FLAG_RESOURCE_NAME_VALID}
|
|
ACTCTX_FLAG_SET_PROCESS_DEFAULT = $00000010;
|
|
{$EXTERNALSYM ACTCTX_FLAG_SET_PROCESS_DEFAULT}
|
|
ACTCTX_FLAG_APPLICATION_NAME_VALID = $00000020;
|
|
{$EXTERNALSYM ACTCTX_FLAG_APPLICATION_NAME_VALID}
|
|
ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = $00000040;
|
|
{$EXTERNALSYM ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF}
|
|
ACTCTX_FLAG_HMODULE_VALID = $00000080;
|
|
{$EXTERNALSYM ACTCTX_FLAG_HMODULE_VALID}
|
|
|
|
type
|
|
tagACTCTXA = record
|
|
cbSize: ULONG;
|
|
dwFlags: DWORD;
|
|
lpSource: LPCSTR;
|
|
wProcessorArchitecture: USHORT;
|
|
wLangId: LANGID;
|
|
lpAssemblyDirectory: LPCSTR;
|
|
lpResourceName: LPCSTR;
|
|
lpApplicationName: LPCSTR;
|
|
hModule: HMODULE;
|
|
end;
|
|
{$EXTERNALSYM tagACTCTXA}
|
|
ACTCTXA = tagACTCTXA;
|
|
{$EXTERNALSYM ACTCTXA}
|
|
PACTCTXA = ^ACTCTXA;
|
|
{$EXTERNALSYM PACTCTXA}
|
|
TActCtxA = ACTCTXA;
|
|
|
|
tagACTCTXW = record
|
|
cbSize: ULONG;
|
|
dwFlags: DWORD;
|
|
lpSource: LPCWSTR;
|
|
wProcessorArchitecture: USHORT;
|
|
wLangId: LANGID;
|
|
lpAssemblyDirectory: LPCWSTR;
|
|
lpResourceName: LPCWSTR;
|
|
lpApplicationName: LPCWSTR;
|
|
hModule: HMODULE;
|
|
end;
|
|
{$EXTERNALSYM tagACTCTXW}
|
|
ACTCTXW = tagACTCTXW;
|
|
{$EXTERNALSYM ACTCTXW}
|
|
PACTCTXW = ^ACTCTXW;
|
|
{$EXTERNALSYM PACTCTXW}
|
|
TActCtxW = ACTCTXW;
|
|
|
|
{$IFDEF UNICODE}
|
|
ACTCTX = ACTCTXW;
|
|
{$EXTERNALSYM ACTCTX}
|
|
PACTCTX = PACTCTXW;
|
|
{$EXTERNALSYM PACTCTX}
|
|
TActCtx = TActCtxW;
|
|
{$ELSE}
|
|
ACTCTX = ACTCTXA;
|
|
{$EXTERNALSYM ACTCTX}
|
|
PACTCTX = PACTCTXA;
|
|
{$EXTERNALSYM PACTCTX}
|
|
TActCtx = TActCtxA;
|
|
{$ENDIF UNICODE}
|
|
|
|
function CreateActCtxA(var pActCtx: ACTCTXA): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateActCtxA}
|
|
function CreateActCtxW(var pActCtx: ACTCTXW): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateActCtxW}
|
|
function CreateActCtx(var pActCtx: ACTCTX): HANDLE; stdcall;
|
|
{$EXTERNALSYM CreateActCtx}
|
|
|
|
procedure AddRefActCtx(hActCtx: HANDLE); stdcall;
|
|
{$EXTERNALSYM AddRefActCtx}
|
|
|
|
procedure ReleaseActCtx(hActCtx: HANDLE); stdcall;
|
|
{$EXTERNALSYM ReleaseActCtx}
|
|
|
|
function ZombifyActCtx(hActCtx: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM ZombifyActCtx}
|
|
|
|
function ActivateActCtx(hActCtx: HANDLE; var lpCookie: ULONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM ActivateActCtx}
|
|
|
|
const
|
|
DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = $00000001;
|
|
{$EXTERNALSYM DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION}
|
|
|
|
function DeactivateActCtx(dwFlags: DWORD; ulCookie: ULONG_PTR): BOOL; stdcall;
|
|
{$EXTERNALSYM DeactivateActCtx}
|
|
|
|
function GetCurrentActCtx(var lphActCtx: HANDLE): BOOL; stdcall;
|
|
{$EXTERNALSYM GetCurrentActCtx}
|
|
|
|
type
|
|
tagACTCTX_SECTION_KEYED_DATA_2600 = record
|
|
cbSize: ULONG;
|
|
ulDataFormatVersion: ULONG;
|
|
lpData: PVOID;
|
|
ulLength: ULONG;
|
|
lpSectionGlobalData: PVOID;
|
|
ulSectionGlobalDataLength: ULONG;
|
|
lpSectionBase: PVOID;
|
|
ulSectionTotalLength: ULONG;
|
|
hActCtx: HANDLE;
|
|
ulAssemblyRosterIndex: ULONG;
|
|
end;
|
|
{$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA_2600}
|
|
ACTCTX_SECTION_KEYED_DATA_2600 = tagACTCTX_SECTION_KEYED_DATA_2600;
|
|
{$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA_2600}
|
|
PACTCTX_SECTION_KEYED_DATA_2600 = ^ACTCTX_SECTION_KEYED_DATA_2600;
|
|
{$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA_2600}
|
|
PCACTCTX_SECTION_KEYED_DATA_2600 = ^ACTCTX_SECTION_KEYED_DATA_2600;
|
|
{$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA_2600}
|
|
TActCtxSectionKeyedData2600 = ACTCTX_SECTION_KEYED_DATA_2600;
|
|
PActCtxSectionKeyedData2600 = PACTCTX_SECTION_KEYED_DATA_2600;
|
|
|
|
tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = record
|
|
lpInformation: PVOID;
|
|
lpSectionBase: PVOID;
|
|
ulSectionLength: ULONG;
|
|
lpSectionGlobalDataBase: PVOID;
|
|
ulSectionGlobalDataLength: ULONG;
|
|
end;
|
|
{$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
|
|
ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
|
|
{$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
|
|
PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
|
|
{$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
|
|
PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
|
|
{$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
|
|
TActCtxSectionKeyedDataAssemblyMetadata = ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
|
|
PActCtxSectionKeyedDataAssemblyMetadata = PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
|
|
|
|
tagACTCTX_SECTION_KEYED_DATA = record
|
|
cbSize: ULONG;
|
|
ulDataFormatVersion: ULONG;
|
|
lpData: PVOID;
|
|
ulLength: ULONG;
|
|
lpSectionGlobalData: PVOID;
|
|
ulSectionGlobalDataLength: ULONG;
|
|
lpSectionBase: PVOID;
|
|
ulSectionTotalLength: ULONG;
|
|
hActCtx: HANDLE;
|
|
ulAssemblyRosterIndex: ULONG;
|
|
// 2600 stops here
|
|
ulFlags: ULONG;
|
|
AssemblyMetadata: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
|
|
end;
|
|
{$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA}
|
|
ACTCTX_SECTION_KEYED_DATA = tagACTCTX_SECTION_KEYED_DATA;
|
|
{$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA}
|
|
PACTCTX_SECTION_KEYED_DATA = ^ACTCTX_SECTION_KEYED_DATA;
|
|
{$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA}
|
|
PCACTCTX_SECTION_KEYED_DATA = ^ACTCTX_SECTION_KEYED_DATA;
|
|
{$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA}
|
|
TActCtxSectionKeyedData = ACTCTX_SECTION_KEYED_DATA;
|
|
PActCtxSectionKeyedData = PACTCTX_SECTION_KEYED_DATA;
|
|
|
|
const
|
|
FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = $00000001;
|
|
{$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX}
|
|
FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS = $00000002;
|
|
{$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS}
|
|
FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA = $00000004;
|
|
{$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA}
|
|
|
|
function FindActCtxSectionStringA(dwFlags: DWORD; const lpExtensionGuid: TGUID;
|
|
ulSectionId: ULONG; lpStringToFind: LPCSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
|
|
{$EXTERNALSYM FindActCtxSectionStringA}
|
|
function FindActCtxSectionStringW(dwFlags: DWORD; const lpExtensionGuid: TGUID;
|
|
ulSectionId: ULONG; lpStringToFind: LPCWSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
|
|
{$EXTERNALSYM FindActCtxSectionStringW}
|
|
function FindActCtxSectionString(dwFlags: DWORD; const lpExtensionGuid: TGUID;
|
|
ulSectionId: ULONG; lpStringToFind: LPCTSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
|
|
{$EXTERNALSYM FindActCtxSectionString}
|
|
|
|
function FindActCtxSectionGuid(dwFlags: DWORD; const lpExtensionGuid: TGUID;
|
|
ulSectionId: ULONG; const lpGuidToFind: TGUID; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
|
|
{$EXTERNALSYM FindActCtxSectionGuid}
|
|
|
|
type
|
|
_ACTIVATION_CONTEXT_BASIC_INFORMATION = record
|
|
hActCtx: HANDLE;
|
|
dwFlags: DWORD;
|
|
end;
|
|
{$EXTERNALSYM _ACTIVATION_CONTEXT_BASIC_INFORMATION}
|
|
ACTIVATION_CONTEXT_BASIC_INFORMATION = _ACTIVATION_CONTEXT_BASIC_INFORMATION;
|
|
{$EXTERNALSYM ACTIVATION_CONTEXT_BASIC_INFORMATION}
|
|
PACTIVATION_CONTEXT_BASIC_INFORMATION = ^ACTIVATION_CONTEXT_BASIC_INFORMATION;
|
|
{$EXTERNALSYM PACTIVATION_CONTEXT_BASIC_INFORMATION}
|
|
TActivationContextBasicInformation = ACTIVATION_CONTEXT_BASIC_INFORMATION;
|
|
PActivationContextBasicInformation = PACTIVATION_CONTEXT_BASIC_INFORMATION;
|
|
|
|
PCACTIVATION_CONTEXT_BASIC_INFORMATION = ^_ACTIVATION_CONTEXT_BASIC_INFORMATION;
|
|
{$EXTERNALSYM PCACTIVATION_CONTEXT_BASIC_INFORMATION}
|
|
|
|
const
|
|
ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED = 1;
|
|
{$EXTERNALSYM ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED}
|
|
|
|
QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = $00000004;
|
|
{$EXTERNALSYM QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX}
|
|
QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = $00000008;
|
|
{$EXTERNALSYM QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE}
|
|
QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = $00000010;
|
|
{$EXTERNALSYM QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS}
|
|
QUERY_ACTCTX_FLAG_NO_ADDREF = $80000000;
|
|
{$EXTERNALSYM QUERY_ACTCTX_FLAG_NO_ADDREF}
|
|
|
|
//
|
|
// switch (ulInfoClass)
|
|
//
|
|
// case ActivationContextBasicInformation:
|
|
// pvSubInstance == NULL
|
|
// pvBuffer is of type PACTIVATION_CONTEXT_BASIC_INFORMATION
|
|
//
|
|
// case ActivationContextDetailedInformation:
|
|
// pvSubInstance == NULL
|
|
// pvBuffer is of type PACTIVATION_CONTEXT_DETAILED_INFORMATION
|
|
//
|
|
// case AssemblyDetailedInformationInActivationContext:
|
|
// pvSubInstance is of type PULONG
|
|
// *pvSubInstance < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
|
|
// pvBuffer is of type PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
|
|
//
|
|
// case FileInformationInAssemblyOfAssemblyInActivationContext:
|
|
// pvSubInstance is of type PACTIVATION_CONTEXT_QUERY_INDEX
|
|
// pvSubInstance->ulAssemblyIndex < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
|
|
// pvSubInstance->ulFileIndexInAssembly < ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION::ulFileCount
|
|
// pvBuffer is of type PASSEMBLY_FILE_DETAILED_INFORMATION
|
|
//
|
|
// String are placed after the structs.
|
|
//
|
|
|
|
function QueryActCtxW(dwFlags: DWORD; hActCtx: HANDLE; pvSubInstance: PVOID;
|
|
ulInfoClass: ULONG; pvBuffer: PVOID; cbBuffer: SIZE_T;
|
|
pcbWrittenOrRequired: PSIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM QueryActCtxW}
|
|
|
|
type
|
|
PQUERYACTCTXW_FUNC = function(dwFlags: DWORD; hActCtx: HANDLE;
|
|
pvSubInstance: PVOID; ulInfoClass: ULONG; pvBuffer: PVOID; cbBuffer: SIZE_T;
|
|
pcbWrittenOrRequired: PSIZE_T): BOOL; stdcall;
|
|
{$EXTERNALSYM PQUERYACTCTXW_FUNC}
|
|
|
|
function ProcessIdToSessionId(dwProcessId: DWORD; var pSessionId: DWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM ProcessIdToSessionId}
|
|
|
|
function WTSGetActiveConsoleSessionId: DWORD; stdcall;
|
|
{$EXTERNALSYM WTSGetActiveConsoleSessionId}
|
|
|
|
function IsWow64Process(hProcess: HANDLE; var Wow64Process: BOOL): BOOL; stdcall;
|
|
{$EXTERNALSYM IsWow64Process}
|
|
|
|
function GetLogicalProcessorInformation(Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; ReturnedLength: PDWORD): BOOL; stdcall;
|
|
{$EXTERNALSYM GetLogicalProcessorInformation}
|
|
|
|
//
|
|
// NUMA Information routines.
|
|
//
|
|
|
|
function GetNumaHighestNodeNumber(var HighestNodeNumber: ULONG): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNumaHighestNodeNumber}
|
|
|
|
function GetNumaProcessorNode(Processor: UCHAR; var NodeNumber: UCHAR): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNumaProcessorNode}
|
|
|
|
function GetNumaNodeProcessorMask(Node: UCHAR; ProcessorMask: ULONGLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNumaNodeProcessorMask}
|
|
|
|
function GetNumaAvailableMemoryNode(Node: UCHAR; var AvailableBytes: ULONGLONG): BOOL; stdcall;
|
|
{$EXTERNALSYM GetNumaAvailableMemoryNode}
|
|
|
|
|
|
const
|
|
PROCESS_DEP_ENABLE = 1;
|
|
{$EXTERNALSYM PROCESS_DEP_ENABLE}
|
|
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION = 2;
|
|
{$EXTERNALSYM PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION}
|
|
|
|
{$IFDEF WINVISTA_UP}
|
|
{http://msdn2.microsoft.com/en-us/library/bb736299(VS.85).aspx}
|
|
function SetProcessDEPPolicy({__in}dwFlags : DWORD) : Boolean; stdcall;
|
|
{$EXTERNALSYM SetProcessDEPPolicy}
|
|
|
|
function GetNamedPipeServerSessionId(Pipe : HANDLE; out ServerSessionID : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeServerSessionId}
|
|
function GetNamedPipeServerProcessId(Pipe : HANDLE; out ServerProcessId : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeServerProcessId}
|
|
|
|
function GetNamedPipeClientProcessId(Pipe : HANDLE; out ClientProcessId : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeClientProcessId}
|
|
function GetNamedPipeClientSessionId(Pipe : HANDLE; out ClientSessionId : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeClientSessionId}
|
|
|
|
function GetNamedPipeClientComputerName(Pipe : HANDLE; out ClientComputerName : LPTSTR; ClientComputerNameLength : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeClientComputerName}
|
|
function GetNamedPipeClientComputerNameA(Pipe : HANDLE; out ClientComputerName : LPSTR; ClientComputerNameLength : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeClientComputerNameA}
|
|
function GetNamedPipeClientComputerNameW(Pipe : HANDLE; out ClientComputerName : LPWSTR; ClientComputerNameLength : ULONG) : Boolean; stdcall;
|
|
{$EXTERNALSYM GetNamedPipeClientComputerNameA}
|
|
{$ENDIF WINVISTA_UP}
|
|
|
|
|
|
|
|
{$ENDIF JWA_IMPLEMENTATIONSECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
implementation
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
const
|
|
kernel32 = 'kernel32.dll';
|
|
advapi32 = 'advapi32.dll';
|
|
{$IFDEF UNICODE}
|
|
AWSuffix = 'W';
|
|
{$ELSE}
|
|
AWSuffix = 'A';
|
|
{$ENDIF UNICODE}
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|
|
|
|
{$IFNDEF JWA_INTERFACESECTION}
|
|
|
|
procedure MoveMemory(Destination, Source: PVOID; Length: SIZE_T);
|
|
begin
|
|
Move(Source^, Destination^, Length);
|
|
end;
|
|
|
|
procedure CopyMemory(Destination, Source: PVOID; Length: SIZE_T);
|
|
begin
|
|
Move(Source^, Destination^, Length);
|
|
end;
|
|
|
|
procedure FillMemory(Destination: PVOID; Length: SIZE_T; Fill: BYTE);
|
|
begin
|
|
FillChar(Destination^, Length, Fill);
|
|
end;
|
|
|
|
procedure ZeroMemory(Destination: PVOID; Length: SIZE_T);
|
|
begin
|
|
FillChar(Destination^, Length, 0);
|
|
end;
|
|
|
|
function SecureZeroMemory({__in}ptr : PVOID;{__in}cnt : SIZE_T) : Pointer;
|
|
begin
|
|
FillChar(ptr^, cnt, 0);
|
|
result := ptr;
|
|
end;
|
|
|
|
function FreeModule(hLibModule: HMODULE): BOOL;
|
|
begin
|
|
Result := FreeLibrary(hLibModule);
|
|
end;
|
|
|
|
function MakeProcInstance(lpProc: FARPROC; hInstance: HINST): FARPROC;
|
|
begin
|
|
Result := lpProc;
|
|
end;
|
|
|
|
procedure FreeProcInstance(lpProc: FARPROC);
|
|
begin
|
|
{ nothing }
|
|
end;
|
|
|
|
function GlobalLRUNewest(h: HANDLE): HANDLE;
|
|
begin
|
|
Result := H;
|
|
end;
|
|
|
|
function GlobalLRUOldest(h: HANDLE): HANDLE;
|
|
begin
|
|
Result := H;
|
|
end;
|
|
|
|
function GlobalDiscard(h: HANDLE): HANDLE;
|
|
begin
|
|
Result := GlobalReAlloc(h, 0, GMEM_MOVEABLE);
|
|
end;
|
|
|
|
function LocalDiscard(h: HLOCAL): HLOCAL;
|
|
begin
|
|
Result := LocalReAlloc(h, 0, LMEM_MOVEABLE);
|
|
end;
|
|
|
|
function GetFreeSpace(w: WORD): DWORD;
|
|
begin
|
|
Result := $100000;
|
|
end;
|
|
|
|
{added tweak from
|
|
http://sourceforge.net/tracker/index.php?func=detail&aid=1662760&group_id=121894&atid=694029
|
|
by
|
|
Marco
|
|
}
|
|
function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
|
|
begin
|
|
{$ifdef CPU64}
|
|
Result := PVOID(InterlockedExchange64(LONGLONG(Target), LONGLONG(Value)));
|
|
{$else}
|
|
Result := PVOID(InterlockedExchange(LONG(Target), LONG(Value)));
|
|
{$endif CPU64}
|
|
end;
|
|
|
|
{added tweak from
|
|
http://sourceforge.net/tracker/index.php?func=detail&aid=1662760&group_id=121894&atid=694029
|
|
by Marco
|
|
}
|
|
function InterlockedCompareExchangePointer(var Destination: PVOID; Exchange, Comperand: PVOID): PVOID;
|
|
begin
|
|
{$ifdef CPU64}
|
|
Result := PVOID(InterlockedCompareExchange64(LONGLONG(Destination),
|
|
LONGLONG(Exchange), LONGLONG(Comperand)));
|
|
{$else CPU64}
|
|
Result := PVOID(InterlockedCompareExchange(LONG(Destination),
|
|
LONG(Exchange), LONG(Comperand)));
|
|
{$endif CPU64}
|
|
end;
|
|
|
|
function UnlockResource(hResData: HANDLE): BOOL;
|
|
begin
|
|
Result := False;
|
|
end;
|
|
|
|
function HasOverlappedIoCompleted(const lpOverlapped: OVERLAPPED): BOOL;
|
|
begin
|
|
Result := NTSTATUS(lpOverlapped.Internal) <> STATUS_PENDING;
|
|
end;
|
|
|
|
// 64 bit interlocked functions from Will
|
|
|
|
function InterlockedAnd64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Destination;
|
|
until (InterlockedCompareExchange64(Destination, Result and Value, Result) = Result);
|
|
end;
|
|
|
|
function InterlockedOr64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Destination;
|
|
until (InterlockedCompareExchange64(Destination, Result or Value, Result) = Result);
|
|
end;
|
|
|
|
function InterlockedXor64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Destination;
|
|
until (InterlockedCompareExchange64(Destination, Result xor Value, Result) = Result);
|
|
end;
|
|
|
|
function InterlockedIncrement64(var Addend: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Addend;
|
|
until (InterlockedCompareExchange64(Addend, Result + 1, Result) = Result);
|
|
Inc(Result);
|
|
end;
|
|
|
|
function InterlockedDecrement64(var Addend: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Addend;
|
|
until (InterlockedCompareExchange64(Addend, Result - 1, Result) = Result);
|
|
Dec(Result);
|
|
end;
|
|
|
|
function InterlockedExchange64(var Target: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Target;
|
|
until (InterlockedCompareExchange64(Target, Value, Result) = Result);
|
|
end;
|
|
|
|
function InterlockedExchangeAdd64(var Addend: LONGLONG; Value: LONGLONG): LONGLONG;
|
|
begin
|
|
repeat
|
|
Result := Addend;
|
|
until (InterlockedCompareExchange64(Addend, Result + Value, Result) = Result);
|
|
end;
|
|
|
|
{ MVB:
|
|
The implementation of CreateMutex only interpretes bInitialOwner as True if
|
|
it's ordinal value is 1, all other values are interpreted as False. Delphi
|
|
compiles Longbool(True) as $FFFFFFFF which is consequently interpreted as
|
|
False. Changing the bInitalOwner parameter type to Boolean fixes the problem
|
|
(Boolean(True) = 1) but that would be implementation specific and might break
|
|
in the future, though unlikely. Hence the CreateMutex function here which
|
|
explicitly passes LongBool(1) instead of LongBool(True).
|
|
|
|
|
|
CW@2009:
|
|
bInitialOwner as LongBool doesn't help at all. So I set it to DWORD to have the
|
|
same size (4). Today, LongBool is the same as BOOL.
|
|
}
|
|
|
|
type
|
|
TCreateMutexA = function(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: DWORD; lpName: LPCSTR): HANDLE; stdcall;
|
|
TCreateMutexW = function(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: DWORD; lpName: LPCWSTR): HANDLE; stdcall;
|
|
|
|
var
|
|
_CreateMutexA: Pointer;
|
|
_CreateMutexW: Pointer;
|
|
|
|
function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
|
|
begin
|
|
GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
|
|
Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, DWORD(Boolean(bInitialOwner)), lpName)
|
|
end;
|
|
|
|
function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
|
|
begin
|
|
GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
|
|
Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, DWORD(Boolean(bInitialOwner)), lpName)
|
|
end;
|
|
|
|
function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCTSTR): HANDLE;
|
|
begin
|
|
{$IFDEF UNICODE}
|
|
result := CreateMutexW(lpMutexAttributes, bInitialOwner, lpName);
|
|
{$ELSE}
|
|
result := CreateMutexA(lpMutexAttributes, bInitialOwner, lpName);
|
|
{$ENDIF UNICODE}
|
|
end;
|
|
|
|
{$IFDEF DYNAMIC_LINK}
|
|
|
|
var
|
|
_InterlockedCompareExchange64: Pointer;
|
|
|
|
function InterlockedCompareExchange64;
|
|
begin
|
|
GetProcedureAddress(_InterlockedCompareExchange64, kernel32, 'InterlockedCompareExchange64');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedCompareExchange64]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedIncrement: Pointer;
|
|
|
|
function InterlockedIncrement;
|
|
begin
|
|
GetProcedureAddress(_InterlockedIncrement, kernel32, 'InterlockedIncrement');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedIncrement]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedDecrement: Pointer;
|
|
|
|
function InterlockedDecrement;
|
|
begin
|
|
GetProcedureAddress(_InterlockedDecrement, kernel32, 'InterlockedDecrement');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedDecrement]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedExchange: Pointer;
|
|
|
|
function InterlockedExchange;
|
|
begin
|
|
GetProcedureAddress(_InterlockedExchange, kernel32, 'InterlockedExchange');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedExchange]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedExchangeAdd: Pointer;
|
|
|
|
function InterlockedExchangeAdd;
|
|
begin
|
|
GetProcedureAddress(_InterlockedExchangeAdd, kernel32, 'InterlockedExchangeAdd');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedExchangeAdd]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedCompareExchange: Pointer;
|
|
|
|
function InterlockedCompareExchange;
|
|
begin
|
|
GetProcedureAddress(_InterlockedCompareExchange, kernel32, 'InterlockedCompareExchange');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedCompareExchange]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitializeSListHead: Pointer;
|
|
|
|
procedure InitializeSListHead;
|
|
begin
|
|
GetProcedureAddress(_InitializeSListHead, kernel32, 'InitializeSListHead');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitializeSListHead]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedPopEntrySList: Pointer;
|
|
|
|
function InterlockedPopEntrySList;
|
|
begin
|
|
GetProcedureAddress(_InterlockedPopEntrySList, kernel32, 'InterlockedPopEntrySList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedPopEntrySList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedPushEntrySList: Pointer;
|
|
|
|
function InterlockedPushEntrySList;
|
|
begin
|
|
GetProcedureAddress(_InterlockedPushEntrySList, kernel32, 'InterlockedPushEntrySList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedPushEntrySList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InterlockedFlushSList: Pointer;
|
|
|
|
function InterlockedFlushSList;
|
|
begin
|
|
GetProcedureAddress(_InterlockedFlushSList, kernel32, 'InterlockedFlushSList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InterlockedFlushSList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryDepthSList: Pointer;
|
|
|
|
function QueryDepthSList;
|
|
begin
|
|
GetProcedureAddress(_QueryDepthSList, kernel32, 'QueryDepthSList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryDepthSList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeResource: Pointer;
|
|
|
|
function FreeResource;
|
|
begin
|
|
GetProcedureAddress(_FreeResource, kernel32, 'FreeResource');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LockResource: Pointer;
|
|
|
|
function LockResource;
|
|
begin
|
|
GetProcedureAddress(_LockResource, kernel32, 'LockResource');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LockResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeLibrary: Pointer;
|
|
|
|
function FreeLibrary;
|
|
begin
|
|
GetProcedureAddress(_FreeLibrary, kernel32, 'FreeLibrary');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeLibrary]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeLibraryAndExitThread: Pointer;
|
|
|
|
procedure FreeLibraryAndExitThread;
|
|
begin
|
|
GetProcedureAddress(_FreeLibraryAndExitThread, kernel32, 'FreeLibraryAndExitThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeLibraryAndExitThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DisableThreadLibraryCalls: Pointer;
|
|
|
|
function DisableThreadLibraryCalls;
|
|
begin
|
|
GetProcedureAddress(_DisableThreadLibraryCalls, kernel32, 'DisableThreadLibraryCalls');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DisableThreadLibraryCalls]
|
|
end;
|
|
end;
|
|
|
|
// MVB TODO Dynamic linking for GetProcAddress doesn't make much sense, does it? Same for LoadLibrary.
|
|
|
|
var
|
|
_GetProcAddress: Pointer;
|
|
|
|
function GetProcAddress;
|
|
begin
|
|
GetProcedureAddress(_GetProcAddress, kernel32, 'GetProcAddress');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcAddress]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVersion: Pointer;
|
|
|
|
function GetVersion;
|
|
begin
|
|
GetProcedureAddress(_GetVersion, kernel32, 'GetVersion');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVersion]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalAlloc: Pointer;
|
|
|
|
function GlobalAlloc;
|
|
begin
|
|
GetProcedureAddress(_GlobalAlloc, kernel32, 'GlobalAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalReAlloc: Pointer;
|
|
|
|
function GlobalReAlloc;
|
|
begin
|
|
GetProcedureAddress(_GlobalReAlloc, kernel32, 'GlobalReAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalReAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalSize: Pointer;
|
|
|
|
function GlobalSize;
|
|
begin
|
|
GetProcedureAddress(_GlobalSize, kernel32, 'GlobalSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalFlags: Pointer;
|
|
|
|
function GlobalFlags;
|
|
begin
|
|
GetProcedureAddress(_GlobalFlags, kernel32, 'GlobalFlags');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalFlags]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalLock: Pointer;
|
|
|
|
function GlobalLock;
|
|
begin
|
|
GetProcedureAddress(_GlobalLock, kernel32, 'GlobalLock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalLock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalHandle: Pointer;
|
|
|
|
function GlobalHandle;
|
|
begin
|
|
GetProcedureAddress(_GlobalHandle, kernel32, 'GlobalHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalUnlock: Pointer;
|
|
|
|
function GlobalUnlock;
|
|
begin
|
|
GetProcedureAddress(_GlobalUnlock, kernel32, 'GlobalUnlock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalUnlock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalFree: Pointer;
|
|
|
|
function GlobalFree;
|
|
begin
|
|
GetProcedureAddress(_GlobalFree, kernel32, 'GlobalFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalCompact: Pointer;
|
|
|
|
function GlobalCompact;
|
|
begin
|
|
GetProcedureAddress(_GlobalCompact, kernel32, 'GlobalCompact');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalCompact]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalFix: Pointer;
|
|
|
|
procedure GlobalFix;
|
|
begin
|
|
GetProcedureAddress(_GlobalFix, kernel32, 'GlobalFix');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalFix]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalUnfix: Pointer;
|
|
|
|
procedure GlobalUnfix;
|
|
begin
|
|
GetProcedureAddress(_GlobalUnfix, kernel32, 'GlobalUnfix');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalUnfix]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalWire: Pointer;
|
|
|
|
function GlobalWire;
|
|
begin
|
|
GetProcedureAddress(_GlobalWire, kernel32, 'GlobalWire');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalWire]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalUnWire: Pointer;
|
|
|
|
function GlobalUnWire;
|
|
begin
|
|
GetProcedureAddress(_GlobalUnWire, kernel32, 'GlobalUnWire');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalUnWire]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalMemoryStatus: Pointer;
|
|
|
|
procedure GlobalMemoryStatus;
|
|
begin
|
|
GetProcedureAddress(_GlobalMemoryStatus, kernel32, 'GlobalMemoryStatus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalMemoryStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalMemoryStatusEx: Pointer;
|
|
|
|
function GlobalMemoryStatusEx;
|
|
begin
|
|
GetProcedureAddress(_GlobalMemoryStatusEx, kernel32, 'GlobalMemoryStatusEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalMemoryStatusEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalAlloc: Pointer;
|
|
|
|
function LocalAlloc;
|
|
begin
|
|
GetProcedureAddress(_LocalAlloc, kernel32, 'LocalAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalReAlloc: Pointer;
|
|
|
|
function LocalReAlloc;
|
|
begin
|
|
GetProcedureAddress(_LocalReAlloc, kernel32, 'LocalReAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalReAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalLock: Pointer;
|
|
|
|
function LocalLock;
|
|
begin
|
|
GetProcedureAddress(_LocalLock, kernel32, 'LocalLock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalLock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalHandle: Pointer;
|
|
|
|
function LocalHandle;
|
|
begin
|
|
GetProcedureAddress(_LocalHandle, kernel32, 'LocalHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalUnlock: Pointer;
|
|
|
|
function LocalUnlock;
|
|
begin
|
|
GetProcedureAddress(_LocalUnlock, kernel32, 'LocalUnlock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalUnlock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalSize: Pointer;
|
|
|
|
function LocalSize;
|
|
begin
|
|
GetProcedureAddress(_LocalSize, kernel32, 'LocalSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalFlags: Pointer;
|
|
|
|
function LocalFlags;
|
|
begin
|
|
GetProcedureAddress(_LocalFlags, kernel32, 'LocalFlags');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalFlags]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalFree: Pointer;
|
|
|
|
function LocalFree;
|
|
begin
|
|
GetProcedureAddress(_LocalFree, kernel32, 'LocalFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalShrink: Pointer;
|
|
|
|
function LocalShrink;
|
|
begin
|
|
GetProcedureAddress(_LocalShrink, kernel32, 'LocalShrink');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalShrink]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalCompact: Pointer;
|
|
|
|
function LocalCompact;
|
|
begin
|
|
GetProcedureAddress(_LocalCompact, kernel32, 'LocalCompact');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalCompact]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlushInstructionCache: Pointer;
|
|
|
|
function FlushInstructionCache;
|
|
begin
|
|
GetProcedureAddress(_FlushInstructionCache, kernel32, 'FlushInstructionCache');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlushInstructionCache]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualAlloc: Pointer;
|
|
|
|
function VirtualAlloc;
|
|
begin
|
|
GetProcedureAddress(_VirtualAlloc, kernel32, 'VirtualAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualFree: Pointer;
|
|
|
|
function VirtualFree;
|
|
begin
|
|
GetProcedureAddress(_VirtualFree, kernel32, 'VirtualFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualProtect: Pointer;
|
|
|
|
function VirtualProtect;
|
|
begin
|
|
GetProcedureAddress(_VirtualProtect, kernel32, 'VirtualProtect');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualProtect]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualQuery: Pointer;
|
|
|
|
function VirtualQuery;
|
|
begin
|
|
GetProcedureAddress(_VirtualQuery, kernel32, 'VirtualQuery');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualQuery]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualAllocEx: Pointer;
|
|
|
|
function VirtualAllocEx;
|
|
begin
|
|
GetProcedureAddress(_VirtualAllocEx, kernel32, 'VirtualAllocEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualAllocEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetWriteWatch: Pointer;
|
|
|
|
function GetWriteWatch;
|
|
begin
|
|
GetProcedureAddress(_GetWriteWatch, kernel32, 'GetWriteWatch');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetWriteWatch]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ResetWriteWatch: Pointer;
|
|
|
|
function ResetWriteWatch;
|
|
begin
|
|
GetProcedureAddress(_ResetWriteWatch, kernel32, 'ResetWriteWatch');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ResetWriteWatch]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLargePageMinimum: Pointer;
|
|
|
|
function GetLargePageMinimum;
|
|
begin
|
|
GetProcedureAddress(_GetLargePageMinimum, kernel32, 'GetLargePageMinimum');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLargePageMinimum]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualFreeEx: Pointer;
|
|
|
|
function VirtualFreeEx;
|
|
begin
|
|
GetProcedureAddress(_VirtualFreeEx, kernel32, 'VirtualFreeEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualFreeEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualProtectEx: Pointer;
|
|
|
|
function VirtualProtectEx;
|
|
begin
|
|
GetProcedureAddress(_VirtualProtectEx, kernel32, 'VirtualProtectEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualProtectEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualQueryEx: Pointer;
|
|
|
|
function VirtualQueryEx;
|
|
begin
|
|
GetProcedureAddress(_VirtualQueryEx, kernel32, 'VirtualQueryEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualQueryEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapCreate: Pointer;
|
|
|
|
function HeapCreate;
|
|
begin
|
|
GetProcedureAddress(_HeapCreate, kernel32, 'HeapCreate');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapCreate]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapDestroy: Pointer;
|
|
|
|
function HeapDestroy;
|
|
begin
|
|
GetProcedureAddress(_HeapDestroy, kernel32, 'HeapDestroy');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapDestroy]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapAlloc: Pointer;
|
|
|
|
function HeapAlloc;
|
|
begin
|
|
GetProcedureAddress(_HeapAlloc, kernel32, 'HeapAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapReAlloc: Pointer;
|
|
|
|
function HeapReAlloc;
|
|
begin
|
|
GetProcedureAddress(_HeapReAlloc, kernel32, 'HeapReAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapReAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapFree: Pointer;
|
|
|
|
function HeapFree;
|
|
begin
|
|
GetProcedureAddress(_HeapFree, kernel32, 'HeapFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapSize: Pointer;
|
|
|
|
function HeapSize;
|
|
begin
|
|
GetProcedureAddress(_HeapSize, kernel32, 'HeapSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapValidate: Pointer;
|
|
|
|
function HeapValidate;
|
|
begin
|
|
GetProcedureAddress(_HeapValidate, kernel32, 'HeapValidate');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapValidate]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapCompact: Pointer;
|
|
|
|
function HeapCompact;
|
|
begin
|
|
GetProcedureAddress(_HeapCompact, kernel32, 'HeapCompact');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapCompact]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessHeap: Pointer;
|
|
|
|
function GetProcessHeap;
|
|
begin
|
|
GetProcedureAddress(_GetProcessHeap, kernel32, 'GetProcessHeap');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessHeap]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessHeaps: Pointer;
|
|
|
|
function GetProcessHeaps;
|
|
begin
|
|
GetProcedureAddress(_GetProcessHeaps, kernel32, 'GetProcessHeaps');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessHeaps]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapLock: Pointer;
|
|
|
|
function HeapLock;
|
|
begin
|
|
GetProcedureAddress(_HeapLock, kernel32, 'HeapLock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapLock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapUnlock: Pointer;
|
|
|
|
function HeapUnlock;
|
|
begin
|
|
GetProcedureAddress(_HeapUnlock, kernel32, 'HeapUnlock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapUnlock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapWalk: Pointer;
|
|
|
|
function HeapWalk;
|
|
begin
|
|
GetProcedureAddress(_HeapWalk, kernel32, 'HeapWalk');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapWalk]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapSetInformation: Pointer;
|
|
|
|
function HeapSetInformation;
|
|
begin
|
|
GetProcedureAddress(_HeapSetInformation, kernel32, 'HeapSetInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapSetInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_HeapQueryInformation: Pointer;
|
|
|
|
function HeapQueryInformation;
|
|
begin
|
|
GetProcedureAddress(_HeapQueryInformation, kernel32, 'HeapQueryInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_HeapQueryInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetBinaryTypeA: Pointer;
|
|
|
|
function GetBinaryTypeA;
|
|
begin
|
|
GetProcedureAddress(_GetBinaryTypeA, kernel32, 'GetBinaryTypeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetBinaryTypeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetBinaryTypeW: Pointer;
|
|
|
|
function GetBinaryTypeW;
|
|
begin
|
|
GetProcedureAddress(_GetBinaryTypeW, kernel32, 'GetBinaryTypeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetBinaryTypeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetBinaryType: Pointer;
|
|
|
|
function GetBinaryType;
|
|
begin
|
|
GetProcedureAddress(_GetBinaryType, kernel32, 'GetBinaryType' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetBinaryType]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetShortPathNameA: Pointer;
|
|
|
|
function GetShortPathNameA;
|
|
begin
|
|
GetProcedureAddress(_GetShortPathNameA, kernel32, 'GetShortPathNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetShortPathNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetShortPathNameW: Pointer;
|
|
|
|
function GetShortPathNameW;
|
|
begin
|
|
GetProcedureAddress(_GetShortPathNameW, kernel32, 'GetShortPathNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetShortPathNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetShortPathName: Pointer;
|
|
|
|
function GetShortPathName;
|
|
begin
|
|
GetProcedureAddress(_GetShortPathName, kernel32, 'GetShortPathName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetShortPathName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLongPathNameA: Pointer;
|
|
|
|
function GetLongPathNameA;
|
|
begin
|
|
GetProcedureAddress(_GetLongPathNameA, kernel32, 'GetLongPathNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLongPathNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLongPathNameW: Pointer;
|
|
|
|
function GetLongPathNameW;
|
|
begin
|
|
GetProcedureAddress(_GetLongPathNameW, kernel32, 'GetLongPathNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLongPathNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLongPathName: Pointer;
|
|
|
|
function GetLongPathName;
|
|
begin
|
|
GetProcedureAddress(_GetLongPathName, kernel32, 'GetLongPathName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLongPathName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessAffinityMask: Pointer;
|
|
|
|
function GetProcessAffinityMask;
|
|
begin
|
|
GetProcedureAddress(_GetProcessAffinityMask, kernel32, 'GetProcessAffinityMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessAffinityMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetProcessAffinityMask: Pointer;
|
|
|
|
function SetProcessAffinityMask;
|
|
begin
|
|
GetProcedureAddress(_SetProcessAffinityMask, kernel32, 'SetProcessAffinityMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetProcessAffinityMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessHandleCount: Pointer;
|
|
|
|
function GetProcessHandleCount;
|
|
begin
|
|
GetProcedureAddress(_GetProcessHandleCount, kernel32, 'GetProcessHandleCount');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessHandleCount]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessTimes: Pointer;
|
|
|
|
function GetProcessTimes;
|
|
begin
|
|
GetProcedureAddress(_GetProcessTimes, kernel32, 'GetProcessTimes');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessTimes]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessIoCounters: Pointer;
|
|
|
|
function GetProcessIoCounters;
|
|
begin
|
|
GetProcedureAddress(_GetProcessIoCounters, kernel32, 'GetProcessIoCounters');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessIoCounters]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessWorkingSetSize: Pointer;
|
|
|
|
function GetProcessWorkingSetSize;
|
|
begin
|
|
GetProcedureAddress(_GetProcessWorkingSetSize, kernel32, 'GetProcessWorkingSetSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessWorkingSetSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessWorkingSetSizeEx: Pointer;
|
|
|
|
function GetProcessWorkingSetSizeEx;
|
|
begin
|
|
GetProcedureAddress(_GetProcessWorkingSetSizeEx, kernel32, 'GetProcessWorkingSetSizeEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessWorkingSetSizeEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetProcessWorkingSetSize: Pointer;
|
|
|
|
function SetProcessWorkingSetSize;
|
|
begin
|
|
GetProcedureAddress(_SetProcessWorkingSetSize, kernel32, 'SetProcessWorkingSetSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetProcessWorkingSetSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetProcessWorkingSetSizeEx: Pointer;
|
|
|
|
function SetProcessWorkingSetSizeEx;
|
|
begin
|
|
GetProcedureAddress(_SetProcessWorkingSetSizeEx, kernel32, 'SetProcessWorkingSetSizeEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetProcessWorkingSetSizeEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenProcess: Pointer;
|
|
|
|
function OpenProcess;
|
|
begin
|
|
GetProcedureAddress(_OpenProcess, kernel32, 'OpenProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentProcess: Pointer;
|
|
|
|
function GetCurrentProcess;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentProcess, kernel32, 'GetCurrentProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentProcessId: Pointer;
|
|
|
|
function GetCurrentProcessId;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentProcessId, kernel32, 'GetCurrentProcessId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentProcessId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ExitProcess: Pointer;
|
|
|
|
procedure ExitProcess;
|
|
begin
|
|
GetProcedureAddress(_ExitProcess, kernel32, 'ExitProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ExitProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TerminateProcess: Pointer;
|
|
|
|
function TerminateProcess;
|
|
begin
|
|
GetProcedureAddress(_TerminateProcess, kernel32, 'TerminateProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TerminateProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetExitCodeProcess: Pointer;
|
|
|
|
function GetExitCodeProcess;
|
|
begin
|
|
GetProcedureAddress(_GetExitCodeProcess, kernel32, 'GetExitCodeProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetExitCodeProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FatalExit: Pointer;
|
|
|
|
procedure FatalExit;
|
|
begin
|
|
GetProcedureAddress(_FatalExit, kernel32, 'FatalExit');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FatalExit]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEnvironmentStringsW: Pointer;
|
|
|
|
function GetEnvironmentStringsW;
|
|
begin
|
|
GetProcedureAddress(_GetEnvironmentStringsW, kernel32, 'GetEnvironmentStringsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEnvironmentStringsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEnvironmentStrings: Pointer;
|
|
|
|
function GetEnvironmentStrings;
|
|
begin
|
|
GetProcedureAddress(_GetEnvironmentStrings, kernel32, 'GetEnvironmentStrings' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEnvironmentStrings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEnvironmentStringsA: Pointer;
|
|
|
|
function GetEnvironmentStringsA;
|
|
begin
|
|
GetProcedureAddress(_GetEnvironmentStringsA, kernel32, 'GetEnvironmentStringsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEnvironmentStringsA]
|
|
end;
|
|
end;
|
|
|
|
|
|
{$IFDEF WIN2003_UP}
|
|
var
|
|
_SetEnvironmentStringsA: Pointer;
|
|
|
|
function SetEnvironmentStringsA;
|
|
begin
|
|
GetProcedureAddress(_SetEnvironmentStringsA, kernel32, 'SetEnvironmentStringsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEnvironmentStringsA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEnvironmentStringsW: Pointer;
|
|
|
|
function SetEnvironmentStringsW;
|
|
begin
|
|
GetProcedureAddress(_SetEnvironmentStringsW, kernel32, 'SetEnvironmentStringsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEnvironmentStringsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEnvironmentStrings: Pointer;
|
|
|
|
function SetEnvironmentStrings;
|
|
begin
|
|
GetProcedureAddress(_SetEnvironmentStrings, kernel32, 'SetEnvironmentStrings' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEnvironmentStrings]
|
|
end;
|
|
end;
|
|
|
|
{$ENDIF WIN2003_UP}
|
|
|
|
var
|
|
_FreeEnvironmentStringsA: Pointer;
|
|
|
|
function FreeEnvironmentStringsA;
|
|
begin
|
|
GetProcedureAddress(_FreeEnvironmentStringsA, kernel32, 'FreeEnvironmentStringsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeEnvironmentStringsA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeEnvironmentStringsW: Pointer;
|
|
|
|
function FreeEnvironmentStringsW;
|
|
begin
|
|
GetProcedureAddress(_FreeEnvironmentStringsW, kernel32, 'FreeEnvironmentStringsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeEnvironmentStringsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeEnvironmentStrings: Pointer;
|
|
|
|
function FreeEnvironmentStrings;
|
|
begin
|
|
GetProcedureAddress(_FreeEnvironmentStrings, kernel32, 'FreeEnvironmentStrings' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeEnvironmentStrings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RaiseException: Pointer;
|
|
|
|
procedure RaiseException;
|
|
begin
|
|
GetProcedureAddress(_RaiseException, kernel32, 'RaiseException');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RaiseException]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UnhandledExceptionFilter: Pointer;
|
|
|
|
function UnhandledExceptionFilter;
|
|
begin
|
|
GetProcedureAddress(_UnhandledExceptionFilter, kernel32, 'UnhandledExceptionFilter');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UnhandledExceptionFilter]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetUnhandledExceptionFilter: Pointer;
|
|
|
|
function SetUnhandledExceptionFilter;
|
|
begin
|
|
GetProcedureAddress(_SetUnhandledExceptionFilter, kernel32, 'SetUnhandledExceptionFilter');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetUnhandledExceptionFilter]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFiber: Pointer;
|
|
|
|
function CreateFiber;
|
|
begin
|
|
GetProcedureAddress(_CreateFiber, kernel32, 'CreateFiber');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFiber]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFiberEx: Pointer;
|
|
|
|
function CreateFiberEx;
|
|
begin
|
|
GetProcedureAddress(_CreateFiberEx, kernel32, 'CreateFiberEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFiberEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteFiber: Pointer;
|
|
|
|
procedure DeleteFiber;
|
|
begin
|
|
GetProcedureAddress(_DeleteFiber, kernel32, 'DeleteFiber');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteFiber]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ConvertThreadToFiber: Pointer;
|
|
|
|
function ConvertThreadToFiber;
|
|
begin
|
|
GetProcedureAddress(_ConvertThreadToFiber, kernel32, 'ConvertThreadToFiber');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ConvertThreadToFiber]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ConvertThreadToFiberEx: Pointer;
|
|
|
|
function ConvertThreadToFiberEx;
|
|
begin
|
|
GetProcedureAddress(_ConvertThreadToFiberEx, kernel32, 'ConvertThreadToFiberEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ConvertThreadToFiberEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ConvertFiberToThread: Pointer;
|
|
|
|
function ConvertFiberToThread;
|
|
begin
|
|
GetProcedureAddress(_ConvertFiberToThread, kernel32, 'ConvertFiberToThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ConvertFiberToThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SwitchToFiber: Pointer;
|
|
|
|
procedure SwitchToFiber;
|
|
begin
|
|
GetProcedureAddress(_SwitchToFiber, kernel32, 'SwitchToFiber');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SwitchToFiber]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SwitchToThread: Pointer;
|
|
|
|
function SwitchToThread;
|
|
begin
|
|
GetProcedureAddress(_SwitchToThread, kernel32, 'SwitchToThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SwitchToThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateThread: Pointer;
|
|
|
|
function CreateThread;
|
|
begin
|
|
GetProcedureAddress(_CreateThread, kernel32, 'CreateThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateRemoteThread: Pointer;
|
|
|
|
function CreateRemoteThread;
|
|
begin
|
|
GetProcedureAddress(_CreateRemoteThread, kernel32, 'CreateRemoteThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateRemoteThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentThread: Pointer;
|
|
|
|
function GetCurrentThread;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentThread, kernel32, 'GetCurrentThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentThreadId: Pointer;
|
|
|
|
function GetCurrentThreadId;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentThreadId, kernel32, 'GetCurrentThreadId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentThreadId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessIdOfThread: Pointer;
|
|
|
|
function GetProcessIdOfThread;
|
|
begin
|
|
GetProcedureAddress(_GetProcessIdOfThread, kernel32, 'GetProcessIdOfThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessIdOfThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadId: Pointer;
|
|
|
|
function GetThreadId;
|
|
begin
|
|
GetProcedureAddress(_GetThreadId, kernel32, 'GetThreadId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessId: Pointer;
|
|
|
|
function GetProcessId;
|
|
begin
|
|
GetProcedureAddress(_GetProcessId, kernel32, 'GetProcessId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentProcessorNumber: Pointer;
|
|
|
|
function GetCurrentProcessorNumber;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentProcessorNumber, kernel32, 'GetCurrentProcessorNumber');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentProcessorNumber]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadAffinityMask: Pointer;
|
|
|
|
function SetThreadAffinityMask;
|
|
begin
|
|
GetProcedureAddress(_SetThreadAffinityMask, kernel32, 'SetThreadAffinityMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadAffinityMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadIdealProcessor: Pointer;
|
|
|
|
function SetThreadIdealProcessor;
|
|
begin
|
|
GetProcedureAddress(_SetThreadIdealProcessor, kernel32, 'SetThreadIdealProcessor');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadIdealProcessor]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetProcessPriorityBoost: Pointer;
|
|
|
|
function SetProcessPriorityBoost;
|
|
begin
|
|
GetProcedureAddress(_SetProcessPriorityBoost, kernel32, 'SetProcessPriorityBoost');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetProcessPriorityBoost]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessPriorityBoost: Pointer;
|
|
|
|
function GetProcessPriorityBoost;
|
|
begin
|
|
GetProcedureAddress(_GetProcessPriorityBoost, kernel32, 'GetProcessPriorityBoost');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessPriorityBoost]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RequestWakeupLatency: Pointer;
|
|
|
|
function RequestWakeupLatency;
|
|
begin
|
|
GetProcedureAddress(_RequestWakeupLatency, kernel32, 'RequestWakeupLatency');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RequestWakeupLatency]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsSystemResumeAutomatic: Pointer;
|
|
|
|
function IsSystemResumeAutomatic;
|
|
begin
|
|
GetProcedureAddress(_IsSystemResumeAutomatic, kernel32, 'IsSystemResumeAutomatic');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsSystemResumeAutomatic]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenThread: Pointer;
|
|
|
|
function OpenThread;
|
|
begin
|
|
GetProcedureAddress(_OpenThread, kernel32, 'OpenThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadPriority: Pointer;
|
|
|
|
function SetThreadPriority;
|
|
begin
|
|
GetProcedureAddress(_SetThreadPriority, kernel32, 'SetThreadPriority');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadPriority]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadPriorityBoost: Pointer;
|
|
|
|
function SetThreadPriorityBoost;
|
|
begin
|
|
GetProcedureAddress(_SetThreadPriorityBoost, kernel32, 'SetThreadPriorityBoost');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadPriorityBoost]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadPriorityBoost: Pointer;
|
|
|
|
function GetThreadPriorityBoost;
|
|
begin
|
|
GetProcedureAddress(_GetThreadPriorityBoost, kernel32, 'GetThreadPriorityBoost');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadPriorityBoost]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadPriority: Pointer;
|
|
|
|
function GetThreadPriority;
|
|
begin
|
|
GetProcedureAddress(_GetThreadPriority, kernel32, 'GetThreadPriority');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadPriority]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadTimes: Pointer;
|
|
|
|
function GetThreadTimes;
|
|
begin
|
|
GetProcedureAddress(_GetThreadTimes, kernel32, 'GetThreadTimes');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadTimes]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadIOPendingFlag: Pointer;
|
|
|
|
function GetThreadIOPendingFlag;
|
|
begin
|
|
GetProcedureAddress(_GetThreadIOPendingFlag, kernel32, 'GetThreadIOPendingFlag');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadIOPendingFlag]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ExitThread: Pointer;
|
|
|
|
procedure ExitThread;
|
|
begin
|
|
GetProcedureAddress(_ExitThread, kernel32, 'ExitThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ExitThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TerminateThread: Pointer;
|
|
|
|
function TerminateThread;
|
|
begin
|
|
GetProcedureAddress(_TerminateThread, kernel32, 'TerminateThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TerminateThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetExitCodeThread: Pointer;
|
|
|
|
function GetExitCodeThread;
|
|
begin
|
|
GetProcedureAddress(_GetExitCodeThread, kernel32, 'GetExitCodeThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetExitCodeThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadSelectorEntry: Pointer;
|
|
|
|
function GetThreadSelectorEntry;
|
|
begin
|
|
GetProcedureAddress(_GetThreadSelectorEntry, kernel32, 'GetThreadSelectorEntry');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadSelectorEntry]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadExecutionState: Pointer;
|
|
|
|
function SetThreadExecutionState;
|
|
begin
|
|
GetProcedureAddress(_SetThreadExecutionState, kernel32, 'SetThreadExecutionState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadExecutionState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLastError: Pointer;
|
|
|
|
function GetLastError;
|
|
begin
|
|
GetProcedureAddress(_GetLastError, kernel32, 'GetLastError');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLastError]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetLastError: Pointer;
|
|
|
|
procedure SetLastError;
|
|
begin
|
|
GetProcedureAddress(_SetLastError, kernel32, 'SetLastError');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetLastError]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RestoreLastError: Pointer;
|
|
|
|
procedure RestoreLastError;
|
|
begin
|
|
GetProcedureAddress(_RestoreLastError, kernel32, 'RestoreLastError');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RestoreLastError]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetOverlappedResult: Pointer;
|
|
|
|
function GetOverlappedResult;
|
|
begin
|
|
GetProcedureAddress(_GetOverlappedResult, kernel32, 'GetOverlappedResult');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetOverlappedResult]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateIoCompletionPort: Pointer;
|
|
|
|
function CreateIoCompletionPort;
|
|
begin
|
|
GetProcedureAddress(_CreateIoCompletionPort, kernel32, 'CreateIoCompletionPort');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateIoCompletionPort]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetQueuedCompletionStatus: Pointer;
|
|
|
|
function GetQueuedCompletionStatus;
|
|
begin
|
|
GetProcedureAddress(_GetQueuedCompletionStatus, kernel32, 'GetQueuedCompletionStatus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetQueuedCompletionStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PostQueuedCompletionStatus: Pointer;
|
|
|
|
function PostQueuedCompletionStatus;
|
|
begin
|
|
GetProcedureAddress(_PostQueuedCompletionStatus, kernel32, 'PostQueuedCompletionStatus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PostQueuedCompletionStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetErrorMode: Pointer;
|
|
|
|
function SetErrorMode;
|
|
begin
|
|
GetProcedureAddress(_SetErrorMode, kernel32, 'SetErrorMode');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetErrorMode]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadProcessMemory: Pointer;
|
|
|
|
function ReadProcessMemory;
|
|
begin
|
|
GetProcedureAddress(_ReadProcessMemory, kernel32, 'ReadProcessMemory');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadProcessMemory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProcessMemory: Pointer;
|
|
|
|
function WriteProcessMemory;
|
|
begin
|
|
GetProcedureAddress(_WriteProcessMemory, kernel32, 'WriteProcessMemory');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProcessMemory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetThreadContext: Pointer;
|
|
|
|
function GetThreadContext;
|
|
begin
|
|
GetProcedureAddress(_GetThreadContext, kernel32, 'GetThreadContext');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetThreadContext]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadContext: Pointer;
|
|
|
|
function SetThreadContext;
|
|
begin
|
|
GetProcedureAddress(_SetThreadContext, kernel32, 'SetThreadContext');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadContext]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SuspendThread: Pointer;
|
|
|
|
function SuspendThread;
|
|
begin
|
|
GetProcedureAddress(_SuspendThread, kernel32, 'SuspendThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SuspendThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ResumeThread: Pointer;
|
|
|
|
function ResumeThread;
|
|
begin
|
|
GetProcedureAddress(_ResumeThread, kernel32, 'ResumeThread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ResumeThread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueueUserAPC: Pointer;
|
|
|
|
function QueueUserAPC;
|
|
begin
|
|
GetProcedureAddress(_QueueUserAPC, kernel32, 'QueueUserAPC');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueueUserAPC]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsDebuggerPresent: Pointer;
|
|
|
|
function IsDebuggerPresent;
|
|
begin
|
|
GetProcedureAddress(_IsDebuggerPresent, kernel32, 'IsDebuggerPresent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsDebuggerPresent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CheckRemoteDebuggerPresent: Pointer;
|
|
|
|
function CheckRemoteDebuggerPresent;
|
|
begin
|
|
GetProcedureAddress(_CheckRemoteDebuggerPresent, kernel32, 'CheckRemoteDebuggerPresent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CheckRemoteDebuggerPresent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DebugBreak: Pointer;
|
|
|
|
procedure DebugBreak;
|
|
begin
|
|
GetProcedureAddress(_DebugBreak, kernel32, 'DebugBreak');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DebugBreak]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitForDebugEvent: Pointer;
|
|
|
|
function WaitForDebugEvent;
|
|
begin
|
|
GetProcedureAddress(_WaitForDebugEvent, kernel32, 'WaitForDebugEvent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitForDebugEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ContinueDebugEvent: Pointer;
|
|
|
|
function ContinueDebugEvent;
|
|
begin
|
|
GetProcedureAddress(_ContinueDebugEvent, kernel32, 'ContinueDebugEvent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ContinueDebugEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DebugActiveProcess: Pointer;
|
|
|
|
function DebugActiveProcess;
|
|
begin
|
|
GetProcedureAddress(_DebugActiveProcess, kernel32, 'DebugActiveProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DebugActiveProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DebugActiveProcessStop: Pointer;
|
|
|
|
function DebugActiveProcessStop;
|
|
begin
|
|
GetProcedureAddress(_DebugActiveProcessStop, kernel32, 'DebugActiveProcessStop');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DebugActiveProcessStop]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DebugSetProcessKillOnExit: Pointer;
|
|
|
|
function DebugSetProcessKillOnExit;
|
|
begin
|
|
GetProcedureAddress(_DebugSetProcessKillOnExit, kernel32, 'DebugSetProcessKillOnExit');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DebugSetProcessKillOnExit]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DebugBreakProcess: Pointer;
|
|
|
|
function DebugBreakProcess;
|
|
begin
|
|
GetProcedureAddress(_DebugBreakProcess, kernel32, 'DebugBreakProcess');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DebugBreakProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitializeCriticalSection: Pointer;
|
|
|
|
procedure InitializeCriticalSection;
|
|
begin
|
|
GetProcedureAddress(_InitializeCriticalSection, kernel32, 'InitializeCriticalSection');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitializeCriticalSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnterCriticalSection: Pointer;
|
|
|
|
procedure EnterCriticalSection;
|
|
begin
|
|
GetProcedureAddress(_EnterCriticalSection, kernel32, 'EnterCriticalSection');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnterCriticalSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LeaveCriticalSection: Pointer;
|
|
|
|
procedure LeaveCriticalSection;
|
|
begin
|
|
GetProcedureAddress(_LeaveCriticalSection, kernel32, 'LeaveCriticalSection');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LeaveCriticalSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitCritSectAndSpinCount: Pointer;
|
|
|
|
function InitializeCriticalSectionAndSpinCount;
|
|
begin
|
|
GetProcedureAddress(_InitCritSectAndSpinCount, kernel32, 'InitializeCriticalSectionAndSpinCount');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitCritSectAndSpinCount]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCriticalSectionSpinCount: Pointer;
|
|
|
|
function SetCriticalSectionSpinCount;
|
|
begin
|
|
GetProcedureAddress(_SetCriticalSectionSpinCount, kernel32, 'SetCriticalSectionSpinCount');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCriticalSectionSpinCount]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TryEnterCriticalSection: Pointer;
|
|
|
|
function TryEnterCriticalSection;
|
|
begin
|
|
GetProcedureAddress(_TryEnterCriticalSection, kernel32, 'TryEnterCriticalSection');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TryEnterCriticalSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteCriticalSection: Pointer;
|
|
|
|
procedure DeleteCriticalSection;
|
|
begin
|
|
GetProcedureAddress(_DeleteCriticalSection, kernel32, 'DeleteCriticalSection');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteCriticalSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEvent: Pointer;
|
|
|
|
function SetEvent;
|
|
begin
|
|
GetProcedureAddress(_SetEvent, kernel32, 'SetEvent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ResetEvent: Pointer;
|
|
|
|
function ResetEvent;
|
|
begin
|
|
GetProcedureAddress(_ResetEvent, kernel32, 'ResetEvent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ResetEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PulseEvent: Pointer;
|
|
|
|
function PulseEvent;
|
|
begin
|
|
GetProcedureAddress(_PulseEvent, kernel32, 'PulseEvent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PulseEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReleaseSemaphore: Pointer;
|
|
|
|
function ReleaseSemaphore;
|
|
begin
|
|
GetProcedureAddress(_ReleaseSemaphore, kernel32, 'ReleaseSemaphore');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReleaseSemaphore]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReleaseMutex: Pointer;
|
|
|
|
function ReleaseMutex;
|
|
begin
|
|
GetProcedureAddress(_ReleaseMutex, kernel32, 'ReleaseMutex');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReleaseMutex]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitForSingleObject: Pointer;
|
|
|
|
function WaitForSingleObject;
|
|
begin
|
|
GetProcedureAddress(_WaitForSingleObject, kernel32, 'WaitForSingleObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitForSingleObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitForMultipleObjects: Pointer;
|
|
|
|
function WaitForMultipleObjects;
|
|
begin
|
|
GetProcedureAddress(_WaitForMultipleObjects, kernel32, 'WaitForMultipleObjects');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitForMultipleObjects]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Sleep: Pointer;
|
|
|
|
procedure Sleep;
|
|
begin
|
|
GetProcedureAddress(_Sleep, kernel32, 'Sleep');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Sleep]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadResource: Pointer;
|
|
|
|
function LoadResource;
|
|
begin
|
|
GetProcedureAddress(_LoadResource, kernel32, 'LoadResource');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SizeofResource: Pointer;
|
|
|
|
function SizeofResource;
|
|
begin
|
|
GetProcedureAddress(_SizeofResource, kernel32, 'SizeofResource');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SizeofResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalDeleteAtom: Pointer;
|
|
|
|
function GlobalDeleteAtom;
|
|
begin
|
|
GetProcedureAddress(_GlobalDeleteAtom, kernel32, 'GlobalDeleteAtom');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalDeleteAtom]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitAtomTable: Pointer;
|
|
|
|
function InitAtomTable;
|
|
begin
|
|
GetProcedureAddress(_InitAtomTable, kernel32, 'InitAtomTable');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitAtomTable]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteAtom: Pointer;
|
|
|
|
function DeleteAtom;
|
|
begin
|
|
GetProcedureAddress(_DeleteAtom, kernel32, 'DeleteAtom');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteAtom]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetHandleCount: Pointer;
|
|
|
|
function SetHandleCount;
|
|
begin
|
|
GetProcedureAddress(_SetHandleCount, kernel32, 'SetHandleCount');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetHandleCount]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLogicalDrives: Pointer;
|
|
|
|
function GetLogicalDrives;
|
|
begin
|
|
GetProcedureAddress(_GetLogicalDrives, kernel32, 'GetLogicalDrives');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLogicalDrives]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LockFile: Pointer;
|
|
|
|
function LockFile;
|
|
begin
|
|
GetProcedureAddress(_LockFile, kernel32, 'LockFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LockFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UnlockFile: Pointer;
|
|
|
|
function UnlockFile;
|
|
begin
|
|
GetProcedureAddress(_UnlockFile, kernel32, 'UnlockFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UnlockFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LockFileEx: Pointer;
|
|
|
|
function LockFileEx;
|
|
begin
|
|
GetProcedureAddress(_LockFileEx, kernel32, 'LockFileEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LockFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UnlockFileEx: Pointer;
|
|
|
|
function UnlockFileEx;
|
|
begin
|
|
GetProcedureAddress(_UnlockFileEx, kernel32, 'UnlockFileEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UnlockFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileInformationByHandle: Pointer;
|
|
|
|
function GetFileInformationByHandle;
|
|
begin
|
|
GetProcedureAddress(_GetFileInformationByHandle, kernel32, 'GetFileInformationByHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileInformationByHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileType: Pointer;
|
|
|
|
function GetFileType;
|
|
begin
|
|
GetProcedureAddress(_GetFileType, kernel32, 'GetFileType');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileType]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileSize: Pointer;
|
|
|
|
function GetFileSize;
|
|
begin
|
|
GetProcedureAddress(_GetFileSize, kernel32, 'GetFileSize');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileSizeEx: Pointer;
|
|
|
|
function GetFileSizeEx;
|
|
begin
|
|
GetProcedureAddress(_GetFileSizeEx, kernel32, 'GetFileSizeEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileSizeEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetStdHandle: Pointer;
|
|
|
|
function GetStdHandle;
|
|
begin
|
|
GetProcedureAddress(_GetStdHandle, kernel32, 'GetStdHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetStdHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetStdHandle: Pointer;
|
|
|
|
function SetStdHandle;
|
|
begin
|
|
GetProcedureAddress(_SetStdHandle, kernel32, 'SetStdHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetStdHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteFile: Pointer;
|
|
|
|
function WriteFile;
|
|
begin
|
|
GetProcedureAddress(_WriteFile, kernel32, 'WriteFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadFile: Pointer;
|
|
|
|
function ReadFile;
|
|
begin
|
|
GetProcedureAddress(_ReadFile, kernel32, 'ReadFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlushFileBuffers: Pointer;
|
|
|
|
function FlushFileBuffers;
|
|
begin
|
|
GetProcedureAddress(_FlushFileBuffers, kernel32, 'FlushFileBuffers');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlushFileBuffers]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeviceIoControl: Pointer;
|
|
|
|
function DeviceIoControl;
|
|
begin
|
|
GetProcedureAddress(_DeviceIoControl, kernel32, 'DeviceIoControl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeviceIoControl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RequestDeviceWakeup: Pointer;
|
|
|
|
function RequestDeviceWakeup;
|
|
begin
|
|
GetProcedureAddress(_RequestDeviceWakeup, kernel32, 'RequestDeviceWakeup');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RequestDeviceWakeup]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CancelDeviceWakeupRequest: Pointer;
|
|
|
|
function CancelDeviceWakeupRequest;
|
|
begin
|
|
GetProcedureAddress(_CancelDeviceWakeupRequest, kernel32, 'CancelDeviceWakeupRequest');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CancelDeviceWakeupRequest]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDevicePowerState: Pointer;
|
|
|
|
function GetDevicePowerState;
|
|
begin
|
|
GetProcedureAddress(_GetDevicePowerState, kernel32, 'GetDevicePowerState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDevicePowerState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetMessageWaitingIndicator: Pointer;
|
|
|
|
function SetMessageWaitingIndicator;
|
|
begin
|
|
GetProcedureAddress(_SetMessageWaitingIndicator, kernel32, 'SetMessageWaitingIndicator');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetMessageWaitingIndicator]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEndOfFile: Pointer;
|
|
|
|
function SetEndOfFile;
|
|
begin
|
|
GetProcedureAddress(_SetEndOfFile, kernel32, 'SetEndOfFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEndOfFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFilePointer: Pointer;
|
|
|
|
function SetFilePointer;
|
|
begin
|
|
GetProcedureAddress(_SetFilePointer, kernel32, 'SetFilePointer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFilePointer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFilePointerEx: Pointer;
|
|
|
|
function SetFilePointerEx;
|
|
begin
|
|
GetProcedureAddress(_SetFilePointerEx, kernel32, 'SetFilePointerEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFilePointerEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindClose: Pointer;
|
|
|
|
function FindClose;
|
|
begin
|
|
GetProcedureAddress(_FindClose, kernel32, 'FindClose');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindClose]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileTime: Pointer;
|
|
|
|
function GetFileTime;
|
|
begin
|
|
GetProcedureAddress(_GetFileTime, kernel32, 'GetFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileTime: Pointer;
|
|
|
|
function SetFileTime;
|
|
begin
|
|
GetProcedureAddress(_SetFileTime, kernel32, 'SetFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileValidData: Pointer;
|
|
|
|
function SetFileValidData;
|
|
begin
|
|
GetProcedureAddress(_SetFileValidData, kernel32, 'SetFileValidData');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileValidData]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileShortNameA: Pointer;
|
|
|
|
function SetFileShortNameA;
|
|
begin
|
|
GetProcedureAddress(_SetFileShortNameA, kernel32, 'SetFileShortNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileShortNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileShortNameW: Pointer;
|
|
|
|
function SetFileShortNameW;
|
|
begin
|
|
GetProcedureAddress(_SetFileShortNameW, kernel32, 'SetFileShortNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileShortNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileShortName: Pointer;
|
|
|
|
function SetFileShortName;
|
|
begin
|
|
GetProcedureAddress(_SetFileShortName, kernel32, 'SetFileShortName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileShortName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CloseHandle: Pointer;
|
|
|
|
function CloseHandle;
|
|
begin
|
|
GetProcedureAddress(_CloseHandle, kernel32, 'CloseHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CloseHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DuplicateHandle: Pointer;
|
|
|
|
function DuplicateHandle;
|
|
begin
|
|
GetProcedureAddress(_DuplicateHandle, kernel32, 'DuplicateHandle');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DuplicateHandle]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetHandleInformation: Pointer;
|
|
|
|
function GetHandleInformation;
|
|
begin
|
|
GetProcedureAddress(_GetHandleInformation, kernel32, 'GetHandleInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetHandleInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetHandleInformation: Pointer;
|
|
|
|
function SetHandleInformation;
|
|
begin
|
|
GetProcedureAddress(_SetHandleInformation, kernel32, 'SetHandleInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetHandleInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadModule: Pointer;
|
|
|
|
function LoadModule;
|
|
begin
|
|
GetProcedureAddress(_LoadModule, kernel32, 'LoadModule');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadModule]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WinExec: Pointer;
|
|
|
|
function WinExec;
|
|
begin
|
|
GetProcedureAddress(_WinExec, kernel32, 'WinExec');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WinExec]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ClearCommBreak: Pointer;
|
|
|
|
function ClearCommBreak;
|
|
begin
|
|
GetProcedureAddress(_ClearCommBreak, kernel32, 'ClearCommBreak');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ClearCommBreak]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ClearCommError: Pointer;
|
|
|
|
function ClearCommError;
|
|
begin
|
|
GetProcedureAddress(_ClearCommError, kernel32, 'ClearCommError');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ClearCommError]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetupComm: Pointer;
|
|
|
|
function SetupComm;
|
|
begin
|
|
GetProcedureAddress(_SetupComm, kernel32, 'SetupComm');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetupComm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EscapeCommFunction: Pointer;
|
|
|
|
function EscapeCommFunction;
|
|
begin
|
|
GetProcedureAddress(_EscapeCommFunction, kernel32, 'EscapeCommFunction');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EscapeCommFunction]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommConfig: Pointer;
|
|
|
|
function GetCommConfig;
|
|
begin
|
|
GetProcedureAddress(_GetCommConfig, kernel32, 'GetCommConfig');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommConfig]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommMask: Pointer;
|
|
|
|
function GetCommMask;
|
|
begin
|
|
GetProcedureAddress(_GetCommMask, kernel32, 'GetCommMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommProperties: Pointer;
|
|
|
|
function GetCommProperties;
|
|
begin
|
|
GetProcedureAddress(_GetCommProperties, kernel32, 'GetCommProperties');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommProperties]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommModemStatus: Pointer;
|
|
|
|
function GetCommModemStatus;
|
|
begin
|
|
GetProcedureAddress(_GetCommModemStatus, kernel32, 'GetCommModemStatus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommModemStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommState: Pointer;
|
|
|
|
function GetCommState;
|
|
begin
|
|
GetProcedureAddress(_GetCommState, kernel32, 'GetCommState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommTimeouts: Pointer;
|
|
|
|
function GetCommTimeouts;
|
|
begin
|
|
GetProcedureAddress(_GetCommTimeouts, kernel32, 'GetCommTimeouts');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommTimeouts]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PurgeComm: Pointer;
|
|
|
|
function PurgeComm;
|
|
begin
|
|
GetProcedureAddress(_PurgeComm, kernel32, 'PurgeComm');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PurgeComm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCommBreak: Pointer;
|
|
|
|
function SetCommBreak;
|
|
begin
|
|
GetProcedureAddress(_SetCommBreak, kernel32, 'SetCommBreak');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCommBreak]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCommConfig: Pointer;
|
|
|
|
function SetCommConfig;
|
|
begin
|
|
GetProcedureAddress(_SetCommConfig, kernel32, 'SetCommConfig');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCommConfig]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCommMask: Pointer;
|
|
|
|
function SetCommMask;
|
|
begin
|
|
GetProcedureAddress(_SetCommMask, kernel32, 'SetCommMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCommMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCommState: Pointer;
|
|
|
|
function SetCommState;
|
|
begin
|
|
GetProcedureAddress(_SetCommState, kernel32, 'SetCommState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCommState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCommTimeouts: Pointer;
|
|
|
|
function SetCommTimeouts;
|
|
begin
|
|
GetProcedureAddress(_SetCommTimeouts, kernel32, 'SetCommTimeouts');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCommTimeouts]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TransmitCommChar: Pointer;
|
|
|
|
function TransmitCommChar;
|
|
begin
|
|
GetProcedureAddress(_TransmitCommChar, kernel32, 'TransmitCommChar');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TransmitCommChar]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitCommEvent: Pointer;
|
|
|
|
function WaitCommEvent;
|
|
begin
|
|
GetProcedureAddress(_WaitCommEvent, kernel32, 'WaitCommEvent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitCommEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetTapePosition: Pointer;
|
|
|
|
function SetTapePosition;
|
|
begin
|
|
GetProcedureAddress(_SetTapePosition, kernel32, 'SetTapePosition');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetTapePosition]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTapePosition: Pointer;
|
|
|
|
function GetTapePosition;
|
|
begin
|
|
GetProcedureAddress(_GetTapePosition, kernel32, 'GetTapePosition');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTapePosition]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PrepareTape: Pointer;
|
|
|
|
function PrepareTape;
|
|
begin
|
|
GetProcedureAddress(_PrepareTape, kernel32, 'PrepareTape');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PrepareTape]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EraseTape: Pointer;
|
|
|
|
function EraseTape;
|
|
begin
|
|
GetProcedureAddress(_EraseTape, kernel32, 'EraseTape');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EraseTape]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateTapePartition: Pointer;
|
|
|
|
function CreateTapePartition;
|
|
begin
|
|
GetProcedureAddress(_CreateTapePartition, kernel32, 'CreateTapePartition');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateTapePartition]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteTapemark: Pointer;
|
|
|
|
function WriteTapemark;
|
|
begin
|
|
GetProcedureAddress(_WriteTapemark, kernel32, 'WriteTapemark');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteTapemark]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTapeStatus: Pointer;
|
|
|
|
function GetTapeStatus;
|
|
begin
|
|
GetProcedureAddress(_GetTapeStatus, kernel32, 'GetTapeStatus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTapeStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTapeParameters: Pointer;
|
|
|
|
function GetTapeParameters;
|
|
begin
|
|
GetProcedureAddress(_GetTapeParameters, kernel32, 'GetTapeParameters');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTapeParameters]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetTapeParameters: Pointer;
|
|
|
|
function SetTapeParameters;
|
|
begin
|
|
GetProcedureAddress(_SetTapeParameters, kernel32, 'SetTapeParameters');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetTapeParameters]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Beep: Pointer;
|
|
|
|
function Beep;
|
|
begin
|
|
GetProcedureAddress(_Beep, kernel32, 'Beep');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Beep]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MulDiv: Pointer;
|
|
|
|
function MulDiv;
|
|
begin
|
|
GetProcedureAddress(_MulDiv, kernel32, 'MulDiv');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MulDiv]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemTime: Pointer;
|
|
|
|
procedure GetSystemTime;
|
|
begin
|
|
GetProcedureAddress(_GetSystemTime, kernel32, 'GetSystemTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemTimeAsFileTime: Pointer;
|
|
|
|
procedure GetSystemTimeAsFileTime;
|
|
begin
|
|
GetProcedureAddress(_GetSystemTimeAsFileTime, kernel32, 'GetSystemTimeAsFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemTimeAsFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSystemTime: Pointer;
|
|
|
|
function SetSystemTime;
|
|
begin
|
|
GetProcedureAddress(_SetSystemTime, kernel32, 'SetSystemTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSystemTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLocalTime: Pointer;
|
|
|
|
procedure GetLocalTime;
|
|
begin
|
|
GetProcedureAddress(_GetLocalTime, kernel32, 'GetLocalTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLocalTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetLocalTime: Pointer;
|
|
|
|
function SetLocalTime;
|
|
begin
|
|
GetProcedureAddress(_SetLocalTime, kernel32, 'SetLocalTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetLocalTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemInfo: Pointer;
|
|
|
|
procedure GetSystemInfo;
|
|
begin
|
|
GetProcedureAddress(_GetSystemInfo, kernel32, 'GetSystemInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemRegistryQuota: Pointer;
|
|
|
|
function GetSystemRegistryQuota;
|
|
begin
|
|
GetProcedureAddress(_GetSystemRegistryQuota, kernel32, 'GetSystemRegistryQuota');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemRegistryQuota]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemTimes: Pointer;
|
|
|
|
function GetSystemTimes;
|
|
begin
|
|
GetProcedureAddress(_GetSystemTimes, kernel32, 'GetSystemTimes');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemTimes]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNativeSystemInfo: Pointer;
|
|
|
|
procedure GetNativeSystemInfo;
|
|
begin
|
|
GetProcedureAddress(_GetNativeSystemInfo, kernel32, 'GetNativeSystemInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNativeSystemInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsProcessorFeaturePresent: Pointer;
|
|
|
|
function IsProcessorFeaturePresent;
|
|
begin
|
|
GetProcedureAddress(_IsProcessorFeaturePresent, kernel32, 'IsProcessorFeaturePresent');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsProcessorFeaturePresent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SystemTimeToTzSpecificLocalTime: Pointer;
|
|
|
|
function SystemTimeToTzSpecificLocalTime;
|
|
begin
|
|
GetProcedureAddress(_SystemTimeToTzSpecificLocalTime, kernel32, 'SystemTimeToTzSpecificLocalTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SystemTimeToTzSpecificLocalTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TzSpecificLocalTimeToSystemTime: Pointer;
|
|
|
|
function TzSpecificLocalTimeToSystemTime;
|
|
begin
|
|
GetProcedureAddress(_TzSpecificLocalTimeToSystemTime, kernel32, 'TzSpecificLocalTimeToSystemTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TzSpecificLocalTimeToSystemTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTimeZoneInformation: Pointer;
|
|
|
|
function GetTimeZoneInformation;
|
|
begin
|
|
GetProcedureAddress(_GetTimeZoneInformation, kernel32, 'GetTimeZoneInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTimeZoneInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetTimeZoneInformation: Pointer;
|
|
|
|
function SetTimeZoneInformation;
|
|
begin
|
|
GetProcedureAddress(_SetTimeZoneInformation, kernel32, 'SetTimeZoneInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetTimeZoneInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SystemTimeToFileTime: Pointer;
|
|
|
|
function SystemTimeToFileTime;
|
|
begin
|
|
GetProcedureAddress(_SystemTimeToFileTime, kernel32, 'SystemTimeToFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SystemTimeToFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FileTimeToLocalFileTime: Pointer;
|
|
|
|
function FileTimeToLocalFileTime;
|
|
begin
|
|
GetProcedureAddress(_FileTimeToLocalFileTime, kernel32, 'FileTimeToLocalFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FileTimeToLocalFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LocalFileTimeToFileTime: Pointer;
|
|
|
|
function LocalFileTimeToFileTime;
|
|
begin
|
|
GetProcedureAddress(_LocalFileTimeToFileTime, kernel32, 'LocalFileTimeToFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LocalFileTimeToFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FileTimeToSystemTime: Pointer;
|
|
|
|
function FileTimeToSystemTime;
|
|
begin
|
|
GetProcedureAddress(_FileTimeToSystemTime, kernel32, 'FileTimeToSystemTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FileTimeToSystemTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CompareFileTime: Pointer;
|
|
|
|
function CompareFileTime;
|
|
begin
|
|
GetProcedureAddress(_CompareFileTime, kernel32, 'CompareFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CompareFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FileTimeToDosDateTime: Pointer;
|
|
|
|
function FileTimeToDosDateTime;
|
|
begin
|
|
GetProcedureAddress(_FileTimeToDosDateTime, kernel32, 'FileTimeToDosDateTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FileTimeToDosDateTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DosDateTimeToFileTime: Pointer;
|
|
|
|
function DosDateTimeToFileTime;
|
|
begin
|
|
GetProcedureAddress(_DosDateTimeToFileTime, kernel32, 'DosDateTimeToFileTime');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DosDateTimeToFileTime]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTickCount: Pointer;
|
|
|
|
function GetTickCount;
|
|
begin
|
|
GetProcedureAddress(_GetTickCount, kernel32, 'GetTickCount');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTickCount]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSystemTimeAdjustment: Pointer;
|
|
|
|
function SetSystemTimeAdjustment;
|
|
begin
|
|
GetProcedureAddress(_SetSystemTimeAdjustment, kernel32, 'SetSystemTimeAdjustment');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSystemTimeAdjustment]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemTimeAdjustment: Pointer;
|
|
|
|
function GetSystemTimeAdjustment;
|
|
begin
|
|
GetProcedureAddress(_GetSystemTimeAdjustment, kernel32, 'GetSystemTimeAdjustment');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemTimeAdjustment]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FormatMessageA: Pointer;
|
|
|
|
function FormatMessageA;
|
|
begin
|
|
GetProcedureAddress(_FormatMessageA, kernel32, 'FormatMessageA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FormatMessageA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FormatMessageW: Pointer;
|
|
|
|
function FormatMessageW;
|
|
begin
|
|
GetProcedureAddress(_FormatMessageW, kernel32, 'FormatMessageW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FormatMessageW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FormatMessage: Pointer;
|
|
|
|
function FormatMessage;
|
|
begin
|
|
GetProcedureAddress(_FormatMessage, kernel32, 'FormatMessage' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FormatMessage]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreatePipe: Pointer;
|
|
|
|
function CreatePipe;
|
|
begin
|
|
GetProcedureAddress(_CreatePipe, kernel32, 'CreatePipe');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreatePipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ConnectNamedPipe: Pointer;
|
|
|
|
function ConnectNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_ConnectNamedPipe, kernel32, 'ConnectNamedPipe');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ConnectNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DisconnectNamedPipe: Pointer;
|
|
|
|
function DisconnectNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_DisconnectNamedPipe, kernel32, 'DisconnectNamedPipe');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DisconnectNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetNamedPipeHandleState: Pointer;
|
|
|
|
function SetNamedPipeHandleState;
|
|
begin
|
|
GetProcedureAddress(_SetNamedPipeHandleState, kernel32, 'SetNamedPipeHandleState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetNamedPipeHandleState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeInfo: Pointer;
|
|
|
|
function GetNamedPipeInfo;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeInfo, kernel32, 'GetNamedPipeInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PeekNamedPipe: Pointer;
|
|
|
|
function PeekNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_PeekNamedPipe, kernel32, 'PeekNamedPipe');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PeekNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TransactNamedPipe: Pointer;
|
|
|
|
function TransactNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_TransactNamedPipe, kernel32, 'TransactNamedPipe');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TransactNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateMailslotA: Pointer;
|
|
|
|
function CreateMailslotA;
|
|
begin
|
|
GetProcedureAddress(_CreateMailslotA, kernel32, 'CreateMailslotA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateMailslotA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateMailslotW: Pointer;
|
|
|
|
function CreateMailslotW;
|
|
begin
|
|
GetProcedureAddress(_CreateMailslotW, kernel32, 'CreateMailslotW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateMailslotW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateMailslot: Pointer;
|
|
|
|
function CreateMailslot;
|
|
begin
|
|
GetProcedureAddress(_CreateMailslot, kernel32, 'CreateMailslot' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateMailslot]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetMailslotInfo: Pointer;
|
|
|
|
function GetMailslotInfo;
|
|
begin
|
|
GetProcedureAddress(_GetMailslotInfo, kernel32, 'GetMailslotInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetMailslotInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetMailslotInfo: Pointer;
|
|
|
|
function SetMailslotInfo;
|
|
begin
|
|
GetProcedureAddress(_SetMailslotInfo, kernel32, 'SetMailslotInfo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetMailslotInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MapViewOfFile: Pointer;
|
|
|
|
function MapViewOfFile;
|
|
begin
|
|
GetProcedureAddress(_MapViewOfFile, kernel32, 'MapViewOfFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MapViewOfFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlushViewOfFile: Pointer;
|
|
|
|
function FlushViewOfFile;
|
|
begin
|
|
GetProcedureAddress(_FlushViewOfFile, kernel32, 'FlushViewOfFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlushViewOfFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UnmapViewOfFile: Pointer;
|
|
|
|
function UnmapViewOfFile;
|
|
begin
|
|
GetProcedureAddress(_UnmapViewOfFile, kernel32, 'UnmapViewOfFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UnmapViewOfFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EncryptFileA: Pointer;
|
|
|
|
function EncryptFileA;
|
|
begin
|
|
GetProcedureAddress(_EncryptFileA, advapi32, 'EncryptFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EncryptFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EncryptFileW: Pointer;
|
|
|
|
function EncryptFileW;
|
|
begin
|
|
GetProcedureAddress(_EncryptFileW, advapi32, 'EncryptFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EncryptFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EncryptFile: Pointer;
|
|
|
|
function EncryptFile;
|
|
begin
|
|
GetProcedureAddress(_EncryptFile, advapi32, 'EncryptFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EncryptFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DecryptFileA: Pointer;
|
|
|
|
function DecryptFileA;
|
|
begin
|
|
GetProcedureAddress(_DecryptFileA, advapi32, 'DecryptFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DecryptFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DecryptFileW: Pointer;
|
|
|
|
function DecryptFileW;
|
|
begin
|
|
GetProcedureAddress(_DecryptFileW, advapi32, 'DecryptFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DecryptFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DecryptFile: Pointer;
|
|
|
|
function DecryptFile;
|
|
begin
|
|
GetProcedureAddress(_DecryptFile, advapi32, 'DecryptFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DecryptFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FileEncryptionStatusA: Pointer;
|
|
|
|
function FileEncryptionStatusA;
|
|
begin
|
|
GetProcedureAddress(_FileEncryptionStatusA, advapi32, 'FileEncryptionStatusA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FileEncryptionStatusA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FileEncryptionStatusW: Pointer;
|
|
|
|
function FileEncryptionStatusW;
|
|
begin
|
|
GetProcedureAddress(_FileEncryptionStatusW, advapi32, 'FileEncryptionStatusW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FileEncryptionStatusW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FileEncryptionStatus: Pointer;
|
|
|
|
function FileEncryptionStatus;
|
|
begin
|
|
GetProcedureAddress(_FileEncryptionStatus, advapi32, 'FileEncryptionStatus' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FileEncryptionStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEncryptedFileRawA: Pointer;
|
|
|
|
function OpenEncryptedFileRawA;
|
|
begin
|
|
GetProcedureAddress(_OpenEncryptedFileRawA, advapi32, 'OpenEncryptedFileRawA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEncryptedFileRawA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEncryptedFileRawW: Pointer;
|
|
|
|
function OpenEncryptedFileRawW;
|
|
begin
|
|
GetProcedureAddress(_OpenEncryptedFileRawW, advapi32, 'OpenEncryptedFileRawW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEncryptedFileRawW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEncryptedFileRaw: Pointer;
|
|
|
|
function OpenEncryptedFileRaw;
|
|
begin
|
|
GetProcedureAddress(_OpenEncryptedFileRaw, advapi32, 'OpenEncryptedFileRaw' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEncryptedFileRaw]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadEncryptedFileRaw: Pointer;
|
|
|
|
function ReadEncryptedFileRaw;
|
|
begin
|
|
GetProcedureAddress(_ReadEncryptedFileRaw, advapi32, 'ReadEncryptedFileRaw');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadEncryptedFileRaw]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteEncryptedFileRaw: Pointer;
|
|
|
|
function WriteEncryptedFileRaw;
|
|
begin
|
|
GetProcedureAddress(_WriteEncryptedFileRaw, advapi32, 'WriteEncryptedFileRaw');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteEncryptedFileRaw]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CloseEncryptedFileRaw: Pointer;
|
|
|
|
procedure CloseEncryptedFileRaw;
|
|
begin
|
|
GetProcedureAddress(_CloseEncryptedFileRaw, advapi32, 'CloseEncryptedFileRaw');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CloseEncryptedFileRaw]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcmpA: Pointer;
|
|
|
|
function lstrcmpA;
|
|
begin
|
|
GetProcedureAddress(_lstrcmpA, kernel32, 'lstrcmpA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcmpA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcmpW: Pointer;
|
|
|
|
function lstrcmpW;
|
|
begin
|
|
GetProcedureAddress(_lstrcmpW, kernel32, 'lstrcmpW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcmpW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcmp: Pointer;
|
|
|
|
function lstrcmp;
|
|
begin
|
|
GetProcedureAddress(_lstrcmp, kernel32, 'lstrcmp' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcmp]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcmpiA: Pointer;
|
|
|
|
function lstrcmpiA;
|
|
begin
|
|
GetProcedureAddress(_lstrcmpiA, kernel32, 'lstrcmpiA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcmpiA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcmpiW: Pointer;
|
|
|
|
function lstrcmpiW;
|
|
begin
|
|
GetProcedureAddress(_lstrcmpiW, kernel32, 'lstrcmpiW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcmpiW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcmpi: Pointer;
|
|
|
|
function lstrcmpi;
|
|
begin
|
|
GetProcedureAddress(_lstrcmpi, kernel32, 'lstrcmpi' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcmpi]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcpynA: Pointer;
|
|
|
|
function lstrcpynA;
|
|
begin
|
|
GetProcedureAddress(_lstrcpynA, kernel32, 'lstrcpynA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcpynA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcpynW: Pointer;
|
|
|
|
function lstrcpynW;
|
|
begin
|
|
GetProcedureAddress(_lstrcpynW, kernel32, 'lstrcpynW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcpynW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcpyn: Pointer;
|
|
|
|
function lstrcpyn;
|
|
begin
|
|
GetProcedureAddress(_lstrcpyn, kernel32, 'lstrcpyn' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcpyn]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcpyA: Pointer;
|
|
|
|
function lstrcpyA;
|
|
begin
|
|
GetProcedureAddress(_lstrcpyA, kernel32, 'lstrcpyA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcpyA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcpyW: Pointer;
|
|
|
|
function lstrcpyW;
|
|
begin
|
|
GetProcedureAddress(_lstrcpyW, kernel32, 'lstrcpyW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcpyW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcpy: Pointer;
|
|
|
|
function lstrcpy;
|
|
begin
|
|
GetProcedureAddress(_lstrcpy, kernel32, 'lstrcpy' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcpy]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcatA: Pointer;
|
|
|
|
function lstrcatA;
|
|
begin
|
|
GetProcedureAddress(_lstrcatA, kernel32, 'lstrcatA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcatA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcatW: Pointer;
|
|
|
|
function lstrcatW;
|
|
begin
|
|
GetProcedureAddress(_lstrcatW, kernel32, 'lstrcatW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcatW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrcat: Pointer;
|
|
|
|
function lstrcat;
|
|
begin
|
|
GetProcedureAddress(_lstrcat, kernel32, 'lstrcat' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrcat]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrlenA: Pointer;
|
|
|
|
function lstrlenA;
|
|
begin
|
|
GetProcedureAddress(_lstrlenA, kernel32, 'lstrlenA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrlenA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrlenW: Pointer;
|
|
|
|
function lstrlenW;
|
|
begin
|
|
GetProcedureAddress(_lstrlenW, kernel32, 'lstrlenW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrlenW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_lstrlen: Pointer;
|
|
|
|
function lstrlen;
|
|
begin
|
|
GetProcedureAddress(_lstrlen, kernel32, 'lstrlen' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_lstrlen]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenFile: Pointer;
|
|
|
|
function OpenFile;
|
|
begin
|
|
GetProcedureAddress(_OpenFile, kernel32, 'OpenFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__lopen: Pointer;
|
|
|
|
function _lopen;
|
|
begin
|
|
GetProcedureAddress(__lopen, kernel32, '_lopen');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__lopen]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__lcreat: Pointer;
|
|
|
|
function _lcreat;
|
|
begin
|
|
GetProcedureAddress(__lcreat, kernel32, '_lcreat');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__lcreat]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__lread: Pointer;
|
|
|
|
function _lread;
|
|
begin
|
|
GetProcedureAddress(__lread, kernel32, '_lread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__lread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__lwrite: Pointer;
|
|
|
|
function _lwrite;
|
|
begin
|
|
GetProcedureAddress(__lwrite, kernel32, '_lwrite');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__lwrite]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__hread: Pointer;
|
|
|
|
function _hread;
|
|
begin
|
|
GetProcedureAddress(__hread, kernel32, '_hread');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__hread]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__hwrite: Pointer;
|
|
|
|
function _hwrite;
|
|
begin
|
|
GetProcedureAddress(__hwrite, kernel32, '_hwrite');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__hwrite]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__lclose: Pointer;
|
|
|
|
function _lclose;
|
|
begin
|
|
GetProcedureAddress(__lclose, kernel32, '_lclose');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__lclose]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
__llseek: Pointer;
|
|
|
|
function _llseek;
|
|
begin
|
|
GetProcedureAddress(__llseek, kernel32, '_llseek');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [__llseek]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsTextUnicode: Pointer;
|
|
|
|
function IsTextUnicode;
|
|
begin
|
|
GetProcedureAddress(_IsTextUnicode, advapi32, 'IsTextUnicode');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsTextUnicode]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlsAlloc: Pointer;
|
|
|
|
function FlsAlloc;
|
|
begin
|
|
GetProcedureAddress(_FlsAlloc, kernel32, 'FlsAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlsAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlsGetValue: Pointer;
|
|
|
|
function FlsGetValue;
|
|
begin
|
|
GetProcedureAddress(_FlsGetValue, kernel32, 'FlsGetValue');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlsGetValue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlsSetValue: Pointer;
|
|
|
|
function FlsSetValue;
|
|
begin
|
|
GetProcedureAddress(_FlsSetValue, kernel32, 'FlsSetValue');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlsSetValue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FlsFree: Pointer;
|
|
|
|
function FlsFree;
|
|
begin
|
|
GetProcedureAddress(_FlsFree, kernel32, 'FlsFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FlsFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TlsAlloc: Pointer;
|
|
|
|
function TlsAlloc;
|
|
begin
|
|
GetProcedureAddress(_TlsAlloc, kernel32, 'TlsAlloc');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TlsAlloc]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TlsGetValue: Pointer;
|
|
|
|
function TlsGetValue;
|
|
begin
|
|
GetProcedureAddress(_TlsGetValue, kernel32, 'TlsGetValue');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TlsGetValue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TlsSetValue: Pointer;
|
|
|
|
function TlsSetValue;
|
|
begin
|
|
GetProcedureAddress(_TlsSetValue, kernel32, 'TlsSetValue');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TlsSetValue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TlsFree: Pointer;
|
|
|
|
function TlsFree;
|
|
begin
|
|
GetProcedureAddress(_TlsFree, kernel32, 'TlsFree');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TlsFree]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SleepEx: Pointer;
|
|
|
|
function SleepEx;
|
|
begin
|
|
GetProcedureAddress(_SleepEx, kernel32, 'SleepEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SleepEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitForSingleObjectEx: Pointer;
|
|
|
|
function WaitForSingleObjectEx;
|
|
begin
|
|
GetProcedureAddress(_WaitForSingleObjectEx, kernel32, 'WaitForSingleObjectEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitForSingleObjectEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitForMultipleObjectsEx: Pointer;
|
|
|
|
function WaitForMultipleObjectsEx;
|
|
begin
|
|
GetProcedureAddress(_WaitForMultipleObjectsEx, kernel32, 'WaitForMultipleObjectsEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitForMultipleObjectsEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SignalObjectAndWait: Pointer;
|
|
|
|
function SignalObjectAndWait;
|
|
begin
|
|
GetProcedureAddress(_SignalObjectAndWait, kernel32, 'SignalObjectAndWait');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SignalObjectAndWait]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadFileEx: Pointer;
|
|
|
|
function ReadFileEx;
|
|
begin
|
|
GetProcedureAddress(_ReadFileEx, kernel32, 'ReadFileEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteFileEx: Pointer;
|
|
|
|
function WriteFileEx;
|
|
begin
|
|
GetProcedureAddress(_WriteFileEx, kernel32, 'WriteFileEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BackupRead: Pointer;
|
|
|
|
function BackupRead;
|
|
begin
|
|
GetProcedureAddress(_BackupRead, kernel32, 'BackupRead');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BackupRead]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BackupSeek: Pointer;
|
|
|
|
function BackupSeek;
|
|
begin
|
|
GetProcedureAddress(_BackupSeek, kernel32, 'BackupSeek');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BackupSeek]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BackupWrite: Pointer;
|
|
|
|
function BackupWrite;
|
|
begin
|
|
GetProcedureAddress(_BackupWrite, kernel32, 'BackupWrite');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BackupWrite]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadFileScatter: Pointer;
|
|
|
|
function ReadFileScatter;
|
|
begin
|
|
GetProcedureAddress(_ReadFileScatter, kernel32, 'ReadFileScatter');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadFileScatter]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteFileGather: Pointer;
|
|
|
|
function WriteFileGather;
|
|
begin
|
|
GetProcedureAddress(_WriteFileGather, kernel32, 'WriteFileGather');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteFileGather]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenMutexA: Pointer;
|
|
|
|
function OpenMutexA;
|
|
begin
|
|
GetProcedureAddress(_OpenMutexA, kernel32, 'OpenMutexA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenMutexA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenMutexW: Pointer;
|
|
|
|
function OpenMutexW;
|
|
begin
|
|
GetProcedureAddress(_OpenMutexW, kernel32, 'OpenMutexW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenMutexW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenMutex: Pointer;
|
|
|
|
function OpenMutex;
|
|
begin
|
|
GetProcedureAddress(_OpenMutex, kernel32, 'OpenMutex' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenMutex]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateEventA: Pointer;
|
|
|
|
function CreateEventA;
|
|
begin
|
|
GetProcedureAddress(_CreateEventA, kernel32, 'CreateEventA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateEventA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateEventW: Pointer;
|
|
|
|
function CreateEventW;
|
|
begin
|
|
GetProcedureAddress(_CreateEventW, kernel32, 'CreateEventW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateEventW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateEvent: Pointer;
|
|
|
|
function CreateEvent;
|
|
begin
|
|
GetProcedureAddress(_CreateEvent, kernel32, 'CreateEvent' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEventA: Pointer;
|
|
|
|
function OpenEventA;
|
|
begin
|
|
GetProcedureAddress(_OpenEventA, kernel32, 'OpenEventA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEventA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEventW: Pointer;
|
|
|
|
function OpenEventW;
|
|
begin
|
|
GetProcedureAddress(_OpenEventW, kernel32, 'OpenEventW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEventW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEvent: Pointer;
|
|
|
|
function OpenEvent;
|
|
begin
|
|
GetProcedureAddress(_OpenEvent, kernel32, 'OpenEvent' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateSemaphoreA: Pointer;
|
|
|
|
function CreateSemaphoreA;
|
|
begin
|
|
GetProcedureAddress(_CreateSemaphoreA, kernel32, 'CreateSemaphoreA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateSemaphoreA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateSemaphoreW: Pointer;
|
|
|
|
function CreateSemaphoreW;
|
|
begin
|
|
GetProcedureAddress(_CreateSemaphoreW, kernel32, 'CreateSemaphoreW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateSemaphoreW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateSemaphore: Pointer;
|
|
|
|
function CreateSemaphore;
|
|
begin
|
|
GetProcedureAddress(_CreateSemaphore, kernel32, 'CreateSemaphore' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateSemaphore]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenSemaphoreA: Pointer;
|
|
|
|
function OpenSemaphoreA;
|
|
begin
|
|
GetProcedureAddress(_OpenSemaphoreA, kernel32, 'OpenSemaphoreA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenSemaphoreA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenSemaphoreW: Pointer;
|
|
|
|
function OpenSemaphoreW;
|
|
begin
|
|
GetProcedureAddress(_OpenSemaphoreW, kernel32, 'OpenSemaphoreW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenSemaphoreW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenSemaphore: Pointer;
|
|
|
|
function OpenSemaphore;
|
|
begin
|
|
GetProcedureAddress(_OpenSemaphore, kernel32, 'OpenSemaphore' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenSemaphore]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateWaitableTimerA: Pointer;
|
|
|
|
function CreateWaitableTimerA;
|
|
begin
|
|
GetProcedureAddress(_CreateWaitableTimerA, kernel32, 'CreateWaitableTimerA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateWaitableTimerA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateWaitableTimerW: Pointer;
|
|
|
|
function CreateWaitableTimerW;
|
|
begin
|
|
GetProcedureAddress(_CreateWaitableTimerW, kernel32, 'CreateWaitableTimerW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateWaitableTimerW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateWaitableTimer: Pointer;
|
|
|
|
function CreateWaitableTimer;
|
|
begin
|
|
GetProcedureAddress(_CreateWaitableTimer, kernel32, 'CreateWaitableTimer' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateWaitableTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenWaitableTimerA: Pointer;
|
|
|
|
function OpenWaitableTimerA;
|
|
begin
|
|
GetProcedureAddress(_OpenWaitableTimerA, kernel32, 'OpenWaitableTimerA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenWaitableTimerA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenWaitableTimerW: Pointer;
|
|
|
|
function OpenWaitableTimerW;
|
|
begin
|
|
GetProcedureAddress(_OpenWaitableTimerW, kernel32, 'OpenWaitableTimerW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenWaitableTimerW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenWaitableTimer: Pointer;
|
|
|
|
function OpenWaitableTimer;
|
|
begin
|
|
GetProcedureAddress(_OpenWaitableTimer, kernel32, 'OpenWaitableTimer' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenWaitableTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetWaitableTimer: Pointer;
|
|
|
|
function SetWaitableTimer;
|
|
begin
|
|
GetProcedureAddress(_SetWaitableTimer, kernel32, 'SetWaitableTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetWaitableTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CancelWaitableTimer: Pointer;
|
|
|
|
function CancelWaitableTimer;
|
|
begin
|
|
GetProcedureAddress(_CancelWaitableTimer, kernel32, 'CancelWaitableTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CancelWaitableTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFileMappingA: Pointer;
|
|
|
|
function CreateFileMappingA;
|
|
begin
|
|
GetProcedureAddress(_CreateFileMappingA, kernel32, 'CreateFileMappingA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFileMappingA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFileMappingW: Pointer;
|
|
|
|
function CreateFileMappingW;
|
|
begin
|
|
GetProcedureAddress(_CreateFileMappingW, kernel32, 'CreateFileMappingW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFileMappingW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFileMapping: Pointer;
|
|
|
|
function CreateFileMapping;
|
|
begin
|
|
GetProcedureAddress(_CreateFileMapping, kernel32, 'CreateFileMapping' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFileMapping]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenFileMappingA: Pointer;
|
|
|
|
function OpenFileMappingA;
|
|
begin
|
|
GetProcedureAddress(_OpenFileMappingA, kernel32, 'OpenFileMappingA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenFileMappingA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenFileMappingW: Pointer;
|
|
|
|
function OpenFileMappingW;
|
|
begin
|
|
GetProcedureAddress(_OpenFileMappingW, kernel32, 'OpenFileMappingW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenFileMappingW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenFileMapping: Pointer;
|
|
|
|
function OpenFileMapping;
|
|
begin
|
|
GetProcedureAddress(_OpenFileMapping, kernel32, 'OpenFileMapping' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenFileMapping]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLogicalDriveStringsA: Pointer;
|
|
|
|
function GetLogicalDriveStringsA;
|
|
begin
|
|
GetProcedureAddress(_GetLogicalDriveStringsA, kernel32, 'GetLogicalDriveStringsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLogicalDriveStringsA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLogicalDriveStringsW: Pointer;
|
|
|
|
function GetLogicalDriveStringsW;
|
|
begin
|
|
GetProcedureAddress(_GetLogicalDriveStringsW, kernel32, 'GetLogicalDriveStringsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLogicalDriveStringsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLogicalDriveStrings: Pointer;
|
|
|
|
function GetLogicalDriveStrings;
|
|
begin
|
|
GetProcedureAddress(_GetLogicalDriveStrings, kernel32, 'GetLogicalDriveStrings' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLogicalDriveStrings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateMemResNotification: Pointer;
|
|
|
|
function CreateMemoryResourceNotification;
|
|
begin
|
|
GetProcedureAddress(_CreateMemResNotification, kernel32, 'CreateMemoryResourceNotification');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateMemResNotification]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryMemoryResourceNotification: Pointer;
|
|
|
|
function QueryMemoryResourceNotification;
|
|
begin
|
|
GetProcedureAddress(_QueryMemoryResourceNotification, kernel32, 'QueryMemoryResourceNotification');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryMemoryResourceNotification]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadLibraryA: Pointer;
|
|
|
|
function LoadLibraryA;
|
|
begin
|
|
GetProcedureAddress(_LoadLibraryA, kernel32, 'LoadLibraryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadLibraryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadLibraryW: Pointer;
|
|
|
|
function LoadLibraryW;
|
|
begin
|
|
GetProcedureAddress(_LoadLibraryW, kernel32, 'LoadLibraryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadLibraryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadLibrary: Pointer;
|
|
|
|
function LoadLibrary;
|
|
begin
|
|
GetProcedureAddress(_LoadLibrary, kernel32, 'LoadLibrary' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadLibrary]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadLibraryExA: Pointer;
|
|
|
|
function LoadLibraryExA;
|
|
begin
|
|
GetProcedureAddress(_LoadLibraryExA, kernel32, 'LoadLibraryExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadLibraryExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadLibraryExW: Pointer;
|
|
|
|
function LoadLibraryExW;
|
|
begin
|
|
GetProcedureAddress(_LoadLibraryExW, kernel32, 'LoadLibraryExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadLibraryExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LoadLibraryEx: Pointer;
|
|
|
|
function LoadLibraryEx;
|
|
begin
|
|
GetProcedureAddress(_LoadLibraryEx, kernel32, 'LoadLibraryEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LoadLibraryEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleFileNameA: Pointer;
|
|
|
|
function GetModuleFileNameA;
|
|
begin
|
|
GetProcedureAddress(_GetModuleFileNameA, kernel32, 'GetModuleFileNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleFileNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleFileNameW: Pointer;
|
|
|
|
function GetModuleFileNameW;
|
|
begin
|
|
GetProcedureAddress(_GetModuleFileNameW, kernel32, 'GetModuleFileNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleFileNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleFileName: Pointer;
|
|
|
|
function GetModuleFileName;
|
|
begin
|
|
GetProcedureAddress(_GetModuleFileName, kernel32, 'GetModuleFileName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleFileName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleHandleA: Pointer;
|
|
|
|
function GetModuleHandleA;
|
|
begin
|
|
GetProcedureAddress(_GetModuleHandleA, kernel32, 'GetModuleHandleA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleHandleA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleHandleW: Pointer;
|
|
|
|
function GetModuleHandleW;
|
|
begin
|
|
GetProcedureAddress(_GetModuleHandleW, kernel32, 'GetModuleHandleW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleHandleW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleHandle: Pointer;
|
|
|
|
function GetModuleHandle;
|
|
begin
|
|
GetProcedureAddress(_GetModuleHandle, kernel32, 'GetModuleHandle' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleHandle]
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
_InitializePTAttrList: Pointer;
|
|
|
|
function InitializeProcThreadAttributeList;
|
|
begin
|
|
GetProcedureAddress(_InitializePTAttrList, kernel32, 'InitializeProcThreadAttributeList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitializePTAttrList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteProcTAttrList: Pointer;
|
|
|
|
procedure DeleteProcThreadAttributeList;
|
|
begin
|
|
GetProcedureAddress(_DeleteProcTAttrList, kernel32, 'DeleteProcThreadAttributeList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteProcTAttrList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UpdateProcTAttr: Pointer;
|
|
|
|
function UpdateProcThreadAttribute;
|
|
begin
|
|
GetProcedureAddress(_UpdateProcTAttr, kernel32, 'UpdateProcThreadAttribute');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UpdateProcTAttr]
|
|
end;
|
|
end;
|
|
|
|
////////////
|
|
|
|
|
|
var
|
|
_CreateProcessA: Pointer;
|
|
|
|
function CreateProcessA;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessA, kernel32, 'CreateProcessA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcessW: Pointer;
|
|
|
|
function CreateProcessW;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessW, kernel32, 'CreateProcessW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcess: Pointer;
|
|
|
|
function CreateProcess;
|
|
begin
|
|
GetProcedureAddress(_CreateProcess, kernel32, 'CreateProcess' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcess]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleHandleExA: Pointer;
|
|
|
|
function GetModuleHandleExA;
|
|
begin
|
|
GetProcedureAddress(_GetModuleHandleExA, kernel32, 'GetModuleHandleExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleHandleExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleHandleExW: Pointer;
|
|
|
|
function GetModuleHandleExW;
|
|
begin
|
|
GetProcedureAddress(_GetModuleHandleExW, kernel32, 'GetModuleHandleExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleHandleExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetModuleHandleEx: Pointer;
|
|
|
|
function GetModuleHandleEx;
|
|
begin
|
|
GetProcedureAddress(_GetModuleHandleEx, kernel32, 'GetModuleHandleEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetModuleHandleEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NeedCurrentDirectoryForExePathA: Pointer;
|
|
|
|
function NeedCurrentDirectoryForExePathA;
|
|
begin
|
|
GetProcedureAddress(_NeedCurrentDirectoryForExePathA, kernel32, 'NeedCurrentDirectoryForExePathA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NeedCurrentDirectoryForExePathA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NeedCurrentDirectoryForExePathW: Pointer;
|
|
|
|
function NeedCurrentDirectoryForExePathW;
|
|
begin
|
|
GetProcedureAddress(_NeedCurrentDirectoryForExePathW, kernel32, 'NeedCurrentDirectoryForExePathW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NeedCurrentDirectoryForExePathW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NeedCurrentDirectoryForExePath: Pointer;
|
|
|
|
function NeedCurrentDirectoryForExePath;
|
|
begin
|
|
GetProcedureAddress(_NeedCurrentDirectoryForExePath, kernel32, 'NeedCurrentDirectoryForExePath' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NeedCurrentDirectoryForExePath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetProcessShutdownParameters: Pointer;
|
|
|
|
function SetProcessShutdownParameters;
|
|
begin
|
|
GetProcedureAddress(_SetProcessShutdownParameters, kernel32, 'SetProcessShutdownParameters');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetProcessShutdownParameters]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessShutdownParameters: Pointer;
|
|
|
|
function GetProcessShutdownParameters;
|
|
begin
|
|
GetProcedureAddress(_GetProcessShutdownParameters, kernel32, 'GetProcessShutdownParameters');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessShutdownParameters]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProcessVersion: Pointer;
|
|
|
|
function GetProcessVersion;
|
|
begin
|
|
GetProcedureAddress(_GetProcessVersion, kernel32, 'GetProcessVersion');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProcessVersion]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FatalAppExitA: Pointer;
|
|
|
|
procedure FatalAppExitA;
|
|
begin
|
|
GetProcedureAddress(_FatalAppExitA, kernel32, 'FatalAppExitA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FatalAppExitA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FatalAppExitW: Pointer;
|
|
|
|
procedure FatalAppExitW;
|
|
begin
|
|
GetProcedureAddress(_FatalAppExitW, kernel32, 'FatalAppExitW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FatalAppExitW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FatalAppExit: Pointer;
|
|
|
|
procedure FatalAppExit;
|
|
begin
|
|
GetProcedureAddress(_FatalAppExit, kernel32, 'FatalAppExit' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FatalAppExit]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetStartupInfoA: Pointer;
|
|
|
|
procedure GetStartupInfoA;
|
|
begin
|
|
GetProcedureAddress(_GetStartupInfoA, kernel32, 'GetStartupInfoA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetStartupInfoA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetStartupInfoW: Pointer;
|
|
|
|
procedure GetStartupInfoW;
|
|
begin
|
|
GetProcedureAddress(_GetStartupInfoW, kernel32, 'GetStartupInfoW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetStartupInfoW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetStartupInfo: Pointer;
|
|
|
|
procedure GetStartupInfo;
|
|
begin
|
|
GetProcedureAddress(_GetStartupInfo, kernel32, 'GetStartupInfo' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetStartupInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommandLineA: Pointer;
|
|
|
|
function GetCommandLineA;
|
|
begin
|
|
GetProcedureAddress(_GetCommandLineA, kernel32, 'GetCommandLineA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommandLineA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommandLineW: Pointer;
|
|
|
|
function GetCommandLineW;
|
|
begin
|
|
GetProcedureAddress(_GetCommandLineW, kernel32, 'GetCommandLineW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommandLineW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCommandLine: Pointer;
|
|
|
|
function GetCommandLine;
|
|
begin
|
|
GetProcedureAddress(_GetCommandLine, kernel32, 'GetCommandLine' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCommandLine]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEnvironmentVariableA: Pointer;
|
|
|
|
function GetEnvironmentVariableA;
|
|
begin
|
|
GetProcedureAddress(_GetEnvironmentVariableA, kernel32, 'GetEnvironmentVariableA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEnvironmentVariableA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEnvironmentVariableW: Pointer;
|
|
|
|
function GetEnvironmentVariableW;
|
|
begin
|
|
GetProcedureAddress(_GetEnvironmentVariableW, kernel32, 'GetEnvironmentVariableW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEnvironmentVariableW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEnvironmentVariable: Pointer;
|
|
|
|
function GetEnvironmentVariable;
|
|
begin
|
|
GetProcedureAddress(_GetEnvironmentVariable, kernel32, 'GetEnvironmentVariable' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEnvironmentVariable]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEnvironmentVariableA: Pointer;
|
|
|
|
function SetEnvironmentVariableA;
|
|
begin
|
|
GetProcedureAddress(_SetEnvironmentVariableA, kernel32, 'SetEnvironmentVariableA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEnvironmentVariableA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEnvironmentVariableW: Pointer;
|
|
|
|
function SetEnvironmentVariableW;
|
|
begin
|
|
GetProcedureAddress(_SetEnvironmentVariableW, kernel32, 'SetEnvironmentVariableW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEnvironmentVariableW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetEnvironmentVariable: Pointer;
|
|
|
|
function SetEnvironmentVariable;
|
|
begin
|
|
GetProcedureAddress(_SetEnvironmentVariable, kernel32, 'SetEnvironmentVariable' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetEnvironmentVariable]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ExpandEnvironmentStringsA: Pointer;
|
|
|
|
function ExpandEnvironmentStringsA;
|
|
begin
|
|
GetProcedureAddress(_ExpandEnvironmentStringsA, kernel32, 'ExpandEnvironmentStringsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ExpandEnvironmentStringsA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ExpandEnvironmentStringsW: Pointer;
|
|
|
|
function ExpandEnvironmentStringsW;
|
|
begin
|
|
GetProcedureAddress(_ExpandEnvironmentStringsW, kernel32, 'ExpandEnvironmentStringsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ExpandEnvironmentStringsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ExpandEnvironmentStrings: Pointer;
|
|
|
|
function ExpandEnvironmentStrings;
|
|
begin
|
|
GetProcedureAddress(_ExpandEnvironmentStrings, kernel32, 'ExpandEnvironmentStrings' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ExpandEnvironmentStrings]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFirmwareEnvironmentVariableA: Pointer;
|
|
|
|
function GetFirmwareEnvironmentVariableA;
|
|
begin
|
|
GetProcedureAddress(_GetFirmwareEnvironmentVariableA, kernel32, 'GetFirmwareEnvironmentVariableA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFirmwareEnvironmentVariableA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFirmwareEnvironmentVariableW: Pointer;
|
|
|
|
function GetFirmwareEnvironmentVariableW;
|
|
begin
|
|
GetProcedureAddress(_GetFirmwareEnvironmentVariableW, kernel32, 'GetFirmwareEnvironmentVariableW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFirmwareEnvironmentVariableW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFirmwareEnvironmentVariable: Pointer;
|
|
|
|
function GetFirmwareEnvironmentVariable;
|
|
begin
|
|
GetProcedureAddress(_GetFirmwareEnvironmentVariable, kernel32, 'GetFirmwareEnvironmentVariable' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFirmwareEnvironmentVariable]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFirmwareEnvironmentVariableA: Pointer;
|
|
|
|
function SetFirmwareEnvironmentVariableA;
|
|
begin
|
|
GetProcedureAddress(_SetFirmwareEnvironmentVariableA, kernel32, 'SetFirmwareEnvironmentVariableA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFirmwareEnvironmentVariableA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFirmwareEnvironmentVariableW: Pointer;
|
|
|
|
function SetFirmwareEnvironmentVariableW;
|
|
begin
|
|
GetProcedureAddress(_SetFirmwareEnvironmentVariableW, kernel32, 'SetFirmwareEnvironmentVariableW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFirmwareEnvironmentVariableW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFirmwareEnvironmentVariable: Pointer;
|
|
|
|
function SetFirmwareEnvironmentVariable;
|
|
begin
|
|
GetProcedureAddress(_SetFirmwareEnvironmentVariable, kernel32, 'SetFirmwareEnvironmentVariable' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFirmwareEnvironmentVariable]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OutputDebugStringA: Pointer;
|
|
|
|
procedure OutputDebugStringA;
|
|
begin
|
|
GetProcedureAddress(_OutputDebugStringA, kernel32, 'OutputDebugStringA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OutputDebugStringA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OutputDebugStringW: Pointer;
|
|
|
|
procedure OutputDebugStringW;
|
|
begin
|
|
GetProcedureAddress(_OutputDebugStringW, kernel32, 'OutputDebugStringW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OutputDebugStringW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OutputDebugString: Pointer;
|
|
|
|
procedure OutputDebugString;
|
|
begin
|
|
GetProcedureAddress(_OutputDebugString, kernel32, 'OutputDebugString' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OutputDebugString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindResourceA: Pointer;
|
|
|
|
function FindResourceA;
|
|
begin
|
|
GetProcedureAddress(_FindResourceA, kernel32, 'FindResourceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindResourceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindResourceW: Pointer;
|
|
|
|
function FindResourceW;
|
|
begin
|
|
GetProcedureAddress(_FindResourceW, kernel32, 'FindResourceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindResourceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindResource: Pointer;
|
|
|
|
function FindResource;
|
|
begin
|
|
GetProcedureAddress(_FindResource, kernel32, 'FindResource' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindResourceExA: Pointer;
|
|
|
|
function FindResourceExA;
|
|
begin
|
|
GetProcedureAddress(_FindResourceExA, kernel32, 'FindResourceExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindResourceExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindResourceExW: Pointer;
|
|
|
|
function FindResourceExW;
|
|
begin
|
|
GetProcedureAddress(_FindResourceExW, kernel32, 'FindResourceExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindResourceExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindResourceEx: Pointer;
|
|
|
|
function FindResourceEx;
|
|
begin
|
|
GetProcedureAddress(_FindResourceEx, kernel32, 'FindResourceEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindResourceEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceTypesA: Pointer;
|
|
|
|
function EnumResourceTypesA;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceTypesA, kernel32, 'EnumResourceTypesA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceTypesA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceTypesW: Pointer;
|
|
|
|
function EnumResourceTypesW;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceTypesW, kernel32, 'EnumResourceTypesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceTypesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceTypes: Pointer;
|
|
|
|
function EnumResourceTypes;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceTypes, kernel32, 'EnumResourceTypes' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceTypes]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceNamesA: Pointer;
|
|
|
|
function EnumResourceNamesA;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceNamesA, kernel32, 'EnumResourceNamesA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceNamesA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceNamesW: Pointer;
|
|
|
|
function EnumResourceNamesW;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceNamesW, kernel32, 'EnumResourceNamesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceNamesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceNames: Pointer;
|
|
|
|
function EnumResourceNames;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceNames, kernel32, 'EnumResourceNames' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceNames]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceLanguagesA: Pointer;
|
|
|
|
function EnumResourceLanguagesA;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceLanguagesA, kernel32, 'EnumResourceLanguagesA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceLanguagesA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceLanguagesW: Pointer;
|
|
|
|
function EnumResourceLanguagesW;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceLanguagesW, kernel32, 'EnumResourceLanguagesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceLanguagesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EnumResourceLanguages: Pointer;
|
|
|
|
function EnumResourceLanguages;
|
|
begin
|
|
GetProcedureAddress(_EnumResourceLanguages, kernel32, 'EnumResourceLanguages' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EnumResourceLanguages]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BeginUpdateResourceA: Pointer;
|
|
|
|
function BeginUpdateResourceA;
|
|
begin
|
|
GetProcedureAddress(_BeginUpdateResourceA, kernel32, 'BeginUpdateResourceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BeginUpdateResourceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BeginUpdateResourceW: Pointer;
|
|
|
|
function BeginUpdateResourceW;
|
|
begin
|
|
GetProcedureAddress(_BeginUpdateResourceW, kernel32, 'BeginUpdateResourceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BeginUpdateResourceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BeginUpdateResource: Pointer;
|
|
|
|
function BeginUpdateResource;
|
|
begin
|
|
GetProcedureAddress(_BeginUpdateResource, kernel32, 'BeginUpdateResource' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BeginUpdateResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UpdateResourceA: Pointer;
|
|
|
|
function UpdateResourceA;
|
|
begin
|
|
GetProcedureAddress(_UpdateResourceA, kernel32, 'UpdateResourceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UpdateResourceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UpdateResourceW: Pointer;
|
|
|
|
function UpdateResourceW;
|
|
begin
|
|
GetProcedureAddress(_UpdateResourceW, kernel32, 'UpdateResourceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UpdateResourceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UpdateResource: Pointer;
|
|
|
|
function UpdateResource;
|
|
begin
|
|
GetProcedureAddress(_UpdateResource, kernel32, 'UpdateResource' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UpdateResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EndUpdateResourceA: Pointer;
|
|
|
|
function EndUpdateResourceA;
|
|
begin
|
|
GetProcedureAddress(_EndUpdateResourceA, kernel32, 'EndUpdateResourceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EndUpdateResourceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EndUpdateResourceW: Pointer;
|
|
|
|
function EndUpdateResourceW;
|
|
begin
|
|
GetProcedureAddress(_EndUpdateResourceW, kernel32, 'EndUpdateResourceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EndUpdateResourceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EndUpdateResource: Pointer;
|
|
|
|
function EndUpdateResource;
|
|
begin
|
|
GetProcedureAddress(_EndUpdateResource, kernel32, 'EndUpdateResource' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EndUpdateResource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalAddAtomA: Pointer;
|
|
|
|
function GlobalAddAtomA;
|
|
begin
|
|
GetProcedureAddress(_GlobalAddAtomA, kernel32, 'GlobalAddAtomA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalAddAtomA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalAddAtomW: Pointer;
|
|
|
|
function GlobalAddAtomW;
|
|
begin
|
|
GetProcedureAddress(_GlobalAddAtomW, kernel32, 'GlobalAddAtomW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalAddAtomW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalAddAtom: Pointer;
|
|
|
|
function GlobalAddAtom;
|
|
begin
|
|
GetProcedureAddress(_GlobalAddAtom, kernel32, 'GlobalAddAtom' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalAddAtom]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalFindAtomA: Pointer;
|
|
|
|
function GlobalFindAtomA;
|
|
begin
|
|
GetProcedureAddress(_GlobalFindAtomA, kernel32, 'GlobalFindAtomA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalFindAtomA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalFindAtomW: Pointer;
|
|
|
|
function GlobalFindAtomW;
|
|
begin
|
|
GetProcedureAddress(_GlobalFindAtomW, kernel32, 'GlobalFindAtomW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalFindAtomW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalFindAtom: Pointer;
|
|
|
|
function GlobalFindAtom;
|
|
begin
|
|
GetProcedureAddress(_GlobalFindAtom, kernel32, 'GlobalFindAtom' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalFindAtom]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalGetAtomNameA: Pointer;
|
|
|
|
function GlobalGetAtomNameA;
|
|
begin
|
|
GetProcedureAddress(_GlobalGetAtomNameA, kernel32, 'GlobalGetAtomNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalGetAtomNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalGetAtomNameW: Pointer;
|
|
|
|
function GlobalGetAtomNameW;
|
|
begin
|
|
GetProcedureAddress(_GlobalGetAtomNameW, kernel32, 'GlobalGetAtomNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalGetAtomNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GlobalGetAtomName: Pointer;
|
|
|
|
function GlobalGetAtomName;
|
|
begin
|
|
GetProcedureAddress(_GlobalGetAtomName, kernel32, 'GlobalGetAtomName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GlobalGetAtomName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAtomA: Pointer;
|
|
|
|
function AddAtomA;
|
|
begin
|
|
GetProcedureAddress(_AddAtomA, kernel32, 'AddAtomA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAtomA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAtomW: Pointer;
|
|
|
|
function AddAtomW;
|
|
begin
|
|
GetProcedureAddress(_AddAtomW, kernel32, 'AddAtomW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAtomW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAtom: Pointer;
|
|
|
|
function AddAtom;
|
|
begin
|
|
GetProcedureAddress(_AddAtom, kernel32, 'AddAtom' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAtom]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindAtomA: Pointer;
|
|
|
|
function FindAtomA;
|
|
begin
|
|
GetProcedureAddress(_FindAtomA, kernel32, 'FindAtomA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindAtomA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindAtomW: Pointer;
|
|
|
|
function FindAtomW;
|
|
begin
|
|
GetProcedureAddress(_FindAtomW, kernel32, 'FindAtomW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindAtomW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindAtom: Pointer;
|
|
|
|
function FindAtom;
|
|
begin
|
|
GetProcedureAddress(_FindAtom, kernel32, 'FindAtom' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindAtom]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetAtomNameA: Pointer;
|
|
|
|
function GetAtomNameA;
|
|
begin
|
|
GetProcedureAddress(_GetAtomNameA, kernel32, 'GetAtomNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetAtomNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetAtomNameW: Pointer;
|
|
|
|
function GetAtomNameW;
|
|
begin
|
|
GetProcedureAddress(_GetAtomNameW, kernel32, 'GetAtomNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetAtomNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetAtomName: Pointer;
|
|
|
|
function GetAtomName;
|
|
begin
|
|
GetProcedureAddress(_GetAtomName, kernel32, 'GetAtomName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetAtomName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileIntA: Pointer;
|
|
|
|
function GetProfileIntA;
|
|
begin
|
|
GetProcedureAddress(_GetProfileIntA, kernel32, 'GetProfileIntA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileIntA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileIntW: Pointer;
|
|
|
|
function GetProfileIntW;
|
|
begin
|
|
GetProcedureAddress(_GetProfileIntW, kernel32, 'GetProfileIntW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileIntW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileInt: Pointer;
|
|
|
|
function GetProfileInt;
|
|
begin
|
|
GetProcedureAddress(_GetProfileInt, kernel32, 'GetProfileInt' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileInt]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileStringA: Pointer;
|
|
|
|
function GetProfileStringA;
|
|
begin
|
|
GetProcedureAddress(_GetProfileStringA, kernel32, 'GetProfileStringA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileStringA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileStringW: Pointer;
|
|
|
|
function GetProfileStringW;
|
|
begin
|
|
GetProcedureAddress(_GetProfileStringW, kernel32, 'GetProfileStringW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileStringW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileString: Pointer;
|
|
|
|
function GetProfileString;
|
|
begin
|
|
GetProcedureAddress(_GetProfileString, kernel32, 'GetProfileString' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProfileStringA: Pointer;
|
|
|
|
function WriteProfileStringA;
|
|
begin
|
|
GetProcedureAddress(_WriteProfileStringA, kernel32, 'WriteProfileStringA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProfileStringA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProfileStringW: Pointer;
|
|
|
|
function WriteProfileStringW;
|
|
begin
|
|
GetProcedureAddress(_WriteProfileStringW, kernel32, 'WriteProfileStringW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProfileStringW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProfileString: Pointer;
|
|
|
|
function WriteProfileString;
|
|
begin
|
|
GetProcedureAddress(_WriteProfileString, kernel32, 'WriteProfileString' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProfileString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileSectionA: Pointer;
|
|
|
|
function GetProfileSectionA;
|
|
begin
|
|
GetProcedureAddress(_GetProfileSectionA, kernel32, 'GetProfileSectionA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileSectionA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileSectionW: Pointer;
|
|
|
|
function GetProfileSectionW;
|
|
begin
|
|
GetProcedureAddress(_GetProfileSectionW, kernel32, 'GetProfileSectionW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileSectionW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetProfileSection: Pointer;
|
|
|
|
function GetProfileSection;
|
|
begin
|
|
GetProcedureAddress(_GetProfileSection, kernel32, 'GetProfileSection' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetProfileSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProfileSectionA: Pointer;
|
|
|
|
function WriteProfileSectionA;
|
|
begin
|
|
GetProcedureAddress(_WriteProfileSectionA, kernel32, 'WriteProfileSectionA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProfileSectionA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProfileSectionW: Pointer;
|
|
|
|
function WriteProfileSectionW;
|
|
begin
|
|
GetProcedureAddress(_WriteProfileSectionW, kernel32, 'WriteProfileSectionW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProfileSectionW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WriteProfileSection: Pointer;
|
|
|
|
function WriteProfileSection;
|
|
begin
|
|
GetProcedureAddress(_WriteProfileSection, kernel32, 'WriteProfileSection' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WriteProfileSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileIntA: Pointer;
|
|
|
|
function GetPrivateProfileIntA;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileIntA, kernel32, 'GetPrivateProfileIntA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileIntA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileIntW: Pointer;
|
|
|
|
function GetPrivateProfileIntW;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileIntW, kernel32, 'GetPrivateProfileIntW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileIntW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileInt: Pointer;
|
|
|
|
function GetPrivateProfileInt;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileInt, kernel32, 'GetPrivateProfileInt' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileInt]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileStringA: Pointer;
|
|
|
|
function GetPrivateProfileStringA;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileStringA, kernel32, 'GetPrivateProfileStringA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileStringA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileStringW: Pointer;
|
|
|
|
function GetPrivateProfileStringW;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileStringW, kernel32, 'GetPrivateProfileStringW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileStringW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileString: Pointer;
|
|
|
|
function GetPrivateProfileString;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileString, kernel32, 'GetPrivateProfileString' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileStringA: Pointer;
|
|
|
|
function WritePrivateProfileStringA;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileStringA, kernel32, 'WritePrivateProfileStringA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileStringA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileStringW: Pointer;
|
|
|
|
function WritePrivateProfileStringW;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileStringW, kernel32, 'WritePrivateProfileStringW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileStringW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileString: Pointer;
|
|
|
|
function WritePrivateProfileString;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileString, kernel32, 'WritePrivateProfileString' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileSectionA: Pointer;
|
|
|
|
function GetPrivateProfileSectionA;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileSectionA, kernel32, 'GetPrivateProfileSectionA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileSectionA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileSectionW: Pointer;
|
|
|
|
function GetPrivateProfileSectionW;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileSectionW, kernel32, 'GetPrivateProfileSectionW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileSectionW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileSection: Pointer;
|
|
|
|
function GetPrivateProfileSection;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileSection, kernel32, 'GetPrivateProfileSection' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileSectionA: Pointer;
|
|
|
|
function WritePrivateProfileSectionA;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileSectionA, kernel32, 'WritePrivateProfileSectionA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileSectionA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileSectionW: Pointer;
|
|
|
|
function WritePrivateProfileSectionW;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileSectionW, kernel32, 'WritePrivateProfileSectionW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileSectionW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileSection: Pointer;
|
|
|
|
function WritePrivateProfileSection;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileSection, kernel32, 'WritePrivateProfileSection' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileSection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileSectionNamesA: Pointer;
|
|
|
|
function GetPrivateProfileSectionNamesA;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileSectionNamesA, kernel32, 'GetPrivateProfileSectionNamesA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileSectionNamesA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileSectionNamesW: Pointer;
|
|
|
|
function GetPrivateProfileSectionNamesW;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileSectionNamesW, kernel32, 'GetPrivateProfileSectionNamesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileSectionNamesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileSectionNames: Pointer;
|
|
|
|
function GetPrivateProfileSectionNames;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileSectionNames, kernel32, 'GetPrivateProfileSectionNames' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileSectionNames]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileStructA: Pointer;
|
|
|
|
function GetPrivateProfileStructA;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileStructA, kernel32, 'GetPrivateProfileStructA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileStructA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileStructW: Pointer;
|
|
|
|
function GetPrivateProfileStructW;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileStructW, kernel32, 'GetPrivateProfileStructW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileStructW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateProfileStruct: Pointer;
|
|
|
|
function GetPrivateProfileStruct;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateProfileStruct, kernel32, 'GetPrivateProfileStruct' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateProfileStruct]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileStructA: Pointer;
|
|
|
|
function WritePrivateProfileStructA;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileStructA, kernel32, 'WritePrivateProfileStructA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileStructA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileStructW: Pointer;
|
|
|
|
function WritePrivateProfileStructW;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileStructW, kernel32, 'WritePrivateProfileStructW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileStructW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WritePrivateProfileStruct: Pointer;
|
|
|
|
function WritePrivateProfileStruct;
|
|
begin
|
|
GetProcedureAddress(_WritePrivateProfileStruct, kernel32, 'WritePrivateProfileStruct' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WritePrivateProfileStruct]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDriveTypeA: Pointer;
|
|
|
|
function GetDriveTypeA;
|
|
begin
|
|
GetProcedureAddress(_GetDriveTypeA, kernel32, 'GetDriveTypeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDriveTypeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDriveTypeW: Pointer;
|
|
|
|
function GetDriveTypeW;
|
|
begin
|
|
GetProcedureAddress(_GetDriveTypeW, kernel32, 'GetDriveTypeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDriveTypeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDriveType: Pointer;
|
|
|
|
function GetDriveType;
|
|
begin
|
|
GetProcedureAddress(_GetDriveType, kernel32, 'GetDriveType' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDriveType]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemDirectoryA: Pointer;
|
|
|
|
function GetSystemDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_GetSystemDirectoryA, kernel32, 'GetSystemDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemDirectoryW: Pointer;
|
|
|
|
function GetSystemDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_GetSystemDirectoryW, kernel32, 'GetSystemDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemDirectory: Pointer;
|
|
|
|
function GetSystemDirectory;
|
|
begin
|
|
GetProcedureAddress(_GetSystemDirectory, kernel32, 'GetSystemDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTempPathA: Pointer;
|
|
|
|
function GetTempPathA;
|
|
begin
|
|
GetProcedureAddress(_GetTempPathA, kernel32, 'GetTempPathA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTempPathA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTempPathW: Pointer;
|
|
|
|
function GetTempPathW;
|
|
begin
|
|
GetProcedureAddress(_GetTempPathW, kernel32, 'GetTempPathW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTempPathW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTempPath: Pointer;
|
|
|
|
function GetTempPath;
|
|
begin
|
|
GetProcedureAddress(_GetTempPath, kernel32, 'GetTempPath' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTempPath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTempFileNameA: Pointer;
|
|
|
|
function GetTempFileNameA;
|
|
begin
|
|
GetProcedureAddress(_GetTempFileNameA, kernel32, 'GetTempFileNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTempFileNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTempFileNameW: Pointer;
|
|
|
|
function GetTempFileNameW;
|
|
begin
|
|
GetProcedureAddress(_GetTempFileNameW, kernel32, 'GetTempFileNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTempFileNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTempFileName: Pointer;
|
|
|
|
function GetTempFileName;
|
|
begin
|
|
GetProcedureAddress(_GetTempFileName, kernel32, 'GetTempFileName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTempFileName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetWindowsDirectoryA: Pointer;
|
|
|
|
function GetWindowsDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_GetWindowsDirectoryA, kernel32, 'GetWindowsDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetWindowsDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetWindowsDirectoryW: Pointer;
|
|
|
|
function GetWindowsDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_GetWindowsDirectoryW, kernel32, 'GetWindowsDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetWindowsDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetWindowsDirectory: Pointer;
|
|
|
|
function GetWindowsDirectory;
|
|
begin
|
|
GetProcedureAddress(_GetWindowsDirectory, kernel32, 'GetWindowsDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetWindowsDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemWindowsDirectoryA: Pointer;
|
|
|
|
function GetSystemWindowsDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_GetSystemWindowsDirectoryA, kernel32, 'GetSystemWindowsDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemWindowsDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemWindowsDirectoryW: Pointer;
|
|
|
|
function GetSystemWindowsDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_GetSystemWindowsDirectoryW, kernel32, 'GetSystemWindowsDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemWindowsDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemWindowsDirectory: Pointer;
|
|
|
|
function GetSystemWindowsDirectory;
|
|
begin
|
|
GetProcedureAddress(_GetSystemWindowsDirectory, kernel32, 'GetSystemWindowsDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemWindowsDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemWow64DirectoryA: Pointer;
|
|
|
|
function GetSystemWow64DirectoryA;
|
|
begin
|
|
GetProcedureAddress(_GetSystemWow64DirectoryA, kernel32, 'GetSystemWow64DirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemWow64DirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemWow64DirectoryW: Pointer;
|
|
|
|
function GetSystemWow64DirectoryW;
|
|
begin
|
|
GetProcedureAddress(_GetSystemWow64DirectoryW, kernel32, 'GetSystemWow64DirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemWow64DirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemWow64Directory: Pointer;
|
|
|
|
function GetSystemWow64Directory;
|
|
begin
|
|
GetProcedureAddress(_GetSystemWow64Directory, kernel32, 'GetSystemWow64Directory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemWow64Directory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_Wow64EnableWow64FsRedirection: Pointer;
|
|
|
|
function Wow64EnableWow64FsRedirection;
|
|
begin
|
|
GetProcedureAddress(_Wow64EnableWow64FsRedirection, kernel32, 'Wow64EnableWow64FsRedirection');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_Wow64EnableWow64FsRedirection]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCurrentDirectoryA: Pointer;
|
|
|
|
function SetCurrentDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_SetCurrentDirectoryA, kernel32, 'SetCurrentDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCurrentDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCurrentDirectoryW: Pointer;
|
|
|
|
function SetCurrentDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_SetCurrentDirectoryW, kernel32, 'SetCurrentDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCurrentDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetCurrentDirectory: Pointer;
|
|
|
|
function SetCurrentDirectory;
|
|
begin
|
|
GetProcedureAddress(_SetCurrentDirectory, kernel32, 'SetCurrentDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetCurrentDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentDirectoryA: Pointer;
|
|
|
|
function GetCurrentDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentDirectoryA, kernel32, 'GetCurrentDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentDirectoryW: Pointer;
|
|
|
|
function GetCurrentDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentDirectoryW, kernel32, 'GetCurrentDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentDirectory: Pointer;
|
|
|
|
function GetCurrentDirectory;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentDirectory, kernel32, 'GetCurrentDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetDllDirectoryA: Pointer;
|
|
|
|
function SetDllDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_SetDllDirectoryA, kernel32, 'SetDllDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetDllDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetDllDirectoryW: Pointer;
|
|
|
|
function SetDllDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_SetDllDirectoryW, kernel32, 'SetDllDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetDllDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetDllDirectory: Pointer;
|
|
|
|
function SetDllDirectory;
|
|
begin
|
|
GetProcedureAddress(_SetDllDirectory, kernel32, 'SetDllDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetDllDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDllDirectoryA: Pointer;
|
|
|
|
function GetDllDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_GetDllDirectoryA, kernel32, 'GetDllDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDllDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDllDirectoryW: Pointer;
|
|
|
|
function GetDllDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_GetDllDirectoryW, kernel32, 'GetDllDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDllDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDllDirectory: Pointer;
|
|
|
|
function GetDllDirectory;
|
|
begin
|
|
GetProcedureAddress(_GetDllDirectory, kernel32, 'GetDllDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDllDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDiskFreeSpaceA: Pointer;
|
|
|
|
function GetDiskFreeSpaceA;
|
|
begin
|
|
GetProcedureAddress(_GetDiskFreeSpaceA, kernel32, 'GetDiskFreeSpaceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDiskFreeSpaceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDiskFreeSpaceW: Pointer;
|
|
|
|
function GetDiskFreeSpaceW;
|
|
begin
|
|
GetProcedureAddress(_GetDiskFreeSpaceW, kernel32, 'GetDiskFreeSpaceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDiskFreeSpaceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDiskFreeSpace: Pointer;
|
|
|
|
function GetDiskFreeSpace;
|
|
begin
|
|
GetProcedureAddress(_GetDiskFreeSpace, kernel32, 'GetDiskFreeSpace' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDiskFreeSpace]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDiskFreeSpaceExA: Pointer;
|
|
|
|
function GetDiskFreeSpaceExA;
|
|
begin
|
|
GetProcedureAddress(_GetDiskFreeSpaceExA, kernel32, 'GetDiskFreeSpaceExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDiskFreeSpaceExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDiskFreeSpaceExW: Pointer;
|
|
|
|
function GetDiskFreeSpaceExW;
|
|
begin
|
|
GetProcedureAddress(_GetDiskFreeSpaceExW, kernel32, 'GetDiskFreeSpaceExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDiskFreeSpaceExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDiskFreeSpaceEx: Pointer;
|
|
|
|
function GetDiskFreeSpaceEx;
|
|
begin
|
|
GetProcedureAddress(_GetDiskFreeSpaceEx, kernel32, 'GetDiskFreeSpaceEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDiskFreeSpaceEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateDirectoryA: Pointer;
|
|
|
|
function CreateDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_CreateDirectoryA, kernel32, 'CreateDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateDirectoryW: Pointer;
|
|
|
|
function CreateDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_CreateDirectoryW, kernel32, 'CreateDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateDirectory: Pointer;
|
|
|
|
function CreateDirectory;
|
|
begin
|
|
GetProcedureAddress(_CreateDirectory, kernel32, 'CreateDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateDirectoryExA: Pointer;
|
|
|
|
function CreateDirectoryExA;
|
|
begin
|
|
GetProcedureAddress(_CreateDirectoryExA, kernel32, 'CreateDirectoryExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateDirectoryExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateDirectoryExW: Pointer;
|
|
|
|
function CreateDirectoryExW;
|
|
begin
|
|
GetProcedureAddress(_CreateDirectoryExW, kernel32, 'CreateDirectoryExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateDirectoryExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateDirectoryEx: Pointer;
|
|
|
|
function CreateDirectoryEx;
|
|
begin
|
|
GetProcedureAddress(_CreateDirectoryEx, kernel32, 'CreateDirectoryEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateDirectoryEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RemoveDirectoryA: Pointer;
|
|
|
|
function RemoveDirectoryA;
|
|
begin
|
|
GetProcedureAddress(_RemoveDirectoryA, kernel32, 'RemoveDirectoryA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RemoveDirectoryA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RemoveDirectoryW: Pointer;
|
|
|
|
function RemoveDirectoryW;
|
|
begin
|
|
GetProcedureAddress(_RemoveDirectoryW, kernel32, 'RemoveDirectoryW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RemoveDirectoryW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RemoveDirectory: Pointer;
|
|
|
|
function RemoveDirectory;
|
|
begin
|
|
GetProcedureAddress(_RemoveDirectory, kernel32, 'RemoveDirectory' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RemoveDirectory]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFullPathNameA: Pointer;
|
|
|
|
function GetFullPathNameA;
|
|
begin
|
|
GetProcedureAddress(_GetFullPathNameA, kernel32, 'GetFullPathNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFullPathNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFullPathNameW: Pointer;
|
|
|
|
function GetFullPathNameW;
|
|
begin
|
|
GetProcedureAddress(_GetFullPathNameW, kernel32, 'GetFullPathNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFullPathNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFullPathName: Pointer;
|
|
|
|
function GetFullPathName;
|
|
begin
|
|
GetProcedureAddress(_GetFullPathName, kernel32, 'GetFullPathName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFullPathName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DefineDosDeviceA: Pointer;
|
|
|
|
function DefineDosDeviceA;
|
|
begin
|
|
GetProcedureAddress(_DefineDosDeviceA, kernel32, 'DefineDosDeviceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DefineDosDeviceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DefineDosDeviceW: Pointer;
|
|
|
|
function DefineDosDeviceW;
|
|
begin
|
|
GetProcedureAddress(_DefineDosDeviceW, kernel32, 'DefineDosDeviceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DefineDosDeviceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DefineDosDevice: Pointer;
|
|
|
|
function DefineDosDevice;
|
|
begin
|
|
GetProcedureAddress(_DefineDosDevice, kernel32, 'DefineDosDevice' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DefineDosDevice]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryDosDeviceA: Pointer;
|
|
|
|
function QueryDosDeviceA;
|
|
begin
|
|
GetProcedureAddress(_QueryDosDeviceA, kernel32, 'QueryDosDeviceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryDosDeviceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryDosDeviceW: Pointer;
|
|
|
|
function QueryDosDeviceW;
|
|
begin
|
|
GetProcedureAddress(_QueryDosDeviceW, kernel32, 'QueryDosDeviceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryDosDeviceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryDosDevice: Pointer;
|
|
|
|
function QueryDosDevice;
|
|
begin
|
|
GetProcedureAddress(_QueryDosDevice, kernel32, 'QueryDosDevice' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryDosDevice]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFileA: Pointer;
|
|
|
|
function CreateFileA;
|
|
begin
|
|
GetProcedureAddress(_CreateFileA, kernel32, 'CreateFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFileW: Pointer;
|
|
|
|
function CreateFileW;
|
|
begin
|
|
GetProcedureAddress(_CreateFileW, kernel32, 'CreateFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateFile: Pointer;
|
|
|
|
function CreateFile;
|
|
begin
|
|
GetProcedureAddress(_CreateFile, kernel32, 'CreateFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReOpenFile: Pointer;
|
|
|
|
function ReOpenFile;
|
|
begin
|
|
GetProcedureAddress(_ReOpenFile, kernel32, 'ReOpenFile');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReOpenFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileAttributesA: Pointer;
|
|
|
|
function SetFileAttributesA;
|
|
begin
|
|
GetProcedureAddress(_SetFileAttributesA, kernel32, 'SetFileAttributesA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileAttributesA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileAttributesW: Pointer;
|
|
|
|
function SetFileAttributesW;
|
|
begin
|
|
GetProcedureAddress(_SetFileAttributesW, kernel32, 'SetFileAttributesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileAttributesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileAttributes: Pointer;
|
|
|
|
function SetFileAttributes;
|
|
begin
|
|
GetProcedureAddress(_SetFileAttributes, kernel32, 'SetFileAttributes' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileAttributes]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileAttributesA: Pointer;
|
|
|
|
function GetFileAttributesA;
|
|
begin
|
|
GetProcedureAddress(_GetFileAttributesA, kernel32, 'GetFileAttributesA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileAttributesA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileAttributesW: Pointer;
|
|
|
|
function GetFileAttributesW;
|
|
begin
|
|
GetProcedureAddress(_GetFileAttributesW, kernel32, 'GetFileAttributesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileAttributesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileAttributes: Pointer;
|
|
|
|
function GetFileAttributes;
|
|
begin
|
|
GetProcedureAddress(_GetFileAttributes, kernel32, 'GetFileAttributes' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileAttributes]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileAttributesExA: Pointer;
|
|
|
|
function GetFileAttributesExA;
|
|
begin
|
|
GetProcedureAddress(_GetFileAttributesExA, kernel32, 'GetFileAttributesExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileAttributesExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileAttributesExW: Pointer;
|
|
|
|
function GetFileAttributesExW;
|
|
begin
|
|
GetProcedureAddress(_GetFileAttributesExW, kernel32, 'GetFileAttributesExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileAttributesExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileAttributesEx: Pointer;
|
|
|
|
function GetFileAttributesEx;
|
|
begin
|
|
GetProcedureAddress(_GetFileAttributesEx, kernel32, 'GetFileAttributesEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileAttributesEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCompressedFileSizeA: Pointer;
|
|
|
|
function GetCompressedFileSizeA;
|
|
begin
|
|
GetProcedureAddress(_GetCompressedFileSizeA, kernel32, 'GetCompressedFileSizeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCompressedFileSizeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCompressedFileSizeW: Pointer;
|
|
|
|
function GetCompressedFileSizeW;
|
|
begin
|
|
GetProcedureAddress(_GetCompressedFileSizeW, kernel32, 'GetCompressedFileSizeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCompressedFileSizeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCompressedFileSize: Pointer;
|
|
|
|
function GetCompressedFileSize;
|
|
begin
|
|
GetProcedureAddress(_GetCompressedFileSize, kernel32, 'GetCompressedFileSize' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCompressedFileSize]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteFileA: Pointer;
|
|
|
|
function DeleteFileA;
|
|
begin
|
|
GetProcedureAddress(_DeleteFileA, kernel32, 'DeleteFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteFileW: Pointer;
|
|
|
|
function DeleteFileW;
|
|
begin
|
|
GetProcedureAddress(_DeleteFileW, kernel32, 'DeleteFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteFile: Pointer;
|
|
|
|
function DeleteFile;
|
|
begin
|
|
GetProcedureAddress(_DeleteFile, kernel32, 'DeleteFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFileExA: Pointer;
|
|
|
|
function FindFirstFileExA;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFileExA, kernel32, 'FindFirstFileExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFileExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFileExW: Pointer;
|
|
|
|
function FindFirstFileExW;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFileExW, kernel32, 'FindFirstFileExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFileExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFileEx: Pointer;
|
|
|
|
function FindFirstFileEx;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFileEx, kernel32, 'FindFirstFileEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFileA: Pointer;
|
|
|
|
function FindFirstFileA;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFileA, kernel32, 'FindFirstFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFileW: Pointer;
|
|
|
|
function FindFirstFileW;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFileW, kernel32, 'FindFirstFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFile: Pointer;
|
|
|
|
function FindFirstFile;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFile, kernel32, 'FindFirstFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextFileA: Pointer;
|
|
|
|
function FindNextFileA;
|
|
begin
|
|
GetProcedureAddress(_FindNextFileA, kernel32, 'FindNextFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextFileW: Pointer;
|
|
|
|
function FindNextFileW;
|
|
begin
|
|
GetProcedureAddress(_FindNextFileW, kernel32, 'FindNextFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextFile: Pointer;
|
|
|
|
function FindNextFile;
|
|
begin
|
|
GetProcedureAddress(_FindNextFile, kernel32, 'FindNextFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SearchPathA: Pointer;
|
|
|
|
function SearchPathA;
|
|
begin
|
|
GetProcedureAddress(_SearchPathA, kernel32, 'SearchPathA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SearchPathA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SearchPathW: Pointer;
|
|
|
|
function SearchPathW;
|
|
begin
|
|
GetProcedureAddress(_SearchPathW, kernel32, 'SearchPathW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SearchPathW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SearchPath: Pointer;
|
|
|
|
function SearchPath;
|
|
begin
|
|
GetProcedureAddress(_SearchPath, kernel32, 'SearchPath' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SearchPath]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopyFileA: Pointer;
|
|
|
|
function CopyFileA;
|
|
begin
|
|
GetProcedureAddress(_CopyFileA, kernel32, 'CopyFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopyFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopyFileW: Pointer;
|
|
|
|
function CopyFileW;
|
|
begin
|
|
GetProcedureAddress(_CopyFileW, kernel32, 'CopyFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopyFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopyFile: Pointer;
|
|
|
|
function CopyFile;
|
|
begin
|
|
GetProcedureAddress(_CopyFile, kernel32, 'CopyFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopyFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopyFileExA: Pointer;
|
|
|
|
function CopyFileExA;
|
|
begin
|
|
GetProcedureAddress(_CopyFileExA, kernel32, 'CopyFileExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopyFileExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopyFileExW: Pointer;
|
|
|
|
function CopyFileExW;
|
|
begin
|
|
GetProcedureAddress(_CopyFileExW, kernel32, 'CopyFileExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopyFileExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopyFileEx: Pointer;
|
|
|
|
function CopyFileEx;
|
|
begin
|
|
GetProcedureAddress(_CopyFileEx, kernel32, 'CopyFileEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopyFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileA: Pointer;
|
|
|
|
function MoveFileA;
|
|
begin
|
|
GetProcedureAddress(_MoveFileA, kernel32, 'MoveFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileW: Pointer;
|
|
|
|
function MoveFileW;
|
|
begin
|
|
GetProcedureAddress(_MoveFileW, kernel32, 'MoveFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFile: Pointer;
|
|
|
|
function MoveFile;
|
|
begin
|
|
GetProcedureAddress(_MoveFile, kernel32, 'MoveFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileExA: Pointer;
|
|
|
|
function MoveFileExA;
|
|
begin
|
|
GetProcedureAddress(_MoveFileExA, kernel32, 'MoveFileExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileExW: Pointer;
|
|
|
|
function MoveFileExW;
|
|
begin
|
|
GetProcedureAddress(_MoveFileExW, kernel32, 'MoveFileExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileEx: Pointer;
|
|
|
|
function MoveFileEx;
|
|
begin
|
|
GetProcedureAddress(_MoveFileEx, kernel32, 'MoveFileEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileWithProgressA: Pointer;
|
|
|
|
function MoveFileWithProgressA;
|
|
begin
|
|
GetProcedureAddress(_MoveFileWithProgressA, kernel32, 'MoveFileWithProgressA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileWithProgressA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileWithProgressW: Pointer;
|
|
|
|
function MoveFileWithProgressW;
|
|
begin
|
|
GetProcedureAddress(_MoveFileWithProgressW, kernel32, 'MoveFileWithProgressW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileWithProgressW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MoveFileWithProgress: Pointer;
|
|
|
|
function MoveFileWithProgress;
|
|
begin
|
|
GetProcedureAddress(_MoveFileWithProgress, kernel32, 'MoveFileWithProgress' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MoveFileWithProgress]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReplaceFileA: Pointer;
|
|
|
|
function ReplaceFileA;
|
|
begin
|
|
GetProcedureAddress(_ReplaceFileA, kernel32, 'ReplaceFileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReplaceFileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReplaceFileW: Pointer;
|
|
|
|
function ReplaceFileW;
|
|
begin
|
|
GetProcedureAddress(_ReplaceFileW, kernel32, 'ReplaceFileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReplaceFileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReplaceFile: Pointer;
|
|
|
|
function ReplaceFile;
|
|
begin
|
|
GetProcedureAddress(_ReplaceFile, kernel32, 'ReplaceFile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReplaceFile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateHardLinkA: Pointer;
|
|
|
|
function CreateHardLinkA;
|
|
begin
|
|
GetProcedureAddress(_CreateHardLinkA, kernel32, 'CreateHardLinkA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateHardLinkA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateHardLinkW: Pointer;
|
|
|
|
function CreateHardLinkW;
|
|
begin
|
|
GetProcedureAddress(_CreateHardLinkW, kernel32, 'CreateHardLinkW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateHardLinkW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateHardLink: Pointer;
|
|
|
|
function CreateHardLink;
|
|
begin
|
|
GetProcedureAddress(_CreateHardLink, kernel32, 'CreateHardLink' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateHardLink]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstStreamW: Pointer;
|
|
|
|
function FindFirstStreamW;
|
|
begin
|
|
GetProcedureAddress(_FindFirstStreamW, kernel32, 'FindFirstStreamW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstStreamW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextStreamW: Pointer;
|
|
|
|
function FindNextStreamW;
|
|
begin
|
|
GetProcedureAddress(_FindNextStreamW, kernel32, 'FindNextStreamW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextStreamW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateNamedPipeA: Pointer;
|
|
|
|
function CreateNamedPipeA;
|
|
begin
|
|
GetProcedureAddress(_CreateNamedPipeA, kernel32, 'CreateNamedPipeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateNamedPipeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateNamedPipeW: Pointer;
|
|
|
|
function CreateNamedPipeW;
|
|
begin
|
|
GetProcedureAddress(_CreateNamedPipeW, kernel32, 'CreateNamedPipeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateNamedPipeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateNamedPipe: Pointer;
|
|
|
|
function CreateNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_CreateNamedPipe, kernel32, 'CreateNamedPipe' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeHandleStateA: Pointer;
|
|
|
|
function GetNamedPipeHandleStateA;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeHandleStateA, kernel32, 'GetNamedPipeHandleStateA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeHandleStateA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeHandleStateW: Pointer;
|
|
|
|
function GetNamedPipeHandleStateW;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeHandleStateW, kernel32, 'GetNamedPipeHandleStateW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeHandleStateW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeHandleState: Pointer;
|
|
|
|
function GetNamedPipeHandleState;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeHandleState, kernel32, 'GetNamedPipeHandleState' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeHandleState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CallNamedPipeA: Pointer;
|
|
|
|
function CallNamedPipeA;
|
|
begin
|
|
GetProcedureAddress(_CallNamedPipeA, kernel32, 'CallNamedPipeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CallNamedPipeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CallNamedPipeW: Pointer;
|
|
|
|
function CallNamedPipeW;
|
|
begin
|
|
GetProcedureAddress(_CallNamedPipeW, kernel32, 'CallNamedPipeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CallNamedPipeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CallNamedPipe: Pointer;
|
|
|
|
function CallNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_CallNamedPipe, kernel32, 'CallNamedPipe' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CallNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitNamedPipeA: Pointer;
|
|
|
|
function WaitNamedPipeA;
|
|
begin
|
|
GetProcedureAddress(_WaitNamedPipeA, kernel32, 'WaitNamedPipeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitNamedPipeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitNamedPipeW: Pointer;
|
|
|
|
function WaitNamedPipeW;
|
|
begin
|
|
GetProcedureAddress(_WaitNamedPipeW, kernel32, 'WaitNamedPipeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitNamedPipeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WaitNamedPipe: Pointer;
|
|
|
|
function WaitNamedPipe;
|
|
begin
|
|
GetProcedureAddress(_WaitNamedPipe, kernel32, 'WaitNamedPipe' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WaitNamedPipe]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetVolumeLabelA: Pointer;
|
|
|
|
function SetVolumeLabelA;
|
|
begin
|
|
GetProcedureAddress(_SetVolumeLabelA, kernel32, 'SetVolumeLabelA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetVolumeLabelA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetVolumeLabelW: Pointer;
|
|
|
|
function SetVolumeLabelW;
|
|
begin
|
|
GetProcedureAddress(_SetVolumeLabelW, kernel32, 'SetVolumeLabelW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetVolumeLabelW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetVolumeLabel: Pointer;
|
|
|
|
function SetVolumeLabel;
|
|
begin
|
|
GetProcedureAddress(_SetVolumeLabel, kernel32, 'SetVolumeLabel' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetVolumeLabel]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileApisToOEM: Pointer;
|
|
|
|
procedure SetFileApisToOEM;
|
|
begin
|
|
GetProcedureAddress(_SetFileApisToOEM, kernel32, 'SetFileApisToOEM');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileApisToOEM]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileApisToANSI: Pointer;
|
|
|
|
procedure SetFileApisToANSI;
|
|
begin
|
|
GetProcedureAddress(_SetFileApisToANSI, kernel32, 'SetFileApisToANSI');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileApisToANSI]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AreFileApisANSI: Pointer;
|
|
|
|
function AreFileApisANSI;
|
|
begin
|
|
GetProcedureAddress(_AreFileApisANSI, kernel32, 'AreFileApisANSI');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AreFileApisANSI]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumeInformationA: Pointer;
|
|
|
|
function GetVolumeInformationA;
|
|
begin
|
|
GetProcedureAddress(_GetVolumeInformationA, kernel32, 'GetVolumeInformationA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumeInformationA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumeInformationW: Pointer;
|
|
|
|
function GetVolumeInformationW;
|
|
begin
|
|
GetProcedureAddress(_GetVolumeInformationW, kernel32, 'GetVolumeInformationW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumeInformationW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumeInformation: Pointer;
|
|
|
|
function GetVolumeInformation;
|
|
begin
|
|
GetProcedureAddress(_GetVolumeInformation, kernel32, 'GetVolumeInformation' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumeInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CancelIo: Pointer;
|
|
|
|
function CancelIo;
|
|
begin
|
|
GetProcedureAddress(_CancelIo, kernel32, 'CancelIo');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CancelIo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ClearEventLogA: Pointer;
|
|
|
|
function ClearEventLogA;
|
|
begin
|
|
GetProcedureAddress(_ClearEventLogA, advapi32, 'ClearEventLogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ClearEventLogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ClearEventLogW: Pointer;
|
|
|
|
function ClearEventLogW;
|
|
begin
|
|
GetProcedureAddress(_ClearEventLogW, advapi32, 'ClearEventLogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ClearEventLogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ClearEventLog: Pointer;
|
|
|
|
function ClearEventLog;
|
|
begin
|
|
GetProcedureAddress(_ClearEventLog, advapi32, 'ClearEventLog' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ClearEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BackupEventLogA: Pointer;
|
|
|
|
function BackupEventLogA;
|
|
begin
|
|
GetProcedureAddress(_BackupEventLogA, advapi32, 'BackupEventLogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BackupEventLogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BackupEventLogW: Pointer;
|
|
|
|
function BackupEventLogW;
|
|
begin
|
|
GetProcedureAddress(_BackupEventLogW, advapi32, 'BackupEventLogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BackupEventLogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BackupEventLog: Pointer;
|
|
|
|
function BackupEventLog;
|
|
begin
|
|
GetProcedureAddress(_BackupEventLog, advapi32, 'BackupEventLog' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BackupEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CloseEventLog: Pointer;
|
|
|
|
function CloseEventLog;
|
|
begin
|
|
GetProcedureAddress(_CloseEventLog, advapi32, 'CloseEventLog');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CloseEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeregisterEventSource: Pointer;
|
|
|
|
function DeregisterEventSource;
|
|
begin
|
|
GetProcedureAddress(_DeregisterEventSource, advapi32, 'DeregisterEventSource');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeregisterEventSource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_NotifyChangeEventLog: Pointer;
|
|
|
|
function NotifyChangeEventLog;
|
|
begin
|
|
GetProcedureAddress(_NotifyChangeEventLog, advapi32, 'NotifyChangeEventLog');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_NotifyChangeEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNumberOfEventLogRecords: Pointer;
|
|
|
|
function GetNumberOfEventLogRecords;
|
|
begin
|
|
GetProcedureAddress(_GetNumberOfEventLogRecords, advapi32, 'GetNumberOfEventLogRecords');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNumberOfEventLogRecords]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetOldestEventLogRecord: Pointer;
|
|
|
|
function GetOldestEventLogRecord;
|
|
begin
|
|
GetProcedureAddress(_GetOldestEventLogRecord, advapi32, 'GetOldestEventLogRecord');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetOldestEventLogRecord]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEventLogA: Pointer;
|
|
|
|
function OpenEventLogA;
|
|
begin
|
|
GetProcedureAddress(_OpenEventLogA, advapi32, 'OpenEventLogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEventLogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEventLogW: Pointer;
|
|
|
|
function OpenEventLogW;
|
|
begin
|
|
GetProcedureAddress(_OpenEventLogW, advapi32, 'OpenEventLogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEventLogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenEventLog: Pointer;
|
|
|
|
function OpenEventLog;
|
|
begin
|
|
GetProcedureAddress(_OpenEventLog, advapi32, 'OpenEventLog' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RegisterEventSourceA: Pointer;
|
|
|
|
function RegisterEventSourceA;
|
|
begin
|
|
GetProcedureAddress(_RegisterEventSourceA, advapi32, 'RegisterEventSourceA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RegisterEventSourceA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RegisterEventSourceW: Pointer;
|
|
|
|
function RegisterEventSourceW;
|
|
begin
|
|
GetProcedureAddress(_RegisterEventSourceW, advapi32, 'RegisterEventSourceW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RegisterEventSourceW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RegisterEventSource: Pointer;
|
|
|
|
function RegisterEventSource;
|
|
begin
|
|
GetProcedureAddress(_RegisterEventSource, advapi32, 'RegisterEventSource' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RegisterEventSource]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenBackupEventLogA: Pointer;
|
|
|
|
function OpenBackupEventLogA;
|
|
begin
|
|
GetProcedureAddress(_OpenBackupEventLogA, advapi32, 'OpenBackupEventLogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenBackupEventLogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenBackupEventLogW: Pointer;
|
|
|
|
function OpenBackupEventLogW;
|
|
begin
|
|
GetProcedureAddress(_OpenBackupEventLogW, advapi32, 'OpenBackupEventLogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenBackupEventLogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenBackupEventLog: Pointer;
|
|
|
|
function OpenBackupEventLog;
|
|
begin
|
|
GetProcedureAddress(_OpenBackupEventLog, advapi32, 'OpenBackupEventLog' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenBackupEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadEventLogA: Pointer;
|
|
|
|
function ReadEventLogA;
|
|
begin
|
|
GetProcedureAddress(_ReadEventLogA, advapi32, 'ReadEventLogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadEventLogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadEventLogW: Pointer;
|
|
|
|
function ReadEventLogW;
|
|
begin
|
|
GetProcedureAddress(_ReadEventLogW, advapi32, 'ReadEventLogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadEventLogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadEventLog: Pointer;
|
|
|
|
function ReadEventLog;
|
|
begin
|
|
GetProcedureAddress(_ReadEventLog, advapi32, 'ReadEventLog' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadEventLog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReportEventA: Pointer;
|
|
|
|
function ReportEventA;
|
|
begin
|
|
GetProcedureAddress(_ReportEventA, advapi32, 'ReportEventA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReportEventA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReportEventW: Pointer;
|
|
|
|
function ReportEventW;
|
|
begin
|
|
GetProcedureAddress(_ReportEventW, advapi32, 'ReportEventW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReportEventW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReportEvent: Pointer;
|
|
|
|
function ReportEvent;
|
|
begin
|
|
GetProcedureAddress(_ReportEvent, advapi32, 'ReportEvent' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReportEvent]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetEventLogInformation: Pointer;
|
|
|
|
function GetEventLogInformation;
|
|
begin
|
|
GetProcedureAddress(_GetEventLogInformation, advapi32, 'GetEventLogInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetEventLogInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DuplicateToken: Pointer;
|
|
|
|
function DuplicateToken;
|
|
begin
|
|
GetProcedureAddress(_DuplicateToken, advapi32, 'DuplicateToken');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DuplicateToken]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetKernelObjectSecurity: Pointer;
|
|
|
|
function GetKernelObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_GetKernelObjectSecurity, advapi32, 'GetKernelObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetKernelObjectSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ImpersonateNamedPipeClient: Pointer;
|
|
|
|
function ImpersonateNamedPipeClient;
|
|
begin
|
|
GetProcedureAddress(_ImpersonateNamedPipeClient, advapi32, 'ImpersonateNamedPipeClient');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ImpersonateNamedPipeClient]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ImpersonateSelf: Pointer;
|
|
|
|
function ImpersonateSelf;
|
|
begin
|
|
GetProcedureAddress(_ImpersonateSelf, advapi32, 'ImpersonateSelf');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ImpersonateSelf]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RevertToSelf: Pointer;
|
|
|
|
function RevertToSelf;
|
|
begin
|
|
GetProcedureAddress(_RevertToSelf, advapi32, 'RevertToSelf');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RevertToSelf]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetThreadToken: Pointer;
|
|
|
|
function SetThreadToken;
|
|
begin
|
|
GetProcedureAddress(_SetThreadToken, advapi32, 'SetThreadToken');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetThreadToken]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheck: Pointer;
|
|
|
|
function AccessCheck;
|
|
begin
|
|
GetProcedureAddress(_AccessCheck, advapi32, 'AccessCheck');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheck]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByType: Pointer;
|
|
|
|
function AccessCheckByType;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByType, advapi32, 'AccessCheckByType');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByType]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeResultList: Pointer;
|
|
|
|
function AccessCheckByTypeResultList;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeResultList, advapi32, 'AccessCheckByTypeResultList');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeResultList]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenProcessToken: Pointer;
|
|
|
|
function OpenProcessToken;
|
|
begin
|
|
GetProcedureAddress(_OpenProcessToken, advapi32, 'OpenProcessToken');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenProcessToken]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenThreadToken: Pointer;
|
|
|
|
function OpenThreadToken;
|
|
begin
|
|
GetProcedureAddress(_OpenThreadToken, advapi32, 'OpenThreadToken');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenThreadToken]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetTokenInformation: Pointer;
|
|
|
|
function GetTokenInformation;
|
|
begin
|
|
GetProcedureAddress(_GetTokenInformation, advapi32, 'GetTokenInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetTokenInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetTokenInformation: Pointer;
|
|
|
|
function SetTokenInformation;
|
|
begin
|
|
GetProcedureAddress(_SetTokenInformation, advapi32, 'SetTokenInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetTokenInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AdjustTokenPrivileges: Pointer;
|
|
|
|
function AdjustTokenPrivileges;
|
|
begin
|
|
GetProcedureAddress(_AdjustTokenPrivileges, advapi32, 'AdjustTokenPrivileges');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AdjustTokenPrivileges]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AdjustTokenGroups: Pointer;
|
|
|
|
function AdjustTokenGroups;
|
|
begin
|
|
GetProcedureAddress(_AdjustTokenGroups, advapi32, 'AdjustTokenGroups');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AdjustTokenGroups]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PrivilegeCheck: Pointer;
|
|
|
|
function PrivilegeCheck;
|
|
begin
|
|
GetProcedureAddress(_PrivilegeCheck, advapi32, 'PrivilegeCheck');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PrivilegeCheck]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckAndAuditAlarmA: Pointer;
|
|
|
|
function AccessCheckAndAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckAndAuditAlarmA, advapi32, 'AccessCheckAndAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckAndAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckAndAuditAlarmW: Pointer;
|
|
|
|
function AccessCheckAndAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckAndAuditAlarmW, advapi32, 'AccessCheckAndAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckAndAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckAndAuditAlarm: Pointer;
|
|
|
|
function AccessCheckAndAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckAndAuditAlarm, advapi32, 'AccessCheckAndAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckAndAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeAndAuditAlarmA: Pointer;
|
|
|
|
function AccessCheckByTypeAndAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeAndAuditAlarmA, advapi32, 'AccessCheckByTypeAndAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeAndAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeAndAuditAlarmW: Pointer;
|
|
|
|
function AccessCheckByTypeAndAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeAndAuditAlarmW, advapi32, 'AccessCheckByTypeAndAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeAndAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeAndAuditAlarm: Pointer;
|
|
|
|
function AccessCheckByTypeAndAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeAndAuditAlarm, advapi32, 'AccessCheckByTypeAndAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeAndAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeResultListAndA: Pointer;
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeResultListAndA, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeResultListAndA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeResultListAndW: Pointer;
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeResultListAndW, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeResultListAndW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTypeResultListAnd: Pointer;
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTypeResultListAnd, advapi32, 'AccessCheckByTypeResultListAndAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTypeResultListAnd]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTRLAndAAByHA: Pointer;
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandleA;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTRLAndAAByHA, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandleA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTRLAndAAByHA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTRLAndAAByHW: Pointer;
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandleW;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTRLAndAAByHW, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandleW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTRLAndAAByHW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AccessCheckByTRLAndAAByH: Pointer;
|
|
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandle;
|
|
begin
|
|
GetProcedureAddress(_AccessCheckByTRLAndAAByH, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandle' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AccessCheckByTRLAndAAByH]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectOpenAuditAlarmA: Pointer;
|
|
|
|
function ObjectOpenAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_ObjectOpenAuditAlarmA, advapi32, 'ObjectOpenAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectOpenAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectOpenAuditAlarmW: Pointer;
|
|
|
|
function ObjectOpenAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_ObjectOpenAuditAlarmW, advapi32, 'ObjectOpenAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectOpenAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectOpenAuditAlarm: Pointer;
|
|
|
|
function ObjectOpenAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_ObjectOpenAuditAlarm, advapi32, 'ObjectOpenAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectOpenAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectPrivilegeAuditAlarmA: Pointer;
|
|
|
|
function ObjectPrivilegeAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_ObjectPrivilegeAuditAlarmA, advapi32, 'ObjectPrivilegeAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectPrivilegeAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectPrivilegeAuditAlarmW: Pointer;
|
|
|
|
function ObjectPrivilegeAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_ObjectPrivilegeAuditAlarmW, advapi32, 'ObjectPrivilegeAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectPrivilegeAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectPrivilegeAuditAlarm: Pointer;
|
|
|
|
function ObjectPrivilegeAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_ObjectPrivilegeAuditAlarm, advapi32, 'ObjectPrivilegeAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectPrivilegeAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectCloseAuditAlarmA: Pointer;
|
|
|
|
function ObjectCloseAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_ObjectCloseAuditAlarmA, advapi32, 'ObjectCloseAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectCloseAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectCloseAuditAlarmW: Pointer;
|
|
|
|
function ObjectCloseAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_ObjectCloseAuditAlarmW, advapi32, 'ObjectCloseAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectCloseAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectCloseAuditAlarm: Pointer;
|
|
|
|
function ObjectCloseAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_ObjectCloseAuditAlarm, advapi32, 'ObjectCloseAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectCloseAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectDeleteAuditAlarmA: Pointer;
|
|
|
|
function ObjectDeleteAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_ObjectDeleteAuditAlarmA, advapi32, 'ObjectDeleteAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectDeleteAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectDeleteAuditAlarmW: Pointer;
|
|
|
|
function ObjectDeleteAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_ObjectDeleteAuditAlarmW, advapi32, 'ObjectDeleteAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectDeleteAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ObjectDeleteAuditAlarm: Pointer;
|
|
|
|
function ObjectDeleteAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_ObjectDeleteAuditAlarm, advapi32, 'ObjectDeleteAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ObjectDeleteAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PrivilegedServiceAuditAlarmA: Pointer;
|
|
|
|
function PrivilegedServiceAuditAlarmA;
|
|
begin
|
|
GetProcedureAddress(_PrivilegedServiceAuditAlarmA, advapi32, 'PrivilegedServiceAuditAlarmA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PrivilegedServiceAuditAlarmA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PrivilegedServiceAuditAlarmW: Pointer;
|
|
|
|
function PrivilegedServiceAuditAlarmW;
|
|
begin
|
|
GetProcedureAddress(_PrivilegedServiceAuditAlarmW, advapi32, 'PrivilegedServiceAuditAlarmW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PrivilegedServiceAuditAlarmW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_PrivilegedServiceAuditAlarm: Pointer;
|
|
|
|
function PrivilegedServiceAuditAlarm;
|
|
begin
|
|
GetProcedureAddress(_PrivilegedServiceAuditAlarm, advapi32, 'PrivilegedServiceAuditAlarm' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_PrivilegedServiceAuditAlarm]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsWellKnownSid: Pointer;
|
|
|
|
function IsWellKnownSid;
|
|
begin
|
|
GetProcedureAddress(_IsWellKnownSid, advapi32, 'IsWellKnownSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsWellKnownSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateWellKnownSid: Pointer;
|
|
|
|
function CreateWellKnownSid;
|
|
begin
|
|
GetProcedureAddress(_CreateWellKnownSid, advapi32, 'CreateWellKnownSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateWellKnownSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EqualDomainSid: Pointer;
|
|
|
|
function EqualDomainSid;
|
|
begin
|
|
GetProcedureAddress(_EqualDomainSid, advapi32, 'EqualDomainSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EqualDomainSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetWindowsAccountDomainSid: Pointer;
|
|
|
|
function GetWindowsAccountDomainSid;
|
|
begin
|
|
GetProcedureAddress(_GetWindowsAccountDomainSid, advapi32, 'GetWindowsAccountDomainSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetWindowsAccountDomainSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsValidSid: Pointer;
|
|
|
|
function IsValidSid;
|
|
begin
|
|
GetProcedureAddress(_IsValidSid, advapi32, 'IsValidSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsValidSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EqualSid: Pointer;
|
|
|
|
function EqualSid;
|
|
begin
|
|
GetProcedureAddress(_EqualSid, advapi32, 'EqualSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EqualSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_EqualPrefixSid: Pointer;
|
|
|
|
function EqualPrefixSid;
|
|
begin
|
|
GetProcedureAddress(_EqualPrefixSid, advapi32, 'EqualPrefixSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_EqualPrefixSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSidLengthRequired: Pointer;
|
|
|
|
function GetSidLengthRequired;
|
|
begin
|
|
GetProcedureAddress(_GetSidLengthRequired, advapi32, 'GetSidLengthRequired');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSidLengthRequired]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AllocateAndInitializeSid: Pointer;
|
|
|
|
function AllocateAndInitializeSid;
|
|
begin
|
|
GetProcedureAddress(_AllocateAndInitializeSid, advapi32, 'AllocateAndInitializeSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AllocateAndInitializeSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeSid: Pointer;
|
|
|
|
function FreeSid;
|
|
begin
|
|
GetProcedureAddress(_FreeSid, advapi32, 'FreeSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitializeSid: Pointer;
|
|
|
|
function InitializeSid;
|
|
begin
|
|
GetProcedureAddress(_InitializeSid, advapi32, 'InitializeSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitializeSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSidIdentifierAuthority: Pointer;
|
|
|
|
function GetSidIdentifierAuthority;
|
|
begin
|
|
GetProcedureAddress(_GetSidIdentifierAuthority, advapi32, 'GetSidIdentifierAuthority');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSidIdentifierAuthority]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSidSubAuthority: Pointer;
|
|
|
|
function GetSidSubAuthority;
|
|
begin
|
|
GetProcedureAddress(_GetSidSubAuthority, advapi32, 'GetSidSubAuthority');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSidSubAuthority]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSidSubAuthorityCount: Pointer;
|
|
|
|
function GetSidSubAuthorityCount;
|
|
begin
|
|
GetProcedureAddress(_GetSidSubAuthorityCount, advapi32, 'GetSidSubAuthorityCount');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSidSubAuthorityCount]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLengthSid: Pointer;
|
|
|
|
function GetLengthSid;
|
|
begin
|
|
GetProcedureAddress(_GetLengthSid, advapi32, 'GetLengthSid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLengthSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CopySid: Pointer;
|
|
|
|
function CopySid;
|
|
begin
|
|
GetProcedureAddress(_CopySid, advapi32, 'CopySid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CopySid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AreAllAccessesGranted: Pointer;
|
|
|
|
function AreAllAccessesGranted;
|
|
begin
|
|
GetProcedureAddress(_AreAllAccessesGranted, advapi32, 'AreAllAccessesGranted');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AreAllAccessesGranted]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AreAnyAccessesGranted: Pointer;
|
|
|
|
function AreAnyAccessesGranted;
|
|
begin
|
|
GetProcedureAddress(_AreAnyAccessesGranted, advapi32, 'AreAnyAccessesGranted');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AreAnyAccessesGranted]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MapGenericMask: Pointer;
|
|
|
|
procedure MapGenericMask;
|
|
begin
|
|
GetProcedureAddress(_MapGenericMask, advapi32, 'MapGenericMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MapGenericMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsValidAcl: Pointer;
|
|
|
|
function IsValidAcl;
|
|
begin
|
|
GetProcedureAddress(_IsValidAcl, advapi32, 'IsValidAcl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsValidAcl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitializeAcl: Pointer;
|
|
|
|
function InitializeAcl;
|
|
begin
|
|
GetProcedureAddress(_InitializeAcl, advapi32, 'InitializeAcl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitializeAcl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetAclInformation: Pointer;
|
|
|
|
function GetAclInformation;
|
|
begin
|
|
GetProcedureAddress(_GetAclInformation, advapi32, 'GetAclInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetAclInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetAclInformation: Pointer;
|
|
|
|
function SetAclInformation;
|
|
begin
|
|
GetProcedureAddress(_SetAclInformation, advapi32, 'SetAclInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetAclInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAce: Pointer;
|
|
|
|
function AddAce;
|
|
begin
|
|
GetProcedureAddress(_AddAce, advapi32, 'AddAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteAce: Pointer;
|
|
|
|
function DeleteAce;
|
|
begin
|
|
GetProcedureAddress(_DeleteAce, advapi32, 'DeleteAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetAce: Pointer;
|
|
|
|
function GetAce;
|
|
begin
|
|
GetProcedureAddress(_GetAce, advapi32, 'GetAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAccessAllowedAce: Pointer;
|
|
|
|
function AddAccessAllowedAce;
|
|
begin
|
|
GetProcedureAddress(_AddAccessAllowedAce, advapi32, 'AddAccessAllowedAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAccessAllowedAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAccessAllowedAceEx: Pointer;
|
|
|
|
function AddAccessAllowedAceEx;
|
|
begin
|
|
GetProcedureAddress(_AddAccessAllowedAceEx, advapi32, 'AddAccessAllowedAceEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAccessAllowedAceEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAccessDeniedAce: Pointer;
|
|
|
|
function AddAccessDeniedAce;
|
|
begin
|
|
GetProcedureAddress(_AddAccessDeniedAce, advapi32, 'AddAccessDeniedAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAccessDeniedAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAccessDeniedAceEx: Pointer;
|
|
|
|
function AddAccessDeniedAceEx;
|
|
begin
|
|
GetProcedureAddress(_AddAccessDeniedAceEx, advapi32, 'AddAccessDeniedAceEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAccessDeniedAceEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAuditAccessAce: Pointer;
|
|
|
|
function AddAuditAccessAce;
|
|
begin
|
|
GetProcedureAddress(_AddAuditAccessAce, advapi32, 'AddAuditAccessAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAuditAccessAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAuditAccessAceEx: Pointer;
|
|
|
|
function AddAuditAccessAceEx;
|
|
begin
|
|
GetProcedureAddress(_AddAuditAccessAceEx, advapi32, 'AddAuditAccessAceEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAuditAccessAceEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAccessAllowedObjectAce: Pointer;
|
|
|
|
function AddAccessAllowedObjectAce;
|
|
begin
|
|
GetProcedureAddress(_AddAccessAllowedObjectAce, advapi32, 'AddAccessAllowedObjectAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAccessAllowedObjectAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAccessDeniedObjectAce: Pointer;
|
|
|
|
function AddAccessDeniedObjectAce;
|
|
begin
|
|
GetProcedureAddress(_AddAccessDeniedObjectAce, advapi32, 'AddAccessDeniedObjectAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAccessDeniedObjectAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddAuditAccessObjectAce: Pointer;
|
|
|
|
function AddAuditAccessObjectAce;
|
|
begin
|
|
GetProcedureAddress(_AddAuditAccessObjectAce, advapi32, 'AddAuditAccessObjectAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddAuditAccessObjectAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstFreeAce: Pointer;
|
|
|
|
function FindFirstFreeAce;
|
|
begin
|
|
GetProcedureAddress(_FindFirstFreeAce, advapi32, 'FindFirstFreeAce');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstFreeAce]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_InitializeSecurityDescriptor: Pointer;
|
|
|
|
function InitializeSecurityDescriptor;
|
|
begin
|
|
GetProcedureAddress(_InitializeSecurityDescriptor, advapi32, 'InitializeSecurityDescriptor');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_InitializeSecurityDescriptor]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsValidSecurityDescriptor: Pointer;
|
|
|
|
function IsValidSecurityDescriptor;
|
|
begin
|
|
GetProcedureAddress(_IsValidSecurityDescriptor, advapi32, 'IsValidSecurityDescriptor');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsValidSecurityDescriptor]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorLength: Pointer;
|
|
|
|
function GetSecurityDescriptorLength;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorLength, advapi32, 'GetSecurityDescriptorLength');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorLength]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorControl: Pointer;
|
|
|
|
function GetSecurityDescriptorControl;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorControl, advapi32, 'GetSecurityDescriptorControl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorControl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSecurityDescriptorControl: Pointer;
|
|
|
|
function SetSecurityDescriptorControl;
|
|
begin
|
|
GetProcedureAddress(_SetSecurityDescriptorControl, advapi32, 'SetSecurityDescriptorControl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSecurityDescriptorControl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSecurityDescriptorDacl: Pointer;
|
|
|
|
function SetSecurityDescriptorDacl;
|
|
begin
|
|
GetProcedureAddress(_SetSecurityDescriptorDacl, advapi32, 'SetSecurityDescriptorDacl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSecurityDescriptorDacl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorDacl: Pointer;
|
|
|
|
function GetSecurityDescriptorDacl;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorDacl, advapi32, 'GetSecurityDescriptorDacl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorDacl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSecurityDescriptorSacl: Pointer;
|
|
|
|
function SetSecurityDescriptorSacl;
|
|
begin
|
|
GetProcedureAddress(_SetSecurityDescriptorSacl, advapi32, 'SetSecurityDescriptorSacl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSecurityDescriptorSacl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorSacl: Pointer;
|
|
|
|
function GetSecurityDescriptorSacl;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorSacl, advapi32, 'GetSecurityDescriptorSacl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorSacl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSecurityDescriptorOwner: Pointer;
|
|
|
|
function SetSecurityDescriptorOwner;
|
|
begin
|
|
GetProcedureAddress(_SetSecurityDescriptorOwner, advapi32, 'SetSecurityDescriptorOwner');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSecurityDescriptorOwner]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorOwner: Pointer;
|
|
|
|
function GetSecurityDescriptorOwner;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorOwner, advapi32, 'GetSecurityDescriptorOwner');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorOwner]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSecurityDescriptorGroup: Pointer;
|
|
|
|
function SetSecurityDescriptorGroup;
|
|
begin
|
|
GetProcedureAddress(_SetSecurityDescriptorGroup, advapi32, 'SetSecurityDescriptorGroup');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSecurityDescriptorGroup]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorGroup: Pointer;
|
|
|
|
function GetSecurityDescriptorGroup;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorGroup, advapi32, 'GetSecurityDescriptorGroup');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorGroup]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSecurityDescriptorRMControl: Pointer;
|
|
|
|
function SetSecurityDescriptorRMControl;
|
|
begin
|
|
GetProcedureAddress(_SetSecurityDescriptorRMControl, advapi32, 'SetSecurityDescriptorRMControl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSecurityDescriptorRMControl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSecurityDescriptorRMControl: Pointer;
|
|
|
|
function GetSecurityDescriptorRMControl;
|
|
begin
|
|
GetProcedureAddress(_GetSecurityDescriptorRMControl, advapi32, 'GetSecurityDescriptorRMControl');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSecurityDescriptorRMControl]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreatePrivateObjectSecurity: Pointer;
|
|
|
|
function CreatePrivateObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_CreatePrivateObjectSecurity, advapi32, 'CreatePrivateObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreatePrivateObjectSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ConvertToAutoInheritPrObjSec: Pointer;
|
|
|
|
function ConvertToAutoInheritPrivateObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_ConvertToAutoInheritPrObjSec, advapi32, 'ConvertToAutoInheritPrivateObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ConvertToAutoInheritPrObjSec]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreatePrivateObjectSecurityEx: Pointer;
|
|
|
|
function CreatePrivateObjectSecurityEx;
|
|
begin
|
|
GetProcedureAddress(_CreatePrivateObjectSecurityEx, advapi32, 'CreatePrivateObjectSecurityEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreatePrivateObjectSecurityEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetPrivateObjectSecurity: Pointer;
|
|
|
|
function SetPrivateObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_SetPrivateObjectSecurity, advapi32, 'SetPrivateObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetPrivateObjectSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetPrivateObjectSecurityEx: Pointer;
|
|
|
|
function SetPrivateObjectSecurityEx;
|
|
begin
|
|
GetProcedureAddress(_SetPrivateObjectSecurityEx, advapi32, 'SetPrivateObjectSecurityEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetPrivateObjectSecurityEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPrivateObjectSecurity: Pointer;
|
|
|
|
function GetPrivateObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_GetPrivateObjectSecurity, advapi32, 'GetPrivateObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPrivateObjectSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DestroyPrivateObjectSecurity: Pointer;
|
|
|
|
function DestroyPrivateObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_DestroyPrivateObjectSecurity, advapi32, 'DestroyPrivateObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DestroyPrivateObjectSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MakeSelfRelativeSD: Pointer;
|
|
|
|
function MakeSelfRelativeSD;
|
|
begin
|
|
GetProcedureAddress(_MakeSelfRelativeSD, advapi32, 'MakeSelfRelativeSD');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MakeSelfRelativeSD]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MakeAbsoluteSD: Pointer;
|
|
|
|
function MakeAbsoluteSD;
|
|
begin
|
|
GetProcedureAddress(_MakeAbsoluteSD, advapi32, 'MakeAbsoluteSD');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MakeAbsoluteSD]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MakeAbsoluteSD2: Pointer;
|
|
|
|
function MakeAbsoluteSD2;
|
|
begin
|
|
GetProcedureAddress(_MakeAbsoluteSD2, advapi32, 'MakeAbsoluteSD2');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MakeAbsoluteSD2]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileSecurityA: Pointer;
|
|
|
|
function SetFileSecurityA;
|
|
begin
|
|
GetProcedureAddress(_SetFileSecurityA, advapi32, 'SetFileSecurityA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileSecurityA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileSecurityW: Pointer;
|
|
|
|
function SetFileSecurityW;
|
|
begin
|
|
GetProcedureAddress(_SetFileSecurityW, advapi32, 'SetFileSecurityW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileSecurityW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetFileSecurity: Pointer;
|
|
|
|
function SetFileSecurity;
|
|
begin
|
|
GetProcedureAddress(_SetFileSecurity, advapi32, 'SetFileSecurity' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetFileSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileSecurityA: Pointer;
|
|
|
|
function GetFileSecurityA;
|
|
begin
|
|
GetProcedureAddress(_GetFileSecurityA, advapi32, 'GetFileSecurityA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileSecurityA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileSecurityW: Pointer;
|
|
|
|
function GetFileSecurityW;
|
|
begin
|
|
GetProcedureAddress(_GetFileSecurityW, advapi32, 'GetFileSecurityW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileSecurityW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetFileSecurity: Pointer;
|
|
|
|
function GetFileSecurity;
|
|
begin
|
|
GetProcedureAddress(_GetFileSecurity, advapi32, 'GetFileSecurity' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetFileSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetKernelObjectSecurity: Pointer;
|
|
|
|
function SetKernelObjectSecurity;
|
|
begin
|
|
GetProcedureAddress(_SetKernelObjectSecurity, advapi32, 'SetKernelObjectSecurity');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetKernelObjectSecurity]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstChangeNotificationA: Pointer;
|
|
|
|
function FindFirstChangeNotificationA;
|
|
begin
|
|
GetProcedureAddress(_FindFirstChangeNotificationA, kernel32, 'FindFirstChangeNotificationA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstChangeNotificationA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstChangeNotificationW: Pointer;
|
|
|
|
function FindFirstChangeNotificationW;
|
|
begin
|
|
GetProcedureAddress(_FindFirstChangeNotificationW, kernel32, 'FindFirstChangeNotificationW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstChangeNotificationW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstChangeNotification: Pointer;
|
|
|
|
function FindFirstChangeNotification;
|
|
begin
|
|
GetProcedureAddress(_FindFirstChangeNotification, kernel32, 'FindFirstChangeNotification' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstChangeNotification]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextChangeNotification: Pointer;
|
|
|
|
function FindNextChangeNotification;
|
|
begin
|
|
GetProcedureAddress(_FindNextChangeNotification, kernel32, 'FindNextChangeNotification');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextChangeNotification]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindCloseChangeNotification: Pointer;
|
|
|
|
function FindCloseChangeNotification;
|
|
begin
|
|
GetProcedureAddress(_FindCloseChangeNotification, kernel32, 'FindCloseChangeNotification');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindCloseChangeNotification]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReadDirectoryChangesW: Pointer;
|
|
|
|
function ReadDirectoryChangesW;
|
|
begin
|
|
GetProcedureAddress(_ReadDirectoryChangesW, kernel32, 'ReadDirectoryChangesW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReadDirectoryChangesW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualLock: Pointer;
|
|
|
|
function VirtualLock;
|
|
begin
|
|
GetProcedureAddress(_VirtualLock, kernel32, 'VirtualLock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualLock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VirtualUnlock: Pointer;
|
|
|
|
function VirtualUnlock;
|
|
begin
|
|
GetProcedureAddress(_VirtualUnlock, kernel32, 'VirtualUnlock');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VirtualUnlock]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MapViewOfFileEx: Pointer;
|
|
|
|
function MapViewOfFileEx;
|
|
begin
|
|
GetProcedureAddress(_MapViewOfFileEx, kernel32, 'MapViewOfFileEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MapViewOfFileEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetPriorityClass: Pointer;
|
|
|
|
function SetPriorityClass;
|
|
begin
|
|
GetProcedureAddress(_SetPriorityClass, kernel32, 'SetPriorityClass');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetPriorityClass]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetPriorityClass: Pointer;
|
|
|
|
function GetPriorityClass;
|
|
begin
|
|
GetProcedureAddress(_GetPriorityClass, kernel32, 'GetPriorityClass');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetPriorityClass]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadReadPtr: Pointer;
|
|
|
|
function IsBadReadPtr;
|
|
begin
|
|
GetProcedureAddress(_IsBadReadPtr, kernel32, 'IsBadReadPtr');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadReadPtr]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadWritePtr: Pointer;
|
|
|
|
function IsBadWritePtr;
|
|
begin
|
|
GetProcedureAddress(_IsBadWritePtr, kernel32, 'IsBadWritePtr');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadWritePtr]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadHugeReadPtr: Pointer;
|
|
|
|
function IsBadHugeReadPtr;
|
|
begin
|
|
GetProcedureAddress(_IsBadHugeReadPtr, kernel32, 'IsBadHugeReadPtr');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadHugeReadPtr]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadHugeWritePtr: Pointer;
|
|
|
|
function IsBadHugeWritePtr;
|
|
begin
|
|
GetProcedureAddress(_IsBadHugeWritePtr, kernel32, 'IsBadHugeWritePtr');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadHugeWritePtr]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadCodePtr: Pointer;
|
|
|
|
function IsBadCodePtr;
|
|
begin
|
|
GetProcedureAddress(_IsBadCodePtr, kernel32, 'IsBadCodePtr');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadCodePtr]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadStringPtrA: Pointer;
|
|
|
|
function IsBadStringPtrA;
|
|
begin
|
|
GetProcedureAddress(_IsBadStringPtrA, kernel32, 'IsBadStringPtrA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadStringPtrA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadStringPtrW: Pointer;
|
|
|
|
function IsBadStringPtrW;
|
|
begin
|
|
GetProcedureAddress(_IsBadStringPtrW, kernel32, 'IsBadStringPtrW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadStringPtrW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsBadStringPtr: Pointer;
|
|
|
|
function IsBadStringPtr;
|
|
begin
|
|
GetProcedureAddress(_IsBadStringPtr, kernel32, 'IsBadStringPtr' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsBadStringPtr]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupAccountSidA: Pointer;
|
|
|
|
function LookupAccountSidA;
|
|
begin
|
|
GetProcedureAddress(_LookupAccountSidA, advapi32, 'LookupAccountSidA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupAccountSidA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupAccountSidW: Pointer;
|
|
|
|
function LookupAccountSidW;
|
|
begin
|
|
GetProcedureAddress(_LookupAccountSidW, advapi32, 'LookupAccountSidW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupAccountSidW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupAccountSid: Pointer;
|
|
|
|
function LookupAccountSid;
|
|
begin
|
|
GetProcedureAddress(_LookupAccountSid, advapi32, 'LookupAccountSid' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupAccountSid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupAccountNameA: Pointer;
|
|
|
|
function LookupAccountNameA;
|
|
begin
|
|
GetProcedureAddress(_LookupAccountNameA, advapi32, 'LookupAccountNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupAccountNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupAccountNameW: Pointer;
|
|
|
|
function LookupAccountNameW;
|
|
begin
|
|
GetProcedureAddress(_LookupAccountNameW, advapi32, 'LookupAccountNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupAccountNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupAccountName: Pointer;
|
|
|
|
function LookupAccountName;
|
|
begin
|
|
GetProcedureAddress(_LookupAccountName, advapi32, 'LookupAccountName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupAccountName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeValueA: Pointer;
|
|
|
|
function LookupPrivilegeValueA;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeValueA, advapi32, 'LookupPrivilegeValueA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeValueA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeValueW: Pointer;
|
|
|
|
function LookupPrivilegeValueW;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeValueW, advapi32, 'LookupPrivilegeValueW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeValueW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeValue: Pointer;
|
|
|
|
function LookupPrivilegeValue;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeValue, advapi32, 'LookupPrivilegeValue' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeValue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeNameA: Pointer;
|
|
|
|
function LookupPrivilegeNameA;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeNameA, advapi32, 'LookupPrivilegeNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeNameW: Pointer;
|
|
|
|
function LookupPrivilegeNameW;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeNameW, advapi32, 'LookupPrivilegeNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeName: Pointer;
|
|
|
|
function LookupPrivilegeName;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeName, advapi32, 'LookupPrivilegeName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeDisplayNameA: Pointer;
|
|
|
|
function LookupPrivilegeDisplayNameA;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeDisplayNameA, advapi32, 'LookupPrivilegeDisplayNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeDisplayNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeDisplayNameW: Pointer;
|
|
|
|
function LookupPrivilegeDisplayNameW;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeDisplayNameW, advapi32, 'LookupPrivilegeDisplayNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeDisplayNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LookupPrivilegeDisplayName: Pointer;
|
|
|
|
function LookupPrivilegeDisplayName;
|
|
begin
|
|
GetProcedureAddress(_LookupPrivilegeDisplayName, advapi32, 'LookupPrivilegeDisplayName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LookupPrivilegeDisplayName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AllocateLocallyUniqueId: Pointer;
|
|
|
|
function AllocateLocallyUniqueId;
|
|
begin
|
|
GetProcedureAddress(_AllocateLocallyUniqueId, advapi32, 'AllocateLocallyUniqueId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AllocateLocallyUniqueId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BuildCommDCBA: Pointer;
|
|
|
|
function BuildCommDCBA;
|
|
begin
|
|
GetProcedureAddress(_BuildCommDCBA, kernel32, 'BuildCommDCBA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BuildCommDCBA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BuildCommDCBW: Pointer;
|
|
|
|
function BuildCommDCBW;
|
|
begin
|
|
GetProcedureAddress(_BuildCommDCBW, kernel32, 'BuildCommDCBW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BuildCommDCBW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BuildCommDCB: Pointer;
|
|
|
|
function BuildCommDCB;
|
|
begin
|
|
GetProcedureAddress(_BuildCommDCB, kernel32, 'BuildCommDCB' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BuildCommDCB]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BuildCommDCBAndTimeoutsA: Pointer;
|
|
|
|
function BuildCommDCBAndTimeoutsA;
|
|
begin
|
|
GetProcedureAddress(_BuildCommDCBAndTimeoutsA, kernel32, 'BuildCommDCBAndTimeoutsA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BuildCommDCBAndTimeoutsA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BuildCommDCBAndTimeoutsW: Pointer;
|
|
|
|
function BuildCommDCBAndTimeoutsW;
|
|
begin
|
|
GetProcedureAddress(_BuildCommDCBAndTimeoutsW, kernel32, 'BuildCommDCBAndTimeoutsW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BuildCommDCBAndTimeoutsW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BuildCommDCBAndTimeouts: Pointer;
|
|
|
|
function BuildCommDCBAndTimeouts;
|
|
begin
|
|
GetProcedureAddress(_BuildCommDCBAndTimeouts, kernel32, 'BuildCommDCBAndTimeouts' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BuildCommDCBAndTimeouts]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CommConfigDialogA: Pointer;
|
|
|
|
function CommConfigDialogA;
|
|
begin
|
|
GetProcedureAddress(_CommConfigDialogA, kernel32, 'CommConfigDialogA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CommConfigDialogA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CommConfigDialogW: Pointer;
|
|
|
|
function CommConfigDialogW;
|
|
begin
|
|
GetProcedureAddress(_CommConfigDialogW, kernel32, 'CommConfigDialogW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CommConfigDialogW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CommConfigDialog: Pointer;
|
|
|
|
function CommConfigDialog;
|
|
begin
|
|
GetProcedureAddress(_CommConfigDialog, kernel32, 'CommConfigDialog' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CommConfigDialog]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDefaultCommConfigA: Pointer;
|
|
|
|
function GetDefaultCommConfigA;
|
|
begin
|
|
GetProcedureAddress(_GetDefaultCommConfigA, kernel32, 'GetDefaultCommConfigA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDefaultCommConfigA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDefaultCommConfigW: Pointer;
|
|
|
|
function GetDefaultCommConfigW;
|
|
begin
|
|
GetProcedureAddress(_GetDefaultCommConfigW, kernel32, 'GetDefaultCommConfigW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDefaultCommConfigW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetDefaultCommConfig: Pointer;
|
|
|
|
function GetDefaultCommConfig;
|
|
begin
|
|
GetProcedureAddress(_GetDefaultCommConfig, kernel32, 'GetDefaultCommConfig' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetDefaultCommConfig]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetDefaultCommConfigA: Pointer;
|
|
|
|
function SetDefaultCommConfigA;
|
|
begin
|
|
GetProcedureAddress(_SetDefaultCommConfigA, kernel32, 'SetDefaultCommConfigA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetDefaultCommConfigA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetDefaultCommConfigW: Pointer;
|
|
|
|
function SetDefaultCommConfigW;
|
|
begin
|
|
GetProcedureAddress(_SetDefaultCommConfigW, kernel32, 'SetDefaultCommConfigW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetDefaultCommConfigW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetDefaultCommConfig: Pointer;
|
|
|
|
function SetDefaultCommConfig;
|
|
begin
|
|
GetProcedureAddress(_SetDefaultCommConfig, kernel32, 'SetDefaultCommConfig' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetDefaultCommConfig]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetComputerNameA: Pointer;
|
|
|
|
function GetComputerNameA;
|
|
begin
|
|
GetProcedureAddress(_GetComputerNameA, kernel32, 'GetComputerNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetComputerNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetComputerNameW: Pointer;
|
|
|
|
function GetComputerNameW;
|
|
begin
|
|
GetProcedureAddress(_GetComputerNameW, kernel32, 'GetComputerNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetComputerNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetComputerName: Pointer;
|
|
|
|
function GetComputerName;
|
|
begin
|
|
GetProcedureAddress(_GetComputerName, kernel32, 'GetComputerName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetComputerName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetComputerNameA: Pointer;
|
|
|
|
function SetComputerNameA;
|
|
begin
|
|
GetProcedureAddress(_SetComputerNameA, kernel32, 'SetComputerNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetComputerNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetComputerNameW: Pointer;
|
|
|
|
function SetComputerNameW;
|
|
begin
|
|
GetProcedureAddress(_SetComputerNameW, kernel32, 'SetComputerNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetComputerNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetComputerName: Pointer;
|
|
|
|
function SetComputerName;
|
|
begin
|
|
GetProcedureAddress(_SetComputerName, kernel32, 'SetComputerName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetComputerName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetComputerNameExA: Pointer;
|
|
|
|
function GetComputerNameExA;
|
|
begin
|
|
GetProcedureAddress(_GetComputerNameExA, kernel32, 'GetComputerNameExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetComputerNameExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetComputerNameExW: Pointer;
|
|
|
|
function GetComputerNameExW;
|
|
begin
|
|
GetProcedureAddress(_GetComputerNameExW, kernel32, 'GetComputerNameExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetComputerNameExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetComputerNameEx: Pointer;
|
|
|
|
function GetComputerNameEx;
|
|
begin
|
|
GetProcedureAddress(_GetComputerNameEx, kernel32, 'GetComputerNameEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetComputerNameEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetComputerNameExA: Pointer;
|
|
|
|
function SetComputerNameExA;
|
|
begin
|
|
GetProcedureAddress(_SetComputerNameExA, kernel32, 'SetComputerNameExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetComputerNameExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetComputerNameExW: Pointer;
|
|
|
|
function SetComputerNameExW;
|
|
begin
|
|
GetProcedureAddress(_SetComputerNameExW, kernel32, 'SetComputerNameExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetComputerNameExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetComputerNameEx: Pointer;
|
|
|
|
function SetComputerNameEx;
|
|
begin
|
|
GetProcedureAddress(_SetComputerNameEx, kernel32, 'SetComputerNameEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetComputerNameEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DnsHostnameToComputerNameA: Pointer;
|
|
|
|
function DnsHostnameToComputerNameA;
|
|
begin
|
|
GetProcedureAddress(_DnsHostnameToComputerNameA, kernel32, 'DnsHostnameToComputerNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DnsHostnameToComputerNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DnsHostnameToComputerNameW: Pointer;
|
|
|
|
function DnsHostnameToComputerNameW;
|
|
begin
|
|
GetProcedureAddress(_DnsHostnameToComputerNameW, kernel32, 'DnsHostnameToComputerNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DnsHostnameToComputerNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DnsHostnameToComputerName: Pointer;
|
|
|
|
function DnsHostnameToComputerName;
|
|
begin
|
|
GetProcedureAddress(_DnsHostnameToComputerName, kernel32, 'DnsHostnameToComputerName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DnsHostnameToComputerName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetUserNameA: Pointer;
|
|
|
|
function GetUserNameA;
|
|
begin
|
|
GetProcedureAddress(_GetUserNameA, advapi32, 'GetUserNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetUserNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetUserNameW: Pointer;
|
|
|
|
function GetUserNameW;
|
|
begin
|
|
GetProcedureAddress(_GetUserNameW, advapi32, 'GetUserNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetUserNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetUserName: Pointer;
|
|
|
|
function GetUserName;
|
|
begin
|
|
GetProcedureAddress(_GetUserName, advapi32, 'GetUserName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetUserName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LogonUserA: Pointer;
|
|
|
|
function LogonUserA;
|
|
begin
|
|
GetProcedureAddress(_LogonUserA, advapi32, 'LogonUserA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LogonUserA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LogonUserW: Pointer;
|
|
|
|
function LogonUserW;
|
|
begin
|
|
GetProcedureAddress(_LogonUserW, advapi32, 'LogonUserW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LogonUserW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LogonUser: Pointer;
|
|
|
|
function LogonUser;
|
|
begin
|
|
GetProcedureAddress(_LogonUser, advapi32, 'LogonUser' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LogonUser]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LogonUserExA: Pointer;
|
|
|
|
function LogonUserExA;
|
|
begin
|
|
GetProcedureAddress(_LogonUserExA, advapi32, 'LogonUserExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LogonUserExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LogonUserExW: Pointer;
|
|
|
|
function LogonUserExW;
|
|
begin
|
|
GetProcedureAddress(_LogonUserExW, advapi32, 'LogonUserExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LogonUserExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_LogonUserEx: Pointer;
|
|
|
|
function LogonUserEx;
|
|
begin
|
|
GetProcedureAddress(_LogonUserEx, advapi32, 'LogonUserEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_LogonUserEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ImpersonateLoggedOnUser: Pointer;
|
|
|
|
function ImpersonateLoggedOnUser;
|
|
begin
|
|
GetProcedureAddress(_ImpersonateLoggedOnUser, advapi32, 'ImpersonateLoggedOnUser');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ImpersonateLoggedOnUser]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcessAsUserA: Pointer;
|
|
|
|
function CreateProcessAsUserA;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessAsUserA, advapi32, 'CreateProcessAsUserA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessAsUserA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcessAsUserW: Pointer;
|
|
|
|
function CreateProcessAsUserW;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessAsUserW, advapi32, 'CreateProcessAsUserW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessAsUserW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcessAsUser: Pointer;
|
|
|
|
function CreateProcessAsUser;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessAsUser, advapi32, 'CreateProcessAsUser' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessAsUser]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcessWithLogonW: Pointer;
|
|
|
|
function CreateProcessWithLogonW;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessWithLogonW, advapi32, 'CreateProcessWithLogonW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessWithLogonW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateProcessWithTokenW: Pointer;
|
|
|
|
function CreateProcessWithTokenW;
|
|
begin
|
|
GetProcedureAddress(_CreateProcessWithTokenW, advapi32, 'CreateProcessWithTokenW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateProcessWithTokenW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ImpersonateAnonymousToken: Pointer;
|
|
|
|
function ImpersonateAnonymousToken;
|
|
begin
|
|
GetProcedureAddress(_ImpersonateAnonymousToken, advapi32, 'ImpersonateAnonymousToken');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ImpersonateAnonymousToken]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DuplicateTokenEx: Pointer;
|
|
|
|
function DuplicateTokenEx;
|
|
begin
|
|
GetProcedureAddress(_DuplicateTokenEx, advapi32, 'DuplicateTokenEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DuplicateTokenEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateRestrictedToken: Pointer;
|
|
|
|
function CreateRestrictedToken;
|
|
begin
|
|
GetProcedureAddress(_CreateRestrictedToken, advapi32, 'CreateRestrictedToken');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateRestrictedToken]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsTokenRestricted: Pointer;
|
|
|
|
function IsTokenRestricted;
|
|
begin
|
|
GetProcedureAddress(_IsTokenRestricted, advapi32, 'IsTokenRestricted');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsTokenRestricted]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CheckTokenMembership: Pointer;
|
|
|
|
function CheckTokenMembership;
|
|
begin
|
|
GetProcedureAddress(_CheckTokenMembership, advapi32, 'CheckTokenMembership');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CheckTokenMembership]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsTokenUntrusted: Pointer;
|
|
|
|
function IsTokenUntrusted;
|
|
begin
|
|
GetProcedureAddress(_IsTokenUntrusted, advapi32, 'IsTokenUntrusted');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsTokenUntrusted]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RegisterWaitForSingleObject: Pointer;
|
|
|
|
function RegisterWaitForSingleObject;
|
|
begin
|
|
GetProcedureAddress(_RegisterWaitForSingleObject, kernel32, 'RegisterWaitForSingleObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RegisterWaitForSingleObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RegisterWaitForSingleObjectEx: Pointer;
|
|
|
|
function RegisterWaitForSingleObjectEx;
|
|
begin
|
|
GetProcedureAddress(_RegisterWaitForSingleObjectEx, kernel32, 'RegisterWaitForSingleObjectEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RegisterWaitForSingleObjectEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UnregisterWait: Pointer;
|
|
|
|
function UnregisterWait;
|
|
begin
|
|
GetProcedureAddress(_UnregisterWait, kernel32, 'UnregisterWait');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UnregisterWait]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_UnregisterWaitEx: Pointer;
|
|
|
|
function UnregisterWaitEx;
|
|
begin
|
|
GetProcedureAddress(_UnregisterWaitEx, kernel32, 'UnregisterWaitEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_UnregisterWaitEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueueUserWorkItem: Pointer;
|
|
|
|
function QueueUserWorkItem;
|
|
begin
|
|
GetProcedureAddress(_QueueUserWorkItem, kernel32, 'QueueUserWorkItem');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueueUserWorkItem]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_BindIoCompletionCallback: Pointer;
|
|
|
|
function BindIoCompletionCallback;
|
|
begin
|
|
GetProcedureAddress(_BindIoCompletionCallback, kernel32, 'BindIoCompletionCallback');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_BindIoCompletionCallback]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateTimerQueue: Pointer;
|
|
|
|
function CreateTimerQueue;
|
|
begin
|
|
GetProcedureAddress(_CreateTimerQueue, kernel32, 'CreateTimerQueue');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateTimerQueue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateTimerQueueTimer: Pointer;
|
|
|
|
function CreateTimerQueueTimer;
|
|
begin
|
|
GetProcedureAddress(_CreateTimerQueueTimer, kernel32, 'CreateTimerQueueTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateTimerQueueTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ChangeTimerQueueTimer: Pointer;
|
|
|
|
function ChangeTimerQueueTimer;
|
|
begin
|
|
GetProcedureAddress(_ChangeTimerQueueTimer, kernel32, 'ChangeTimerQueueTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ChangeTimerQueueTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteTimerQueueTimer: Pointer;
|
|
|
|
function DeleteTimerQueueTimer;
|
|
begin
|
|
GetProcedureAddress(_DeleteTimerQueueTimer, kernel32, 'DeleteTimerQueueTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteTimerQueueTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteTimerQueueEx: Pointer;
|
|
|
|
function DeleteTimerQueueEx;
|
|
begin
|
|
GetProcedureAddress(_DeleteTimerQueueEx, kernel32, 'DeleteTimerQueueEx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteTimerQueueEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetTimerQueueTimer: Pointer;
|
|
|
|
function SetTimerQueueTimer;
|
|
begin
|
|
GetProcedureAddress(_SetTimerQueueTimer, kernel32, 'SetTimerQueueTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetTimerQueueTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CancelTimerQueueTimer: Pointer;
|
|
|
|
function CancelTimerQueueTimer;
|
|
begin
|
|
GetProcedureAddress(_CancelTimerQueueTimer, kernel32, 'CancelTimerQueueTimer');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CancelTimerQueueTimer]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteTimerQueue: Pointer;
|
|
|
|
function DeleteTimerQueue;
|
|
begin
|
|
GetProcedureAddress(_DeleteTimerQueue, kernel32, 'DeleteTimerQueue');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteTimerQueue]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentHwProfileA: Pointer;
|
|
|
|
function GetCurrentHwProfileA;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentHwProfileA, advapi32, 'GetCurrentHwProfileA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentHwProfileA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentHwProfileW: Pointer;
|
|
|
|
function GetCurrentHwProfileW;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentHwProfileW, advapi32, 'GetCurrentHwProfileW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentHwProfileW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentHwProfile: Pointer;
|
|
|
|
function GetCurrentHwProfile;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentHwProfile, advapi32, 'GetCurrentHwProfile' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentHwProfile]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryPerformanceCounter: Pointer;
|
|
|
|
function QueryPerformanceCounter;
|
|
begin
|
|
GetProcedureAddress(_QueryPerformanceCounter, kernel32, 'QueryPerformanceCounter');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryPerformanceCounter]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryPerformanceFrequency: Pointer;
|
|
|
|
function QueryPerformanceFrequency;
|
|
begin
|
|
GetProcedureAddress(_QueryPerformanceFrequency, kernel32, 'QueryPerformanceFrequency');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryPerformanceFrequency]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVersionExA: Pointer;
|
|
|
|
function GetVersionExA;
|
|
begin
|
|
GetProcedureAddress(_GetVersionExA, kernel32, 'GetVersionExA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVersionExA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVersionExW: Pointer;
|
|
|
|
function GetVersionExW;
|
|
begin
|
|
GetProcedureAddress(_GetVersionExW, kernel32, 'GetVersionExW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVersionExW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVersionEx: Pointer;
|
|
|
|
function GetVersionEx;
|
|
begin
|
|
GetProcedureAddress(_GetVersionEx, kernel32, 'GetVersionEx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVersionEx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerifyVersionInfoA: Pointer;
|
|
|
|
function VerifyVersionInfoA;
|
|
begin
|
|
GetProcedureAddress(_VerifyVersionInfoA, kernel32, 'VerifyVersionInfoA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerifyVersionInfoA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerifyVersionInfoW: Pointer;
|
|
|
|
function VerifyVersionInfoW;
|
|
begin
|
|
GetProcedureAddress(_VerifyVersionInfoW, kernel32, 'VerifyVersionInfoW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerifyVersionInfoW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_VerifyVersionInfo: Pointer;
|
|
|
|
function VerifyVersionInfo;
|
|
begin
|
|
GetProcedureAddress(_VerifyVersionInfo, kernel32, 'VerifyVersionInfo' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_VerifyVersionInfo]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetSystemPowerStatus: Pointer;
|
|
|
|
function GetSystemPowerStatus;
|
|
begin
|
|
GetProcedureAddress(_GetSystemPowerStatus, kernel32, 'GetSystemPowerStatus');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetSystemPowerStatus]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetSystemPowerState: Pointer;
|
|
|
|
function SetSystemPowerState;
|
|
begin
|
|
GetProcedureAddress(_SetSystemPowerState, kernel32, 'SetSystemPowerState');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetSystemPowerState]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AllocateUserPhysicalPages: Pointer;
|
|
|
|
function AllocateUserPhysicalPages;
|
|
begin
|
|
GetProcedureAddress(_AllocateUserPhysicalPages, kernel32, 'AllocateUserPhysicalPages');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AllocateUserPhysicalPages]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FreeUserPhysicalPages: Pointer;
|
|
|
|
function FreeUserPhysicalPages;
|
|
begin
|
|
GetProcedureAddress(_FreeUserPhysicalPages, kernel32, 'FreeUserPhysicalPages');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FreeUserPhysicalPages]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MapUserPhysicalPages: Pointer;
|
|
|
|
function MapUserPhysicalPages;
|
|
begin
|
|
GetProcedureAddress(_MapUserPhysicalPages, kernel32, 'MapUserPhysicalPages');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MapUserPhysicalPages]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_MapUserPhysicalPagesScatter: Pointer;
|
|
|
|
function MapUserPhysicalPagesScatter;
|
|
begin
|
|
GetProcedureAddress(_MapUserPhysicalPagesScatter, kernel32, 'MapUserPhysicalPagesScatter');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_MapUserPhysicalPagesScatter]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateJobObjectA: Pointer;
|
|
|
|
function CreateJobObjectA;
|
|
begin
|
|
GetProcedureAddress(_CreateJobObjectA, kernel32, 'CreateJobObjectA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateJobObjectA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateJobObjectW: Pointer;
|
|
|
|
function CreateJobObjectW;
|
|
begin
|
|
GetProcedureAddress(_CreateJobObjectW, kernel32, 'CreateJobObjectW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateJobObjectW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateJobObject: Pointer;
|
|
|
|
function CreateJobObject;
|
|
begin
|
|
GetProcedureAddress(_CreateJobObject, kernel32, 'CreateJobObject' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateJobObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenJobObjectA: Pointer;
|
|
|
|
function OpenJobObjectA;
|
|
begin
|
|
GetProcedureAddress(_OpenJobObjectA, kernel32, 'OpenJobObjectA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenJobObjectA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenJobObjectW: Pointer;
|
|
|
|
function OpenJobObjectW;
|
|
begin
|
|
GetProcedureAddress(_OpenJobObjectW, kernel32, 'OpenJobObjectW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenJobObjectW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_OpenJobObject: Pointer;
|
|
|
|
function OpenJobObject;
|
|
begin
|
|
GetProcedureAddress(_OpenJobObject, kernel32, 'OpenJobObject' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_OpenJobObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AssignProcessToJobObject: Pointer;
|
|
|
|
function AssignProcessToJobObject;
|
|
begin
|
|
GetProcedureAddress(_AssignProcessToJobObject, kernel32, 'AssignProcessToJobObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AssignProcessToJobObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_TerminateJobObject: Pointer;
|
|
|
|
function TerminateJobObject;
|
|
begin
|
|
GetProcedureAddress(_TerminateJobObject, kernel32, 'TerminateJobObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_TerminateJobObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryInformationJobObject: Pointer;
|
|
|
|
function QueryInformationJobObject;
|
|
begin
|
|
GetProcedureAddress(_QueryInformationJobObject, kernel32, 'QueryInformationJobObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryInformationJobObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetInformationJobObject: Pointer;
|
|
|
|
function SetInformationJobObject;
|
|
begin
|
|
GetProcedureAddress(_SetInformationJobObject, kernel32, 'SetInformationJobObject');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetInformationJobObject]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsProcessInJob: Pointer;
|
|
|
|
function IsProcessInJob;
|
|
begin
|
|
GetProcedureAddress(_IsProcessInJob, kernel32, 'IsProcessInJob');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsProcessInJob]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateJobSet: Pointer;
|
|
|
|
function CreateJobSet;
|
|
begin
|
|
GetProcedureAddress(_CreateJobSet, kernel32, 'CreateJobSet');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateJobSet]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddVectoredExceptionHandler: Pointer;
|
|
|
|
function AddVectoredExceptionHandler;
|
|
begin
|
|
GetProcedureAddress(_AddVectoredExceptionHandler, kernel32, 'AddVectoredExceptionHandler');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddVectoredExceptionHandler]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_RemoveVectoredExceptionHandler: Pointer;
|
|
|
|
function RemoveVectoredExceptionHandler;
|
|
begin
|
|
GetProcedureAddress(_RemoveVectoredExceptionHandler, kernel32, 'RemoveVectoredExceptionHandler');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_RemoveVectoredExceptionHandler]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstVolumeA: Pointer;
|
|
|
|
function FindFirstVolumeA;
|
|
begin
|
|
GetProcedureAddress(_FindFirstVolumeA, kernel32, 'FindFirstVolumeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstVolumeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstVolumeW: Pointer;
|
|
|
|
function FindFirstVolumeW;
|
|
begin
|
|
GetProcedureAddress(_FindFirstVolumeW, kernel32, 'FindFirstVolumeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstVolumeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstVolume: Pointer;
|
|
|
|
function FindFirstVolume;
|
|
begin
|
|
GetProcedureAddress(_FindFirstVolume, kernel32, 'FindFirstVolume' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstVolume]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextVolumeA: Pointer;
|
|
|
|
function FindNextVolumeA;
|
|
begin
|
|
GetProcedureAddress(_FindNextVolumeA, kernel32, 'FindNextVolumeA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextVolumeA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextVolumeW: Pointer;
|
|
|
|
function FindNextVolumeW;
|
|
begin
|
|
GetProcedureAddress(_FindNextVolumeW, kernel32, 'FindNextVolumeW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextVolumeW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextVolume: Pointer;
|
|
|
|
function FindNextVolume;
|
|
begin
|
|
GetProcedureAddress(_FindNextVolume, kernel32, 'FindNextVolume' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextVolume]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindVolumeClose: Pointer;
|
|
|
|
function FindVolumeClose;
|
|
begin
|
|
GetProcedureAddress(_FindVolumeClose, kernel32, 'FindVolumeClose');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindVolumeClose]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstVolumeMountPointA: Pointer;
|
|
|
|
function FindFirstVolumeMountPointA;
|
|
begin
|
|
GetProcedureAddress(_FindFirstVolumeMountPointA, kernel32, 'FindFirstVolumeMountPointA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstVolumeMountPointA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstVolumeMountPointW: Pointer;
|
|
|
|
function FindFirstVolumeMountPointW;
|
|
begin
|
|
GetProcedureAddress(_FindFirstVolumeMountPointW, kernel32, 'FindFirstVolumeMountPointW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstVolumeMountPointW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindFirstVolumeMountPoint: Pointer;
|
|
|
|
function FindFirstVolumeMountPoint;
|
|
begin
|
|
GetProcedureAddress(_FindFirstVolumeMountPoint, kernel32, 'FindFirstVolumeMountPoint' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindFirstVolumeMountPoint]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextVolumeMountPointA: Pointer;
|
|
|
|
function FindNextVolumeMountPointA;
|
|
begin
|
|
GetProcedureAddress(_FindNextVolumeMountPointA, kernel32, 'FindNextVolumeMountPointA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextVolumeMountPointA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextVolumeMountPointW: Pointer;
|
|
|
|
function FindNextVolumeMountPointW;
|
|
begin
|
|
GetProcedureAddress(_FindNextVolumeMountPointW, kernel32, 'FindNextVolumeMountPointW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextVolumeMountPointW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindNextVolumeMountPoint: Pointer;
|
|
|
|
function FindNextVolumeMountPoint;
|
|
begin
|
|
GetProcedureAddress(_FindNextVolumeMountPoint, kernel32, 'FindNextVolumeMountPoint' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindNextVolumeMountPoint]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindVolumeMountPointClose: Pointer;
|
|
|
|
function FindVolumeMountPointClose;
|
|
begin
|
|
GetProcedureAddress(_FindVolumeMountPointClose, kernel32, 'FindVolumeMountPointClose');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindVolumeMountPointClose]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetVolumeMountPointA: Pointer;
|
|
|
|
function SetVolumeMountPointA;
|
|
begin
|
|
GetProcedureAddress(_SetVolumeMountPointA, kernel32, 'SetVolumeMountPointA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetVolumeMountPointA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetVolumeMountPointW: Pointer;
|
|
|
|
function SetVolumeMountPointW;
|
|
begin
|
|
GetProcedureAddress(_SetVolumeMountPointW, kernel32, 'SetVolumeMountPointW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetVolumeMountPointW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_SetVolumeMountPoint: Pointer;
|
|
|
|
function SetVolumeMountPoint;
|
|
begin
|
|
GetProcedureAddress(_SetVolumeMountPoint, kernel32, 'SetVolumeMountPoint' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetVolumeMountPoint]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteVolumeMountPointA: Pointer;
|
|
|
|
function DeleteVolumeMountPointA;
|
|
begin
|
|
GetProcedureAddress(_DeleteVolumeMountPointA, kernel32, 'DeleteVolumeMountPointA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteVolumeMountPointA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteVolumeMountPointW: Pointer;
|
|
|
|
function DeleteVolumeMountPointW;
|
|
begin
|
|
GetProcedureAddress(_DeleteVolumeMountPointW, kernel32, 'DeleteVolumeMountPointW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteVolumeMountPointW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeleteVolumeMountPoint: Pointer;
|
|
|
|
function DeleteVolumeMountPoint;
|
|
begin
|
|
GetProcedureAddress(_DeleteVolumeMountPoint, kernel32, 'DeleteVolumeMountPoint' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeleteVolumeMountPoint]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumeNameForVolMountPointA: Pointer;
|
|
|
|
function GetVolumeNameForVolumeMountPointA;
|
|
begin
|
|
GetProcedureAddress(_GetVolumeNameForVolMountPointA, kernel32, 'GetVolumeNameForVolumeMountPointA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumeNameForVolMountPointA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumeNameForVolMountPointW: Pointer;
|
|
|
|
function GetVolumeNameForVolumeMountPointW;
|
|
begin
|
|
GetProcedureAddress(_GetVolumeNameForVolMountPointW, kernel32, 'GetVolumeNameForVolumeMountPointW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumeNameForVolMountPointW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumeNameForVolMountPoint: Pointer;
|
|
|
|
function GetVolumeNameForVolumeMountPoint;
|
|
begin
|
|
GetProcedureAddress(_GetVolumeNameForVolMountPoint, kernel32, 'GetVolumeNameForVolumeMountPoint' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumeNameForVolMountPoint]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumePathNameA: Pointer;
|
|
|
|
function GetVolumePathNameA;
|
|
begin
|
|
GetProcedureAddress(_GetVolumePathNameA, kernel32, 'GetVolumePathNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumePathNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumePathNameW: Pointer;
|
|
|
|
function GetVolumePathNameW;
|
|
begin
|
|
GetProcedureAddress(_GetVolumePathNameW, kernel32, 'GetVolumePathNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumePathNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumePathName: Pointer;
|
|
|
|
function GetVolumePathName;
|
|
begin
|
|
GetProcedureAddress(_GetVolumePathName, kernel32, 'GetVolumePathName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumePathName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumePathNamesForVolNameA: Pointer;
|
|
|
|
function GetVolumePathNamesForVolumeNameA;
|
|
begin
|
|
GetProcedureAddress(_GetVolumePathNamesForVolNameA, kernel32, 'GetVolumePathNamesForVolumeNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumePathNamesForVolNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumePathNamesForVolNameW: Pointer;
|
|
|
|
function GetVolumePathNamesForVolumeNameW;
|
|
begin
|
|
GetProcedureAddress(_GetVolumePathNamesForVolNameW, kernel32, 'GetVolumePathNamesForVolumeNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumePathNamesForVolNameW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetVolumePathNamesForVolName: Pointer;
|
|
|
|
function GetVolumePathNamesForVolumeName;
|
|
begin
|
|
GetProcedureAddress(_GetVolumePathNamesForVolName, kernel32, 'GetVolumePathNamesForVolumeName' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetVolumePathNamesForVolName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateActCtxA: Pointer;
|
|
|
|
function CreateActCtxA;
|
|
begin
|
|
GetProcedureAddress(_CreateActCtxA, kernel32, 'CreateActCtxA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateActCtxA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateActCtxW: Pointer;
|
|
|
|
function CreateActCtxW;
|
|
begin
|
|
GetProcedureAddress(_CreateActCtxW, kernel32, 'CreateActCtxW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateActCtxW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_CreateActCtx: Pointer;
|
|
|
|
function CreateActCtx;
|
|
begin
|
|
GetProcedureAddress(_CreateActCtx, kernel32, 'CreateActCtx' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_CreateActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_AddRefActCtx: Pointer;
|
|
|
|
procedure AddRefActCtx;
|
|
begin
|
|
GetProcedureAddress(_AddRefActCtx, kernel32, 'AddRefActCtx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_AddRefActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ReleaseActCtx: Pointer;
|
|
|
|
procedure ReleaseActCtx;
|
|
begin
|
|
GetProcedureAddress(_ReleaseActCtx, kernel32, 'ReleaseActCtx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ReleaseActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ZombifyActCtx: Pointer;
|
|
|
|
function ZombifyActCtx;
|
|
begin
|
|
GetProcedureAddress(_ZombifyActCtx, kernel32, 'ZombifyActCtx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ZombifyActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ActivateActCtx: Pointer;
|
|
|
|
function ActivateActCtx;
|
|
begin
|
|
GetProcedureAddress(_ActivateActCtx, kernel32, 'ActivateActCtx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ActivateActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_DeactivateActCtx: Pointer;
|
|
|
|
function DeactivateActCtx;
|
|
begin
|
|
GetProcedureAddress(_DeactivateActCtx, kernel32, 'DeactivateActCtx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_DeactivateActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetCurrentActCtx: Pointer;
|
|
|
|
function GetCurrentActCtx;
|
|
begin
|
|
GetProcedureAddress(_GetCurrentActCtx, kernel32, 'GetCurrentActCtx');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetCurrentActCtx]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindActCtxSectionStringA: Pointer;
|
|
|
|
function FindActCtxSectionStringA;
|
|
begin
|
|
GetProcedureAddress(_FindActCtxSectionStringA, kernel32, 'FindActCtxSectionStringA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindActCtxSectionStringA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindActCtxSectionStringW: Pointer;
|
|
|
|
function FindActCtxSectionStringW;
|
|
begin
|
|
GetProcedureAddress(_FindActCtxSectionStringW, kernel32, 'FindActCtxSectionStringW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindActCtxSectionStringW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindActCtxSectionString: Pointer;
|
|
|
|
function FindActCtxSectionString;
|
|
begin
|
|
GetProcedureAddress(_FindActCtxSectionString, kernel32, 'FindActCtxSectionString' + AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindActCtxSectionString]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_FindActCtxSectionGuid: Pointer;
|
|
|
|
function FindActCtxSectionGuid;
|
|
begin
|
|
GetProcedureAddress(_FindActCtxSectionGuid, kernel32, 'FindActCtxSectionGuid');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_FindActCtxSectionGuid]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_QueryActCtxW: Pointer;
|
|
|
|
function QueryActCtxW;
|
|
begin
|
|
GetProcedureAddress(_QueryActCtxW, kernel32, 'QueryActCtxW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_QueryActCtxW]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_ProcessIdToSessionId: Pointer;
|
|
|
|
function ProcessIdToSessionId;
|
|
begin
|
|
GetProcedureAddress(_ProcessIdToSessionId, kernel32, 'ProcessIdToSessionId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_ProcessIdToSessionId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_WTSGetActiveConsoleSessionId: Pointer;
|
|
|
|
function WTSGetActiveConsoleSessionId;
|
|
begin
|
|
GetProcedureAddress(_WTSGetActiveConsoleSessionId, kernel32, 'WTSGetActiveConsoleSessionId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_WTSGetActiveConsoleSessionId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_IsWow64Process: Pointer;
|
|
|
|
function IsWow64Process;
|
|
begin
|
|
GetProcedureAddress(_IsWow64Process, kernel32, 'IsWow64Process');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_IsWow64Process]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetLogicalProcessorInformation: Pointer;
|
|
|
|
function GetLogicalProcessorInformation;
|
|
begin
|
|
GetProcedureAddress(_GetLogicalProcessorInformation, kernel32, 'GetLogicalProcessorInformation');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetLogicalProcessorInformation]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNumaHighestNodeNumber: Pointer;
|
|
|
|
function GetNumaHighestNodeNumber;
|
|
begin
|
|
GetProcedureAddress(_GetNumaHighestNodeNumber, kernel32, 'GetNumaHighestNodeNumber');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNumaHighestNodeNumber]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNumaProcessorNode: Pointer;
|
|
|
|
function GetNumaProcessorNode;
|
|
begin
|
|
GetProcedureAddress(_GetNumaProcessorNode, kernel32, 'GetNumaProcessorNode');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNumaProcessorNode]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNumaNodeProcessorMask: Pointer;
|
|
|
|
function GetNumaNodeProcessorMask;
|
|
begin
|
|
GetProcedureAddress(_GetNumaNodeProcessorMask, kernel32, 'GetNumaNodeProcessorMask');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNumaNodeProcessorMask]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNumaAvailableMemoryNode: Pointer;
|
|
|
|
function GetNumaAvailableMemoryNode;
|
|
begin
|
|
GetProcedureAddress(_GetNumaAvailableMemoryNode, kernel32, 'GetNumaAvailableMemoryNode');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNumaAvailableMemoryNode]
|
|
end;
|
|
end;
|
|
|
|
|
|
{$IFDEF WINVISTA_UP}
|
|
var
|
|
_SetProcessDEPPolicy: Pointer;
|
|
|
|
function SetProcessDEPPolicy({__in}dwFlags : DWORD) : Boolean;
|
|
begin
|
|
GetProcedureAddress(_SetProcessDEPPolicy, kernel32, 'SetProcessDEPPolicy');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_SetProcessDEPPolicy]
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
_GetNamedPipeSrvSId: Pointer;
|
|
|
|
function GetNamedPipeServerSessionId;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeSrvSId, kernel32, 'GetNamedPipeServerSessionId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeSrvSId]
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
_GetNamedPipeSrvProcId: Pointer;
|
|
|
|
function GetNamedPipeServerProcessId;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeSrvProcId, kernel32, 'GetNamedPipeServerProcessId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeSrvProcId]
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
_GetNamedPipeClProcId: Pointer;
|
|
|
|
function GetNamedPipeClientProcessId;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeClProcId, kernel32, 'GetNamedPipeClientProcessId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeClProcId]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeClSId: Pointer;
|
|
|
|
function GetNamedPipeClientSessionId;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeClSId, kernel32, 'GetNamedPipeClientSessionId');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeClSId]
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
_GetNamedPipeClCompName: Pointer;
|
|
|
|
function GetNamedPipeClientComputerName;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeClCompName, kernel32, 'GetNamedPipeClientComputerName'+AWSuffix);
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeClCompName]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeClCompNameA: Pointer;
|
|
|
|
function GetNamedPipeClientComputerNameA;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeClCompNameA, kernel32, 'GetNamedPipeClientComputerNameA');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeClCompNameA]
|
|
end;
|
|
end;
|
|
|
|
var
|
|
_GetNamedPipeClCompNameW: Pointer;
|
|
|
|
function GetNamedPipeClientComputerNameW;
|
|
begin
|
|
GetProcedureAddress(_GetNamedPipeClCompNameW, kernel32, 'GetNamedPipeClientComputerNameW');
|
|
asm
|
|
MOV ESP, EBP
|
|
POP EBP
|
|
JMP [_GetNamedPipeClCompNameW]
|
|
end;
|
|
end;
|
|
|
|
{$ENDIF WINVISTA_UP}
|
|
|
|
{$ELSE}
|
|
|
|
|
|
function InterlockedCompareExchange64; external kernel32 name 'InterlockedCompareExchange64';
|
|
function InterlockedIncrement; external kernel32 name 'InterlockedIncrement';
|
|
function InterlockedDecrement; external kernel32 name 'InterlockedDecrement';
|
|
function InterlockedExchange; external kernel32 name 'InterlockedExchange';
|
|
function InterlockedExchangeAdd; external kernel32 name 'InterlockedExchangeAdd';
|
|
function InterlockedCompareExchange; external kernel32 name 'InterlockedCompareExchange';
|
|
procedure InitializeSListHead; external kernel32 name 'InitializeSListHead';
|
|
function InterlockedPopEntrySList; external kernel32 name 'InterlockedPopEntrySList';
|
|
function InterlockedPushEntrySList; external kernel32 name 'InterlockedPushEntrySList';
|
|
function InterlockedFlushSList; external kernel32 name 'InterlockedFlushSList';
|
|
function QueryDepthSList; external kernel32 name 'QueryDepthSList';
|
|
function FreeResource; external kernel32 name 'FreeResource';
|
|
function LockResource; external kernel32 name 'LockResource';
|
|
function FreeLibrary; external kernel32 name 'FreeLibrary';
|
|
procedure FreeLibraryAndExitThread; external kernel32 name 'FreeLibraryAndExitThread';
|
|
function DisableThreadLibraryCalls; external kernel32 name 'DisableThreadLibraryCalls';
|
|
function GetProcAddress; external kernel32 name 'GetProcAddress';
|
|
function GetVersion; external kernel32 name 'GetVersion';
|
|
function GlobalAlloc; external kernel32 name 'GlobalAlloc';
|
|
function GlobalReAlloc; external kernel32 name 'GlobalReAlloc';
|
|
function GlobalSize; external kernel32 name 'GlobalSize';
|
|
function GlobalFlags; external kernel32 name 'GlobalFlags';
|
|
function GlobalLock; external kernel32 name 'GlobalLock';
|
|
function GlobalHandle; external kernel32 name 'GlobalHandle';
|
|
function GlobalUnlock; external kernel32 name 'GlobalUnlock';
|
|
function GlobalFree; external kernel32 name 'GlobalFree';
|
|
function GlobalCompact; external kernel32 name 'GlobalCompact';
|
|
procedure GlobalFix; external kernel32 name 'GlobalFix';
|
|
procedure GlobalUnfix; external kernel32 name 'GlobalUnfix';
|
|
function GlobalWire; external kernel32 name 'GlobalWire';
|
|
function GlobalUnWire; external kernel32 name 'GlobalUnWire';
|
|
procedure GlobalMemoryStatus; external kernel32 name 'GlobalMemoryStatus';
|
|
function GlobalMemoryStatusEx; external kernel32 name 'GlobalMemoryStatusEx';
|
|
function LocalAlloc; external kernel32 name 'LocalAlloc';
|
|
function LocalReAlloc; external kernel32 name 'LocalReAlloc';
|
|
function LocalLock; external kernel32 name 'LocalLock';
|
|
function LocalHandle; external kernel32 name 'LocalHandle';
|
|
function LocalUnlock; external kernel32 name 'LocalUnlock';
|
|
function LocalSize; external kernel32 name 'LocalSize';
|
|
function LocalFlags; external kernel32 name 'LocalFlags';
|
|
function LocalFree; external kernel32 name 'LocalFree';
|
|
function LocalShrink; external kernel32 name 'LocalShrink';
|
|
function LocalCompact; external kernel32 name 'LocalCompact';
|
|
function FlushInstructionCache; external kernel32 name 'FlushInstructionCache';
|
|
function VirtualAlloc; external kernel32 name 'VirtualAlloc';
|
|
function VirtualFree; external kernel32 name 'VirtualFree';
|
|
function VirtualProtect; external kernel32 name 'VirtualProtect';
|
|
function VirtualQuery; external kernel32 name 'VirtualQuery';
|
|
function VirtualAllocEx; external kernel32 name 'VirtualAllocEx';
|
|
function GetWriteWatch; external kernel32 name 'GetWriteWatch';
|
|
function ResetWriteWatch; external kernel32 name 'ResetWriteWatch';
|
|
function GetLargePageMinimum; external kernel32 name 'GetLargePageMinimum';
|
|
function VirtualFreeEx; external kernel32 name 'VirtualFreeEx';
|
|
function VirtualProtectEx; external kernel32 name 'VirtualProtectEx';
|
|
function VirtualQueryEx; external kernel32 name 'VirtualQueryEx';
|
|
function HeapCreate; external kernel32 name 'HeapCreate';
|
|
function HeapDestroy; external kernel32 name 'HeapDestroy';
|
|
function HeapAlloc; external kernel32 name 'HeapAlloc';
|
|
function HeapReAlloc; external kernel32 name 'HeapReAlloc';
|
|
function HeapFree; external kernel32 name 'HeapFree';
|
|
function HeapSize; external kernel32 name 'HeapSize';
|
|
function HeapValidate; external kernel32 name 'HeapValidate';
|
|
function HeapCompact; external kernel32 name 'HeapCompact';
|
|
function GetProcessHeap; external kernel32 name 'GetProcessHeap';
|
|
function GetProcessHeaps; external kernel32 name 'GetProcessHeaps';
|
|
function HeapLock; external kernel32 name 'HeapLock';
|
|
function HeapUnlock; external kernel32 name 'HeapUnlock';
|
|
function HeapWalk; external kernel32 name 'HeapWalk';
|
|
function HeapSetInformation; external kernel32 name 'HeapSetInformation';
|
|
function HeapQueryInformation; external kernel32 name 'HeapQueryInformation';
|
|
function GetBinaryTypeA; external kernel32 name 'GetBinaryTypeA';
|
|
function GetBinaryTypeW; external kernel32 name 'GetBinaryTypeW';
|
|
function GetBinaryType; external kernel32 name 'GetBinaryType' + AWSuffix;
|
|
function GetShortPathNameA; external kernel32 name 'GetShortPathNameA';
|
|
function GetShortPathNameW; external kernel32 name 'GetShortPathNameW';
|
|
function GetShortPathName; external kernel32 name 'GetShortPathName' + AWSuffix;
|
|
function GetLongPathNameA; external kernel32 name 'GetLongPathNameA';
|
|
function GetLongPathNameW; external kernel32 name 'GetLongPathNameW';
|
|
function GetLongPathName; external kernel32 name 'GetLongPathName' + AWSuffix;
|
|
function GetProcessAffinityMask; external kernel32 name 'GetProcessAffinityMask';
|
|
function SetProcessAffinityMask; external kernel32 name 'SetProcessAffinityMask';
|
|
function GetProcessHandleCount; external kernel32 name 'GetProcessHandleCount';
|
|
function GetProcessTimes; external kernel32 name 'GetProcessTimes';
|
|
function GetProcessIoCounters; external kernel32 name 'GetProcessIoCounters';
|
|
function GetProcessWorkingSetSize; external kernel32 name 'GetProcessWorkingSetSize';
|
|
function GetProcessWorkingSetSizeEx; external kernel32 name 'GetProcessWorkingSetSizeEx';
|
|
function SetProcessWorkingSetSize; external kernel32 name 'SetProcessWorkingSetSize';
|
|
function SetProcessWorkingSetSizeEx; external kernel32 name 'SetProcessWorkingSetSizeEx';
|
|
function OpenProcess; external kernel32 name 'OpenProcess';
|
|
function GetCurrentProcess; external kernel32 name 'GetCurrentProcess';
|
|
function GetCurrentProcessId; external kernel32 name 'GetCurrentProcessId';
|
|
procedure ExitProcess; external kernel32 name 'ExitProcess';
|
|
function TerminateProcess; external kernel32 name 'TerminateProcess';
|
|
function GetExitCodeProcess; external kernel32 name 'GetExitCodeProcess';
|
|
procedure FatalExit; external kernel32 name 'FatalExit';
|
|
function GetEnvironmentStringsW; external kernel32 name 'GetEnvironmentStringsW';
|
|
function GetEnvironmentStrings; external kernel32 name 'GetEnvironmentStrings' + AWSuffix;
|
|
function GetEnvironmentStringsA; external kernel32 name 'GetEnvironmentStringsA';
|
|
|
|
{$IFDEF WIN2003_UP}
|
|
function SetEnvironmentStringsA; external kernel32 name 'SetEnvironmentStringsA';
|
|
function SetEnvironmentStringsW; external kernel32 name 'SetEnvironmentStringsW';
|
|
function SetEnvironmentStrings; external kernel32 name 'SetEnvironmentStrings' + AWSuffix;
|
|
{$ENDIF WIN2003_UP}
|
|
|
|
function FreeEnvironmentStringsA; external kernel32 name 'FreeEnvironmentStringsA';
|
|
function FreeEnvironmentStringsW; external kernel32 name 'FreeEnvironmentStringsW';
|
|
function FreeEnvironmentStrings; external kernel32 name 'FreeEnvironmentStrings' + AWSuffix;
|
|
procedure RaiseException; external kernel32 name 'RaiseException';
|
|
function UnhandledExceptionFilter; external kernel32 name 'UnhandledExceptionFilter';
|
|
function SetUnhandledExceptionFilter; external kernel32 name 'SetUnhandledExceptionFilter';
|
|
function CreateFiber; external kernel32 name 'CreateFiber';
|
|
function CreateFiberEx; external kernel32 name 'CreateFiberEx';
|
|
procedure DeleteFiber; external kernel32 name 'DeleteFiber';
|
|
function ConvertThreadToFiber; external kernel32 name 'ConvertThreadToFiber';
|
|
function ConvertThreadToFiberEx; external kernel32 name 'ConvertThreadToFiberEx';
|
|
function ConvertFiberToThread; external kernel32 name 'ConvertFiberToThread';
|
|
procedure SwitchToFiber; external kernel32 name 'SwitchToFiber';
|
|
function SwitchToThread; external kernel32 name 'SwitchToThread';
|
|
function CreateThread; external kernel32 name 'CreateThread';
|
|
function CreateRemoteThread; external kernel32 name 'CreateRemoteThread';
|
|
function GetCurrentThread; external kernel32 name 'GetCurrentThread';
|
|
function GetCurrentThreadId; external kernel32 name 'GetCurrentThreadId';
|
|
function GetProcessIdOfThread; external kernel32 name 'GetProcessIdOfThread';
|
|
function GetThreadId; external kernel32 name 'GetThreadId';
|
|
function GetProcessId; external kernel32 name 'GetProcessId';
|
|
function GetCurrentProcessorNumber; external kernel32 name 'GetCurrentProcessorNumber';
|
|
function SetThreadAffinityMask; external kernel32 name 'SetThreadAffinityMask';
|
|
function SetThreadIdealProcessor; external kernel32 name 'SetThreadIdealProcessor';
|
|
function SetProcessPriorityBoost; external kernel32 name 'SetProcessPriorityBoost';
|
|
function GetProcessPriorityBoost; external kernel32 name 'GetProcessPriorityBoost';
|
|
function RequestWakeupLatency; external kernel32 name 'RequestWakeupLatency';
|
|
function IsSystemResumeAutomatic; external kernel32 name 'IsSystemResumeAutomatic';
|
|
function OpenThread; external kernel32 name 'OpenThread';
|
|
function SetThreadPriority; external kernel32 name 'SetThreadPriority';
|
|
function SetThreadPriorityBoost; external kernel32 name 'SetThreadPriorityBoost';
|
|
function GetThreadPriorityBoost; external kernel32 name 'GetThreadPriorityBoost';
|
|
function GetThreadPriority; external kernel32 name 'GetThreadPriority';
|
|
function GetThreadTimes; external kernel32 name 'GetThreadTimes';
|
|
function GetThreadIOPendingFlag; external kernel32 name 'GetThreadIOPendingFlag';
|
|
procedure ExitThread; external kernel32 name 'ExitThread';
|
|
function TerminateThread; external kernel32 name 'TerminateThread';
|
|
function GetExitCodeThread; external kernel32 name 'GetExitCodeThread';
|
|
function GetThreadSelectorEntry; external kernel32 name 'GetThreadSelectorEntry';
|
|
function SetThreadExecutionState; external kernel32 name 'SetThreadExecutionState';
|
|
function GetLastError; external kernel32 name 'GetLastError';
|
|
procedure SetLastError; external kernel32 name 'SetLastError';
|
|
procedure RestoreLastError; external kernel32 name 'RestoreLastError';
|
|
function GetOverlappedResult; external kernel32 name 'GetOverlappedResult';
|
|
function CreateIoCompletionPort; external kernel32 name 'CreateIoCompletionPort';
|
|
function GetQueuedCompletionStatus; external kernel32 name 'GetQueuedCompletionStatus';
|
|
function PostQueuedCompletionStatus; external kernel32 name 'PostQueuedCompletionStatus';
|
|
function SetErrorMode; external kernel32 name 'SetErrorMode';
|
|
function ReadProcessMemory; external kernel32 name 'ReadProcessMemory';
|
|
function WriteProcessMemory; external kernel32 name 'WriteProcessMemory';
|
|
function GetThreadContext; external kernel32 name 'GetThreadContext';
|
|
function SetThreadContext; external kernel32 name 'SetThreadContext';
|
|
function SuspendThread; external kernel32 name 'SuspendThread';
|
|
function ResumeThread; external kernel32 name 'ResumeThread';
|
|
function QueueUserAPC; external kernel32 name 'QueueUserAPC';
|
|
function IsDebuggerPresent; external kernel32 name 'IsDebuggerPresent';
|
|
function CheckRemoteDebuggerPresent; external kernel32 name 'CheckRemoteDebuggerPresent';
|
|
procedure DebugBreak; external kernel32 name 'DebugBreak';
|
|
function WaitForDebugEvent; external kernel32 name 'WaitForDebugEvent';
|
|
function ContinueDebugEvent; external kernel32 name 'ContinueDebugEvent';
|
|
function DebugActiveProcess; external kernel32 name 'DebugActiveProcess';
|
|
function DebugActiveProcessStop; external kernel32 name 'DebugActiveProcessStop';
|
|
function DebugSetProcessKillOnExit; external kernel32 name 'DebugSetProcessKillOnExit';
|
|
function DebugBreakProcess; external kernel32 name 'DebugBreakProcess';
|
|
procedure InitializeCriticalSection; external kernel32 name 'InitializeCriticalSection';
|
|
procedure EnterCriticalSection; external kernel32 name 'EnterCriticalSection';
|
|
procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection';
|
|
function InitializeCriticalSectionAndSpinCount; external kernel32 name 'InitializeCriticalSectionAndSpinCount';
|
|
function SetCriticalSectionSpinCount; external kernel32 name 'SetCriticalSectionSpinCount';
|
|
function TryEnterCriticalSection; external kernel32 name 'TryEnterCriticalSection';
|
|
procedure DeleteCriticalSection; external kernel32 name 'DeleteCriticalSection';
|
|
function SetEvent; external kernel32 name 'SetEvent';
|
|
function ResetEvent; external kernel32 name 'ResetEvent';
|
|
function PulseEvent; external kernel32 name 'PulseEvent';
|
|
function ReleaseSemaphore; external kernel32 name 'ReleaseSemaphore';
|
|
function ReleaseMutex; external kernel32 name 'ReleaseMutex';
|
|
function WaitForSingleObject; external kernel32 name 'WaitForSingleObject';
|
|
function WaitForMultipleObjects; external kernel32 name 'WaitForMultipleObjects';
|
|
procedure Sleep; external kernel32 name 'Sleep';
|
|
function LoadResource; external kernel32 name 'LoadResource';
|
|
function SizeofResource; external kernel32 name 'SizeofResource';
|
|
function GlobalDeleteAtom; external kernel32 name 'GlobalDeleteAtom';
|
|
function InitAtomTable; external kernel32 name 'InitAtomTable';
|
|
function DeleteAtom; external kernel32 name 'DeleteAtom';
|
|
function SetHandleCount; external kernel32 name 'SetHandleCount';
|
|
function GetLogicalDrives; external kernel32 name 'GetLogicalDrives';
|
|
function LockFile; external kernel32 name 'LockFile';
|
|
function UnlockFile; external kernel32 name 'UnlockFile';
|
|
function LockFileEx; external kernel32 name 'LockFileEx';
|
|
function UnlockFileEx; external kernel32 name 'UnlockFileEx';
|
|
function GetFileInformationByHandle; external kernel32 name 'GetFileInformationByHandle';
|
|
function GetFileType; external kernel32 name 'GetFileType';
|
|
function GetFileSize; external kernel32 name 'GetFileSize';
|
|
function GetFileSizeEx; external kernel32 name 'GetFileSizeEx';
|
|
function GetStdHandle; external kernel32 name 'GetStdHandle';
|
|
function SetStdHandle; external kernel32 name 'SetStdHandle';
|
|
function WriteFile; external kernel32 name 'WriteFile';
|
|
function ReadFile; external kernel32 name 'ReadFile';
|
|
function FlushFileBuffers; external kernel32 name 'FlushFileBuffers';
|
|
function DeviceIoControl; external kernel32 name 'DeviceIoControl';
|
|
function RequestDeviceWakeup; external kernel32 name 'RequestDeviceWakeup';
|
|
function CancelDeviceWakeupRequest; external kernel32 name 'CancelDeviceWakeupRequest';
|
|
function GetDevicePowerState; external kernel32 name 'GetDevicePowerState';
|
|
function SetMessageWaitingIndicator; external kernel32 name 'SetMessageWaitingIndicator';
|
|
function SetEndOfFile; external kernel32 name 'SetEndOfFile';
|
|
function SetFilePointer; external kernel32 name 'SetFilePointer';
|
|
function SetFilePointerEx; external kernel32 name 'SetFilePointerEx';
|
|
function FindClose; external kernel32 name 'FindClose';
|
|
function GetFileTime; external kernel32 name 'GetFileTime';
|
|
function SetFileTime; external kernel32 name 'SetFileTime';
|
|
function SetFileValidData; external kernel32 name 'SetFileValidData';
|
|
function SetFileShortNameA; external kernel32 name 'SetFileShortNameA';
|
|
function SetFileShortNameW; external kernel32 name 'SetFileShortNameW';
|
|
function SetFileShortName; external kernel32 name 'SetFileShortName' + AWSuffix;
|
|
function CloseHandle; external kernel32 name 'CloseHandle';
|
|
function DuplicateHandle; external kernel32 name 'DuplicateHandle';
|
|
function GetHandleInformation; external kernel32 name 'GetHandleInformation';
|
|
function SetHandleInformation; external kernel32 name 'SetHandleInformation';
|
|
function LoadModule; external kernel32 name 'LoadModule';
|
|
function WinExec; external kernel32 name 'WinExec';
|
|
function ClearCommBreak; external kernel32 name 'ClearCommBreak';
|
|
function ClearCommError; external kernel32 name 'ClearCommError';
|
|
function SetupComm; external kernel32 name 'SetupComm';
|
|
function EscapeCommFunction; external kernel32 name 'EscapeCommFunction';
|
|
function GetCommConfig; external kernel32 name 'GetCommConfig';
|
|
function GetCommMask; external kernel32 name 'GetCommMask';
|
|
function GetCommProperties; external kernel32 name 'GetCommProperties';
|
|
function GetCommModemStatus; external kernel32 name 'GetCommModemStatus';
|
|
function GetCommState; external kernel32 name 'GetCommState';
|
|
function GetCommTimeouts; external kernel32 name 'GetCommTimeouts';
|
|
function PurgeComm; external kernel32 name 'PurgeComm';
|
|
function SetCommBreak; external kernel32 name 'SetCommBreak';
|
|
function SetCommConfig; external kernel32 name 'SetCommConfig';
|
|
function SetCommMask; external kernel32 name 'SetCommMask';
|
|
function SetCommState; external kernel32 name 'SetCommState';
|
|
function SetCommTimeouts; external kernel32 name 'SetCommTimeouts';
|
|
function TransmitCommChar; external kernel32 name 'TransmitCommChar';
|
|
function WaitCommEvent; external kernel32 name 'WaitCommEvent';
|
|
function SetTapePosition; external kernel32 name 'SetTapePosition';
|
|
function GetTapePosition; external kernel32 name 'GetTapePosition';
|
|
function PrepareTape; external kernel32 name 'PrepareTape';
|
|
function EraseTape; external kernel32 name 'EraseTape';
|
|
function CreateTapePartition; external kernel32 name 'CreateTapePartition';
|
|
function WriteTapemark; external kernel32 name 'WriteTapemark';
|
|
function GetTapeStatus; external kernel32 name 'GetTapeStatus';
|
|
function GetTapeParameters; external kernel32 name 'GetTapeParameters';
|
|
function SetTapeParameters; external kernel32 name 'SetTapeParameters';
|
|
function Beep; external kernel32 name 'Beep';
|
|
function MulDiv; external kernel32 name 'MulDiv';
|
|
procedure GetSystemTime; external kernel32 name 'GetSystemTime';
|
|
procedure GetSystemTimeAsFileTime; external kernel32 name 'GetSystemTimeAsFileTime';
|
|
function SetSystemTime; external kernel32 name 'SetSystemTime';
|
|
procedure GetLocalTime; external kernel32 name 'GetLocalTime';
|
|
function SetLocalTime; external kernel32 name 'SetLocalTime';
|
|
procedure GetSystemInfo; external kernel32 name 'GetSystemInfo';
|
|
function GetSystemRegistryQuota; external kernel32 name 'GetSystemRegistryQuota';
|
|
function GetSystemTimes; external kernel32 name 'GetSystemTimes';
|
|
procedure GetNativeSystemInfo; external kernel32 name 'GetNativeSystemInfo';
|
|
function IsProcessorFeaturePresent; external kernel32 name 'IsProcessorFeaturePresent';
|
|
function SystemTimeToTzSpecificLocalTime; external kernel32 name 'SystemTimeToTzSpecificLocalTime';
|
|
function TzSpecificLocalTimeToSystemTime; external kernel32 name 'TzSpecificLocalTimeToSystemTime';
|
|
function GetTimeZoneInformation; external kernel32 name 'GetTimeZoneInformation';
|
|
function SetTimeZoneInformation; external kernel32 name 'SetTimeZoneInformation';
|
|
function SystemTimeToFileTime; external kernel32 name 'SystemTimeToFileTime';
|
|
function FileTimeToLocalFileTime; external kernel32 name 'FileTimeToLocalFileTime';
|
|
function LocalFileTimeToFileTime; external kernel32 name 'LocalFileTimeToFileTime';
|
|
function FileTimeToSystemTime; external kernel32 name 'FileTimeToSystemTime';
|
|
function CompareFileTime; external kernel32 name 'CompareFileTime';
|
|
function FileTimeToDosDateTime; external kernel32 name 'FileTimeToDosDateTime';
|
|
function DosDateTimeToFileTime; external kernel32 name 'DosDateTimeToFileTime';
|
|
function GetTickCount; external kernel32 name 'GetTickCount';
|
|
function SetSystemTimeAdjustment; external kernel32 name 'SetSystemTimeAdjustment';
|
|
function GetSystemTimeAdjustment; external kernel32 name 'GetSystemTimeAdjustment';
|
|
function FormatMessageA; external kernel32 name 'FormatMessageA';
|
|
function FormatMessageW; external kernel32 name 'FormatMessageW';
|
|
function FormatMessage; external kernel32 name 'FormatMessage' + AWSuffix;
|
|
function CreatePipe; external kernel32 name 'CreatePipe';
|
|
function ConnectNamedPipe; external kernel32 name 'ConnectNamedPipe';
|
|
function DisconnectNamedPipe; external kernel32 name 'DisconnectNamedPipe';
|
|
function SetNamedPipeHandleState; external kernel32 name 'SetNamedPipeHandleState';
|
|
function GetNamedPipeInfo; external kernel32 name 'GetNamedPipeInfo';
|
|
function PeekNamedPipe; external kernel32 name 'PeekNamedPipe';
|
|
function TransactNamedPipe; external kernel32 name 'TransactNamedPipe';
|
|
function CreateMailslotA; external kernel32 name 'CreateMailslotA';
|
|
function CreateMailslotW; external kernel32 name 'CreateMailslotW';
|
|
function CreateMailslot; external kernel32 name 'CreateMailslot' + AWSuffix;
|
|
function GetMailslotInfo; external kernel32 name 'GetMailslotInfo';
|
|
function SetMailslotInfo; external kernel32 name 'SetMailslotInfo';
|
|
function MapViewOfFile; external kernel32 name 'MapViewOfFile';
|
|
function FlushViewOfFile; external kernel32 name 'FlushViewOfFile';
|
|
function UnmapViewOfFile; external kernel32 name 'UnmapViewOfFile';
|
|
function EncryptFileA; external advapi32 name 'EncryptFileA';
|
|
function EncryptFileW; external advapi32 name 'EncryptFileW';
|
|
function EncryptFile; external advapi32 name 'EncryptFile' + AWSuffix;
|
|
function DecryptFileA; external advapi32 name 'DecryptFileA';
|
|
function DecryptFileW; external advapi32 name 'DecryptFileW';
|
|
function DecryptFile; external advapi32 name 'DecryptFile' + AWSuffix;
|
|
function FileEncryptionStatusA; external advapi32 name 'FileEncryptionStatusA';
|
|
function FileEncryptionStatusW; external advapi32 name 'FileEncryptionStatusW';
|
|
function FileEncryptionStatus; external advapi32 name 'FileEncryptionStatus' + AWSuffix;
|
|
function OpenEncryptedFileRawA; external advapi32 name 'OpenEncryptedFileRawA';
|
|
function OpenEncryptedFileRawW; external advapi32 name 'OpenEncryptedFileRawW';
|
|
function OpenEncryptedFileRaw; external advapi32 name 'OpenEncryptedFileRaw' + AWSuffix;
|
|
function ReadEncryptedFileRaw; external advapi32 name 'ReadEncryptedFileRaw';
|
|
function WriteEncryptedFileRaw; external advapi32 name 'WriteEncryptedFileRaw';
|
|
procedure CloseEncryptedFileRaw; external advapi32 name 'CloseEncryptedFileRaw';
|
|
function lstrcmpA; external kernel32 name 'lstrcmpA';
|
|
function lstrcmpW; external kernel32 name 'lstrcmpW';
|
|
function lstrcmp; external kernel32 name 'lstrcmp' + AWSuffix;
|
|
function lstrcmpiA; external kernel32 name 'lstrcmpiA';
|
|
function lstrcmpiW; external kernel32 name 'lstrcmpiW';
|
|
function lstrcmpi; external kernel32 name 'lstrcmpi' + AWSuffix;
|
|
function lstrcpynA; external kernel32 name 'lstrcpynA';
|
|
function lstrcpynW; external kernel32 name 'lstrcpynW';
|
|
function lstrcpyn; external kernel32 name 'lstrcpyn' + AWSuffix;
|
|
function lstrcpyA; external kernel32 name 'lstrcpyA';
|
|
function lstrcpyW; external kernel32 name 'lstrcpyW';
|
|
function lstrcpy; external kernel32 name 'lstrcpy' + AWSuffix;
|
|
function lstrcatA; external kernel32 name 'lstrcatA';
|
|
function lstrcatW; external kernel32 name 'lstrcatW';
|
|
function lstrcat; external kernel32 name 'lstrcat' + AWSuffix;
|
|
function lstrlenA; external kernel32 name 'lstrlenA';
|
|
function lstrlenW; external kernel32 name 'lstrlenW';
|
|
function lstrlen; external kernel32 name 'lstrlen' + AWSuffix;
|
|
function OpenFile; external kernel32 name 'OpenFile';
|
|
function _lopen; external kernel32 name '_lopen';
|
|
function _lcreat; external kernel32 name '_lcreat';
|
|
function _lread; external kernel32 name '_lread';
|
|
function _lwrite; external kernel32 name '_lwrite';
|
|
function _hread; external kernel32 name '_hread';
|
|
function _hwrite; external kernel32 name '_hwrite';
|
|
function _lclose; external kernel32 name '_lclose';
|
|
function _llseek; external kernel32 name '_llseek';
|
|
function IsTextUnicode; external advapi32 name 'IsTextUnicode';
|
|
function FlsAlloc; external kernel32 name 'FlsAlloc';
|
|
function FlsGetValue; external kernel32 name 'FlsGetValue';
|
|
function FlsSetValue; external kernel32 name 'FlsSetValue';
|
|
function FlsFree; external kernel32 name 'FlsFree';
|
|
function TlsAlloc; external kernel32 name 'TlsAlloc';
|
|
function TlsGetValue; external kernel32 name 'TlsGetValue';
|
|
function TlsSetValue; external kernel32 name 'TlsSetValue';
|
|
function TlsFree; external kernel32 name 'TlsFree';
|
|
function SleepEx; external kernel32 name 'SleepEx';
|
|
function WaitForSingleObjectEx; external kernel32 name 'WaitForSingleObjectEx';
|
|
function WaitForMultipleObjectsEx; external kernel32 name 'WaitForMultipleObjectsEx';
|
|
function SignalObjectAndWait; external kernel32 name 'SignalObjectAndWait';
|
|
function ReadFileEx; external kernel32 name 'ReadFileEx';
|
|
function WriteFileEx; external kernel32 name 'WriteFileEx';
|
|
function BackupRead; external kernel32 name 'BackupRead';
|
|
function BackupSeek; external kernel32 name 'BackupSeek';
|
|
function BackupWrite; external kernel32 name 'BackupWrite';
|
|
function ReadFileScatter; external kernel32 name 'ReadFileScatter';
|
|
function WriteFileGather; external kernel32 name 'WriteFileGather';
|
|
function OpenMutexA; external kernel32 name 'OpenMutexA';
|
|
function OpenMutexW; external kernel32 name 'OpenMutexW';
|
|
function OpenMutex; external kernel32 name 'OpenMutex' + AWSuffix;
|
|
function CreateEventA; external kernel32 name 'CreateEventA';
|
|
function CreateEventW; external kernel32 name 'CreateEventW';
|
|
function CreateEvent; external kernel32 name 'CreateEvent' + AWSuffix;
|
|
function OpenEventA; external kernel32 name 'OpenEventA';
|
|
function OpenEventW; external kernel32 name 'OpenEventW';
|
|
function OpenEvent; external kernel32 name 'OpenEvent' + AWSuffix;
|
|
function CreateSemaphoreA; external kernel32 name 'CreateSemaphoreA';
|
|
function CreateSemaphoreW; external kernel32 name 'CreateSemaphoreW';
|
|
function CreateSemaphore; external kernel32 name 'CreateSemaphore' + AWSuffix;
|
|
function OpenSemaphoreA; external kernel32 name 'OpenSemaphoreA';
|
|
function OpenSemaphoreW; external kernel32 name 'OpenSemaphoreW';
|
|
function OpenSemaphore; external kernel32 name 'OpenSemaphore' + AWSuffix;
|
|
function CreateWaitableTimerA; external kernel32 name 'CreateWaitableTimerA';
|
|
function CreateWaitableTimerW; external kernel32 name 'CreateWaitableTimerW';
|
|
function CreateWaitableTimer; external kernel32 name 'CreateWaitableTimer' + AWSuffix;
|
|
function OpenWaitableTimerA; external kernel32 name 'OpenWaitableTimerA';
|
|
function OpenWaitableTimerW; external kernel32 name 'OpenWaitableTimerW';
|
|
function OpenWaitableTimer; external kernel32 name 'OpenWaitableTimer' + AWSuffix;
|
|
function SetWaitableTimer; external kernel32 name 'SetWaitableTimer';
|
|
function CancelWaitableTimer; external kernel32 name 'CancelWaitableTimer';
|
|
function CreateFileMappingA; external kernel32 name 'CreateFileMappingA';
|
|
function CreateFileMappingW; external kernel32 name 'CreateFileMappingW';
|
|
function CreateFileMapping; external kernel32 name 'CreateFileMapping' + AWSuffix;
|
|
function OpenFileMappingA; external kernel32 name 'OpenFileMappingA';
|
|
function OpenFileMappingW; external kernel32 name 'OpenFileMappingW';
|
|
function OpenFileMapping; external kernel32 name 'OpenFileMapping' + AWSuffix;
|
|
function GetLogicalDriveStringsA; external kernel32 name 'GetLogicalDriveStringsA';
|
|
function GetLogicalDriveStringsW; external kernel32 name 'GetLogicalDriveStringsW';
|
|
function GetLogicalDriveStrings; external kernel32 name 'GetLogicalDriveStrings' + AWSuffix;
|
|
function CreateMemoryResourceNotification; external kernel32 name 'CreateMemoryResourceNotification';
|
|
function QueryMemoryResourceNotification; external kernel32 name 'QueryMemoryResourceNotification';
|
|
function LoadLibraryA; external kernel32 name 'LoadLibraryA';
|
|
function LoadLibraryW; external kernel32 name 'LoadLibraryW';
|
|
function LoadLibrary; external kernel32 name 'LoadLibrary' + AWSuffix;
|
|
function LoadLibraryExA; external kernel32 name 'LoadLibraryExA';
|
|
function LoadLibraryExW; external kernel32 name 'LoadLibraryExW';
|
|
function LoadLibraryEx; external kernel32 name 'LoadLibraryEx' + AWSuffix;
|
|
function GetModuleFileNameA; external kernel32 name 'GetModuleFileNameA';
|
|
function GetModuleFileNameW; external kernel32 name 'GetModuleFileNameW';
|
|
function GetModuleFileName; external kernel32 name 'GetModuleFileName' + AWSuffix;
|
|
function GetModuleHandleA; external kernel32 name 'GetModuleHandleA';
|
|
function GetModuleHandleW; external kernel32 name 'GetModuleHandleW';
|
|
function GetModuleHandle; external kernel32 name 'GetModuleHandle' + AWSuffix;
|
|
function InitializeProcThreadAttributeList; external kernel32 name 'InitializeProcThreadAttributeList';
|
|
procedure DeleteProcThreadAttributeList; external kernel32 name 'DeleteProcThreadAttributeList';
|
|
function UpdateProcThreadAttribute; external kernel32 name 'UpdateProcThreadAttribute';
|
|
function CreateProcessA; external kernel32 name 'CreateProcessA';
|
|
function CreateProcessW; external kernel32 name 'CreateProcessW';
|
|
function CreateProcess; external kernel32 name 'CreateProcess' + AWSuffix;
|
|
function GetModuleHandleExA; external kernel32 name 'GetModuleHandleExA';
|
|
function GetModuleHandleExW; external kernel32 name 'GetModuleHandleExW';
|
|
function GetModuleHandleEx; external kernel32 name 'GetModuleHandleEx' + AWSuffix;
|
|
function NeedCurrentDirectoryForExePathA; external kernel32 name 'NeedCurrentDirectoryForExePathA';
|
|
function NeedCurrentDirectoryForExePathW; external kernel32 name 'NeedCurrentDirectoryForExePathW';
|
|
function NeedCurrentDirectoryForExePath; external kernel32 name 'NeedCurrentDirectoryForExePath' + AWSuffix;
|
|
function SetProcessShutdownParameters; external kernel32 name 'SetProcessShutdownParameters';
|
|
function GetProcessShutdownParameters; external kernel32 name 'GetProcessShutdownParameters';
|
|
function GetProcessVersion; external kernel32 name 'GetProcessVersion';
|
|
procedure FatalAppExitA; external kernel32 name 'FatalAppExitA';
|
|
procedure FatalAppExitW; external kernel32 name 'FatalAppExitW';
|
|
procedure FatalAppExit; external kernel32 name 'FatalAppExit' + AWSuffix;
|
|
procedure GetStartupInfoA; external kernel32 name 'GetStartupInfoA';
|
|
procedure GetStartupInfoW; external kernel32 name 'GetStartupInfoW';
|
|
procedure GetStartupInfo; external kernel32 name 'GetStartupInfo' + AWSuffix;
|
|
function GetCommandLineA; external kernel32 name 'GetCommandLineA';
|
|
function GetCommandLineW; external kernel32 name 'GetCommandLineW';
|
|
function GetCommandLine; external kernel32 name 'GetCommandLine' + AWSuffix;
|
|
function GetEnvironmentVariableA; external kernel32 name 'GetEnvironmentVariableA';
|
|
function GetEnvironmentVariableW; external kernel32 name 'GetEnvironmentVariableW';
|
|
function GetEnvironmentVariable; external kernel32 name 'GetEnvironmentVariable' + AWSuffix;
|
|
function SetEnvironmentVariableA; external kernel32 name 'SetEnvironmentVariableA';
|
|
function SetEnvironmentVariableW; external kernel32 name 'SetEnvironmentVariableW';
|
|
function SetEnvironmentVariable; external kernel32 name 'SetEnvironmentVariable' + AWSuffix;
|
|
function ExpandEnvironmentStringsA; external kernel32 name 'ExpandEnvironmentStringsA';
|
|
function ExpandEnvironmentStringsW; external kernel32 name 'ExpandEnvironmentStringsW';
|
|
function ExpandEnvironmentStrings; external kernel32 name 'ExpandEnvironmentStrings' + AWSuffix;
|
|
function GetFirmwareEnvironmentVariableA; external kernel32 name 'GetFirmwareEnvironmentVariableA';
|
|
function GetFirmwareEnvironmentVariableW; external kernel32 name 'GetFirmwareEnvironmentVariableW';
|
|
function GetFirmwareEnvironmentVariable; external kernel32 name 'GetFirmwareEnvironmentVariable' + AWSuffix;
|
|
function SetFirmwareEnvironmentVariableA; external kernel32 name 'SetFirmwareEnvironmentVariableA';
|
|
function SetFirmwareEnvironmentVariableW; external kernel32 name 'SetFirmwareEnvironmentVariableW';
|
|
function SetFirmwareEnvironmentVariable; external kernel32 name 'SetFirmwareEnvironmentVariable' + AWSuffix;
|
|
procedure OutputDebugStringA; external kernel32 name 'OutputDebugStringA';
|
|
procedure OutputDebugStringW; external kernel32 name 'OutputDebugStringW';
|
|
procedure OutputDebugString; external kernel32 name 'OutputDebugString' + AWSuffix;
|
|
function FindResourceA; external kernel32 name 'FindResourceA';
|
|
function FindResourceW; external kernel32 name 'FindResourceW';
|
|
function FindResource; external kernel32 name 'FindResource' + AWSuffix;
|
|
function FindResourceExA; external kernel32 name 'FindResourceExA';
|
|
function FindResourceExW; external kernel32 name 'FindResourceExW';
|
|
function FindResourceEx; external kernel32 name 'FindResourceEx' + AWSuffix;
|
|
function EnumResourceTypesA; external kernel32 name 'EnumResourceTypesA';
|
|
function EnumResourceTypesW; external kernel32 name 'EnumResourceTypesW';
|
|
function EnumResourceTypes; external kernel32 name 'EnumResourceTypes' + AWSuffix;
|
|
function EnumResourceNamesA; external kernel32 name 'EnumResourceNamesA';
|
|
function EnumResourceNamesW; external kernel32 name 'EnumResourceNamesW';
|
|
function EnumResourceNames; external kernel32 name 'EnumResourceNames' + AWSuffix;
|
|
function EnumResourceLanguagesA; external kernel32 name 'EnumResourceLanguagesA';
|
|
function EnumResourceLanguagesW; external kernel32 name 'EnumResourceLanguagesW';
|
|
function EnumResourceLanguages; external kernel32 name 'EnumResourceLanguages' + AWSuffix;
|
|
function BeginUpdateResourceA; external kernel32 name 'BeginUpdateResourceA';
|
|
function BeginUpdateResourceW; external kernel32 name 'BeginUpdateResourceW';
|
|
function BeginUpdateResource; external kernel32 name 'BeginUpdateResource' + AWSuffix;
|
|
function UpdateResourceA; external kernel32 name 'UpdateResourceA';
|
|
function UpdateResourceW; external kernel32 name 'UpdateResourceW';
|
|
function UpdateResource; external kernel32 name 'UpdateResource' + AWSuffix;
|
|
function EndUpdateResourceA; external kernel32 name 'EndUpdateResourceA';
|
|
function EndUpdateResourceW; external kernel32 name 'EndUpdateResourceW';
|
|
function EndUpdateResource; external kernel32 name 'EndUpdateResource' + AWSuffix;
|
|
function GlobalAddAtomA; external kernel32 name 'GlobalAddAtomA';
|
|
function GlobalAddAtomW; external kernel32 name 'GlobalAddAtomW';
|
|
function GlobalAddAtom; external kernel32 name 'GlobalAddAtom' + AWSuffix;
|
|
function GlobalFindAtomA; external kernel32 name 'GlobalFindAtomA';
|
|
function GlobalFindAtomW; external kernel32 name 'GlobalFindAtomW';
|
|
function GlobalFindAtom; external kernel32 name 'GlobalFindAtom' + AWSuffix;
|
|
function GlobalGetAtomNameA; external kernel32 name 'GlobalGetAtomNameA';
|
|
function GlobalGetAtomNameW; external kernel32 name 'GlobalGetAtomNameW';
|
|
function GlobalGetAtomName; external kernel32 name 'GlobalGetAtomName' + AWSuffix;
|
|
function AddAtomA; external kernel32 name 'AddAtomA';
|
|
function AddAtomW; external kernel32 name 'AddAtomW';
|
|
function AddAtom; external kernel32 name 'AddAtom' + AWSuffix;
|
|
function FindAtomA; external kernel32 name 'FindAtomA';
|
|
function FindAtomW; external kernel32 name 'FindAtomW';
|
|
function FindAtom; external kernel32 name 'FindAtom' + AWSuffix;
|
|
function GetAtomNameA; external kernel32 name 'GetAtomNameA';
|
|
function GetAtomNameW; external kernel32 name 'GetAtomNameW';
|
|
function GetAtomName; external kernel32 name 'GetAtomName' + AWSuffix;
|
|
function GetProfileIntA; external kernel32 name 'GetProfileIntA';
|
|
function GetProfileIntW; external kernel32 name 'GetProfileIntW';
|
|
function GetProfileInt; external kernel32 name 'GetProfileInt' + AWSuffix;
|
|
function GetProfileStringA; external kernel32 name 'GetProfileStringA';
|
|
function GetProfileStringW; external kernel32 name 'GetProfileStringW';
|
|
function GetProfileString; external kernel32 name 'GetProfileString' + AWSuffix;
|
|
function WriteProfileStringA; external kernel32 name 'WriteProfileStringA';
|
|
function WriteProfileStringW; external kernel32 name 'WriteProfileStringW';
|
|
function WriteProfileString; external kernel32 name 'WriteProfileString' + AWSuffix;
|
|
function GetProfileSectionA; external kernel32 name 'GetProfileSectionA';
|
|
function GetProfileSectionW; external kernel32 name 'GetProfileSectionW';
|
|
function GetProfileSection; external kernel32 name 'GetProfileSection' + AWSuffix;
|
|
function WriteProfileSectionA; external kernel32 name 'WriteProfileSectionA';
|
|
function WriteProfileSectionW; external kernel32 name 'WriteProfileSectionW';
|
|
function WriteProfileSection; external kernel32 name 'WriteProfileSection' + AWSuffix;
|
|
function GetPrivateProfileIntA; external kernel32 name 'GetPrivateProfileIntA';
|
|
function GetPrivateProfileIntW; external kernel32 name 'GetPrivateProfileIntW';
|
|
function GetPrivateProfileInt; external kernel32 name 'GetPrivateProfileInt' + AWSuffix;
|
|
function GetPrivateProfileStringA; external kernel32 name 'GetPrivateProfileStringA';
|
|
function GetPrivateProfileStringW; external kernel32 name 'GetPrivateProfileStringW';
|
|
function GetPrivateProfileString; external kernel32 name 'GetPrivateProfileString' + AWSuffix;
|
|
function WritePrivateProfileStringA; external kernel32 name 'WritePrivateProfileStringA';
|
|
function WritePrivateProfileStringW; external kernel32 name 'WritePrivateProfileStringW';
|
|
function WritePrivateProfileString; external kernel32 name 'WritePrivateProfileString' + AWSuffix;
|
|
function GetPrivateProfileSectionA; external kernel32 name 'GetPrivateProfileSectionA';
|
|
function GetPrivateProfileSectionW; external kernel32 name 'GetPrivateProfileSectionW';
|
|
function GetPrivateProfileSection; external kernel32 name 'GetPrivateProfileSection' + AWSuffix;
|
|
function WritePrivateProfileSectionA; external kernel32 name 'WritePrivateProfileSectionA';
|
|
function WritePrivateProfileSectionW; external kernel32 name 'WritePrivateProfileSectionW';
|
|
function WritePrivateProfileSection; external kernel32 name 'WritePrivateProfileSection' + AWSuffix;
|
|
function GetPrivateProfileSectionNamesA; external kernel32 name 'GetPrivateProfileSectionNamesA';
|
|
function GetPrivateProfileSectionNamesW; external kernel32 name 'GetPrivateProfileSectionNamesW';
|
|
function GetPrivateProfileSectionNames; external kernel32 name 'GetPrivateProfileSectionNames' + AWSuffix;
|
|
function GetPrivateProfileStructA; external kernel32 name 'GetPrivateProfileStructA';
|
|
function GetPrivateProfileStructW; external kernel32 name 'GetPrivateProfileStructW';
|
|
function GetPrivateProfileStruct; external kernel32 name 'GetPrivateProfileStruct' + AWSuffix;
|
|
function WritePrivateProfileStructA; external kernel32 name 'WritePrivateProfileStructA';
|
|
function WritePrivateProfileStructW; external kernel32 name 'WritePrivateProfileStructW';
|
|
function WritePrivateProfileStruct; external kernel32 name 'WritePrivateProfileStruct' + AWSuffix;
|
|
function GetDriveTypeA; external kernel32 name 'GetDriveTypeA';
|
|
function GetDriveTypeW; external kernel32 name 'GetDriveTypeW';
|
|
function GetDriveType; external kernel32 name 'GetDriveType' + AWSuffix;
|
|
function GetSystemDirectoryA; external kernel32 name 'GetSystemDirectoryA';
|
|
function GetSystemDirectoryW; external kernel32 name 'GetSystemDirectoryW';
|
|
function GetSystemDirectory; external kernel32 name 'GetSystemDirectory' + AWSuffix;
|
|
function GetTempPathA; external kernel32 name 'GetTempPathA';
|
|
function GetTempPathW; external kernel32 name 'GetTempPathW';
|
|
function GetTempPath; external kernel32 name 'GetTempPath' + AWSuffix;
|
|
function GetTempFileNameA; external kernel32 name 'GetTempFileNameA';
|
|
function GetTempFileNameW; external kernel32 name 'GetTempFileNameW';
|
|
function GetTempFileName; external kernel32 name 'GetTempFileName' + AWSuffix;
|
|
function GetWindowsDirectoryA; external kernel32 name 'GetWindowsDirectoryA';
|
|
function GetWindowsDirectoryW; external kernel32 name 'GetWindowsDirectoryW';
|
|
function GetWindowsDirectory; external kernel32 name 'GetWindowsDirectory' + AWSuffix;
|
|
function GetSystemWindowsDirectoryA; external kernel32 name 'GetSystemWindowsDirectoryA';
|
|
function GetSystemWindowsDirectoryW; external kernel32 name 'GetSystemWindowsDirectoryW';
|
|
function GetSystemWindowsDirectory; external kernel32 name 'GetSystemWindowsDirectory' + AWSuffix;
|
|
function GetSystemWow64DirectoryA; external kernel32 name 'GetSystemWow64DirectoryA';
|
|
function GetSystemWow64DirectoryW; external kernel32 name 'GetSystemWow64DirectoryW';
|
|
function GetSystemWow64Directory; external kernel32 name 'GetSystemWow64Directory' + AWSuffix;
|
|
function Wow64EnableWow64FsRedirection; external kernel32 name 'Wow64EnableWow64FsRedirection';
|
|
function SetCurrentDirectoryA; external kernel32 name 'SetCurrentDirectoryA';
|
|
function SetCurrentDirectoryW; external kernel32 name 'SetCurrentDirectoryW';
|
|
function SetCurrentDirectory; external kernel32 name 'SetCurrentDirectory' + AWSuffix;
|
|
function GetCurrentDirectoryA; external kernel32 name 'GetCurrentDirectoryA';
|
|
function GetCurrentDirectoryW; external kernel32 name 'GetCurrentDirectoryW';
|
|
function GetCurrentDirectory; external kernel32 name 'GetCurrentDirectory' + AWSuffix;
|
|
function SetDllDirectoryA; external kernel32 name 'SetDllDirectoryA';
|
|
function SetDllDirectoryW; external kernel32 name 'SetDllDirectoryW';
|
|
function SetDllDirectory; external kernel32 name 'SetDllDirectory' + AWSuffix;
|
|
function GetDllDirectoryA; external kernel32 name 'GetDllDirectoryA';
|
|
function GetDllDirectoryW; external kernel32 name 'GetDllDirectoryW';
|
|
function GetDllDirectory; external kernel32 name 'GetDllDirectory' + AWSuffix;
|
|
function GetDiskFreeSpaceA; external kernel32 name 'GetDiskFreeSpaceA';
|
|
function GetDiskFreeSpaceW; external kernel32 name 'GetDiskFreeSpaceW';
|
|
function GetDiskFreeSpace; external kernel32 name 'GetDiskFreeSpace' + AWSuffix;
|
|
function GetDiskFreeSpaceExA; external kernel32 name 'GetDiskFreeSpaceExA';
|
|
function GetDiskFreeSpaceExW; external kernel32 name 'GetDiskFreeSpaceExW';
|
|
function GetDiskFreeSpaceEx; external kernel32 name 'GetDiskFreeSpaceEx' + AWSuffix;
|
|
function CreateDirectoryA; external kernel32 name 'CreateDirectoryA';
|
|
function CreateDirectoryW; external kernel32 name 'CreateDirectoryW';
|
|
function CreateDirectory; external kernel32 name 'CreateDirectory' + AWSuffix;
|
|
function CreateDirectoryExA; external kernel32 name 'CreateDirectoryExA';
|
|
function CreateDirectoryExW; external kernel32 name 'CreateDirectoryExW';
|
|
function CreateDirectoryEx; external kernel32 name 'CreateDirectoryEx' + AWSuffix;
|
|
function RemoveDirectoryA; external kernel32 name 'RemoveDirectoryA';
|
|
function RemoveDirectoryW; external kernel32 name 'RemoveDirectoryW';
|
|
function RemoveDirectory; external kernel32 name 'RemoveDirectory' + AWSuffix;
|
|
function GetFullPathNameA; external kernel32 name 'GetFullPathNameA';
|
|
function GetFullPathNameW; external kernel32 name 'GetFullPathNameW';
|
|
function GetFullPathName; external kernel32 name 'GetFullPathName' + AWSuffix;
|
|
function DefineDosDeviceA; external kernel32 name 'DefineDosDeviceA';
|
|
function DefineDosDeviceW; external kernel32 name 'DefineDosDeviceW';
|
|
function DefineDosDevice; external kernel32 name 'DefineDosDevice' + AWSuffix;
|
|
function QueryDosDeviceA; external kernel32 name 'QueryDosDeviceA';
|
|
function QueryDosDeviceW; external kernel32 name 'QueryDosDeviceW';
|
|
function QueryDosDevice; external kernel32 name 'QueryDosDevice' + AWSuffix;
|
|
function CreateFileA; external kernel32 name 'CreateFileA';
|
|
function CreateFileW; external kernel32 name 'CreateFileW';
|
|
function CreateFile; external kernel32 name 'CreateFile' + AWSuffix;
|
|
function ReOpenFile; external kernel32 name 'ReOpenFile';
|
|
function SetFileAttributesA; external kernel32 name 'SetFileAttributesA';
|
|
function SetFileAttributesW; external kernel32 name 'SetFileAttributesW';
|
|
function SetFileAttributes; external kernel32 name 'SetFileAttributes' + AWSuffix;
|
|
function GetFileAttributesA; external kernel32 name 'GetFileAttributesA';
|
|
function GetFileAttributesW; external kernel32 name 'GetFileAttributesW';
|
|
function GetFileAttributes; external kernel32 name 'GetFileAttributes' + AWSuffix;
|
|
function GetFileAttributesExA; external kernel32 name 'GetFileAttributesExA';
|
|
function GetFileAttributesExW; external kernel32 name 'GetFileAttributesExW';
|
|
function GetFileAttributesEx; external kernel32 name 'GetFileAttributesEx' + AWSuffix;
|
|
function GetCompressedFileSizeA; external kernel32 name 'GetCompressedFileSizeA';
|
|
function GetCompressedFileSizeW; external kernel32 name 'GetCompressedFileSizeW';
|
|
function GetCompressedFileSize; external kernel32 name 'GetCompressedFileSize' + AWSuffix;
|
|
function DeleteFileA; external kernel32 name 'DeleteFileA';
|
|
function DeleteFileW; external kernel32 name 'DeleteFileW';
|
|
function DeleteFile; external kernel32 name 'DeleteFile' + AWSuffix;
|
|
function FindFirstFileExA; external kernel32 name 'FindFirstFileExA';
|
|
function FindFirstFileExW; external kernel32 name 'FindFirstFileExW';
|
|
function FindFirstFileEx; external kernel32 name 'FindFirstFileEx' + AWSuffix;
|
|
function FindFirstFileA; external kernel32 name 'FindFirstFileA';
|
|
function FindFirstFileW; external kernel32 name 'FindFirstFileW';
|
|
function FindFirstFile; external kernel32 name 'FindFirstFile' + AWSuffix;
|
|
function FindNextFileA; external kernel32 name 'FindNextFileA';
|
|
function FindNextFileW; external kernel32 name 'FindNextFileW';
|
|
function FindNextFile; external kernel32 name 'FindNextFile' + AWSuffix;
|
|
function SearchPathA; external kernel32 name 'SearchPathA';
|
|
function SearchPathW; external kernel32 name 'SearchPathW';
|
|
function SearchPath; external kernel32 name 'SearchPath' + AWSuffix;
|
|
function CopyFileA; external kernel32 name 'CopyFileA';
|
|
function CopyFileW; external kernel32 name 'CopyFileW';
|
|
function CopyFile; external kernel32 name 'CopyFile' + AWSuffix;
|
|
function CopyFileExA; external kernel32 name 'CopyFileExA';
|
|
function CopyFileExW; external kernel32 name 'CopyFileExW';
|
|
function CopyFileEx; external kernel32 name 'CopyFileEx' + AWSuffix;
|
|
function MoveFileA; external kernel32 name 'MoveFileA';
|
|
function MoveFileW; external kernel32 name 'MoveFileW';
|
|
function MoveFile; external kernel32 name 'MoveFile' + AWSuffix;
|
|
function MoveFileExA; external kernel32 name 'MoveFileExA';
|
|
function MoveFileExW; external kernel32 name 'MoveFileExW';
|
|
function MoveFileEx; external kernel32 name 'MoveFileEx' + AWSuffix;
|
|
function MoveFileWithProgressA; external kernel32 name 'MoveFileWithProgressA';
|
|
function MoveFileWithProgressW; external kernel32 name 'MoveFileWithProgressW';
|
|
function MoveFileWithProgress; external kernel32 name 'MoveFileWithProgress' + AWSuffix;
|
|
function ReplaceFileA; external kernel32 name 'ReplaceFileA';
|
|
function ReplaceFileW; external kernel32 name 'ReplaceFileW';
|
|
function ReplaceFile; external kernel32 name 'ReplaceFile' + AWSuffix;
|
|
function CreateHardLinkA; external kernel32 name 'CreateHardLinkA';
|
|
function CreateHardLinkW; external kernel32 name 'CreateHardLinkW';
|
|
function CreateHardLink; external kernel32 name 'CreateHardLink' + AWSuffix;
|
|
function FindFirstStreamW; external kernel32 name 'FindFirstStreamW';
|
|
function FindNextStreamW; external kernel32 name 'FindNextStreamW';
|
|
function CreateNamedPipeA; external kernel32 name 'CreateNamedPipeA';
|
|
function CreateNamedPipeW; external kernel32 name 'CreateNamedPipeW';
|
|
function CreateNamedPipe; external kernel32 name 'CreateNamedPipe' + AWSuffix;
|
|
function GetNamedPipeHandleStateA; external kernel32 name 'GetNamedPipeHandleStateA';
|
|
function GetNamedPipeHandleStateW; external kernel32 name 'GetNamedPipeHandleStateW';
|
|
function GetNamedPipeHandleState; external kernel32 name 'GetNamedPipeHandleState' + AWSuffix;
|
|
function CallNamedPipeA; external kernel32 name 'CallNamedPipeA';
|
|
function CallNamedPipeW; external kernel32 name 'CallNamedPipeW';
|
|
function CallNamedPipe; external kernel32 name 'CallNamedPipe' + AWSuffix;
|
|
function WaitNamedPipeA; external kernel32 name 'WaitNamedPipeA';
|
|
function WaitNamedPipeW; external kernel32 name 'WaitNamedPipeW';
|
|
function WaitNamedPipe; external kernel32 name 'WaitNamedPipe' + AWSuffix;
|
|
function SetVolumeLabelA; external kernel32 name 'SetVolumeLabelA';
|
|
function SetVolumeLabelW; external kernel32 name 'SetVolumeLabelW';
|
|
function SetVolumeLabel; external kernel32 name 'SetVolumeLabel' + AWSuffix;
|
|
procedure SetFileApisToOEM; external kernel32 name 'SetFileApisToOEM';
|
|
procedure SetFileApisToANSI; external kernel32 name 'SetFileApisToANSI';
|
|
function AreFileApisANSI; external kernel32 name 'AreFileApisANSI';
|
|
function GetVolumeInformationA; external kernel32 name 'GetVolumeInformationA';
|
|
function GetVolumeInformationW; external kernel32 name 'GetVolumeInformationW';
|
|
function GetVolumeInformation; external kernel32 name 'GetVolumeInformation' + AWSuffix;
|
|
function CancelIo; external kernel32 name 'CancelIo';
|
|
function ClearEventLogA; external advapi32 name 'ClearEventLogA';
|
|
function ClearEventLogW; external advapi32 name 'ClearEventLogW';
|
|
function ClearEventLog; external advapi32 name 'ClearEventLog' + AWSuffix;
|
|
function BackupEventLogA; external advapi32 name 'BackupEventLogA';
|
|
function BackupEventLogW; external advapi32 name 'BackupEventLogW';
|
|
function BackupEventLog; external advapi32 name 'BackupEventLog' + AWSuffix;
|
|
function CloseEventLog; external advapi32 name 'CloseEventLog';
|
|
function DeregisterEventSource; external advapi32 name 'DeregisterEventSource';
|
|
function NotifyChangeEventLog; external advapi32 name 'NotifyChangeEventLog';
|
|
function GetNumberOfEventLogRecords; external advapi32 name 'GetNumberOfEventLogRecords';
|
|
function GetOldestEventLogRecord; external advapi32 name 'GetOldestEventLogRecord';
|
|
function OpenEventLogA; external advapi32 name 'OpenEventLogA';
|
|
function OpenEventLogW; external advapi32 name 'OpenEventLogW';
|
|
function OpenEventLog; external advapi32 name 'OpenEventLog' + AWSuffix;
|
|
function RegisterEventSourceA; external advapi32 name 'RegisterEventSourceA';
|
|
function RegisterEventSourceW; external advapi32 name 'RegisterEventSourceW';
|
|
function RegisterEventSource; external advapi32 name 'RegisterEventSource' + AWSuffix;
|
|
function OpenBackupEventLogA; external advapi32 name 'OpenBackupEventLogA';
|
|
function OpenBackupEventLogW; external advapi32 name 'OpenBackupEventLogW';
|
|
function OpenBackupEventLog; external advapi32 name 'OpenBackupEventLog' + AWSuffix;
|
|
function ReadEventLogA; external advapi32 name 'ReadEventLogA';
|
|
function ReadEventLogW; external advapi32 name 'ReadEventLogW';
|
|
function ReadEventLog; external advapi32 name 'ReadEventLog' + AWSuffix;
|
|
function ReportEventA; external advapi32 name 'ReportEventA';
|
|
function ReportEventW; external advapi32 name 'ReportEventW';
|
|
function ReportEvent; external advapi32 name 'ReportEvent' + AWSuffix;
|
|
function GetEventLogInformation; external advapi32 name 'GetEventLogInformation';
|
|
function DuplicateToken; external advapi32 name 'DuplicateToken';
|
|
function GetKernelObjectSecurity; external advapi32 name 'GetKernelObjectSecurity';
|
|
function ImpersonateNamedPipeClient; external advapi32 name 'ImpersonateNamedPipeClient';
|
|
function ImpersonateSelf; external advapi32 name 'ImpersonateSelf';
|
|
function RevertToSelf; external advapi32 name 'RevertToSelf';
|
|
function SetThreadToken; external advapi32 name 'SetThreadToken';
|
|
function AccessCheck; external advapi32 name 'AccessCheck';
|
|
function AccessCheckByType; external advapi32 name 'AccessCheckByType';
|
|
function AccessCheckByTypeResultList; external advapi32 name 'AccessCheckByTypeResultList';
|
|
function OpenProcessToken; external advapi32 name 'OpenProcessToken';
|
|
function OpenThreadToken; external advapi32 name 'OpenThreadToken';
|
|
function GetTokenInformation; external advapi32 name 'GetTokenInformation';
|
|
function SetTokenInformation; external advapi32 name 'SetTokenInformation';
|
|
function AdjustTokenPrivileges; external advapi32 name 'AdjustTokenPrivileges';
|
|
function AdjustTokenGroups; external advapi32 name 'AdjustTokenGroups';
|
|
function PrivilegeCheck; external advapi32 name 'PrivilegeCheck';
|
|
function AccessCheckAndAuditAlarmA; external advapi32 name 'AccessCheckAndAuditAlarmA';
|
|
function AccessCheckAndAuditAlarmW; external advapi32 name 'AccessCheckAndAuditAlarmW';
|
|
function AccessCheckAndAuditAlarm; external advapi32 name 'AccessCheckAndAuditAlarm' + AWSuffix;
|
|
function AccessCheckByTypeAndAuditAlarmA; external advapi32 name 'AccessCheckByTypeAndAuditAlarmA';
|
|
function AccessCheckByTypeAndAuditAlarmW; external advapi32 name 'AccessCheckByTypeAndAuditAlarmW';
|
|
function AccessCheckByTypeAndAuditAlarm; external advapi32 name 'AccessCheckByTypeAndAuditAlarm' + AWSuffix;
|
|
function AccessCheckByTypeResultListAndAuditAlarmA; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmA';
|
|
function AccessCheckByTypeResultListAndAuditAlarmW; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmW';
|
|
function AccessCheckByTypeResultListAndAuditAlarm; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarm' + AWSuffix;
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandleA; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandleA';
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandleW; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandleW';
|
|
function AccessCheckByTypeResultListAndAuditAlarmByHandle; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandle' + AWSuffix;
|
|
function ObjectOpenAuditAlarmA; external advapi32 name 'ObjectOpenAuditAlarmA';
|
|
function ObjectOpenAuditAlarmW; external advapi32 name 'ObjectOpenAuditAlarmW';
|
|
function ObjectOpenAuditAlarm; external advapi32 name 'ObjectOpenAuditAlarm' + AWSuffix;
|
|
function ObjectPrivilegeAuditAlarmA; external advapi32 name 'ObjectPrivilegeAuditAlarmA';
|
|
function ObjectPrivilegeAuditAlarmW; external advapi32 name 'ObjectPrivilegeAuditAlarmW';
|
|
function ObjectPrivilegeAuditAlarm; external advapi32 name 'ObjectPrivilegeAuditAlarm' + AWSuffix;
|
|
function ObjectCloseAuditAlarmA; external advapi32 name 'ObjectCloseAuditAlarmA';
|
|
function ObjectCloseAuditAlarmW; external advapi32 name 'ObjectCloseAuditAlarmW';
|
|
function ObjectCloseAuditAlarm; external advapi32 name 'ObjectCloseAuditAlarm' + AWSuffix;
|
|
function ObjectDeleteAuditAlarmA; external advapi32 name 'ObjectDeleteAuditAlarmA';
|
|
function ObjectDeleteAuditAlarmW; external advapi32 name 'ObjectDeleteAuditAlarmW';
|
|
function ObjectDeleteAuditAlarm; external advapi32 name 'ObjectDeleteAuditAlarm' + AWSuffix;
|
|
function PrivilegedServiceAuditAlarmA; external advapi32 name 'PrivilegedServiceAuditAlarmA';
|
|
function PrivilegedServiceAuditAlarmW; external advapi32 name 'PrivilegedServiceAuditAlarmW';
|
|
function PrivilegedServiceAuditAlarm; external advapi32 name 'PrivilegedServiceAuditAlarm' + AWSuffix;
|
|
function IsWellKnownSid; external advapi32 name 'IsWellKnownSid';
|
|
function CreateWellKnownSid; external advapi32 name 'CreateWellKnownSid';
|
|
function EqualDomainSid; external advapi32 name 'EqualDomainSid';
|
|
function GetWindowsAccountDomainSid; external advapi32 name 'GetWindowsAccountDomainSid';
|
|
function IsValidSid; external advapi32 name 'IsValidSid';
|
|
function EqualSid; external advapi32 name 'EqualSid';
|
|
function EqualPrefixSid; external advapi32 name 'EqualPrefixSid';
|
|
function GetSidLengthRequired; external advapi32 name 'GetSidLengthRequired';
|
|
function AllocateAndInitializeSid; external advapi32 name 'AllocateAndInitializeSid';
|
|
function FreeSid; external advapi32 name 'FreeSid';
|
|
function InitializeSid; external advapi32 name 'InitializeSid';
|
|
function GetSidIdentifierAuthority; external advapi32 name 'GetSidIdentifierAuthority';
|
|
function GetSidSubAuthority; external advapi32 name 'GetSidSubAuthority';
|
|
function GetSidSubAuthorityCount; external advapi32 name 'GetSidSubAuthorityCount';
|
|
function GetLengthSid; external advapi32 name 'GetLengthSid';
|
|
function CopySid; external advapi32 name 'CopySid';
|
|
function AreAllAccessesGranted; external advapi32 name 'AreAllAccessesGranted';
|
|
function AreAnyAccessesGranted; external advapi32 name 'AreAnyAccessesGranted';
|
|
procedure MapGenericMask; external advapi32 name 'MapGenericMask';
|
|
function IsValidAcl; external advapi32 name 'IsValidAcl';
|
|
function InitializeAcl; external advapi32 name 'InitializeAcl';
|
|
function GetAclInformation; external advapi32 name 'GetAclInformation';
|
|
function SetAclInformation; external advapi32 name 'SetAclInformation';
|
|
function AddAce; external advapi32 name 'AddAce';
|
|
function DeleteAce; external advapi32 name 'DeleteAce';
|
|
function GetAce; external advapi32 name 'GetAce';
|
|
function AddAccessAllowedAce; external advapi32 name 'AddAccessAllowedAce';
|
|
function AddAccessAllowedAceEx; external advapi32 name 'AddAccessAllowedAceEx';
|
|
function AddAccessDeniedAce; external advapi32 name 'AddAccessDeniedAce';
|
|
function AddAccessDeniedAceEx; external advapi32 name 'AddAccessDeniedAceEx';
|
|
function AddAuditAccessAce; external advapi32 name 'AddAuditAccessAce';
|
|
function AddAuditAccessAceEx; external advapi32 name 'AddAuditAccessAceEx';
|
|
function AddAccessAllowedObjectAce; external advapi32 name 'AddAccessAllowedObjectAce';
|
|
function AddAccessDeniedObjectAce; external advapi32 name 'AddAccessDeniedObjectAce';
|
|
function AddAuditAccessObjectAce; external advapi32 name 'AddAuditAccessObjectAce';
|
|
function FindFirstFreeAce; external advapi32 name 'FindFirstFreeAce';
|
|
function InitializeSecurityDescriptor; external advapi32 name 'InitializeSecurityDescriptor';
|
|
function IsValidSecurityDescriptor; external advapi32 name 'IsValidSecurityDescriptor';
|
|
function GetSecurityDescriptorLength; external advapi32 name 'GetSecurityDescriptorLength';
|
|
function GetSecurityDescriptorControl; external advapi32 name 'GetSecurityDescriptorControl';
|
|
function SetSecurityDescriptorControl; external advapi32 name 'SetSecurityDescriptorControl';
|
|
function SetSecurityDescriptorDacl; external advapi32 name 'SetSecurityDescriptorDacl';
|
|
function GetSecurityDescriptorDacl; external advapi32 name 'GetSecurityDescriptorDacl';
|
|
function SetSecurityDescriptorSacl; external advapi32 name 'SetSecurityDescriptorSacl';
|
|
function GetSecurityDescriptorSacl; external advapi32 name 'GetSecurityDescriptorSacl';
|
|
function SetSecurityDescriptorOwner; external advapi32 name 'SetSecurityDescriptorOwner';
|
|
function GetSecurityDescriptorOwner; external advapi32 name 'GetSecurityDescriptorOwner';
|
|
function SetSecurityDescriptorGroup; external advapi32 name 'SetSecurityDescriptorGroup';
|
|
function GetSecurityDescriptorGroup; external advapi32 name 'GetSecurityDescriptorGroup';
|
|
function SetSecurityDescriptorRMControl; external advapi32 name 'SetSecurityDescriptorRMControl';
|
|
function GetSecurityDescriptorRMControl; external advapi32 name 'GetSecurityDescriptorRMControl';
|
|
function CreatePrivateObjectSecurity; external advapi32 name 'CreatePrivateObjectSecurity';
|
|
function ConvertToAutoInheritPrivateObjectSecurity; external advapi32 name 'ConvertToAutoInheritPrivateObjectSecurity';
|
|
function CreatePrivateObjectSecurityEx; external advapi32 name 'CreatePrivateObjectSecurityEx';
|
|
function SetPrivateObjectSecurity; external advapi32 name 'SetPrivateObjectSecurity';
|
|
function SetPrivateObjectSecurityEx; external advapi32 name 'SetPrivateObjectSecurityEx';
|
|
function GetPrivateObjectSecurity; external advapi32 name 'GetPrivateObjectSecurity';
|
|
function DestroyPrivateObjectSecurity; external advapi32 name 'DestroyPrivateObjectSecurity';
|
|
function MakeSelfRelativeSD; external advapi32 name 'MakeSelfRelativeSD';
|
|
function MakeAbsoluteSD; external advapi32 name 'MakeAbsoluteSD';
|
|
function MakeAbsoluteSD2; external advapi32 name 'MakeAbsoluteSD2';
|
|
function SetFileSecurityA; external advapi32 name 'SetFileSecurityA';
|
|
function SetFileSecurityW; external advapi32 name 'SetFileSecurityW';
|
|
function SetFileSecurity; external advapi32 name 'SetFileSecurity' + AWSuffix;
|
|
function GetFileSecurityA; external advapi32 name 'GetFileSecurityA';
|
|
function GetFileSecurityW; external advapi32 name 'GetFileSecurityW';
|
|
function GetFileSecurity; external advapi32 name 'GetFileSecurity' + AWSuffix;
|
|
function SetKernelObjectSecurity; external advapi32 name 'SetKernelObjectSecurity';
|
|
function FindFirstChangeNotificationA; external kernel32 name 'FindFirstChangeNotificationA';
|
|
function FindFirstChangeNotificationW; external kernel32 name 'FindFirstChangeNotificationW';
|
|
function FindFirstChangeNotification; external kernel32 name 'FindFirstChangeNotification' + AWSuffix;
|
|
function FindNextChangeNotification; external kernel32 name 'FindNextChangeNotification';
|
|
function FindCloseChangeNotification; external kernel32 name 'FindCloseChangeNotification';
|
|
function ReadDirectoryChangesW; external kernel32 name 'ReadDirectoryChangesW';
|
|
function VirtualLock; external kernel32 name 'VirtualLock';
|
|
function VirtualUnlock; external kernel32 name 'VirtualUnlock';
|
|
function MapViewOfFileEx; external kernel32 name 'MapViewOfFileEx';
|
|
function SetPriorityClass; external kernel32 name 'SetPriorityClass';
|
|
function GetPriorityClass; external kernel32 name 'GetPriorityClass';
|
|
function IsBadReadPtr; external kernel32 name 'IsBadReadPtr';
|
|
function IsBadWritePtr; external kernel32 name 'IsBadWritePtr';
|
|
function IsBadHugeReadPtr; external kernel32 name 'IsBadHugeReadPtr';
|
|
function IsBadHugeWritePtr; external kernel32 name 'IsBadHugeWritePtr';
|
|
function IsBadCodePtr; external kernel32 name 'IsBadCodePtr';
|
|
function IsBadStringPtrA; external kernel32 name 'IsBadStringPtrA';
|
|
function IsBadStringPtrW; external kernel32 name 'IsBadStringPtrW';
|
|
function IsBadStringPtr; external kernel32 name 'IsBadStringPtr' + AWSuffix;
|
|
function LookupAccountSidA; external advapi32 name 'LookupAccountSidA';
|
|
function LookupAccountSidW; external advapi32 name 'LookupAccountSidW';
|
|
function LookupAccountSid; external advapi32 name 'LookupAccountSid' + AWSuffix;
|
|
function LookupAccountNameA; external advapi32 name 'LookupAccountNameA';
|
|
function LookupAccountNameW; external advapi32 name 'LookupAccountNameW';
|
|
function LookupAccountName; external advapi32 name 'LookupAccountName' + AWSuffix;
|
|
function LookupPrivilegeValueA; external advapi32 name 'LookupPrivilegeValueA';
|
|
function LookupPrivilegeValueW; external advapi32 name 'LookupPrivilegeValueW';
|
|
function LookupPrivilegeValue; external advapi32 name 'LookupPrivilegeValue' + AWSuffix;
|
|
function LookupPrivilegeNameA; external advapi32 name 'LookupPrivilegeNameA';
|
|
function LookupPrivilegeNameW; external advapi32 name 'LookupPrivilegeNameW';
|
|
function LookupPrivilegeName; external advapi32 name 'LookupPrivilegeName' + AWSuffix;
|
|
function LookupPrivilegeDisplayNameA; external advapi32 name 'LookupPrivilegeDisplayNameA';
|
|
function LookupPrivilegeDisplayNameW; external advapi32 name 'LookupPrivilegeDisplayNameW';
|
|
function LookupPrivilegeDisplayName; external advapi32 name 'LookupPrivilegeDisplayName' + AWSuffix;
|
|
function AllocateLocallyUniqueId; external advapi32 name 'AllocateLocallyUniqueId';
|
|
function BuildCommDCBA; external kernel32 name 'BuildCommDCBA';
|
|
function BuildCommDCBW; external kernel32 name 'BuildCommDCBW';
|
|
function BuildCommDCB; external kernel32 name 'BuildCommDCB' + AWSuffix;
|
|
function BuildCommDCBAndTimeoutsA; external kernel32 name 'BuildCommDCBAndTimeoutsA';
|
|
function BuildCommDCBAndTimeoutsW; external kernel32 name 'BuildCommDCBAndTimeoutsW';
|
|
function BuildCommDCBAndTimeouts; external kernel32 name 'BuildCommDCBAndTimeouts' + AWSuffix;
|
|
function CommConfigDialogA; external kernel32 name 'CommConfigDialogA';
|
|
function CommConfigDialogW; external kernel32 name 'CommConfigDialogW';
|
|
function CommConfigDialog; external kernel32 name 'CommConfigDialog' + AWSuffix;
|
|
function GetDefaultCommConfigA; external kernel32 name 'GetDefaultCommConfigA';
|
|
function GetDefaultCommConfigW; external kernel32 name 'GetDefaultCommConfigW';
|
|
function GetDefaultCommConfig; external kernel32 name 'GetDefaultCommConfig' + AWSuffix;
|
|
function SetDefaultCommConfigA; external kernel32 name 'SetDefaultCommConfigA';
|
|
function SetDefaultCommConfigW; external kernel32 name 'SetDefaultCommConfigW';
|
|
function SetDefaultCommConfig; external kernel32 name 'SetDefaultCommConfig' + AWSuffix;
|
|
function GetComputerNameA; external kernel32 name 'GetComputerNameA';
|
|
function GetComputerNameW; external kernel32 name 'GetComputerNameW';
|
|
function GetComputerName; external kernel32 name 'GetComputerName' + AWSuffix;
|
|
function SetComputerNameA; external kernel32 name 'SetComputerNameA';
|
|
function SetComputerNameW; external kernel32 name 'SetComputerNameW';
|
|
function SetComputerName; external kernel32 name 'SetComputerName' + AWSuffix;
|
|
function GetComputerNameExA; external kernel32 name 'GetComputerNameExA';
|
|
function GetComputerNameExW; external kernel32 name 'GetComputerNameExW';
|
|
function GetComputerNameEx; external kernel32 name 'GetComputerNameEx' + AWSuffix;
|
|
function SetComputerNameExA; external kernel32 name 'SetComputerNameExA';
|
|
function SetComputerNameExW; external kernel32 name 'SetComputerNameExW';
|
|
function SetComputerNameEx; external kernel32 name 'SetComputerNameEx' + AWSuffix;
|
|
function DnsHostnameToComputerNameA; external kernel32 name 'DnsHostnameToComputerNameA';
|
|
function DnsHostnameToComputerNameW; external kernel32 name 'DnsHostnameToComputerNameW';
|
|
function DnsHostnameToComputerName; external kernel32 name 'DnsHostnameToComputerName' + AWSuffix;
|
|
function GetUserNameA; external advapi32 name 'GetUserNameA';
|
|
function GetUserNameW; external advapi32 name 'GetUserNameW';
|
|
function GetUserName; external advapi32 name 'GetUserName' + AWSuffix;
|
|
function LogonUserA; external advapi32 name 'LogonUserA';
|
|
function LogonUserW; external advapi32 name 'LogonUserW';
|
|
function LogonUser; external advapi32 name 'LogonUser' + AWSuffix;
|
|
function LogonUserExA; external advapi32 name 'LogonUserExA';
|
|
function LogonUserExW; external advapi32 name 'LogonUserExW';
|
|
function LogonUserEx; external advapi32 name 'LogonUserEx' + AWSuffix;
|
|
function ImpersonateLoggedOnUser; external advapi32 name 'ImpersonateLoggedOnUser';
|
|
function CreateProcessAsUserA; external advapi32 name 'CreateProcessAsUserA';
|
|
function CreateProcessAsUserW; external advapi32 name 'CreateProcessAsUserW';
|
|
function CreateProcessAsUser; external advapi32 name 'CreateProcessAsUser' + AWSuffix;
|
|
function CreateProcessWithLogonW; external advapi32 name 'CreateProcessWithLogonW';
|
|
function CreateProcessWithTokenW; external advapi32 name 'CreateProcessWithTokenW';
|
|
function ImpersonateAnonymousToken; external advapi32 name 'ImpersonateAnonymousToken';
|
|
function DuplicateTokenEx; external advapi32 name 'DuplicateTokenEx';
|
|
function CreateRestrictedToken; external advapi32 name 'CreateRestrictedToken';
|
|
function IsTokenRestricted; external advapi32 name 'IsTokenRestricted';
|
|
function CheckTokenMembership; external advapi32 name 'CheckTokenMembership';
|
|
function IsTokenUntrusted; external advapi32 name 'IsTokenUntrusted';
|
|
function RegisterWaitForSingleObject; external kernel32 name 'RegisterWaitForSingleObject';
|
|
function RegisterWaitForSingleObjectEx; external kernel32 name 'RegisterWaitForSingleObjectEx';
|
|
function UnregisterWait; external kernel32 name 'UnregisterWait';
|
|
function UnregisterWaitEx; external kernel32 name 'UnregisterWaitEx';
|
|
function QueueUserWorkItem; external kernel32 name 'QueueUserWorkItem';
|
|
function BindIoCompletionCallback; external kernel32 name 'BindIoCompletionCallback';
|
|
function CreateTimerQueue; external kernel32 name 'CreateTimerQueue';
|
|
function CreateTimerQueueTimer; external kernel32 name 'CreateTimerQueueTimer';
|
|
function ChangeTimerQueueTimer; external kernel32 name 'ChangeTimerQueueTimer';
|
|
function DeleteTimerQueueTimer; external kernel32 name 'DeleteTimerQueueTimer';
|
|
function DeleteTimerQueueEx; external kernel32 name 'DeleteTimerQueueEx';
|
|
function SetTimerQueueTimer; external kernel32 name 'SetTimerQueueTimer';
|
|
function CancelTimerQueueTimer; external kernel32 name 'CancelTimerQueueTimer';
|
|
function DeleteTimerQueue; external kernel32 name 'DeleteTimerQueue';
|
|
function GetCurrentHwProfileA; external advapi32 name 'GetCurrentHwProfileA';
|
|
function GetCurrentHwProfileW; external advapi32 name 'GetCurrentHwProfileW';
|
|
function GetCurrentHwProfile; external advapi32 name 'GetCurrentHwProfile' + AWSuffix;
|
|
function QueryPerformanceCounter; external kernel32 name 'QueryPerformanceCounter';
|
|
function QueryPerformanceFrequency; external kernel32 name 'QueryPerformanceFrequency';
|
|
function GetVersionExA; external kernel32 name 'GetVersionExA';
|
|
function GetVersionExW; external kernel32 name 'GetVersionExW';
|
|
function GetVersionEx; external kernel32 name 'GetVersionEx' + AWSuffix;
|
|
function VerifyVersionInfoA; external kernel32 name 'VerifyVersionInfoA';
|
|
function VerifyVersionInfoW; external kernel32 name 'VerifyVersionInfoW';
|
|
function VerifyVersionInfo; external kernel32 name 'VerifyVersionInfo' + AWSuffix;
|
|
function GetSystemPowerStatus; external kernel32 name 'GetSystemPowerStatus';
|
|
function SetSystemPowerState; external kernel32 name 'SetSystemPowerState';
|
|
function AllocateUserPhysicalPages; external kernel32 name 'AllocateUserPhysicalPages';
|
|
function FreeUserPhysicalPages; external kernel32 name 'FreeUserPhysicalPages';
|
|
function MapUserPhysicalPages; external kernel32 name 'MapUserPhysicalPages';
|
|
function MapUserPhysicalPagesScatter; external kernel32 name 'MapUserPhysicalPagesScatter';
|
|
function CreateJobObjectA; external kernel32 name 'CreateJobObjectA';
|
|
function CreateJobObjectW; external kernel32 name 'CreateJobObjectW';
|
|
function CreateJobObject; external kernel32 name 'CreateJobObject' + AWSuffix;
|
|
function OpenJobObjectA; external kernel32 name 'OpenJobObjectA';
|
|
function OpenJobObjectW; external kernel32 name 'OpenJobObjectW';
|
|
function OpenJobObject; external kernel32 name 'OpenJobObject' + AWSuffix;
|
|
function AssignProcessToJobObject; external kernel32 name 'AssignProcessToJobObject';
|
|
function TerminateJobObject; external kernel32 name 'TerminateJobObject';
|
|
function QueryInformationJobObject; external kernel32 name 'QueryInformationJobObject';
|
|
function SetInformationJobObject; external kernel32 name 'SetInformationJobObject';
|
|
function IsProcessInJob; external kernel32 name 'IsProcessInJob';
|
|
function CreateJobSet; external kernel32 name 'CreateJobSet';
|
|
function AddVectoredExceptionHandler; external kernel32 name 'AddVectoredExceptionHandler';
|
|
function RemoveVectoredExceptionHandler; external kernel32 name 'RemoveVectoredExceptionHandler';
|
|
function FindFirstVolumeA; external kernel32 name 'FindFirstVolumeA';
|
|
function FindFirstVolumeW; external kernel32 name 'FindFirstVolumeW';
|
|
function FindFirstVolume; external kernel32 name 'FindFirstVolume' + AWSuffix;
|
|
function FindNextVolumeA; external kernel32 name 'FindNextVolumeA';
|
|
function FindNextVolumeW; external kernel32 name 'FindNextVolumeW';
|
|
function FindNextVolume; external kernel32 name 'FindNextVolume' + AWSuffix;
|
|
function FindVolumeClose; external kernel32 name 'FindVolumeClose';
|
|
function FindFirstVolumeMountPointA; external kernel32 name 'FindFirstVolumeMountPointA';
|
|
function FindFirstVolumeMountPointW; external kernel32 name 'FindFirstVolumeMountPointW';
|
|
function FindFirstVolumeMountPoint; external kernel32 name 'FindFirstVolumeMountPoint' + AWSuffix;
|
|
function FindNextVolumeMountPointA; external kernel32 name 'FindNextVolumeMountPointA';
|
|
function FindNextVolumeMountPointW; external kernel32 name 'FindNextVolumeMountPointW';
|
|
function FindNextVolumeMountPoint; external kernel32 name 'FindNextVolumeMountPoint' + AWSuffix;
|
|
function FindVolumeMountPointClose; external kernel32 name 'FindVolumeMountPointClose';
|
|
function SetVolumeMountPointA; external kernel32 name 'SetVolumeMountPointA';
|
|
function SetVolumeMountPointW; external kernel32 name 'SetVolumeMountPointW';
|
|
function SetVolumeMountPoint; external kernel32 name 'SetVolumeMountPoint' + AWSuffix;
|
|
function DeleteVolumeMountPointA; external kernel32 name 'DeleteVolumeMountPointA';
|
|
function DeleteVolumeMountPointW; external kernel32 name 'DeleteVolumeMountPointW';
|
|
function DeleteVolumeMountPoint; external kernel32 name 'DeleteVolumeMountPoint' + AWSuffix;
|
|
function GetVolumeNameForVolumeMountPointA; external kernel32 name 'GetVolumeNameForVolumeMountPointA';
|
|
function GetVolumeNameForVolumeMountPointW; external kernel32 name 'GetVolumeNameForVolumeMountPointW';
|
|
function GetVolumeNameForVolumeMountPoint; external kernel32 name 'GetVolumeNameForVolumeMountPoint' + AWSuffix;
|
|
function GetVolumePathNameA; external kernel32 name 'GetVolumePathNameA';
|
|
function GetVolumePathNameW; external kernel32 name 'GetVolumePathNameW';
|
|
function GetVolumePathName; external kernel32 name 'GetVolumePathName' + AWSuffix;
|
|
function GetVolumePathNamesForVolumeNameA; external kernel32 name 'GetVolumePathNamesForVolumeNameA';
|
|
function GetVolumePathNamesForVolumeNameW; external kernel32 name 'GetVolumePathNamesForVolumeNameW';
|
|
function GetVolumePathNamesForVolumeName; external kernel32 name 'GetVolumePathNamesForVolumeName' + AWSuffix;
|
|
function CreateActCtxA; external kernel32 name 'CreateActCtxA';
|
|
function CreateActCtxW; external kernel32 name 'CreateActCtxW';
|
|
function CreateActCtx; external kernel32 name 'CreateActCtx' + AWSuffix;
|
|
procedure AddRefActCtx; external kernel32 name 'AddRefActCtx';
|
|
procedure ReleaseActCtx; external kernel32 name 'ReleaseActCtx';
|
|
function ZombifyActCtx; external kernel32 name 'ZombifyActCtx';
|
|
function ActivateActCtx; external kernel32 name 'ActivateActCtx';
|
|
function DeactivateActCtx; external kernel32 name 'DeactivateActCtx';
|
|
function GetCurrentActCtx; external kernel32 name 'GetCurrentActCtx';
|
|
function FindActCtxSectionStringA; external kernel32 name 'FindActCtxSectionStringA';
|
|
function FindActCtxSectionStringW; external kernel32 name 'FindActCtxSectionStringW';
|
|
function FindActCtxSectionString; external kernel32 name 'FindActCtxSectionString' + AWSuffix;
|
|
function FindActCtxSectionGuid; external kernel32 name 'FindActCtxSectionGuid';
|
|
function QueryActCtxW; external kernel32 name 'QueryActCtxW';
|
|
function ProcessIdToSessionId; external kernel32 name 'ProcessIdToSessionId';
|
|
function WTSGetActiveConsoleSessionId; external kernel32 name 'WTSGetActiveConsoleSessionId';
|
|
function IsWow64Process; external kernel32 name 'IsWow64Process';
|
|
function GetLogicalProcessorInformation; external kernel32 name 'GetLogicalProcessorInformation';
|
|
function GetNumaHighestNodeNumber; external kernel32 name 'GetNumaHighestNodeNumber';
|
|
function GetNumaProcessorNode; external kernel32 name 'GetNumaProcessorNode';
|
|
function GetNumaNodeProcessorMask; external kernel32 name 'GetNumaNodeProcessorMask';
|
|
function GetNumaAvailableMemoryNode; external kernel32 name 'GetNumaAvailableMemoryNode';
|
|
|
|
|
|
{$IFDEF WINVISTA_UP}
|
|
function SetProcessDEPPolicy; external kernel32 name 'SetProcessDEPPolicy';
|
|
function GetNamedPipeServerSessionId; external kernel32 name 'GetNamedPipeServerSessionId';
|
|
function GetNamedPipeServerProcessId; external kernel32 name 'GetNamedPipeServerProcessId';
|
|
|
|
function GetNamedPipeClientProcessId; external kernel32 name 'GetNamedPipeClientProcessId';
|
|
function GetNamedPipeClientSessionId; external kernel32 name 'GetNamedPipeClientSessionId';
|
|
|
|
function GetNamedPipeClientComputerName; external kernel32 name 'GetNamedPipeClientComputerName'+AWSuffix;
|
|
function GetNamedPipeClientComputerNameA; external kernel32 name 'GetNamedPipeClientComputerNameA';
|
|
function GetNamedPipeClientComputerNameW; external kernel32 name 'GetNamedPipeClientComputerNameW';
|
|
{$ENDIF WINVISTA_UP}
|
|
|
|
|
|
{$ENDIF DYNAMIC_LINK}
|
|
|
|
function ProcThreadAttributeValue(const Number : DWORD;
|
|
Thread, Input, Additive : Boolean) : DWORD;
|
|
begin
|
|
{
|
|
#define ProcThreadAttributeValue(Number, Thread, Input, Additive) \
|
|
(((Number) & PROC_THREAD_ATTRIBUTE_NUMBER) | \
|
|
((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | \
|
|
((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | \
|
|
((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0))
|
|
}
|
|
result := Number and PROC_THREAD_ATTRIBUTE_NUMBER;
|
|
if Thread then
|
|
result := result or PROC_THREAD_ATTRIBUTE_THREAD;
|
|
if Input then
|
|
result := result or PROC_THREAD_ATTRIBUTE_INPUT;
|
|
if Additive then
|
|
result := result or PROC_THREAD_ATTRIBUTE_ADDITIVE;
|
|
end;
|
|
|
|
function PROC_THREAD_ATTRIBUTE_PARENT_PROCESS : DWORD;
|
|
begin
|
|
{
|
|
#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS \
|
|
ProcThreadAttributeValue (ProcThreadAttributeParentProcess, FALSE, TRUE, FALSE)
|
|
}
|
|
result := ProcThreadAttributeValue(DWORD(ProcThreadAttributeParentProcess), false, true, false);
|
|
end;
|
|
|
|
function PROC_THREAD_ATTRIBUTE_EXTENDED_FLAGS : DWORD;
|
|
begin
|
|
{
|
|
#define PROC_THREAD_ATTRIBUTE_EXTENDED_FLAGS \
|
|
ProcThreadAttributeValue (ProcThreadAttributeExtendedFlags, FALSE, TRUE, TRUE)
|
|
}
|
|
result := ProcThreadAttributeValue(DWORD(ProcThreadAttributeExtendedFlags), false, true, true);
|
|
end;
|
|
|
|
function PROC_THREAD_ATTRIBUTE_HANDLE_LIST : DWORD;
|
|
begin
|
|
{
|
|
#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST \
|
|
ProcThreadAttributeValue (ProcThreadAttributeHandleList, FALSE, TRUE, FALSE)
|
|
}
|
|
result := ProcThreadAttributeValue(DWORD(ProcThreadAttributeHandleList), false, true, false);
|
|
end;
|
|
{$ENDIF JWA_INTERFACESECTION}
|
|
|
|
{$IFNDEF JWA_OMIT_SECTIONS}
|
|
end.
|
|
{$ENDIF JWA_OMIT_SECTIONS}
|