{**************************************************************************************************} { WARNING: JEDI preprocessor generated unit. Do not edit. } {**************************************************************************************************} {**************************************************************************************************} { } { Project JEDI Code Library (JCL) } { } { The contents of this file are 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/ } { } { 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. } { } { Portions of this code are translated from DelayImp.h. } { The Initial Developer of DelayImp.h is Inprise Corporation. Portions created by Inprise } { Corporation are Copyright (C) 1999, 2000 by Inprise Corporation. All Rights Reserved. } { } { The Original Code is JclWin32.pas. } { } { The Initial Developer of the Original Code is Marcel van Brakel. Portions created by Marcel van } { Brakel are Copyright (C) Marcel van Brakel. All Rights Reserved. } { } { Contributors: } { Marcel van Brakel } { Peter Friese } { Andreas Hausladen (ahuser) } { Flier Lu (flier) } { Robert Marquardt (marquardt) } { Robert Rossmair (rrossmair) } { Olivier Sannier (obones) } { Matthias Thoma (mthoma) } { Petr Vones (pvones) } { } {**************************************************************************************************} { } { This unit defines various Win32 API declarations which are either missing or incorrect in one or } { more of the supported Delphi versions. This unit is not intended for regular code, only API } { declarations. } { } {**************************************************************************************************} // Last modified: $Date: 2005/12/12 21:54:10 $ unit JclWin32; {$I jcl.inc} {$MINENUMSIZE 4} {$ALIGN ON} {$WARNINGS OFF} interface uses Windows, SysUtils, {$IFNDEF FPC} {$IFDEF CLR} System.Runtime.InteropServices, System.Security, {$ELSE} AccCtrl, {$ENDIF CLR} ActiveX, {$ENDIF ~FPC} JclBase; {$HPPEMIT ''} {$HPPEMIT '#include "WinDef.h"'} {$HPPEMIT '#include "WinNT.h"'} {$HPPEMIT '#include "WinBase.h"'} {$HPPEMIT '#include "BaseTsd.h"'} {$HPPEMIT '#include "ImageHlp.h"'} {$HPPEMIT '#include "lm.h"'} {$HPPEMIT '#include "Nb30.h"'} {$HPPEMIT '#include "RasDlg.h"'} {$HPPEMIT '#include "Reason.h"'} {$HPPEMIT '#include "ShlWApi.h"'} {$HPPEMIT '#include "WinError.h"'} {$HPPEMIT '#include "WinIoCtl.h"'} {$HPPEMIT '#include "WinUser.h"'} {$HPPEMIT '#include '} {$HPPEMIT ''} {$IFDEF CLR} type LPSTR = string; LPWSTR = string; LPCSTR = string; LPCWSTR = string; LPCTSTR = string; PLongWord = ^LongWord; PByte = IntPtr; {$ENDIF CLR} {$IFDEF FPC} // include file for FPC compatibility // JclWin32 include file for FPC compatibility // from unit Windows const // from WinReg.h HKEY_CLASSES_ROOT = DWORD($80000000); HKEY_CURRENT_USER = DWORD($80000001); HKEY_LOCAL_MACHINE = DWORD($80000002); HKEY_USERS = DWORD($80000003); HKEY_PERFORMANCE_DATA = DWORD($80000004); HKEY_CURRENT_CONFIG = DWORD($80000005); HKEY_DYN_DATA = DWORD($80000006); // from WinVer.h VOS__BASE = 0; VOS__WINDOWS16 = 1; VOS__PM16 = 2; VOS__PM32 = 3; VOS__WINDOWS32 = 4; { VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV } VFT2_UNKNOWN = 0; VFT2_DRV_PRINTER = 1; VFT2_DRV_KEYBOARD = 2; VFT2_DRV_LANGUAGE = 3; VFT2_DRV_DISPLAY = 4; VFT2_DRV_MOUSE = 5; VFT2_DRV_NETWORK = 6; VFT2_DRV_SYSTEM = 7; VFT2_DRV_INSTALLABLE = 8; VFT2_DRV_SOUND = 9; VFT2_DRV_COMM = 10; type // from WinBase.h _GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel); TGetFileExInfoLevels = _GET_FILEEX_INFO_LEVELS; GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS; type PKeyboardState = ^TKeyboardState; TKeyboardState = array [0..255] of Byte; // from unit AccCtrl type SE_OBJECT_TYPE = ( SE_UNKNOWN_OBJECT_TYPE, SE_FILE_OBJECT, SE_SERVICE, SE_PRINTER, SE_REGISTRY_KEY, SE_LMSHARE, SE_KERNEL_OBJECT, SE_WINDOW_OBJECT, SE_DS_OBJECT, SE_DS_OBJECT_ALL, SE_PROVIDER_DEFINED_OBJECT, SE_WMIGUID_OBJECT ); // from ActiveX const // from OleIdl.h, OleIdl.Idl DROPEFFECT_NONE = 0; DROPEFFECT_COPY = 1; DROPEFFECT_MOVE = 2; DROPEFFECT_LINK = 4; DROPEFFECT_SCROLL = DWORD($80000000); {$ENDIF FPC} type // // Unsigned Basics // USHORT = Word; {$EXTERNALSYM USHORT} //================================================================================================== // presumable from any older WinNT.h or from WinIfs.h //================================================================================================== {$IFNDEF CLR} //-------------------------------------------------------------------------------------------------- // NTFS Reparse Points //-------------------------------------------------------------------------------------------------- // The reparse structure is used by layered drivers to store data in a // reparse point. The constraints on reparse tags are defined below. // This version of the reparse data buffer is only for Microsoft tags. (*$HPPEMIT 'typedef struct _REPARSE_DATA_BUFFER {'*) (*$HPPEMIT ''*) (*$HPPEMIT ' DWORD ReparseTag;'*) (*$HPPEMIT ' WORD ReparseDataLength;'*) (*$HPPEMIT ' WORD Reserved;'*) (*$HPPEMIT ''*) (*$HPPEMIT ' union {'*) (*$HPPEMIT ''*) (*$HPPEMIT ' struct {'*) (*$HPPEMIT ' WORD SubstituteNameOffset;'*) (*$HPPEMIT ' WORD SubstituteNameLength;'*) (*$HPPEMIT ' WORD PrintNameOffset;'*) (*$HPPEMIT ' WORD PrintNameLength;'*) (*$HPPEMIT ' WCHAR PathBuffer[1];'*) (*$HPPEMIT ' } SymbolicLinkReparseBuffer;'*) (*$HPPEMIT ''*) (*$HPPEMIT ' struct {'*) (*$HPPEMIT ' WORD SubstituteNameOffset;'*) (*$HPPEMIT ' WORD SubstituteNameLength;'*) (*$HPPEMIT ' WORD PrintNameOffset;'*) (*$HPPEMIT ' WORD PrintNameLength;'*) (*$HPPEMIT ' WCHAR PathBuffer[1];'*) (*$HPPEMIT ' } MountPointReparseBuffer;'*) (*$HPPEMIT ''*) (*$HPPEMIT ' struct {'*) (*$HPPEMIT ' UCHAR DataBuffer[1];'*) (*$HPPEMIT ' } GenericReparseBuffer;'*) (*$HPPEMIT ' };'*) (*$HPPEMIT ''*) (*$HPPEMIT '} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;'*) (*$HPPEMIT ''*) (*$HPPEMIT '#ifndef REPARSE_DATA_BUFFER_HEADER_SIZE'*) (*$HPPEMIT '#define REPARSE_DATA_BUFFER_HEADER_SIZE 8'*) (*$HPPEMIT '#endif'*) (*$HPPEMIT ''*) (*$HPPEMIT 'typedef struct _REPARSE_POINT_INFORMATION {'*) (*$HPPEMIT ' WORD ReparseDataLength;'*) (*$HPPEMIT ' WORD UnparsedNameLength;'*) (*$HPPEMIT '} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;'*) (*$HPPEMIT ''*) (*$HPPEMIT '#ifndef IO_REPARSE_TAG_VALID_VALUES'*) (*$HPPEMIT '#define IO_REPARSE_TAG_VALID_VALUES 0x0E000FFFF'*) (*$HPPEMIT '#endif'*) (*$HPPEMIT ''*) type {$EXTERNALSYM _REPARSE_DATA_BUFFER} _REPARSE_DATA_BUFFER = record ReparseTag: DWORD; ReparseDataLength: Word; Reserved: Word; case Integer of 0: ( // SymbolicLinkReparseBuffer and MountPointReparseBuffer SubstituteNameOffset: Word; SubstituteNameLength: Word; PrintNameOffset: Word; PrintNameLength: Word; PathBuffer: array [0..0] of WCHAR); 1: ( // GenericReparseBuffer DataBuffer: array [0..0] of Byte); end; {$EXTERNALSYM REPARSE_DATA_BUFFER} REPARSE_DATA_BUFFER = _REPARSE_DATA_BUFFER; {$EXTERNALSYM PREPARSE_DATA_BUFFER} PREPARSE_DATA_BUFFER = ^_REPARSE_DATA_BUFFER; TReparseDataBuffer = _REPARSE_DATA_BUFFER; PReparseDataBuffer = PREPARSE_DATA_BUFFER; const {$EXTERNALSYM REPARSE_DATA_BUFFER_HEADER_SIZE} REPARSE_DATA_BUFFER_HEADER_SIZE = 8; type {$EXTERNALSYM _REPARSE_POINT_INFORMATION} _REPARSE_POINT_INFORMATION = record ReparseDataLength: Word; UnparsedNameLength: Word; end; {$EXTERNALSYM REPARSE_POINT_INFORMATION} REPARSE_POINT_INFORMATION = _REPARSE_POINT_INFORMATION; {$EXTERNALSYM PREPARSE_POINT_INFORMATION} PREPARSE_POINT_INFORMATION = ^_REPARSE_POINT_INFORMATION; TReparsePointInformation = _REPARSE_POINT_INFORMATION; PReparsePointInformation = PREPARSE_POINT_INFORMATION; const {$EXTERNALSYM IO_REPARSE_TAG_VALID_VALUES} IO_REPARSE_TAG_VALID_VALUES = DWORD($E000FFFF); {$ENDIF ~CLR} //================================================================================================== // from JwaWinNT.pas (few declarations from JwaWinType) type ULONGLONG = Int64; {$EXTERNALSYM ULONGLONG} const MAXLONGLONG = $7fffffffffffffff; {$EXTERNALSYM MAXLONGLONG} type PLONGLONG = ^LONGLONG; {$EXTERNALSYM PLONGLONG} PULONGLONG = ^ULONGLONG; {$EXTERNALSYM PULONGLONG} const ANYSIZE_ARRAY = 1; {$EXTERNALSYM ANYSIZE_ARRAY} MAX_NATURAL_ALIGNMENT = SizeOf(ULONG); {$EXTERNALSYM MAX_NATURAL_ALIGNMENT} // line 72 const VER_SERVER_NT = DWORD($80000000); {$EXTERNALSYM VER_SERVER_NT} VER_WORKSTATION_NT = $40000000; {$EXTERNALSYM VER_WORKSTATION_NT} VER_SUITE_SMALLBUSINESS = $00000001; {$EXTERNALSYM VER_SUITE_SMALLBUSINESS} VER_SUITE_ENTERPRISE = $00000002; {$EXTERNALSYM VER_SUITE_ENTERPRISE} VER_SUITE_BACKOFFICE = $00000004; {$EXTERNALSYM VER_SUITE_BACKOFFICE} VER_SUITE_COMMUNICATIONS = $00000008; {$EXTERNALSYM VER_SUITE_COMMUNICATIONS} VER_SUITE_TERMINAL = $00000010; {$EXTERNALSYM VER_SUITE_TERMINAL} VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020; {$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED} VER_SUITE_EMBEDDEDNT = $00000040; {$EXTERNALSYM VER_SUITE_EMBEDDEDNT} VER_SUITE_DATACENTER = $00000080; {$EXTERNALSYM VER_SUITE_DATACENTER} VER_SUITE_SINGLEUSERTS = $00000100; {$EXTERNALSYM VER_SUITE_SINGLEUSERTS} VER_SUITE_PERSONAL = $00000200; {$EXTERNALSYM VER_SUITE_PERSONAL} VER_SUITE_BLADE = $00000400; {$EXTERNALSYM VER_SUITE_BLADE} VER_SUITE_EMBEDDED_RESTRICTED = $00000800; {$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED} VER_SUITE_SECURITY_APPLIANCE = $00001000; {$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE} // line 515 // // A language ID is a 16 bit value which is the combination of a // primary language ID and a secondary language ID. The bits are // allocated as follows: // // +-----------------------+-------------------------+ // | Sublanguage ID | Primary Language ID | // +-----------------------+-------------------------+ // 15 10 9 0 bit // // // Language ID creation/extraction macros: // // MAKELANGID - construct language id from a primary language id and // a sublanguage id. // PRIMARYLANGID - extract primary language id from a language id. // SUBLANGID - extract sublanguage id from a language id. // function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD; {$EXTERNALSYM MAKELANGID} function PRIMARYLANGID(LangId: WORD): WORD; {$EXTERNALSYM PRIMARYLANGID} function SUBLANGID(LangId: WORD): WORD; {$EXTERNALSYM SUBLANGID} // // A locale ID is a 32 bit value which is the combination of a // language ID, a sort ID, and a reserved area. The bits are // allocated as follows: // // +-------------+---------+-------------------------+ // | Reserved | Sort ID | Language ID | // +-------------+---------+-------------------------+ // 31 20 19 16 15 0 bit // // // Locale ID creation/extraction macros: // // MAKELCID - construct the locale id from a language id and a sort id. // MAKESORTLCID - construct the locale id from a language id, sort id, and sort version. // LANGIDFROMLCID - extract the language id from a locale id. // SORTIDFROMLCID - extract the sort id from a locale id. // SORTVERSIONFROMLCID - extract the sort version from a locale id. // const NLS_VALID_LOCALE_MASK = $000fffff; {$EXTERNALSYM NLS_VALID_LOCALE_MASK} function MAKELCID(LangId, SortId: WORD): DWORD; {$EXTERNALSYM MAKELCID} function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD; {$EXTERNALSYM MAKESORTLCID} function LANGIDFROMLCID(LocaleId: LCID): WORD; {$EXTERNALSYM LANGIDFROMLCID} function SORTIDFROMLCID(LocaleId: LCID): WORD; {$EXTERNALSYM SORTIDFROMLCID} function SORTVERSIONFROMLCID(LocaleId: LCID): WORD; {$EXTERNALSYM SORTVERSIONFROMLCID} // line 1154 //////////////////////////////////////////////////////////////////////// // // // Security Id (SID) // // // //////////////////////////////////////////////////////////////////////// // // // Pictorially the structure of an SID is as follows: // // 1 1 1 1 1 1 // 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +---------------------------------------------------------------+ // | SubAuthorityCount |Reserved1 (SBZ)| Revision | // +---------------------------------------------------------------+ // | IdentifierAuthority[0] | // +---------------------------------------------------------------+ // | IdentifierAuthority[1] | // +---------------------------------------------------------------+ // | IdentifierAuthority[2] | // +---------------------------------------------------------------+ // | | // +- - - - - - - - SubAuthority[] - - - - - - - - -+ // | | // +---------------------------------------------------------------+ // // type // PSid = ^SID; _SID = record Revision: Byte; SubAuthorityCount: Byte; IdentifierAuthority: SID_IDENTIFIER_AUTHORITY; SubAuthority: array [0..ANYSIZE_ARRAY - 1] of DWORD; end; {$EXTERNALSYM _SID} SID = _SID; {$EXTERNALSYM SID} PPSID = ^PSID; {$NODEFINE PPSID} TSid = SID; const SID_REVISION = (1); // Current revision level {$EXTERNALSYM SID_REVISION} SID_MAX_SUB_AUTHORITIES = (15); {$EXTERNALSYM SID_MAX_SUB_AUTHORITIES} SID_RECOMMENDED_SUB_AUTHORITIES = (1); // Will change to around 6 in a future release. {$EXTERNALSYM SID_RECOMMENDED_SUB_AUTHORITIES} {$IFNDEF CLR} SECURITY_MAX_SID_SIZE = SizeOf(SID) - SizeOf(DWORD) + (SID_MAX_SUB_AUTHORITIES * SizeOf(DWORD)); {$EXTERNALSYM SECURITY_MAX_SID_SIZE} {$ENDIF ~CLR} {$IFNDEF FPC} SidTypeUser = 1; {$EXTERNALSYM SidTypeUser} SidTypeGroup = 2; {$EXTERNALSYM SidTypeGroup} SidTypeDomain = 3; {$EXTERNALSYM SidTypeDomain} SidTypeAlias = 4; {$EXTERNALSYM SidTypeAlias} SidTypeWellKnownGroup = 5; {$EXTERNALSYM SidTypeWellKnownGroup} SidTypeDeletedAccount = 6; {$EXTERNALSYM SidTypeDeletedAccount} SidTypeInvalid = 7; {$EXTERNALSYM SidTypeInvalid} SidTypeUnknown = 8; {$EXTERNALSYM SidTypeUnknown} SidTypeComputer = 9; {$EXTERNALSYM SidTypeComputer} {$ENDIF ~FPC} type _SID_NAME_USE = DWORD; {$EXTERNALSYM _SID_NAME_USE} // SID_NAME_USE = _SID_NAME_USE; // {$EXTERNALSYM SID_NAME_USE} PSID_NAME_USE = ^SID_NAME_USE; {$EXTERNALSYM PSID_NAME_USE} TSidNameUse = SID_NAME_USE; PSidNameUSe = PSID_NAME_USE; PSID_AND_ATTRIBUTES = ^SID_AND_ATTRIBUTES; {$EXTERNALSYM PSID_AND_ATTRIBUTES} _SID_AND_ATTRIBUTES = record Sid: PSID; Attributes: DWORD; end; {$EXTERNALSYM _SID_AND_ATTRIBUTES} SID_AND_ATTRIBUTES = _SID_AND_ATTRIBUTES; {$EXTERNALSYM SID_AND_ATTRIBUTES} TSidAndAttributes = SID_AND_ATTRIBUTES; PSidAndAttributes = PSID_AND_ATTRIBUTES; SID_AND_ATTRIBUTES_ARRAY = array [0..ANYSIZE_ARRAY - 1] of SID_AND_ATTRIBUTES; {$EXTERNALSYM SID_AND_ATTRIBUTES_ARRAY} PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY; {$EXTERNALSYM PSID_AND_ATTRIBUTES_ARRAY} PSidAndAttributesArray = ^TSidAndAttributesArray; TSidAndAttributesArray = SID_AND_ATTRIBUTES_ARRAY; ///////////////////////////////////////////////////////////////////////////// // // // Universal well-known SIDs // // // // Null SID S-1-0-0 // // World S-1-1-0 // // Local S-1-2-0 // // Creator Owner ID S-1-3-0 // // Creator Group ID S-1-3-1 // // Creator Owner Server ID S-1-3-2 // // Creator Group Server ID S-1-3-3 // // // // (Non-unique IDs) S-1-4 // // // ///////////////////////////////////////////////////////////////////////////// const SECURITY_NULL_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 0)); {$EXTERNALSYM SECURITY_NULL_SID_AUTHORITY} SECURITY_WORLD_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 1)); {$EXTERNALSYM SECURITY_WORLD_SID_AUTHORITY} SECURITY_LOCAL_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 2)); {$EXTERNALSYM SECURITY_LOCAL_SID_AUTHORITY} SECURITY_CREATOR_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 3)); {$EXTERNALSYM SECURITY_CREATOR_SID_AUTHORITY} SECURITY_NON_UNIQUE_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 4)); {$EXTERNALSYM SECURITY_NON_UNIQUE_AUTHORITY} SECURITY_RESOURCE_MANAGER_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 9)); {$EXTERNALSYM SECURITY_RESOURCE_MANAGER_AUTHORITY} SECURITY_NULL_RID = ($00000000); {$EXTERNALSYM SECURITY_NULL_RID} SECURITY_WORLD_RID = ($00000000); {$EXTERNALSYM SECURITY_WORLD_RID} SECURITY_LOCAL_RID = ($00000000); {$EXTERNALSYM SECURITY_LOCAL_RID} SECURITY_CREATOR_OWNER_RID = ($00000000); {$EXTERNALSYM SECURITY_CREATOR_OWNER_RID} SECURITY_CREATOR_GROUP_RID = ($00000001); {$EXTERNALSYM SECURITY_CREATOR_GROUP_RID} SECURITY_CREATOR_OWNER_SERVER_RID = ($00000002); {$EXTERNALSYM SECURITY_CREATOR_OWNER_SERVER_RID} SECURITY_CREATOR_GROUP_SERVER_RID = ($00000003); {$EXTERNALSYM SECURITY_CREATOR_GROUP_SERVER_RID} ///////////////////////////////////////////////////////////////////////////// // // // NT well-known SIDs // // // // NT Authority S-1-5 // // Dialup S-1-5-1 // // // // Network S-1-5-2 // // Batch S-1-5-3 // // Interactive S-1-5-4 // // (Logon IDs) S-1-5-5-X-Y // // Service S-1-5-6 // // AnonymousLogon S-1-5-7 (aka null logon session) // // Proxy S-1-5-8 // // Enterprise DC (EDC) S-1-5-9 (aka domain controller account) // // Self S-1-5-10 (self RID) // // Authenticated User S-1-5-11 (Authenticated user somewhere) // // Restricted Code S-1-5-12 (Running restricted code) // // Terminal Server S-1-5-13 (Running on Terminal Server) // // Remote Logon S-1-5-14 (Remote Interactive Logon) // // This Organization S-1-5-15 // // // // Local System S-1-5-18 // // Local Service S-1-5-19 // // Network Service S-1-5-20 // // // // (NT non-unique IDs) S-1-5-0x15-... (NT Domain Sids) // // // // (Built-in domain) S-1-5-0x20 // // // // (Security Package IDs) S-1-5-0x40 // // NTLM Authentication S-1-5-0x40-10 // // SChannel Authentication S-1-5-0x40-14 // // Digest Authentication S-1-5-0x40-21 // // // // Other Organization S-1-5-1000 (>=1000 can not be filtered) // // // // // // NOTE: the relative identifier values (RIDs) determine which security // // boundaries the SID is allowed to cross. Before adding new RIDs, // // a determination needs to be made regarding which range they should // // be added to in order to ensure proper "SID filtering" // // // ///////////////////////////////////////////////////////////////////////////// const SECURITY_NT_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)); {$EXTERNALSYM SECURITY_NT_AUTHORITY} SECURITY_DIALUP_RID = ($00000001); {$EXTERNALSYM SECURITY_DIALUP_RID} SECURITY_NETWORK_RID = ($00000002); {$EXTERNALSYM SECURITY_NETWORK_RID} SECURITY_BATCH_RID = ($00000003); {$EXTERNALSYM SECURITY_BATCH_RID} SECURITY_INTERACTIVE_RID = ($00000004); {$EXTERNALSYM SECURITY_INTERACTIVE_RID} SECURITY_LOGON_IDS_RID = ($00000005); {$EXTERNALSYM SECURITY_LOGON_IDS_RID} SECURITY_LOGON_IDS_RID_COUNT = (3); {$EXTERNALSYM SECURITY_LOGON_IDS_RID_COUNT} SECURITY_SERVICE_RID = ($00000006); {$EXTERNALSYM SECURITY_SERVICE_RID} SECURITY_ANONYMOUS_LOGON_RID = ($00000007); {$EXTERNALSYM SECURITY_ANONYMOUS_LOGON_RID} SECURITY_PROXY_RID = ($00000008); {$EXTERNALSYM SECURITY_PROXY_RID} SECURITY_ENTERPRISE_CONTROLLERS_RID = ($00000009); {$EXTERNALSYM SECURITY_ENTERPRISE_CONTROLLERS_RID} SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID; {$EXTERNALSYM SECURITY_SERVER_LOGON_RID} SECURITY_PRINCIPAL_SELF_RID = ($0000000A); {$EXTERNALSYM SECURITY_PRINCIPAL_SELF_RID} SECURITY_AUTHENTICATED_USER_RID = ($0000000B); {$EXTERNALSYM SECURITY_AUTHENTICATED_USER_RID} SECURITY_RESTRICTED_CODE_RID = ($0000000C); {$EXTERNALSYM SECURITY_RESTRICTED_CODE_RID} SECURITY_TERMINAL_SERVER_RID = ($0000000D); {$EXTERNALSYM SECURITY_TERMINAL_SERVER_RID} SECURITY_REMOTE_LOGON_RID = ($0000000E); {$EXTERNALSYM SECURITY_REMOTE_LOGON_RID} SECURITY_THIS_ORGANIZATION_RID = ($0000000F); {$EXTERNALSYM SECURITY_THIS_ORGANIZATION_RID} SECURITY_LOCAL_SYSTEM_RID = ($00000012); {$EXTERNALSYM SECURITY_LOCAL_SYSTEM_RID} SECURITY_LOCAL_SERVICE_RID = ($00000013); {$EXTERNALSYM SECURITY_LOCAL_SERVICE_RID} SECURITY_NETWORK_SERVICE_RID = ($00000014); {$EXTERNALSYM SECURITY_NETWORK_SERVICE_RID} SECURITY_NT_NON_UNIQUE = ($00000015); {$EXTERNALSYM SECURITY_NT_NON_UNIQUE} SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = (3); {$EXTERNALSYM SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT} SECURITY_BUILTIN_DOMAIN_RID = ($00000020); {$EXTERNALSYM SECURITY_BUILTIN_DOMAIN_RID} SECURITY_PACKAGE_BASE_RID = ($00000040); {$EXTERNALSYM SECURITY_PACKAGE_BASE_RID} SECURITY_PACKAGE_RID_COUNT = (2); {$EXTERNALSYM SECURITY_PACKAGE_RID_COUNT} SECURITY_PACKAGE_NTLM_RID = ($0000000A); {$EXTERNALSYM SECURITY_PACKAGE_NTLM_RID} SECURITY_PACKAGE_SCHANNEL_RID = ($0000000E); {$EXTERNALSYM SECURITY_PACKAGE_SCHANNEL_RID} SECURITY_PACKAGE_DIGEST_RID = ($00000015); {$EXTERNALSYM SECURITY_PACKAGE_DIGEST_RID} SECURITY_MAX_ALWAYS_FILTERED = ($000003E7); {$EXTERNALSYM SECURITY_MAX_ALWAYS_FILTERED} SECURITY_MIN_NEVER_FILTERED = ($000003E8); {$EXTERNALSYM SECURITY_MIN_NEVER_FILTERED} SECURITY_OTHER_ORGANIZATION_RID = ($000003E8); {$EXTERNALSYM SECURITY_OTHER_ORGANIZATION_RID} ///////////////////////////////////////////////////////////////////////////// // // // well-known domain relative sub-authority values (RIDs)... // // // ///////////////////////////////////////////////////////////////////////////// // Well-known users ... FOREST_USER_RID_MAX = ($000001F3); {$EXTERNALSYM FOREST_USER_RID_MAX} DOMAIN_USER_RID_ADMIN = ($000001F4); {$EXTERNALSYM DOMAIN_USER_RID_ADMIN} DOMAIN_USER_RID_GUEST = ($000001F5); {$EXTERNALSYM DOMAIN_USER_RID_GUEST} DOMAIN_USER_RID_KRBTGT = ($000001F6); {$EXTERNALSYM DOMAIN_USER_RID_KRBTGT} DOMAIN_USER_RID_MAX = ($000003E7); {$EXTERNALSYM DOMAIN_USER_RID_MAX} // well-known groups ... DOMAIN_GROUP_RID_ADMINS = ($00000200); {$EXTERNALSYM DOMAIN_GROUP_RID_ADMINS} DOMAIN_GROUP_RID_USERS = ($00000201); {$EXTERNALSYM DOMAIN_GROUP_RID_USERS} DOMAIN_GROUP_RID_GUESTS = ($00000202); {$EXTERNALSYM DOMAIN_GROUP_RID_GUESTS} DOMAIN_GROUP_RID_COMPUTERS = ($00000203); {$EXTERNALSYM DOMAIN_GROUP_RID_COMPUTERS} DOMAIN_GROUP_RID_CONTROLLERS = ($00000204); {$EXTERNALSYM DOMAIN_GROUP_RID_CONTROLLERS} DOMAIN_GROUP_RID_CERT_ADMINS = ($00000205); {$EXTERNALSYM DOMAIN_GROUP_RID_CERT_ADMINS} DOMAIN_GROUP_RID_SCHEMA_ADMINS = ($00000206); {$EXTERNALSYM DOMAIN_GROUP_RID_SCHEMA_ADMINS} DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = ($00000207); {$EXTERNALSYM DOMAIN_GROUP_RID_ENTERPRISE_ADMINS} DOMAIN_GROUP_RID_POLICY_ADMINS = ($00000208); {$EXTERNALSYM DOMAIN_GROUP_RID_POLICY_ADMINS} // well-known aliases ... DOMAIN_ALIAS_RID_ADMINS = ($00000220); {$EXTERNALSYM DOMAIN_ALIAS_RID_ADMINS} DOMAIN_ALIAS_RID_USERS = ($00000221); {$EXTERNALSYM DOMAIN_ALIAS_RID_USERS} DOMAIN_ALIAS_RID_GUESTS = ($00000222); {$EXTERNALSYM DOMAIN_ALIAS_RID_GUESTS} DOMAIN_ALIAS_RID_POWER_USERS = ($00000223); {$EXTERNALSYM DOMAIN_ALIAS_RID_POWER_USERS} DOMAIN_ALIAS_RID_ACCOUNT_OPS = ($00000224); {$EXTERNALSYM DOMAIN_ALIAS_RID_ACCOUNT_OPS} DOMAIN_ALIAS_RID_SYSTEM_OPS = ($00000225); {$EXTERNALSYM DOMAIN_ALIAS_RID_SYSTEM_OPS} DOMAIN_ALIAS_RID_PRINT_OPS = ($00000226); {$EXTERNALSYM DOMAIN_ALIAS_RID_PRINT_OPS} DOMAIN_ALIAS_RID_BACKUP_OPS = ($00000227); {$EXTERNALSYM DOMAIN_ALIAS_RID_BACKUP_OPS} DOMAIN_ALIAS_RID_REPLICATOR = ($00000228); {$EXTERNALSYM DOMAIN_ALIAS_RID_REPLICATOR} DOMAIN_ALIAS_RID_RAS_SERVERS = ($00000229); {$EXTERNALSYM DOMAIN_ALIAS_RID_RAS_SERVERS} DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = ($0000022A); {$EXTERNALSYM DOMAIN_ALIAS_RID_PREW2KCOMPACCESS} DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = ($0000022B); {$EXTERNALSYM DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS} DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = ($0000022C); {$EXTERNALSYM DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS} DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = ($0000022D); {$EXTERNALSYM DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS} DOMAIN_ALIAS_RID_MONITORING_USERS = ($0000022E); {$EXTERNALSYM DOMAIN_ALIAS_RID_MONITORING_USERS} DOMAIN_ALIAS_RID_LOGGING_USERS = ($0000022F); {$EXTERNALSYM DOMAIN_ALIAS_RID_LOGGING_USERS} DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = ($00000230); {$EXTERNALSYM DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS} DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = ($00000231); {$EXTERNALSYM DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS} // line 2495 //////////////////////////////////////////////////////////////////////// // // // NT Defined Privileges // // // //////////////////////////////////////////////////////////////////////// const SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege'; {$EXTERNALSYM SE_CREATE_TOKEN_NAME} SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege'; {$EXTERNALSYM SE_ASSIGNPRIMARYTOKEN_NAME} SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege'; {$EXTERNALSYM SE_LOCK_MEMORY_NAME} SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege'; {$EXTERNALSYM SE_INCREASE_QUOTA_NAME} SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege'; {$EXTERNALSYM SE_UNSOLICITED_INPUT_NAME} SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege'; {$EXTERNALSYM SE_MACHINE_ACCOUNT_NAME} SE_TCB_NAME = 'SeTcbPrivilege'; {$EXTERNALSYM SE_TCB_NAME} SE_SECURITY_NAME = 'SeSecurityPrivilege'; {$EXTERNALSYM SE_SECURITY_NAME} SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege'; {$EXTERNALSYM SE_TAKE_OWNERSHIP_NAME} SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege'; {$EXTERNALSYM SE_LOAD_DRIVER_NAME} SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege'; {$EXTERNALSYM SE_SYSTEM_PROFILE_NAME} SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege'; {$EXTERNALSYM SE_SYSTEMTIME_NAME} SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege'; {$EXTERNALSYM SE_PROF_SINGLE_PROCESS_NAME} SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege'; {$EXTERNALSYM SE_INC_BASE_PRIORITY_NAME} SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege'; {$EXTERNALSYM SE_CREATE_PAGEFILE_NAME} SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege'; {$EXTERNALSYM SE_CREATE_PERMANENT_NAME} SE_BACKUP_NAME = 'SeBackupPrivilege'; {$EXTERNALSYM SE_BACKUP_NAME} SE_RESTORE_NAME = 'SeRestorePrivilege'; {$EXTERNALSYM SE_RESTORE_NAME} SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; {$EXTERNALSYM SE_SHUTDOWN_NAME} SE_DEBUG_NAME = 'SeDebugPrivilege'; {$EXTERNALSYM SE_DEBUG_NAME} SE_AUDIT_NAME = 'SeAuditPrivilege'; {$EXTERNALSYM SE_AUDIT_NAME} SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege'; {$EXTERNALSYM SE_SYSTEM_ENVIRONMENT_NAME} SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege'; {$EXTERNALSYM SE_CHANGE_NOTIFY_NAME} SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege'; {$EXTERNALSYM SE_REMOTE_SHUTDOWN_NAME} SE_UNDOCK_NAME = 'SeUndockPrivilege'; {$EXTERNALSYM SE_UNDOCK_NAME} SE_SYNC_AGENT_NAME = 'SeSyncAgentPrivilege'; {$EXTERNALSYM SE_SYNC_AGENT_NAME} SE_ENABLE_DELEGATION_NAME = 'SeEnableDelegationPrivilege'; {$EXTERNALSYM SE_ENABLE_DELEGATION_NAME} SE_MANAGE_VOLUME_NAME = 'SeManageVolumePrivilege'; {$EXTERNALSYM SE_MANAGE_VOLUME_NAME} SE_IMPERSONATE_NAME = 'SeImpersonatePrivilege'; {$EXTERNALSYM SE_IMPERSONATE_NAME} SE_CREATE_GLOBAL_NAME = 'SeCreateGlobalPrivilege'; {$EXTERNALSYM SE_CREATE_GLOBAL_NAME} // line 2686 // // Token information class structures // type PTOKEN_USER = ^TOKEN_USER; {$EXTERNALSYM PTOKEN_USER} _TOKEN_USER = record User: SID_AND_ATTRIBUTES; end; {$EXTERNALSYM _TOKEN_USER} TOKEN_USER = _TOKEN_USER; {$EXTERNALSYM TOKEN_USER} TTokenUser = TOKEN_USER; PTokenUser = PTOKEN_USER; // line 3858 // // Define access rights to files and directories // // // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these // constants *MUST* always be in sync. // The values are redefined in devioctl.h because they must be available to // both DOS and NT. // const FILE_READ_DATA = ($0001); // file & pipe {$EXTERNALSYM FILE_READ_DATA} FILE_LIST_DIRECTORY = ($0001); // directory {$EXTERNALSYM FILE_LIST_DIRECTORY} FILE_WRITE_DATA = ($0002); // file & pipe {$EXTERNALSYM FILE_WRITE_DATA} FILE_ADD_FILE = ($0002); // directory {$EXTERNALSYM FILE_ADD_FILE} FILE_APPEND_DATA = ($0004); // file {$EXTERNALSYM FILE_APPEND_DATA} FILE_ADD_SUBDIRECTORY = ($0004); // directory {$EXTERNALSYM FILE_ADD_SUBDIRECTORY} FILE_CREATE_PIPE_INSTANCE = ($0004); // named pipe {$EXTERNALSYM FILE_CREATE_PIPE_INSTANCE} FILE_READ_EA = ($0008); // file & directory {$EXTERNALSYM FILE_READ_EA} FILE_WRITE_EA = ($0010); // file & directory {$EXTERNALSYM FILE_WRITE_EA} FILE_EXECUTE = ($0020); // file {$EXTERNALSYM FILE_EXECUTE} FILE_TRAVERSE = ($0020); // directory {$EXTERNALSYM FILE_TRAVERSE} FILE_DELETE_CHILD = ($0040); // directory {$EXTERNALSYM FILE_DELETE_CHILD} FILE_READ_ATTRIBUTES = ($0080); // all {$EXTERNALSYM FILE_READ_ATTRIBUTES} FILE_WRITE_ATTRIBUTES = ($0100); // all {$EXTERNALSYM FILE_WRITE_ATTRIBUTES} FILE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $1FF); {$EXTERNALSYM FILE_ALL_ACCESS} FILE_GENERIC_READ = (STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE); {$EXTERNALSYM FILE_GENERIC_READ} FILE_GENERIC_WRITE = (STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE); {$EXTERNALSYM FILE_GENERIC_WRITE} FILE_GENERIC_EXECUTE = (STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE); {$EXTERNALSYM FILE_GENERIC_EXECUTE} FILE_SHARE_READ = $00000001; {$EXTERNALSYM FILE_SHARE_READ} FILE_SHARE_WRITE = $00000002; {$EXTERNALSYM FILE_SHARE_WRITE} FILE_SHARE_DELETE = $00000004; {$EXTERNALSYM FILE_SHARE_DELETE} FILE_ATTRIBUTE_READONLY = $00000001; {$EXTERNALSYM FILE_ATTRIBUTE_READONLY} FILE_ATTRIBUTE_HIDDEN = $00000002; {$EXTERNALSYM FILE_ATTRIBUTE_HIDDEN} FILE_ATTRIBUTE_SYSTEM = $00000004; {$EXTERNALSYM FILE_ATTRIBUTE_SYSTEM} FILE_ATTRIBUTE_DIRECTORY = $00000010; {$EXTERNALSYM FILE_ATTRIBUTE_DIRECTORY} FILE_ATTRIBUTE_ARCHIVE = $00000020; {$EXTERNALSYM FILE_ATTRIBUTE_ARCHIVE} FILE_ATTRIBUTE_DEVICE = $00000040; {$EXTERNALSYM FILE_ATTRIBUTE_DEVICE} FILE_ATTRIBUTE_NORMAL = $00000080; {$EXTERNALSYM FILE_ATTRIBUTE_NORMAL} FILE_ATTRIBUTE_TEMPORARY = $00000100; {$EXTERNALSYM FILE_ATTRIBUTE_TEMPORARY} FILE_ATTRIBUTE_SPARSE_FILE = $00000200; {$EXTERNALSYM FILE_ATTRIBUTE_SPARSE_FILE} FILE_ATTRIBUTE_REPARSE_POINT = $00000400; {$EXTERNALSYM FILE_ATTRIBUTE_REPARSE_POINT} FILE_ATTRIBUTE_COMPRESSED = $00000800; {$EXTERNALSYM FILE_ATTRIBUTE_COMPRESSED} FILE_ATTRIBUTE_OFFLINE = $00001000; {$EXTERNALSYM FILE_ATTRIBUTE_OFFLINE} FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000; {$EXTERNALSYM FILE_ATTRIBUTE_NOT_CONTENT_INDEXED} FILE_ATTRIBUTE_ENCRYPTED = $00004000; {$EXTERNALSYM FILE_ATTRIBUTE_ENCRYPTED} FILE_NOTIFY_CHANGE_FILE_NAME = $00000001; {$EXTERNALSYM FILE_NOTIFY_CHANGE_FILE_NAME} FILE_NOTIFY_CHANGE_DIR_NAME = $00000002; {$EXTERNALSYM FILE_NOTIFY_CHANGE_DIR_NAME} FILE_NOTIFY_CHANGE_ATTRIBUTES = $00000004; {$EXTERNALSYM FILE_NOTIFY_CHANGE_ATTRIBUTES} FILE_NOTIFY_CHANGE_SIZE = $00000008; {$EXTERNALSYM FILE_NOTIFY_CHANGE_SIZE} FILE_NOTIFY_CHANGE_LAST_WRITE = $00000010; {$EXTERNALSYM FILE_NOTIFY_CHANGE_LAST_WRITE} FILE_NOTIFY_CHANGE_LAST_ACCESS = $00000020; {$EXTERNALSYM FILE_NOTIFY_CHANGE_LAST_ACCESS} FILE_NOTIFY_CHANGE_CREATION = $00000040; {$EXTERNALSYM FILE_NOTIFY_CHANGE_CREATION} FILE_NOTIFY_CHANGE_SECURITY = $00000100; {$EXTERNALSYM FILE_NOTIFY_CHANGE_SECURITY} FILE_ACTION_ADDED = $00000001; {$EXTERNALSYM FILE_ACTION_ADDED} FILE_ACTION_REMOVED = $00000002; {$EXTERNALSYM FILE_ACTION_REMOVED} FILE_ACTION_MODIFIED = $00000003; {$EXTERNALSYM FILE_ACTION_MODIFIED} FILE_ACTION_RENAMED_OLD_NAME = $00000004; {$EXTERNALSYM FILE_ACTION_RENAMED_OLD_NAME} FILE_ACTION_RENAMED_NEW_NAME = $00000005; {$EXTERNALSYM FILE_ACTION_RENAMED_NEW_NAME} MAILSLOT_NO_MESSAGE = DWORD(-1); {$EXTERNALSYM MAILSLOT_NO_MESSAGE} MAILSLOT_WAIT_FOREVER = DWORD(-1); {$EXTERNALSYM MAILSLOT_WAIT_FOREVER} FILE_CASE_SENSITIVE_SEARCH = $00000001; {$EXTERNALSYM FILE_CASE_SENSITIVE_SEARCH} FILE_CASE_PRESERVED_NAMES = $00000002; {$EXTERNALSYM FILE_CASE_PRESERVED_NAMES} FILE_UNICODE_ON_DISK = $00000004; {$EXTERNALSYM FILE_UNICODE_ON_DISK} FILE_PERSISTENT_ACLS = $00000008; {$EXTERNALSYM FILE_PERSISTENT_ACLS} FILE_FILE_COMPRESSION = $00000010; {$EXTERNALSYM FILE_FILE_COMPRESSION} FILE_VOLUME_QUOTAS = $00000020; {$EXTERNALSYM FILE_VOLUME_QUOTAS} FILE_SUPPORTS_SPARSE_FILES = $00000040; {$EXTERNALSYM FILE_SUPPORTS_SPARSE_FILES} FILE_SUPPORTS_REPARSE_POINTS = $00000080; {$EXTERNALSYM FILE_SUPPORTS_REPARSE_POINTS} FILE_SUPPORTS_REMOTE_STORAGE = $00000100; {$EXTERNALSYM FILE_SUPPORTS_REMOTE_STORAGE} FILE_VOLUME_IS_COMPRESSED = $00008000; {$EXTERNALSYM FILE_VOLUME_IS_COMPRESSED} FILE_SUPPORTS_OBJECT_IDS = $00010000; {$EXTERNALSYM FILE_SUPPORTS_OBJECT_IDS} FILE_SUPPORTS_ENCRYPTION = $00020000; {$EXTERNALSYM FILE_SUPPORTS_ENCRYPTION} FILE_NAMED_STREAMS = $00040000; {$EXTERNALSYM FILE_NAMED_STREAMS} FILE_READ_ONLY_VOLUME = $00080000; {$EXTERNALSYM FILE_READ_ONLY_VOLUME} // line 4052 // // The reparse GUID structure is used by all 3rd party layered drivers to // store data in a reparse point. For non-Microsoft tags, The GUID field // cannot be GUID_NULL. // The constraints on reparse tags are defined below. // Microsoft tags can also be used with this format of the reparse point buffer. // type TGenericReparseBuffer = record DataBuffer: array [0..0] of BYTE; end; PREPARSE_GUID_DATA_BUFFER = ^REPARSE_GUID_DATA_BUFFER; {$EXTERNALSYM PREPARSE_GUID_DATA_BUFFER} _REPARSE_GUID_DATA_BUFFER = record ReparseTag: DWORD; ReparseDataLength: WORD; Reserved: WORD; ReparseGuid: TGUID; GenericReparseBuffer: TGenericReparseBuffer; end; {$EXTERNALSYM _REPARSE_GUID_DATA_BUFFER} REPARSE_GUID_DATA_BUFFER = _REPARSE_GUID_DATA_BUFFER; {$EXTERNALSYM REPARSE_GUID_DATA_BUFFER} TReparseGuidDataBuffer = REPARSE_GUID_DATA_BUFFER; PReparseGuidDataBuffer = PREPARSE_GUID_DATA_BUFFER; const REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = 24; {$EXTERNALSYM REPARSE_GUID_DATA_BUFFER_HEADER_SIZE} // // Maximum allowed size of the reparse data. // const MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024; {$EXTERNALSYM MAXIMUM_REPARSE_DATA_BUFFER_SIZE} // // Predefined reparse tags. // These tags need to avoid conflicting with IO_REMOUNT defined in ntos\inc\io.h // IO_REPARSE_TAG_RESERVED_ZERO = (0); {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_ZERO} IO_REPARSE_TAG_RESERVED_ONE = (1); {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_ONE} // // The value of the following constant needs to satisfy the following conditions: // (1) Be at least as large as the largest of the reserved tags. // (2) Be strictly smaller than all the tags in use. // IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE; {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_RANGE} // // The reparse tags are a DWORD. The 32 bits are laid out as follows: // // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 // +-+-+-+-+-----------------------+-------------------------------+ // |M|R|N|R| Reserved bits | Reparse Tag Value | // +-+-+-+-+-----------------------+-------------------------------+ // // M is the Microsoft bit. When set to 1, it denotes a tag owned by Microsoft. // All ISVs must use a tag with a 0 in this position. // Note: If a Microsoft tag is used by non-Microsoft software, the // behavior is not defined. // // R is reserved. Must be zero for non-Microsoft tags. // // N is name surrogate. When set to 1, the file represents another named // entity in the system. // // The M and N bits are OR-able. // The following macros check for the M and N bit values: // // // Macro to determine whether a reparse point tag corresponds to a tag // owned by Microsoft. // function IsReparseTagMicrosoft(Tag: ULONG): Boolean; {$EXTERNALSYM IsReparseTagMicrosoft} // // Macro to determine whether a reparse point tag corresponds to a file // that is to be displayed with the slow icon overlay. // function IsReparseTagHighLatency(Tag: ULONG): Boolean; {$EXTERNALSYM IsReparseTagHighLatency} // // Macro to determine whether a reparse point tag is a name surrogate // function IsReparseTagNameSurrogate(Tag: ULONG): Boolean; {$EXTERNALSYM IsReparseTagNameSurrogate} const IO_REPARSE_TAG_MOUNT_POINT = DWORD($A0000003); {$EXTERNALSYM IO_REPARSE_TAG_MOUNT_POINT} IO_REPARSE_TAG_HSM = DWORD($C0000004); {$EXTERNALSYM IO_REPARSE_TAG_HSM} IO_REPARSE_TAG_SIS = DWORD($80000007); {$EXTERNALSYM IO_REPARSE_TAG_SIS} IO_REPARSE_TAG_DFS = DWORD($8000000A); {$EXTERNALSYM IO_REPARSE_TAG_DFS} IO_REPARSE_TAG_FILTER_MANAGER = DWORD($8000000B); {$EXTERNALSYM IO_REPARSE_TAG_FILTER_MANAGER} IO_COMPLETION_MODIFY_STATE = $0002; {$EXTERNALSYM IO_COMPLETION_MODIFY_STATE} IO_COMPLETION_ALL_ACCESS = DWORD(STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3); {$EXTERNALSYM IO_COMPLETION_ALL_ACCESS} DUPLICATE_CLOSE_SOURCE = $00000001; {$EXTERNALSYM DUPLICATE_CLOSE_SOURCE} DUPLICATE_SAME_ACCESS = $00000002; {$EXTERNALSYM DUPLICATE_SAME_ACCESS} // line 4763 // // File header format. // {$IFNDEF CLR} type PIMAGE_FILE_HEADER = ^IMAGE_FILE_HEADER; {$EXTERNALSYM PIMAGE_FILE_HEADER} _IMAGE_FILE_HEADER = record Machine: WORD; NumberOfSections: WORD; TimeDateStamp: DWORD; PointerToSymbolTable: DWORD; NumberOfSymbols: DWORD; SizeOfOptionalHeader: WORD; Characteristics: WORD; end; {$EXTERNALSYM _IMAGE_FILE_HEADER} IMAGE_FILE_HEADER = _IMAGE_FILE_HEADER; {$EXTERNALSYM IMAGE_FILE_HEADER} TImageFileHeader = IMAGE_FILE_HEADER; PImageFileHeader = PIMAGE_FILE_HEADER; const IMAGE_SIZEOF_FILE_HEADER = 20; {$EXTERNALSYM IMAGE_SIZEOF_FILE_HEADER} IMAGE_FILE_RELOCS_STRIPPED = $0001; // Relocation info stripped from file. {$EXTERNALSYM IMAGE_FILE_RELOCS_STRIPPED} IMAGE_FILE_EXECUTABLE_IMAGE = $0002; // File is executable (i.e. no unresolved externel references). {$EXTERNALSYM IMAGE_FILE_EXECUTABLE_IMAGE} IMAGE_FILE_LINE_NUMS_STRIPPED = $0004; // Line nunbers stripped from file. {$EXTERNALSYM IMAGE_FILE_LINE_NUMS_STRIPPED} IMAGE_FILE_LOCAL_SYMS_STRIPPED = $0008; // Local symbols stripped from file. {$EXTERNALSYM IMAGE_FILE_LOCAL_SYMS_STRIPPED} IMAGE_FILE_AGGRESIVE_WS_TRIM = $0010; // Agressively trim working set {$EXTERNALSYM IMAGE_FILE_AGGRESIVE_WS_TRIM} IMAGE_FILE_LARGE_ADDRESS_AWARE = $0020; // App can handle >2gb addresses {$EXTERNALSYM IMAGE_FILE_LARGE_ADDRESS_AWARE} IMAGE_FILE_BYTES_REVERSED_LO = $0080; // Bytes of machine word are reversed. {$EXTERNALSYM IMAGE_FILE_BYTES_REVERSED_LO} IMAGE_FILE_32BIT_MACHINE = $0100; // 32 bit word machine. {$EXTERNALSYM IMAGE_FILE_32BIT_MACHINE} IMAGE_FILE_DEBUG_STRIPPED = $0200; // Debugging info stripped from file in .DBG file {$EXTERNALSYM IMAGE_FILE_DEBUG_STRIPPED} IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400; // If Image is on removable media, copy and run from the swap file. {$EXTERNALSYM IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP} IMAGE_FILE_NET_RUN_FROM_SWAP = $0800; // If Image is on Net, copy and run from the swap file. {$EXTERNALSYM IMAGE_FILE_NET_RUN_FROM_SWAP} IMAGE_FILE_SYSTEM = $1000; // System File. {$EXTERNALSYM IMAGE_FILE_SYSTEM} IMAGE_FILE_DLL = $2000; // File is a DLL. {$EXTERNALSYM IMAGE_FILE_DLL} IMAGE_FILE_UP_SYSTEM_ONLY = $4000; // File should only be run on a UP machine {$EXTERNALSYM IMAGE_FILE_UP_SYSTEM_ONLY} IMAGE_FILE_BYTES_REVERSED_HI = $8000; // Bytes of machine word are reversed. {$EXTERNALSYM IMAGE_FILE_BYTES_REVERSED_HI} IMAGE_FILE_MACHINE_UNKNOWN = 0; {$EXTERNALSYM IMAGE_FILE_MACHINE_UNKNOWN} IMAGE_FILE_MACHINE_I386 = $014c; // Intel 386. {$EXTERNALSYM IMAGE_FILE_MACHINE_I386} IMAGE_FILE_MACHINE_R3000 = $0162; // MIPS little-endian, 0x160 big-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_R3000} IMAGE_FILE_MACHINE_R4000 = $0166; // MIPS little-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_R4000} IMAGE_FILE_MACHINE_R10000 = $0168; // MIPS little-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_R10000} IMAGE_FILE_MACHINE_WCEMIPSV2 = $0169; // MIPS little-endian WCE v2 {$EXTERNALSYM IMAGE_FILE_MACHINE_WCEMIPSV2} IMAGE_FILE_MACHINE_ALPHA = $0184; // Alpha_AXP {$EXTERNALSYM IMAGE_FILE_MACHINE_ALPHA} IMAGE_FILE_MACHINE_SH3 = $01a2; // SH3 little-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3} IMAGE_FILE_MACHINE_SH3DSP = $01a3; {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3DSP} IMAGE_FILE_MACHINE_SH3E = $01a4; // SH3E little-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3E} IMAGE_FILE_MACHINE_SH4 = $01a6; // SH4 little-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_SH4} IMAGE_FILE_MACHINE_SH5 = $01a8; // SH5 {$EXTERNALSYM IMAGE_FILE_MACHINE_SH5} IMAGE_FILE_MACHINE_ARM = $01c0; // ARM Little-Endian {$EXTERNALSYM IMAGE_FILE_MACHINE_ARM} IMAGE_FILE_MACHINE_THUMB = $01c2; {$EXTERNALSYM IMAGE_FILE_MACHINE_THUMB} IMAGE_FILE_MACHINE_AM33 = $01d3; {$EXTERNALSYM IMAGE_FILE_MACHINE_AM33} IMAGE_FILE_MACHINE_POWERPC = $01F0; // IBM PowerPC Little-Endian {$EXTERNALSYM IMAGE_FILE_MACHINE_POWERPC} IMAGE_FILE_MACHINE_POWERPCFP = $01f1; {$EXTERNALSYM IMAGE_FILE_MACHINE_POWERPCFP} IMAGE_FILE_MACHINE_IA64 = $0200; // Intel 64 {$EXTERNALSYM IMAGE_FILE_MACHINE_IA64} IMAGE_FILE_MACHINE_MIPS16 = $0266; // MIPS {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPS16} IMAGE_FILE_MACHINE_ALPHA64 = $0284; // ALPHA64 {$EXTERNALSYM IMAGE_FILE_MACHINE_ALPHA64} IMAGE_FILE_MACHINE_MIPSFPU = $0366; // MIPS {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPSFPU} IMAGE_FILE_MACHINE_MIPSFPU16 = $0466; // MIPS {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPSFPU16} IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64; {$EXTERNALSYM IMAGE_FILE_MACHINE_AXP64} IMAGE_FILE_MACHINE_TRICORE = $0520; // Infineon {$EXTERNALSYM IMAGE_FILE_MACHINE_TRICORE} IMAGE_FILE_MACHINE_CEF = $0CEF; {$EXTERNALSYM IMAGE_FILE_MACHINE_CEF} IMAGE_FILE_MACHINE_EBC = $0EBC; // EFI Byte Code {$EXTERNALSYM IMAGE_FILE_MACHINE_EBC} IMAGE_FILE_MACHINE_AMD64 = $8664; // AMD64 (K8) {$EXTERNALSYM IMAGE_FILE_MACHINE_AMD64} IMAGE_FILE_MACHINE_M32R = $9041; // M32R little-endian {$EXTERNALSYM IMAGE_FILE_MACHINE_M32R} IMAGE_FILE_MACHINE_CEE = $C0EE; {$EXTERNALSYM IMAGE_FILE_MACHINE_CEE} // // Directory format. // {$IFDEF FPC} type PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY; {$EXTERNALSYM PIMAGE_DATA_DIRECTORY} _IMAGE_DATA_DIRECTORY = record VirtualAddress: DWORD; Size: DWORD; end; {$EXTERNALSYM _IMAGE_DATA_DIRECTORY} IMAGE_DATA_DIRECTORY = _IMAGE_DATA_DIRECTORY; {$EXTERNALSYM IMAGE_DATA_DIRECTORY} TImageDataDirectory = IMAGE_DATA_DIRECTORY; PImageDataDirectory = PIMAGE_DATA_DIRECTORY; {$ENDIF FPC} const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16; {$EXTERNALSYM IMAGE_NUMBEROF_DIRECTORY_ENTRIES} // // Optional header format. // type PIMAGE_OPTIONAL_HEADER32 = ^IMAGE_OPTIONAL_HEADER32; {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER32} {$IFDEF FPC} _IMAGE_OPTIONAL_HEADER = record // // Standard fields. // Magic: Word; MajorLinkerVersion: Byte; MinorLinkerVersion: Byte; SizeOfCode: DWORD; SizeOfInitializedData: DWORD; SizeOfUninitializedData: DWORD; AddressOfEntryPoint: DWORD; BaseOfCode: DWORD; BaseOfData: DWORD; // // NT additional fields. // ImageBase: DWORD; SectionAlignment: DWORD; FileAlignment: DWORD; MajorOperatingSystemVersion: Word; MinorOperatingSystemVersion: Word; MajorImageVersion: Word; MinorImageVersion: Word; MajorSubsystemVersion: Word; MinorSubsystemVersion: Word; Win32VersionValue: DWORD; SizeOfImage: DWORD; SizeOfHeaders: DWORD; CheckSum: DWORD; Subsystem: Word; DllCharacteristics: Word; SizeOfStackReserve: DWORD; SizeOfStackCommit: DWORD; SizeOfHeapReserve: DWORD; SizeOfHeapCommit: DWORD; LoaderFlags: DWORD; NumberOfRvaAndSizes: DWORD; DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY; end; {$EXTERNALSYM _IMAGE_OPTIONAL_HEADER} {$ENDIF FPC} IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER; {$EXTERNALSYM IMAGE_OPTIONAL_HEADER32} TImageOptionalHeader32 = IMAGE_OPTIONAL_HEADER32; PImageOptionalHeader32 = PIMAGE_OPTIONAL_HEADER32; PIMAGE_ROM_OPTIONAL_HEADER = ^IMAGE_ROM_OPTIONAL_HEADER; {$EXTERNALSYM PIMAGE_ROM_OPTIONAL_HEADER} _IMAGE_ROM_OPTIONAL_HEADER = record Magic: Word; MajorLinkerVersion: Byte; MinorLinkerVersion: Byte; SizeOfCode: DWORD; SizeOfInitializedData: DWORD; SizeOfUninitializedData: DWORD; AddressOfEntryPoint: DWORD; BaseOfCode: DWORD; BaseOfData: DWORD; BaseOfBss: DWORD; GprMask: DWORD; CprMask: array [0..3] of DWORD; GpValue: DWORD; end; {$EXTERNALSYM _IMAGE_ROM_OPTIONAL_HEADER} IMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER; {$EXTERNALSYM IMAGE_ROM_OPTIONAL_HEADER} TImageRomOptionalHeader = IMAGE_ROM_OPTIONAL_HEADER; PImageRomOptionalHeader = PIMAGE_ROM_OPTIONAL_HEADER; PIMAGE_OPTIONAL_HEADER64 = ^IMAGE_OPTIONAL_HEADER64; {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER64} _IMAGE_OPTIONAL_HEADER64 = record Magic: Word; MajorLinkerVersion: Byte; MinorLinkerVersion: Byte; SizeOfCode: DWORD; SizeOfInitializedData: DWORD; SizeOfUninitializedData: DWORD; AddressOfEntryPoint: DWORD; BaseOfCode: DWORD; ImageBase: Int64; SectionAlignment: DWORD; FileAlignment: DWORD; MajorOperatingSystemVersion: Word; MinorOperatingSystemVersion: Word; MajorImageVersion: Word; MinorImageVersion: Word; MajorSubsystemVersion: Word; MinorSubsystemVersion: Word; Win32VersionValue: DWORD; SizeOfImage: DWORD; SizeOfHeaders: DWORD; CheckSum: DWORD; Subsystem: Word; DllCharacteristics: Word; SizeOfStackReserve: Int64; SizeOfStackCommit: Int64; SizeOfHeapReserve: Int64; SizeOfHeapCommit: Int64; LoaderFlags: DWORD; NumberOfRvaAndSizes: DWORD; DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY; end; {$EXTERNALSYM _IMAGE_OPTIONAL_HEADER64} IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64; {$EXTERNALSYM IMAGE_OPTIONAL_HEADER64} TImageOptionalHeader64 = IMAGE_OPTIONAL_HEADER64; PImageOptionalHeader64 = PIMAGE_OPTIONAL_HEADER64; const IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56; {$EXTERNALSYM IMAGE_SIZEOF_ROM_OPTIONAL_HEADER} IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28; {$EXTERNALSYM IMAGE_SIZEOF_STD_OPTIONAL_HEADER} IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224; {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL32_HEADER} IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240; {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL64_HEADER} IMAGE_NT_OPTIONAL_HDR32_MAGIC = $10b; {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR32_MAGIC} IMAGE_NT_OPTIONAL_HDR64_MAGIC = $20b; {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR64_MAGIC} IMAGE_ROM_OPTIONAL_HDR_MAGIC = $107; {$EXTERNALSYM IMAGE_ROM_OPTIONAL_HDR_MAGIC} (* type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32; {$EXTERNALSYM IMAGE_OPTIONAL_HEADER} PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32; {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER} *) const IMAGE_SIZEOF_NT_OPTIONAL_HEADER = IMAGE_SIZEOF_NT_OPTIONAL32_HEADER; {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL_HEADER} IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR_MAGIC} type PIMAGE_NT_HEADERS64 = ^IMAGE_NT_HEADERS64; {$EXTERNALSYM PIMAGE_NT_HEADERS64} _IMAGE_NT_HEADERS64 = record Signature: DWORD; FileHeader: IMAGE_FILE_HEADER; OptionalHeader: IMAGE_OPTIONAL_HEADER64; end; {$EXTERNALSYM _IMAGE_NT_HEADERS64} IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64; {$EXTERNALSYM IMAGE_NT_HEADERS64} TImageNtHeaders64 = IMAGE_NT_HEADERS64; PImageNtHeaders64 = PIMAGE_NT_HEADERS64; PIMAGE_NT_HEADERS32 = ^IMAGE_NT_HEADERS32; {$EXTERNALSYM PIMAGE_NT_HEADERS32} _IMAGE_NT_HEADERS = record Signature: DWORD; FileHeader: IMAGE_FILE_HEADER; OptionalHeader: IMAGE_OPTIONAL_HEADER32; end; {$EXTERNALSYM _IMAGE_NT_HEADERS} IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS; {$EXTERNALSYM IMAGE_NT_HEADERS32} TImageNtHeaders32 = IMAGE_NT_HEADERS32; PImageNtHeaders32 = PIMAGE_NT_HEADERS32; {$IFDEF FPC} PIMAGE_ROM_HEADERS = ^IMAGE_ROM_HEADERS; {$EXTERNALSYM PIMAGE_ROM_HEADERS} _IMAGE_ROM_HEADERS = record FileHeader: IMAGE_FILE_HEADER; OptionalHeader: IMAGE_ROM_OPTIONAL_HEADER; end; {$EXTERNALSYM _IMAGE_ROM_HEADERS} IMAGE_ROM_HEADERS = _IMAGE_ROM_HEADERS; {$EXTERNALSYM IMAGE_ROM_HEADERS} TImageRomHeaders = IMAGE_ROM_HEADERS; PImageRomHeaders = PIMAGE_ROM_HEADERS; IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32; {$EXTERNALSYM IMAGE_NT_HEADERS} PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32; {$EXTERNALSYM PIMAGE_NT_HEADERS} PImageNtHeaders = PIMAGE_NT_HEADERS; {$ENDIF FPC} // Subsystem Values const IMAGE_SUBSYSTEM_UNKNOWN = 0; // Unknown subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_UNKNOWN} IMAGE_SUBSYSTEM_NATIVE = 1; // Image doesn't require a subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_NATIVE} IMAGE_SUBSYSTEM_WINDOWS_GUI = 2; // Image runs in the Windows GUI subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_GUI} IMAGE_SUBSYSTEM_WINDOWS_CUI = 3; // Image runs in the Windows character subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_CUI} IMAGE_SUBSYSTEM_OS2_CUI = 5; // image runs in the OS/2 character subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_OS2_CUI} IMAGE_SUBSYSTEM_POSIX_CUI = 7; // image runs in the Posix character subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_POSIX_CUI} IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8; // image is a native Win9x driver. {$EXTERNALSYM IMAGE_SUBSYSTEM_NATIVE_WINDOWS} IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9; // Image runs in the Windows CE subsystem. {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_CE_GUI} IMAGE_SUBSYSTEM_EFI_APPLICATION = 10; {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_APPLICATION} IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11; {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER} IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12; {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER} IMAGE_SUBSYSTEM_EFI_ROM = 13; {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_ROM} IMAGE_SUBSYSTEM_XBOX = 14; {$EXTERNALSYM IMAGE_SUBSYSTEM_XBOX} // DllCharacteristics Entries // IMAGE_LIBRARY_PROCESS_INIT 0x0001 // Reserved. // IMAGE_LIBRARY_PROCESS_TERM 0x0002 // Reserved. // IMAGE_LIBRARY_THREAD_INIT 0x0004 // Reserved. // IMAGE_LIBRARY_THREAD_TERM 0x0008 // Reserved. IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = $0200; // Image understands isolation and doesn't want it {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_ISOLATION} IMAGE_DLLCHARACTERISTICS_NO_SEH = $0400; // Image does not use SEH. No SE handler may reside in this image {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_SEH} IMAGE_DLLCHARACTERISTICS_NO_BIND = $0800; // Do not bind this image. {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_BIND} // 0x1000 // Reserved. IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = $2000; // Driver uses WDM model {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_WDM_DRIVER} // 0x4000 // Reserved. IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000; {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE} // Directory Entries IMAGE_DIRECTORY_ENTRY_EXPORT = 0; // Export Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_EXPORT} IMAGE_DIRECTORY_ENTRY_IMPORT = 1; // Import Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_IMPORT} IMAGE_DIRECTORY_ENTRY_RESOURCE = 2; // Resource Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_RESOURCE} IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3; // Exception Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_EXCEPTION} IMAGE_DIRECTORY_ENTRY_SECURITY = 4; // Security Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_SECURITY} IMAGE_DIRECTORY_ENTRY_BASERELOC = 5; // Base Relocation Table {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_BASERELOC} IMAGE_DIRECTORY_ENTRY_DEBUG = 6; // Debug Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_DEBUG} // IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 usage) IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7; // Architecture Specific Data {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_ARCHITECTURE} IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8; // RVA of GP {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_GLOBALPTR} IMAGE_DIRECTORY_ENTRY_TLS = 9; // TLS Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_TLS} IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10; // Load Configuration Directory {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG} IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11; // Bound Import Directory in headers {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT} IMAGE_DIRECTORY_ENTRY_IAT = 12; // Import Address Table {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_IAT} IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13; // Delay Load Import Descriptors {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT} IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14; // COM Runtime descriptor {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR} // // Non-COFF Object file header // type PAnonObjectHeader = ^ANON_OBJECT_HEADER; ANON_OBJECT_HEADER = record Sig1: Word; // Must be IMAGE_FILE_MACHINE_UNKNOWN Sig2: Word; // Must be 0xffff Version: Word; // >= 1 (implies the CLSID field is present) Machine: Word; TimeDateStamp: DWORD; ClassID: TCLSID; // Used to invoke CoCreateInstance SizeOfData: DWORD; // Size of data that follows the header end; {$EXTERNALSYM ANON_OBJECT_HEADER} TAnonObjectHeader = ANON_OBJECT_HEADER; // // Section header format. // const IMAGE_SIZEOF_SHORT_NAME = 8; {$EXTERNALSYM IMAGE_SIZEOF_SHORT_NAME} type {$IFDEF FPC} TImgSecHdrMisc = record case Integer of 0: (PhysicalAddress: DWORD); 1: (VirtualSize: DWORD); end; PIMAGE_SECTION_HEADER = ^IMAGE_SECTION_HEADER; {$EXTERNALSYM PIMAGE_SECTION_HEADER} _IMAGE_SECTION_HEADER = record Name: array [0..IMAGE_SIZEOF_SHORT_NAME - 1] of BYTE; Misc: TImgSecHdrMisc; VirtualAddress: DWORD; SizeOfRawData: DWORD; PointerToRawData: DWORD; PointerToRelocations: DWORD; PointerToLinenumbers: DWORD; NumberOfRelocations: WORD; NumberOfLinenumbers: WORD; Characteristics: DWORD; end; {$EXTERNALSYM _IMAGE_SECTION_HEADER} IMAGE_SECTION_HEADER = _IMAGE_SECTION_HEADER; {$EXTERNALSYM IMAGE_SECTION_HEADER} TImageSectionHeader = IMAGE_SECTION_HEADER; PImageSectionHeader = PIMAGE_SECTION_HEADER; {$ENDIF FPC} PPImageSectionHeader = ^PImageSectionHeader; // IMAGE_FIRST_SECTION doesn't need 32/64 versions since the file header is the same either way. function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader; {$EXTERNALSYM IMAGE_FIRST_SECTION} const IMAGE_SIZEOF_SECTION_HEADER = 40; {$EXTERNALSYM IMAGE_SIZEOF_SECTION_HEADER} // // Section characteristics. // // IMAGE_SCN_TYPE_REG 0x00000000 // Reserved. // IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved. // IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved. // IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved. IMAGE_SCN_TYPE_NO_PAD = $00000008; // Reserved. {$EXTERNALSYM IMAGE_SCN_TYPE_NO_PAD} // IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved. IMAGE_SCN_CNT_CODE = $00000020; // Section contains code. {$EXTERNALSYM IMAGE_SCN_CNT_CODE} IMAGE_SCN_CNT_INITIALIZED_DATA = $00000040; // Section contains initialized data. {$EXTERNALSYM IMAGE_SCN_CNT_INITIALIZED_DATA} IMAGE_SCN_CNT_UNINITIALIZED_DATA = $00000080; // Section contains uninitialized data. {$EXTERNALSYM IMAGE_SCN_CNT_UNINITIALIZED_DATA} IMAGE_SCN_LNK_OTHER = $00000100; // Reserved. {$EXTERNALSYM IMAGE_SCN_LNK_OTHER} IMAGE_SCN_LNK_INFO = $00000200; // Section contains comments or some other type of information. {$EXTERNALSYM IMAGE_SCN_LNK_INFO} // IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved. IMAGE_SCN_LNK_REMOVE = $00000800; // Section contents will not become part of image. {$EXTERNALSYM IMAGE_SCN_LNK_REMOVE} IMAGE_SCN_LNK_COMDAT = $00001000; // Section contents comdat. {$EXTERNALSYM IMAGE_SCN_LNK_COMDAT} // 0x00002000 // Reserved. // IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000 IMAGE_SCN_NO_DEFER_SPEC_EXC = $00004000; // Reset speculative exceptions handling bits in the TLB entries for this section. {$EXTERNALSYM IMAGE_SCN_NO_DEFER_SPEC_EXC} IMAGE_SCN_GPREL = $00008000; // Section content can be accessed relative to GP {$EXTERNALSYM IMAGE_SCN_GPREL} IMAGE_SCN_MEM_FARDATA = $00008000; {$EXTERNALSYM IMAGE_SCN_MEM_FARDATA} // IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000 IMAGE_SCN_MEM_PURGEABLE = $00020000; {$EXTERNALSYM IMAGE_SCN_MEM_PURGEABLE} IMAGE_SCN_MEM_16BIT = $00020000; {$EXTERNALSYM IMAGE_SCN_MEM_16BIT} IMAGE_SCN_MEM_LOCKED = $00040000; {$EXTERNALSYM IMAGE_SCN_MEM_LOCKED} IMAGE_SCN_MEM_PRELOAD = $00080000; {$EXTERNALSYM IMAGE_SCN_MEM_PRELOAD} IMAGE_SCN_ALIGN_1BYTES = $00100000; {$EXTERNALSYM IMAGE_SCN_ALIGN_1BYTES} IMAGE_SCN_ALIGN_2BYTES = $00200000; {$EXTERNALSYM IMAGE_SCN_ALIGN_2BYTES} IMAGE_SCN_ALIGN_4BYTES = $00300000; {$EXTERNALSYM IMAGE_SCN_ALIGN_4BYTES} IMAGE_SCN_ALIGN_8BYTES = $00400000; {$EXTERNALSYM IMAGE_SCN_ALIGN_8BYTES} IMAGE_SCN_ALIGN_16BYTES = $00500000; // Default alignment if no others are specified. {$EXTERNALSYM IMAGE_SCN_ALIGN_16BYTES} IMAGE_SCN_ALIGN_32BYTES = $00600000; {$EXTERNALSYM IMAGE_SCN_ALIGN_32BYTES} IMAGE_SCN_ALIGN_64BYTES = $00700000; {$EXTERNALSYM IMAGE_SCN_ALIGN_64BYTES} IMAGE_SCN_ALIGN_128BYTES = $00800000; {$EXTERNALSYM IMAGE_SCN_ALIGN_128BYTES} IMAGE_SCN_ALIGN_256BYTES = $00900000; {$EXTERNALSYM IMAGE_SCN_ALIGN_256BYTES} IMAGE_SCN_ALIGN_512BYTES = $00A00000; {$EXTERNALSYM IMAGE_SCN_ALIGN_512BYTES} IMAGE_SCN_ALIGN_1024BYTES = $00B00000; {$EXTERNALSYM IMAGE_SCN_ALIGN_1024BYTES} IMAGE_SCN_ALIGN_2048BYTES = $00C00000; {$EXTERNALSYM IMAGE_SCN_ALIGN_2048BYTES} IMAGE_SCN_ALIGN_4096BYTES = $00D00000; {$EXTERNALSYM IMAGE_SCN_ALIGN_4096BYTES} IMAGE_SCN_ALIGN_8192BYTES = $00E00000; {$EXTERNALSYM IMAGE_SCN_ALIGN_8192BYTES} // Unused 0x00F00000 IMAGE_SCN_ALIGN_MASK = $00F00000; {$EXTERNALSYM IMAGE_SCN_ALIGN_MASK} IMAGE_SCN_LNK_NRELOC_OVFL = $01000000; // Section contains extended relocations. {$EXTERNALSYM IMAGE_SCN_LNK_NRELOC_OVFL} IMAGE_SCN_MEM_DISCARDABLE = $02000000; // Section can be discarded. {$EXTERNALSYM IMAGE_SCN_MEM_DISCARDABLE} IMAGE_SCN_MEM_NOT_CACHED = $04000000; // Section is not cachable. {$EXTERNALSYM IMAGE_SCN_MEM_NOT_CACHED} IMAGE_SCN_MEM_NOT_PAGED = $08000000; // Section is not pageable. {$EXTERNALSYM IMAGE_SCN_MEM_NOT_PAGED} IMAGE_SCN_MEM_SHARED = $10000000; // Section is shareable. {$EXTERNALSYM IMAGE_SCN_MEM_SHARED} IMAGE_SCN_MEM_EXECUTE = $20000000; // Section is executable. {$EXTERNALSYM IMAGE_SCN_MEM_EXECUTE} IMAGE_SCN_MEM_READ = $40000000; // Section is readable. {$EXTERNALSYM IMAGE_SCN_MEM_READ} IMAGE_SCN_MEM_WRITE = DWORD($80000000); // Section is writeable. {$EXTERNALSYM IMAGE_SCN_MEM_WRITE} // line 6232 // // Line number format. // type TImgLineNoType = record case Integer of 0: (SymbolTableIndex: DWORD); // Symbol table index of function name if Linenumber is 0. 1: (VirtualAddress: DWORD); // Virtual address of line number. end; PIMAGE_LINENUMBER = ^IMAGE_LINENUMBER; {$EXTERNALSYM PIMAGE_LINENUMBER} _IMAGE_LINENUMBER = record Type_: TImgLineNoType; Linenumber: WORD; // Line number. end; {$EXTERNALSYM _IMAGE_LINENUMBER} IMAGE_LINENUMBER = _IMAGE_LINENUMBER; {$EXTERNALSYM IMAGE_LINENUMBER} TImageLineNumber = IMAGE_LINENUMBER; PImageLineNumber = PIMAGE_LINENUMBER; const IMAGE_SIZEOF_LINENUMBER = 6; {$EXTERNALSYM IMAGE_SIZEOF_LINENUMBER} // #include "poppack.h" // Back to 4 byte packing // // Based relocation format. // type PIMAGE_BASE_RELOCATION = ^IMAGE_BASE_RELOCATION; {$EXTERNALSYM PIMAGE_BASE_RELOCATION} _IMAGE_BASE_RELOCATION = record VirtualAddress: DWORD; SizeOfBlock: DWORD; // WORD TypeOffset[1]; end; {$EXTERNALSYM _IMAGE_BASE_RELOCATION} IMAGE_BASE_RELOCATION = _IMAGE_BASE_RELOCATION; {$EXTERNALSYM IMAGE_BASE_RELOCATION} TImageBaseRelocation = IMAGE_BASE_RELOCATION; PImageBaseRelocation = PIMAGE_BASE_RELOCATION; const IMAGE_SIZEOF_BASE_RELOCATION = 8; {$EXTERNALSYM IMAGE_SIZEOF_BASE_RELOCATION} // // Based relocation types. // IMAGE_REL_BASED_ABSOLUTE = 0; {$EXTERNALSYM IMAGE_REL_BASED_ABSOLUTE} IMAGE_REL_BASED_HIGH = 1; {$EXTERNALSYM IMAGE_REL_BASED_HIGH} IMAGE_REL_BASED_LOW = 2; {$EXTERNALSYM IMAGE_REL_BASED_LOW} IMAGE_REL_BASED_HIGHLOW = 3; {$EXTERNALSYM IMAGE_REL_BASED_HIGHLOW} IMAGE_REL_BASED_HIGHADJ = 4; {$EXTERNALSYM IMAGE_REL_BASED_HIGHADJ} IMAGE_REL_BASED_MIPS_JMPADDR = 5; {$EXTERNALSYM IMAGE_REL_BASED_MIPS_JMPADDR} IMAGE_REL_BASED_MIPS_JMPADDR16 = 9; {$EXTERNALSYM IMAGE_REL_BASED_MIPS_JMPADDR16} IMAGE_REL_BASED_IA64_IMM64 = 9; {$EXTERNALSYM IMAGE_REL_BASED_IA64_IMM64} IMAGE_REL_BASED_DIR64 = 10; {$EXTERNALSYM IMAGE_REL_BASED_DIR64} // // Archive format. // IMAGE_ARCHIVE_START_SIZE = 8; {$EXTERNALSYM IMAGE_ARCHIVE_START_SIZE} IMAGE_ARCHIVE_START = '!'#10; {$EXTERNALSYM IMAGE_ARCHIVE_START} IMAGE_ARCHIVE_END = '`'#10; {$EXTERNALSYM IMAGE_ARCHIVE_END} IMAGE_ARCHIVE_PAD = #10; {$EXTERNALSYM IMAGE_ARCHIVE_PAD} IMAGE_ARCHIVE_LINKER_MEMBER = '/ '; {$EXTERNALSYM IMAGE_ARCHIVE_LINKER_MEMBER} IMAGE_ARCHIVE_LONGNAMES_MEMBER = '// '; {$EXTERNALSYM IMAGE_ARCHIVE_LONGNAMES_MEMBER} type PIMAGE_ARCHIVE_MEMBER_HEADER = ^IMAGE_ARCHIVE_MEMBER_HEADER; {$EXTERNALSYM PIMAGE_ARCHIVE_MEMBER_HEADER} _IMAGE_ARCHIVE_MEMBER_HEADER = record Name: array [0..15] of Byte; // File member name - `/' terminated. Date: array [0..11] of Byte; // File member date - decimal. UserID: array [0..5] of Byte; // File member user id - decimal. GroupID: array [0..5] of Byte; // File member group id - decimal. Mode: array [0..7] of Byte; // File member mode - octal. Size: array [0..9] of Byte; // File member size - decimal. EndHeader: array [0..1] of Byte; // String to end header. end; {$EXTERNALSYM _IMAGE_ARCHIVE_MEMBER_HEADER} IMAGE_ARCHIVE_MEMBER_HEADER = _IMAGE_ARCHIVE_MEMBER_HEADER; {$EXTERNALSYM IMAGE_ARCHIVE_MEMBER_HEADER} TImageArchiveMemberHeader = IMAGE_ARCHIVE_MEMBER_HEADER; PImageArchiveMemberHeader = PIMAGE_ARCHIVE_MEMBER_HEADER; const IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60; {$EXTERNALSYM IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR} // line 6346 // // DLL support. // // // Export Format // type PIMAGE_EXPORT_DIRECTORY = ^IMAGE_EXPORT_DIRECTORY; {$EXTERNALSYM PIMAGE_EXPORT_DIRECTORY} _IMAGE_EXPORT_DIRECTORY = record Characteristics: DWORD; TimeDateStamp: DWORD; MajorVersion: Word; MinorVersion: Word; Name: DWORD; Base: DWORD; NumberOfFunctions: DWORD; NumberOfNames: DWORD; AddressOfFunctions: DWORD; // RVA from base of image AddressOfNames: DWORD; // RVA from base of image AddressOfNameOrdinals: DWORD; // RVA from base of image end; {$EXTERNALSYM _IMAGE_EXPORT_DIRECTORY} IMAGE_EXPORT_DIRECTORY = _IMAGE_EXPORT_DIRECTORY; {$EXTERNALSYM IMAGE_EXPORT_DIRECTORY} TImageExportDirectory = IMAGE_EXPORT_DIRECTORY; PImageExportDirectory = PIMAGE_EXPORT_DIRECTORY; // // Import Format // PIMAGE_IMPORT_BY_NAME = ^IMAGE_IMPORT_BY_NAME; {$EXTERNALSYM PIMAGE_IMPORT_BY_NAME} _IMAGE_IMPORT_BY_NAME = record Hint: Word; Name: array [0..0] of AnsiChar; end; {$EXTERNALSYM _IMAGE_IMPORT_BY_NAME} IMAGE_IMPORT_BY_NAME = _IMAGE_IMPORT_BY_NAME; {$EXTERNALSYM IMAGE_IMPORT_BY_NAME} TImageImportByName = IMAGE_IMPORT_BY_NAME; PImageImportByName = PIMAGE_IMPORT_BY_NAME; // #include "pshpack8.h" // Use align 8 for the 64-bit IAT. PIMAGE_THUNK_DATA64 = ^IMAGE_THUNK_DATA64; {$EXTERNALSYM PIMAGE_THUNK_DATA64} _IMAGE_THUNK_DATA64 = record case Integer of 0: (ForwarderString: ULONGLONG); // PBYTE 1: (Function_: ULONGLONG); // PDWORD 2: (Ordinal: ULONGLONG); 3: (AddressOfData: ULONGLONG); // PIMAGE_IMPORT_BY_NAME end; {$EXTERNALSYM _IMAGE_THUNK_DATA64} IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64; {$EXTERNALSYM IMAGE_THUNK_DATA64} TImageThunkData64 = IMAGE_THUNK_DATA64; PImageThunkData64 = PIMAGE_THUNK_DATA64; // #include "poppack.h" // Back to 4 byte packing PIMAGE_THUNK_DATA32 = ^IMAGE_THUNK_DATA32; {$EXTERNALSYM PIMAGE_THUNK_DATA32} _IMAGE_THUNK_DATA32 = record case Integer of 0: (ForwarderString: DWORD); // PBYTE 1: (Function_: DWORD); // PDWORD 2: (Ordinal: DWORD); 3: (AddressOfData: DWORD); // PIMAGE_IMPORT_BY_NAME end; {$EXTERNALSYM _IMAGE_THUNK_DATA32} IMAGE_THUNK_DATA32 = _IMAGE_THUNK_DATA32; {$EXTERNALSYM IMAGE_THUNK_DATA32} TImageThunkData32 = IMAGE_THUNK_DATA32; PImageThunkData32 = PIMAGE_THUNK_DATA32; const IMAGE_ORDINAL_FLAG64 = ULONGLONG($8000000000000000); {$EXTERNALSYM IMAGE_ORDINAL_FLAG64} IMAGE_ORDINAL_FLAG32 = DWORD($80000000); {$EXTERNALSYM IMAGE_ORDINAL_FLAG32} function IMAGE_ORDINAL64(Ordinal: ULONGLONG): ULONGLONG; {$EXTERNALSYM IMAGE_ORDINAL64} function IMAGE_ORDINAL32(Ordinal: DWORD): DWORD; {$EXTERNALSYM IMAGE_ORDINAL32} function IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG): Boolean; {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL64} function IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD): Boolean; {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL32} // // Thread Local Storage // type PIMAGE_TLS_CALLBACK = procedure (DllHandle: Pointer; Reason: DWORD; Reserved: Pointer); stdcall; {$EXTERNALSYM PIMAGE_TLS_CALLBACK} TImageTlsCallback = PIMAGE_TLS_CALLBACK; PIMAGE_TLS_DIRECTORY64 = ^IMAGE_TLS_DIRECTORY64; {$EXTERNALSYM PIMAGE_TLS_DIRECTORY64} _IMAGE_TLS_DIRECTORY64 = record StartAddressOfRawData: ULONGLONG; EndAddressOfRawData: ULONGLONG; AddressOfIndex: ULONGLONG; // PDWORD AddressOfCallBacks: ULONGLONG; // PIMAGE_TLS_CALLBACK *; SizeOfZeroFill: DWORD; Characteristics: DWORD; end; {$EXTERNALSYM _IMAGE_TLS_DIRECTORY64} IMAGE_TLS_DIRECTORY64 = _IMAGE_TLS_DIRECTORY64; {$EXTERNALSYM IMAGE_TLS_DIRECTORY64} TImageTlsDirectory64 = IMAGE_TLS_DIRECTORY64; PImageTlsDirectory64 = PIMAGE_TLS_DIRECTORY64; PIMAGE_TLS_DIRECTORY32 = ^IMAGE_TLS_DIRECTORY32; {$EXTERNALSYM PIMAGE_TLS_DIRECTORY32} _IMAGE_TLS_DIRECTORY32 = record StartAddressOfRawData: DWORD; EndAddressOfRawData: DWORD; AddressOfIndex: DWORD; // PDWORD AddressOfCallBacks: DWORD; // PIMAGE_TLS_CALLBACK * SizeOfZeroFill: DWORD; Characteristics: DWORD; end; {$EXTERNALSYM _IMAGE_TLS_DIRECTORY32} IMAGE_TLS_DIRECTORY32 = _IMAGE_TLS_DIRECTORY32; {$EXTERNALSYM IMAGE_TLS_DIRECTORY32} TImageTlsDirectory32 = IMAGE_TLS_DIRECTORY32; PImageTlsDirectory32 = PIMAGE_TLS_DIRECTORY32; const IMAGE_ORDINAL_FLAG = IMAGE_ORDINAL_FLAG32; {$EXTERNALSYM IMAGE_ORDINAL_FLAG} function IMAGE_ORDINAL(Ordinal: DWORD): DWORD; {$EXTERNALSYM IMAGE_ORDINAL} type IMAGE_THUNK_DATA = IMAGE_THUNK_DATA32; {$EXTERNALSYM IMAGE_THUNK_DATA} PIMAGE_THUNK_DATA = PIMAGE_THUNK_DATA32; {$EXTERNALSYM PIMAGE_THUNK_DATA} TImageThunkData = TImageThunkData32; PImageThunkData = PImageThunkData32; function IMAGE_SNAP_BY_ORDINAL(Ordinal: DWORD): Boolean; {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL} type IMAGE_TLS_DIRECTORY = IMAGE_TLS_DIRECTORY32; {$EXTERNALSYM IMAGE_TLS_DIRECTORY} PIMAGE_TLS_DIRECTORY = PIMAGE_TLS_DIRECTORY32; {$EXTERNALSYM PIMAGE_TLS_DIRECTORY} TImageTlsDirectory = TImageTlsDirectory32; PImageTlsDirectory = PImageTlsDirectory32; TIIDUnion = record case Integer of 0: (Characteristics: DWORD); // 0 for terminating null import descriptor 1: (OriginalFirstThunk: DWORD); // RVA to original unbound IAT (PIMAGE_THUNK_DATA) end; PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR; {$EXTERNALSYM PIMAGE_IMPORT_DESCRIPTOR} _IMAGE_IMPORT_DESCRIPTOR = record Union: TIIDUnion; TimeDateStamp: DWORD; // 0 if not bound, // -1 if bound, and real date\time stamp // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND) // O.W. date/time stamp of DLL bound to (Old BIND) ForwarderChain: DWORD; // -1 if no forwarders Name: DWORD; FirstThunk: DWORD; // RVA to IAT (if bound this IAT has actual addresses) end; {$EXTERNALSYM _IMAGE_IMPORT_DESCRIPTOR} IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR; {$EXTERNALSYM IMAGE_IMPORT_DESCRIPTOR} TImageImportDescriptor = IMAGE_IMPORT_DESCRIPTOR; PImageImportDescriptor = PIMAGE_IMPORT_DESCRIPTOR; // // New format import descriptors pointed to by DataDirectory[ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ] // type PIMAGE_BOUND_IMPORT_DESCRIPTOR = ^IMAGE_BOUND_IMPORT_DESCRIPTOR; {$EXTERNALSYM PIMAGE_BOUND_IMPORT_DESCRIPTOR} _IMAGE_BOUND_IMPORT_DESCRIPTOR = record TimeDateStamp: DWORD; OffsetModuleName: Word; NumberOfModuleForwarderRefs: Word; // Array of zero or more IMAGE_BOUND_FORWARDER_REF follows end; {$EXTERNALSYM _IMAGE_BOUND_IMPORT_DESCRIPTOR} IMAGE_BOUND_IMPORT_DESCRIPTOR = _IMAGE_BOUND_IMPORT_DESCRIPTOR; {$EXTERNALSYM IMAGE_BOUND_IMPORT_DESCRIPTOR} TImageBoundImportDescriptor = IMAGE_BOUND_IMPORT_DESCRIPTOR; PImageBoundImportDescriptor = PIMAGE_BOUND_IMPORT_DESCRIPTOR; PIMAGE_BOUND_FORWARDER_REF = ^IMAGE_BOUND_FORWARDER_REF; {$EXTERNALSYM PIMAGE_BOUND_FORWARDER_REF} _IMAGE_BOUND_FORWARDER_REF = record TimeDateStamp: DWORD; OffsetModuleName: Word; Reserved: Word; end; {$EXTERNALSYM _IMAGE_BOUND_FORWARDER_REF} IMAGE_BOUND_FORWARDER_REF = _IMAGE_BOUND_FORWARDER_REF; {$EXTERNALSYM IMAGE_BOUND_FORWARDER_REF} TImageBoundForwarderRef = IMAGE_BOUND_FORWARDER_REF; PImageBoundForwarderRef = PIMAGE_BOUND_FORWARDER_REF; // // Resource Format. // // // Resource directory consists of two counts, following by a variable length // array of directory entries. The first count is the number of entries at // beginning of the array that have actual names associated with each entry. // The entries are in ascending order, case insensitive strings. The second // count is the number of entries that immediately follow the named entries. // This second count identifies the number of entries that have 16-bit integer // Ids as their name. These entries are also sorted in ascending order. // // This structure allows fast lookup by either name or number, but for any // given resource entry only one form of lookup is supported, not both. // This is consistant with the syntax of the .RC file and the .RES file. // PIMAGE_RESOURCE_DIRECTORY = ^IMAGE_RESOURCE_DIRECTORY; {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY} _IMAGE_RESOURCE_DIRECTORY = record Characteristics: DWORD; TimeDateStamp: DWORD; MajorVersion: Word; MinorVersion: Word; NumberOfNamedEntries: Word; NumberOfIdEntries: Word; // IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; end; {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY} IMAGE_RESOURCE_DIRECTORY = _IMAGE_RESOURCE_DIRECTORY; {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY} TImageResourceDirectory = IMAGE_RESOURCE_DIRECTORY; PImageResourceDirectory = PIMAGE_RESOURCE_DIRECTORY; const IMAGE_RESOURCE_NAME_IS_STRING = DWORD($80000000); {$EXTERNALSYM IMAGE_RESOURCE_NAME_IS_STRING} IMAGE_RESOURCE_DATA_IS_DIRECTORY = DWORD($80000000); {$EXTERNALSYM IMAGE_RESOURCE_DATA_IS_DIRECTORY} // // Each directory contains the 32-bit Name of the entry and an offset, // relative to the beginning of the resource directory of the data associated // with this directory entry. If the name of the entry is an actual text // string instead of an integer Id, then the high order bit of the name field // is set to one and the low order 31-bits are an offset, relative to the // beginning of the resource directory of the string, which is of type // IMAGE_RESOURCE_DIRECTORY_STRING. Otherwise the high bit is clear and the // low-order 16-bits are the integer Id that identify this resource directory // entry. If the directory entry is yet another resource directory (i.e. a // subdirectory), then the high order bit of the offset field will be // set to indicate this. Otherwise the high bit is clear and the offset // field points to a resource data entry. // type PIMAGE_RESOURCE_DIRECTORY_ENTRY = ^IMAGE_RESOURCE_DIRECTORY_ENTRY; {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY_ENTRY} _IMAGE_RESOURCE_DIRECTORY_ENTRY = record case Integer of 0: ( // DWORD NameOffset:31; // DWORD NameIsString:1; NameOffset: DWORD; OffsetToData: DWORD ); 1: ( Name: DWORD; // DWORD OffsetToDirectory:31; // DWORD DataIsDirectory:1; OffsetToDirectory: DWORD; ); 2: ( Id: WORD; ); end; {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY_ENTRY} IMAGE_RESOURCE_DIRECTORY_ENTRY = _IMAGE_RESOURCE_DIRECTORY_ENTRY; {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY_ENTRY} TImageResourceDirectoryEntry = IMAGE_RESOURCE_DIRECTORY_ENTRY; PImageResourceDirectoryEntry = PIMAGE_RESOURCE_DIRECTORY_ENTRY; // // For resource directory entries that have actual string names, the Name // field of the directory entry points to an object of the following type. // All of these string objects are stored together after the last resource // directory entry and before the first resource data object. This minimizes // the impact of these variable length objects on the alignment of the fixed // size directory entry objects. // type PIMAGE_RESOURCE_DIRECTORY_STRING = ^IMAGE_RESOURCE_DIRECTORY_STRING; {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY_STRING} _IMAGE_RESOURCE_DIRECTORY_STRING = record Length: Word; NameString: array [0..0] of CHAR; end; {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY_STRING} IMAGE_RESOURCE_DIRECTORY_STRING = _IMAGE_RESOURCE_DIRECTORY_STRING; {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY_STRING} TImageResourceDirectoryString = IMAGE_RESOURCE_DIRECTORY_STRING; PImageResourceDirectoryString = PIMAGE_RESOURCE_DIRECTORY_STRING; PIMAGE_RESOURCE_DIR_STRING_U = ^IMAGE_RESOURCE_DIR_STRING_U; {$EXTERNALSYM PIMAGE_RESOURCE_DIR_STRING_U} _IMAGE_RESOURCE_DIR_STRING_U = record Length: Word; NameString: array [0..0] of WCHAR; end; {$EXTERNALSYM _IMAGE_RESOURCE_DIR_STRING_U} IMAGE_RESOURCE_DIR_STRING_U = _IMAGE_RESOURCE_DIR_STRING_U; {$EXTERNALSYM IMAGE_RESOURCE_DIR_STRING_U} TImageResourceDirStringU = IMAGE_RESOURCE_DIR_STRING_U; PImageResourceDirStringU = PIMAGE_RESOURCE_DIR_STRING_U; // // Each resource data entry describes a leaf node in the resource directory // tree. It contains an offset, relative to the beginning of the resource // directory of the data for the resource, a size field that gives the number // of bytes of data at that offset, a CodePage that should be used when // decoding code point values within the resource data. Typically for new // applications the code page would be the unicode code page. // PIMAGE_RESOURCE_DATA_ENTRY = ^IMAGE_RESOURCE_DATA_ENTRY; {$EXTERNALSYM PIMAGE_RESOURCE_DATA_ENTRY} _IMAGE_RESOURCE_DATA_ENTRY = record OffsetToData: DWORD; Size: DWORD; CodePage: DWORD; Reserved: DWORD; end; {$EXTERNALSYM _IMAGE_RESOURCE_DATA_ENTRY} IMAGE_RESOURCE_DATA_ENTRY = _IMAGE_RESOURCE_DATA_ENTRY; {$EXTERNALSYM IMAGE_RESOURCE_DATA_ENTRY} TImageResourceDataEntry = IMAGE_RESOURCE_DATA_ENTRY; PImageResourceDataEntry = PIMAGE_RESOURCE_DATA_ENTRY; // // Load Configuration Directory Entry // type PIMAGE_LOAD_CONFIG_DIRECTORY32 = ^IMAGE_LOAD_CONFIG_DIRECTORY32; {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY32} IMAGE_LOAD_CONFIG_DIRECTORY32 = record Size: DWORD; TimeDateStamp: DWORD; MajorVersion: WORD; MinorVersion: WORD; GlobalFlagsClear: DWORD; GlobalFlagsSet: DWORD; CriticalSectionDefaultTimeout: DWORD; DeCommitFreeBlockThreshold: DWORD; DeCommitTotalFreeThreshold: DWORD; LockPrefixTable: DWORD; // VA MaximumAllocationSize: DWORD; VirtualMemoryThreshold: DWORD; ProcessHeapFlags: DWORD; ProcessAffinityMask: DWORD; CSDVersion: WORD; Reserved1: WORD; EditList: DWORD; // VA SecurityCookie: DWORD; // VA SEHandlerTable: DWORD; // VA SEHandlerCount: DWORD; end; {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY32} TImageLoadConfigDirectory32 = IMAGE_LOAD_CONFIG_DIRECTORY32; PImageLoadConfigDirectory32 = PIMAGE_LOAD_CONFIG_DIRECTORY32; PIMAGE_LOAD_CONFIG_DIRECTORY64 = ^IMAGE_LOAD_CONFIG_DIRECTORY64; {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY64} IMAGE_LOAD_CONFIG_DIRECTORY64 = record Size: DWORD; TimeDateStamp: DWORD; MajorVersion: WORD; MinorVersion: WORD; GlobalFlagsClear: DWORD; GlobalFlagsSet: DWORD; CriticalSectionDefaultTimeout: DWORD; DeCommitFreeBlockThreshold: ULONGLONG; DeCommitTotalFreeThreshold: ULONGLONG; LockPrefixTable: ULONGLONG; // VA MaximumAllocationSize: ULONGLONG; VirtualMemoryThreshold: ULONGLONG; ProcessAffinityMask: ULONGLONG; ProcessHeapFlags: DWORD; CSDVersion: WORD; Reserved1: WORD; EditList: ULONGLONG; // VA SecurityCookie: ULONGLONG; // VA SEHandlerTable: ULONGLONG; // VA SEHandlerCount: ULONGLONG; end; {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY64} TImageLoadConfigDirectory64 = IMAGE_LOAD_CONFIG_DIRECTORY64; PImageLoadConfigDirectory64 = PIMAGE_LOAD_CONFIG_DIRECTORY64; IMAGE_LOAD_CONFIG_DIRECTORY = IMAGE_LOAD_CONFIG_DIRECTORY32; {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY} PIMAGE_LOAD_CONFIG_DIRECTORY = PIMAGE_LOAD_CONFIG_DIRECTORY32; {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY} TImageLoadConfigDirectory = TImageLoadConfigDirectory32; PImageLoadConfigDirectory = PImageLoadConfigDirectory32; // line 6802 // // Debug Format // (* type PIMAGE_DEBUG_DIRECTORY = ^IMAGE_DEBUG_DIRECTORY; {$EXTERNALSYM PIMAGE_DEBUG_DIRECTORY} _IMAGE_DEBUG_DIRECTORY = record Characteristics: DWORD; TimeDateStamp: DWORD; MajorVersion: Word; MinorVersion: Word; Type_: DWORD; SizeOfData: DWORD; AddressOfRawData: DWORD; PointerToRawData: DWORD; end; {$EXTERNALSYM _IMAGE_DEBUG_DIRECTORY} IMAGE_DEBUG_DIRECTORY = _IMAGE_DEBUG_DIRECTORY; {$EXTERNALSYM IMAGE_DEBUG_DIRECTORY} TImageDebugDirectory = IMAGE_DEBUG_DIRECTORY; PImageDebugDirectory = PIMAGE_DEBUG_DIRECTORY; const IMAGE_DEBUG_TYPE_UNKNOWN = 0; {$EXTERNALSYM IMAGE_DEBUG_TYPE_UNKNOWN} IMAGE_DEBUG_TYPE_COFF = 1; {$EXTERNALSYM IMAGE_DEBUG_TYPE_COFF} IMAGE_DEBUG_TYPE_CODEVIEW = 2; {$EXTERNALSYM IMAGE_DEBUG_TYPE_CODEVIEW} IMAGE_DEBUG_TYPE_FPO = 3; {$EXTERNALSYM IMAGE_DEBUG_TYPE_FPO} IMAGE_DEBUG_TYPE_MISC = 4; {$EXTERNALSYM IMAGE_DEBUG_TYPE_MISC} IMAGE_DEBUG_TYPE_EXCEPTION = 5; {$EXTERNALSYM IMAGE_DEBUG_TYPE_EXCEPTION} IMAGE_DEBUG_TYPE_FIXUP = 6; {$EXTERNALSYM IMAGE_DEBUG_TYPE_FIXUP} IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7; {$EXTERNALSYM IMAGE_DEBUG_TYPE_OMAP_TO_SRC} IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8; {$EXTERNALSYM IMAGE_DEBUG_TYPE_OMAP_FROM_SRC} IMAGE_DEBUG_TYPE_BORLAND = 9; {$EXTERNALSYM IMAGE_DEBUG_TYPE_BORLAND} IMAGE_DEBUG_TYPE_RESERVED10 = 10; {$EXTERNALSYM IMAGE_DEBUG_TYPE_RESERVED10} IMAGE_DEBUG_TYPE_CLSID = 11; {$EXTERNALSYM IMAGE_DEBUG_TYPE_CLSID} *) type PIMAGE_COFF_SYMBOLS_HEADER = ^IMAGE_COFF_SYMBOLS_HEADER; {$EXTERNALSYM PIMAGE_COFF_SYMBOLS_HEADER} _IMAGE_COFF_SYMBOLS_HEADER = record NumberOfSymbols: DWORD; LvaToFirstSymbol: DWORD; NumberOfLinenumbers: DWORD; LvaToFirstLinenumber: DWORD; RvaToFirstByteOfCode: DWORD; RvaToLastByteOfCode: DWORD; RvaToFirstByteOfData: DWORD; RvaToLastByteOfData: DWORD; end; {$EXTERNALSYM _IMAGE_COFF_SYMBOLS_HEADER} IMAGE_COFF_SYMBOLS_HEADER = _IMAGE_COFF_SYMBOLS_HEADER; {$EXTERNALSYM IMAGE_COFF_SYMBOLS_HEADER} TImageCoffSymbolsHeader = IMAGE_COFF_SYMBOLS_HEADER; PImageCoffSymbolsHeader = PIMAGE_COFF_SYMBOLS_HEADER; const FRAME_FPO = 0; {$EXTERNALSYM FRAME_FPO} FRAME_TRAP = 1; {$EXTERNALSYM FRAME_TRAP} FRAME_TSS = 2; {$EXTERNALSYM FRAME_TSS} FRAME_NONFPO = 3; {$EXTERNALSYM FRAME_NONFPO} FPOFLAGS_PROLOG = $00FF; // # bytes in prolog FPOFLAGS_REGS = $0700; // # regs saved FPOFLAGS_HAS_SEH = $0800; // TRUE if SEH in func FPOFLAGS_USE_BP = $1000; // TRUE if EBP has been allocated FPOFLAGS_RESERVED = $2000; // reserved for future use FPOFLAGS_FRAME = $C000; // frame type type PFPO_DATA = ^FPO_DATA; {$EXTERNALSYM PFPO_DATA} _FPO_DATA = record ulOffStart: DWORD; // offset 1st byte of function code cbProcSize: DWORD; // # bytes in function cdwLocals: DWORD; // # bytes in locals/4 cdwParams: WORD; // # bytes in params/4 Flags: WORD; end; {$EXTERNALSYM _FPO_DATA} FPO_DATA = _FPO_DATA; {$EXTERNALSYM FPO_DATA} TFpoData = FPO_DATA; PFpoData = PFPO_DATA; const SIZEOF_RFPO_DATA = 16; {$EXTERNALSYM SIZEOF_RFPO_DATA} IMAGE_DEBUG_MISC_EXENAME = 1; {$EXTERNALSYM IMAGE_DEBUG_MISC_EXENAME} type PIMAGE_DEBUG_MISC = ^IMAGE_DEBUG_MISC; {$EXTERNALSYM PIMAGE_DEBUG_MISC} _IMAGE_DEBUG_MISC = record DataType: DWORD; // type of misc data, see defines Length: DWORD; // total length of record, rounded to four byte multiple. Unicode: ByteBool; // TRUE if data is unicode string Reserved: array [0..2] of Byte; Data: array [0..0] of Byte; // Actual data end; {$EXTERNALSYM _IMAGE_DEBUG_MISC} IMAGE_DEBUG_MISC = _IMAGE_DEBUG_MISC; {$EXTERNALSYM IMAGE_DEBUG_MISC} TImageDebugMisc = IMAGE_DEBUG_MISC; PImageDebugMisc = PIMAGE_DEBUG_MISC; // // Function table extracted from MIPS/ALPHA/IA64 images. Does not contain // information needed only for runtime support. Just those fields for // each entry needed by a debugger. // PIMAGE_FUNCTION_ENTRY = ^IMAGE_FUNCTION_ENTRY; {$EXTERNALSYM PIMAGE_FUNCTION_ENTRY} _IMAGE_FUNCTION_ENTRY = record StartingAddress: DWORD; EndingAddress: DWORD; EndOfPrologue: DWORD; end; {$EXTERNALSYM _IMAGE_FUNCTION_ENTRY} IMAGE_FUNCTION_ENTRY = _IMAGE_FUNCTION_ENTRY; {$EXTERNALSYM IMAGE_FUNCTION_ENTRY} TImageFunctionEntry = IMAGE_FUNCTION_ENTRY; PImageFunctionEntry = PIMAGE_FUNCTION_ENTRY; PIMAGE_FUNCTION_ENTRY64 = ^IMAGE_FUNCTION_ENTRY64; {$EXTERNALSYM PIMAGE_FUNCTION_ENTRY64} _IMAGE_FUNCTION_ENTRY64 = record StartingAddress: ULONGLONG; EndingAddress: ULONGLONG; case Integer of 0: (EndOfPrologue: ULONGLONG); 1: (UnwindInfoAddress: ULONGLONG); end; {$EXTERNALSYM _IMAGE_FUNCTION_ENTRY64} IMAGE_FUNCTION_ENTRY64 = _IMAGE_FUNCTION_ENTRY64; {$EXTERNALSYM IMAGE_FUNCTION_ENTRY64} TImageFunctionEntry64 = IMAGE_FUNCTION_ENTRY64; PImageFunctionEntry64 = PIMAGE_FUNCTION_ENTRY64; // // Debugging information can be stripped from an image file and placed // in a separate .DBG file, whose file name part is the same as the // image file name part (e.g. symbols for CMD.EXE could be stripped // and placed in CMD.DBG). This is indicated by the IMAGE_FILE_DEBUG_STRIPPED // flag in the Characteristics field of the file header. The beginning of // the .DBG file contains the following structure which captures certain // information from the image file. This allows a debug to proceed even if // the original image file is not accessable. This header is followed by // zero of more IMAGE_SECTION_HEADER structures, followed by zero or more // IMAGE_DEBUG_DIRECTORY structures. The latter structures and those in // the image file contain file offsets relative to the beginning of the // .DBG file. // // If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure // is left in the image file, but not mapped. This allows a debugger to // compute the name of the .DBG file, from the name of the image in the // IMAGE_DEBUG_MISC structure. // PIMAGE_SEPARATE_DEBUG_HEADER = ^IMAGE_SEPARATE_DEBUG_HEADER; {$EXTERNALSYM PIMAGE_SEPARATE_DEBUG_HEADER} _IMAGE_SEPARATE_DEBUG_HEADER = record Signature: Word; Flags: Word; Machine: Word; Characteristics: Word; TimeDateStamp: DWORD; CheckSum: DWORD; ImageBase: DWORD; SizeOfImage: DWORD; NumberOfSections: DWORD; ExportedNamesSize: DWORD; DebugDirectorySize: DWORD; SectionAlignment: DWORD; Reserved: array [0..1] of DWORD; end; {$EXTERNALSYM _IMAGE_SEPARATE_DEBUG_HEADER} IMAGE_SEPARATE_DEBUG_HEADER = _IMAGE_SEPARATE_DEBUG_HEADER; {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_HEADER} TImageSeparateDebugHeader = IMAGE_SEPARATE_DEBUG_HEADER; PImageSeparateDebugHeader = PIMAGE_SEPARATE_DEBUG_HEADER; _NON_PAGED_DEBUG_INFO = record Signature: WORD; Flags: WORD; Size: DWORD; Machine: WORD; Characteristics: WORD; TimeDateStamp: DWORD; CheckSum: DWORD; SizeOfImage: DWORD; ImageBase: ULONGLONG; //DebugDirectorySize //IMAGE_DEBUG_DIRECTORY end; {$EXTERNALSYM _NON_PAGED_DEBUG_INFO} NON_PAGED_DEBUG_INFO = _NON_PAGED_DEBUG_INFO; {$EXTERNALSYM NON_PAGED_DEBUG_INFO} PNON_PAGED_DEBUG_INFO = ^NON_PAGED_DEBUG_INFO; {$EXTERNALSYM PNON_PAGED_DEBUG_INFO} const IMAGE_SEPARATE_DEBUG_SIGNATURE = $4944; {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_SIGNATURE} NON_PAGED_DEBUG_SIGNATURE = $494E; {$EXTERNALSYM NON_PAGED_DEBUG_SIGNATURE} IMAGE_SEPARATE_DEBUG_FLAGS_MASK = $8000; {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_FLAGS_MASK} IMAGE_SEPARATE_DEBUG_MISMATCH = $8000; // when DBG was updated, the old checksum didn't match. {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_MISMATCH} // // The .arch section is made up of headers, each describing an amask position/value // pointing to an array of IMAGE_ARCHITECTURE_ENTRY's. Each "array" (both the header // and entry arrays) are terminiated by a quadword of 0xffffffffL. // // NOTE: There may be quadwords of 0 sprinkled around and must be skipped. // const IAHMASK_VALUE = $00000001; // 1 -> code section depends on mask bit // 0 -> new instruction depends on mask bit IAHMASK_MBZ7 = $000000FE; // MBZ IAHMASK_SHIFT = $0000FF00; // Amask bit in question for this fixup IAHMASK_MBZ16 = DWORD($FFFF0000); // MBZ type PIMAGE_ARCHITECTURE_HEADER = ^IMAGE_ARCHITECTURE_HEADER; {$EXTERNALSYM PIMAGE_ARCHITECTURE_HEADER} _ImageArchitectureHeader = record Mask: DWORD; FirstEntryRVA: DWORD; // RVA into .arch section to array of ARCHITECTURE_ENTRY's end; {$EXTERNALSYM _ImageArchitectureHeader} IMAGE_ARCHITECTURE_HEADER = _ImageArchitectureHeader; {$EXTERNALSYM IMAGE_ARCHITECTURE_HEADER} TImageArchitectureHeader = IMAGE_ARCHITECTURE_HEADER; PImageArchitectureHeader = PIMAGE_ARCHITECTURE_HEADER; PIMAGE_ARCHITECTURE_ENTRY = ^IMAGE_ARCHITECTURE_ENTRY; {$EXTERNALSYM PIMAGE_ARCHITECTURE_ENTRY} _ImageArchitectureEntry = record FixupInstRVA: DWORD; // RVA of instruction to fixup NewInst: DWORD; // fixup instruction (see alphaops.h) end; {$EXTERNALSYM _ImageArchitectureEntry} IMAGE_ARCHITECTURE_ENTRY = _ImageArchitectureEntry; {$EXTERNALSYM IMAGE_ARCHITECTURE_ENTRY} TImageArchitectureEntry = IMAGE_ARCHITECTURE_ENTRY; PImageArchitectureEntry = PIMAGE_ARCHITECTURE_ENTRY; // #include "poppack.h" // Back to the initial value // The following structure defines the new import object. Note the values of the first two fields, // which must be set as stated in order to differentiate old and new import members. // Following this structure, the linker emits two null-terminated strings used to recreate the // import at the time of use. The first string is the import's name, the second is the dll's name. const IMPORT_OBJECT_HDR_SIG2 = $ffff; {$EXTERNALSYM IMPORT_OBJECT_HDR_SIG2} const IOHFLAGS_TYPE = $0003; // IMPORT_TYPE IAHFLAGS_NAMETYPE = $001C; // IMPORT_NAME_TYPE IAHFLAGS_RESERVED = $FFE0; // Reserved. Must be zero. type PImportObjectHeader = ^IMPORT_OBJECT_HEADER; IMPORT_OBJECT_HEADER = record Sig1: WORD; // Must be IMAGE_FILE_MACHINE_UNKNOWN Sig2: WORD; // Must be IMPORT_OBJECT_HDR_SIG2. Version: WORD; Machine: WORD; TimeDateStamp: DWORD; // Time/date stamp SizeOfData: DWORD; // particularly useful for incremental links OrdinalOrHint: record case Integer of 0: (Ordinal: WORD); // if grf & IMPORT_OBJECT_ORDINAL 1: (Flags: DWORD); end; Flags: WORD; //WORD Type : 2; // IMPORT_TYPE //WORD NameType : 3; // IMPORT_NAME_TYPE //WORD Reserved : 11; // Reserved. Must be zero. end; {$EXTERNALSYM IMPORT_OBJECT_HEADER} TImportObjectHeader = IMPORT_OBJECT_HEADER; IMPORT_OBJECT_TYPE = (IMPORT_OBJECT_CODE, IMPORT_OBJECT_DATA, IMPORT_OBJECT_CONST); {$EXTERNALSYM IMPORT_OBJECT_TYPE} TImportObjectType = IMPORT_OBJECT_TYPE; IMPORT_OBJECT_NAME_TYPE = ( IMPORT_OBJECT_ORDINAL, // Import by ordinal IMPORT_OBJECT_NAME, // Import name == public symbol name. IMPORT_OBJECT_NAME_NO_PREFIX, // Import name == public symbol name skipping leading ?, @, or optionally _. IMPORT_OBJECT_NAME_UNDECORATE); // Import name == public symbol name skipping leading ?, @, or optionally _ // and truncating at first @ {$EXTERNALSYM IMPORT_OBJECT_NAME_TYPE} TImportObjectNameType = IMPORT_OBJECT_NAME_TYPE; ReplacesCorHdrNumericDefines = DWORD; {$EXTERNALSYM ReplacesCorHdrNumericDefines} const // COM+ Header entry point flags. COMIMAGE_FLAGS_ILONLY = $00000001; {$EXTERNALSYM COMIMAGE_FLAGS_ILONLY} COMIMAGE_FLAGS_32BITREQUIRED = $00000002; {$EXTERNALSYM COMIMAGE_FLAGS_32BITREQUIRED} COMIMAGE_FLAGS_IL_LIBRARY = $00000004; {$EXTERNALSYM COMIMAGE_FLAGS_IL_LIBRARY} COMIMAGE_FLAGS_STRONGNAMESIGNED = $00000008; {$EXTERNALSYM COMIMAGE_FLAGS_STRONGNAMESIGNED} COMIMAGE_FLAGS_TRACKDEBUGDATA = $00010000; {$EXTERNALSYM COMIMAGE_FLAGS_TRACKDEBUGDATA} // Version flags for image. COR_VERSION_MAJOR_V2 = 2; {$EXTERNALSYM COR_VERSION_MAJOR_V2} COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2; {$EXTERNALSYM COR_VERSION_MAJOR} COR_VERSION_MINOR = 0; {$EXTERNALSYM COR_VERSION_MINOR} COR_DELETED_NAME_LENGTH = 8; {$EXTERNALSYM COR_DELETED_NAME_LENGTH} COR_VTABLEGAP_NAME_LENGTH = 8; {$EXTERNALSYM COR_VTABLEGAP_NAME_LENGTH} // Maximum size of a NativeType descriptor. NATIVE_TYPE_MAX_CB = 1; {$EXTERNALSYM NATIVE_TYPE_MAX_CB} COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= $FF; {$EXTERNALSYM COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE} // #defines for the MIH FLAGS IMAGE_COR_MIH_METHODRVA = $01; {$EXTERNALSYM IMAGE_COR_MIH_METHODRVA} IMAGE_COR_MIH_EHRVA = $02; {$EXTERNALSYM IMAGE_COR_MIH_EHRVA} IMAGE_COR_MIH_BASICBLOCK = $08; {$EXTERNALSYM IMAGE_COR_MIH_BASICBLOCK} // V-table constants COR_VTABLE_32BIT = $01; // V-table slots are 32-bits in size. {$EXTERNALSYM COR_VTABLE_32BIT} COR_VTABLE_64BIT = $02; // V-table slots are 64-bits in size. {$EXTERNALSYM COR_VTABLE_64BIT} COR_VTABLE_FROM_UNMANAGED = $04; // If set, transition from unmanaged. {$EXTERNALSYM COR_VTABLE_FROM_UNMANAGED} COR_VTABLE_CALL_MOST_DERIVED = $10; // Call most derived method described by {$EXTERNALSYM COR_VTABLE_CALL_MOST_DERIVED} // EATJ constants IMAGE_COR_EATJ_THUNK_SIZE = 32; // Size of a jump thunk reserved range. {$EXTERNALSYM IMAGE_COR_EATJ_THUNK_SIZE} // Max name lengths // Change to unlimited name lengths. MAX_CLASS_NAME = 1024; {$EXTERNALSYM MAX_CLASS_NAME} MAX_PACKAGE_NAME = 1024; {$EXTERNALSYM MAX_PACKAGE_NAME} {$ENDIF ~CLR} // COM+ 2.0 header structure. type IMAGE_COR20_HEADER = record // Header versioning cb: DWORD; MajorRuntimeVersion: WORD; MinorRuntimeVersion: WORD; // Symbol table and startup information MetaData: IMAGE_DATA_DIRECTORY; Flags: DWORD; EntryPointToken: DWORD; // Binding information Resources: IMAGE_DATA_DIRECTORY; StrongNameSignature: IMAGE_DATA_DIRECTORY; // Regular fixup and binding information CodeManagerTable: IMAGE_DATA_DIRECTORY; VTableFixups: IMAGE_DATA_DIRECTORY; ExportAddressTableJumps: IMAGE_DATA_DIRECTORY; // Precompiled image info (internal use only - set to zero) ManagedNativeHeader: IMAGE_DATA_DIRECTORY; end; {$EXTERNALSYM IMAGE_COR20_HEADER} PIMAGE_COR20_HEADER = ^IMAGE_COR20_HEADER; {$EXTERNALSYM PIMAGE_COR20_HEADER} TImageCor20Header = IMAGE_COR20_HEADER; PImageCor20Header = PIMAGE_COR20_HEADER; // line 7351 const COMPRESSION_FORMAT_NONE = ($0000); {$EXTERNALSYM COMPRESSION_FORMAT_NONE} COMPRESSION_FORMAT_DEFAULT = ($0001); {$EXTERNALSYM COMPRESSION_FORMAT_DEFAULT} COMPRESSION_FORMAT_LZNT1 = ($0002); {$EXTERNALSYM COMPRESSION_FORMAT_LZNT1} COMPRESSION_ENGINE_STANDARD = ($0000); {$EXTERNALSYM COMPRESSION_ENGINE_STANDARD} COMPRESSION_ENGINE_MAXIMUM = ($0100); {$EXTERNALSYM COMPRESSION_ENGINE_MAXIMUM} COMPRESSION_ENGINE_HIBER = ($0200); {$EXTERNALSYM COMPRESSION_ENGINE_HIBER} // line 7462 type POSVERSIONINFOEXA = ^OSVERSIONINFOEXA; {$EXTERNALSYM POSVERSIONINFOEXA} _OSVERSIONINFOEXA = record dwOSVersionInfoSize: DWORD; dwMajorVersion: DWORD; dwMinorVersion: DWORD; dwBuildNumber: DWORD; dwPlatformId: DWORD; szCSDVersion: array [0..127] of CHAR; // Maintenance string for PSS usage wServicePackMajor: WORD; wServicePackMinor: WORD; wSuiteMask: WORD; wProductType: BYTE; wReserved: BYTE; end; {$EXTERNALSYM _OSVERSIONINFOEXA} OSVERSIONINFOEXA = _OSVERSIONINFOEXA; {$EXTERNALSYM OSVERSIONINFOEXA} LPOSVERSIONINFOEXA = ^OSVERSIONINFOEXA; {$EXTERNALSYM LPOSVERSIONINFOEXA} TOSVersionInfoExA = _OSVERSIONINFOEXA; POSVERSIONINFOEXW = ^OSVERSIONINFOEXW; {$EXTERNALSYM POSVERSIONINFOEXW} _OSVERSIONINFOEXW = record dwOSVersionInfoSize: DWORD; dwMajorVersion: DWORD; dwMinorVersion: DWORD; dwBuildNumber: DWORD; dwPlatformId: DWORD; szCSDVersion: array [0..127] of WCHAR; // Maintenance string for PSS usage wServicePackMajor: WORD; wServicePackMinor: WORD; wSuiteMask: WORD; wProductType: BYTE; wReserved: BYTE; end; {$EXTERNALSYM _OSVERSIONINFOEXW} OSVERSIONINFOEXW = _OSVERSIONINFOEXW; {$EXTERNALSYM OSVERSIONINFOEXW} LPOSVERSIONINFOEXW = ^OSVERSIONINFOEXW; {$EXTERNALSYM LPOSVERSIONINFOEXW} RTL_OSVERSIONINFOEXW = _OSVERSIONINFOEXW; {$EXTERNALSYM RTL_OSVERSIONINFOEXW} PRTL_OSVERSIONINFOEXW = ^RTL_OSVERSIONINFOEXW; {$EXTERNALSYM PRTL_OSVERSIONINFOEXW} TOSVersionInfoExW = _OSVERSIONINFOEXW; {$IFDEF UNICODE} OSVERSIONINFOEX = OSVERSIONINFOEXW; {$EXTERNALSYM OSVERSIONINFOEX} POSVERSIONINFOEX = POSVERSIONINFOEXW; {$EXTERNALSYM POSVERSIONINFOEX} LPOSVERSIONINFOEX = LPOSVERSIONINFOEXW; {$EXTERNALSYM LPOSVERSIONINFOEX} TOSVersionInfoEx = TOSVersionInfoExW; {$ELSE} OSVERSIONINFOEX = OSVERSIONINFOEXA; {$EXTERNALSYM OSVERSIONINFOEX} POSVERSIONINFOEX = POSVERSIONINFOEXA; {$EXTERNALSYM POSVERSIONINFOEX} LPOSVERSIONINFOEX = LPOSVERSIONINFOEXA; {$EXTERNALSYM LPOSVERSIONINFOEX} TOSVersionInfoEx = TOSVersionInfoExA; {$ENDIF} // // RtlVerifyVersionInfo() conditions // const VER_EQUAL = 1; {$EXTERNALSYM VER_EQUAL} VER_GREATER = 2; {$EXTERNALSYM VER_GREATER} VER_GREATER_EQUAL = 3; {$EXTERNALSYM VER_GREATER_EQUAL} VER_LESS = 4; {$EXTERNALSYM VER_LESS} VER_LESS_EQUAL = 5; {$EXTERNALSYM VER_LESS_EQUAL} VER_AND = 6; {$EXTERNALSYM VER_AND} VER_OR = 7; {$EXTERNALSYM VER_OR} VER_CONDITION_MASK = 7; {$EXTERNALSYM VER_CONDITION_MASK} VER_NUM_BITS_PER_CONDITION_MASK = 3; {$EXTERNALSYM VER_NUM_BITS_PER_CONDITION_MASK} // // RtlVerifyVersionInfo() type mask bits // VER_MINORVERSION = $0000001; {$EXTERNALSYM VER_MINORVERSION} VER_MAJORVERSION = $0000002; {$EXTERNALSYM VER_MAJORVERSION} VER_BUILDNUMBER = $0000004; {$EXTERNALSYM VER_BUILDNUMBER} VER_PLATFORMID = $0000008; {$EXTERNALSYM VER_PLATFORMID} VER_SERVICEPACKMINOR = $0000010; {$EXTERNALSYM VER_SERVICEPACKMINOR} VER_SERVICEPACKMAJOR = $0000020; {$EXTERNALSYM VER_SERVICEPACKMAJOR} VER_SUITENAME = $0000040; {$EXTERNALSYM VER_SUITENAME} VER_PRODUCT_TYPE = $0000080; {$EXTERNALSYM VER_PRODUCT_TYPE} // // RtlVerifyVersionInfo() os product type values // VER_NT_WORKSTATION = $0000001; {$EXTERNALSYM VER_NT_WORKSTATION} VER_NT_DOMAIN_CONTROLLER = $0000002; {$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER} VER_NT_SERVER = $0000003; {$EXTERNALSYM VER_NT_SERVER} // // dwPlatformId defines: // VER_PLATFORM_WIN32s = 0; {$EXTERNALSYM VER_PLATFORM_WIN32s} VER_PLATFORM_WIN32_WINDOWS = 1; {$EXTERNALSYM VER_PLATFORM_WIN32_WINDOWS} VER_PLATFORM_WIN32_NT = 2; {$EXTERNALSYM VER_PLATFORM_WIN32_NT} const // // // Predefined Value Types. // REG_NONE = ( 0 ); // No value type {$EXTERNALSYM REG_NONE} REG_SZ = ( 1 ); // Unicode nul terminated string {$EXTERNALSYM REG_SZ} REG_EXPAND_SZ = ( 2 ); // Unicode nul terminated string {$EXTERNALSYM REG_EXPAND_SZ} // (with environment variable references) REG_BINARY = ( 3 ); // Free form binary {$EXTERNALSYM REG_BINARY} REG_DWORD = ( 4 ); // 32-bit number {$EXTERNALSYM REG_DWORD} REG_DWORD_LITTLE_ENDIAN = ( 4 ); // 32-bit number (same as REG_DWORD) {$EXTERNALSYM REG_DWORD_LITTLE_ENDIAN} REG_DWORD_BIG_ENDIAN = ( 5 ); // 32-bit number {$EXTERNALSYM REG_DWORD_BIG_ENDIAN} REG_LINK = ( 6 ); // Symbolic Link (unicode) {$EXTERNALSYM REG_LINK} REG_MULTI_SZ = ( 7 ); // Multiple Unicode strings {$EXTERNALSYM REG_MULTI_SZ} REG_RESOURCE_LIST = ( 8 ); // Resource list in the resource map {$EXTERNALSYM REG_RESOURCE_LIST} REG_FULL_RESOURCE_DESCRIPTOR = ( 9 ); // Resource list in the hardware description {$EXTERNALSYM REG_FULL_RESOURCE_DESCRIPTOR} REG_RESOURCE_REQUIREMENTS_LIST = ( 10 ); {$EXTERNALSYM REG_RESOURCE_REQUIREMENTS_LIST} REG_QWORD = ( 11 ); // 64-bit number {$EXTERNALSYM REG_QWORD} REG_QWORD_LITTLE_ENDIAN = ( 11 ); // 64-bit number (same as REG_QWORD) {$EXTERNALSYM REG_QWORD_LITTLE_ENDIAN} // line 160 // // 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} // line 3189 function BackupSeek(hFile: THandle; dwLowBytesToSeek, dwHighBytesToSeek: DWORD; out lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD; var lpContext: {$IFDEF CLR}IntPtr{$ELSE}Pointer{$ENDIF}): BOOL; stdcall; {$IFDEF CLR}external kernel32 name 'BackupSeek';{$ENDIF} {$EXTERNALSYM BackupSeek} // line 5454 function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL; const NewState: TTokenPrivileges; BufferLength: DWORD; {$IFDEF CLR} out PreviousState: TTokenPrivileges; out ReturnLength: DWORD {$ELSE} PreviousState: PTokenPrivileges; ReturnLength: PDWORD {$ENDIF CLR} ): BOOL; stdcall; {$IFDEF CLR} external advapi32 name 'AdjustTokenPrivileges';{$ENDIF} {$EXTERNALSYM AdjustTokenPrivileges} { From: Ray Lischner Subject: CreateMutex bug Date: 1999/12/10 Message-ID: #1/1 Content-Transfer-Encoding: 7bit Organization: Tempest Software, Inc., Corvallis, Oregon Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 Newsgroups: borland.public.delphi.winapi Windows NT 4 has a bug in CreateMutex. The second argument is documented to be a BOOL, but in truth, the CreateMutex interprets 1 as True and all other values as False. (Do I detect an "if (bInitialOwner == TRUE)" in the implementation of CreateMutex?) The problem is that Delphi declares CreateMutex according to the documentation, so bInitialOwner is declared as LongBool. Delphi maps True values to $FFFFFFFF, which should work, but doesn't in this case. My workaround is to declare CreateMutex with a LongInt as the second argument, and pass the value 1 for True. I have not had this problem on Windows 98. -- Ray Lischner, author of Delphi in a Nutshell (coming later this year) http://www.bardware.com and http://www.tempest-sw.com } {$IFNDEF CLR} function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: DWORD; lpName: PChar): THandle; stdcall; {$EXTERNALSYM CreateMutex} {$ENDIF ~CLR} // alternative conversion for WinNT 4.0 SP6 and later (OSVersionInfoEx instead of OSVersionInfo) {$EXTERNALSYM GetVersionEx} function GetVersionEx(var lpVersionInformation: TOSVersionInfoEx): BOOL; stdcall; overload; {$IFDEF CLR}external version name 'GetVersionEx';{$ENDIF} {$IFNDEF CLR} {$EXTERNALSYM GetVersionEx} function GetVersionEx(lpVersionInformation: POSVERSIONINFOEX): BOOL; stdcall; overload; {$IFDEF SUPPORTS_DEPRECATED} deprecated; {$ENDIF} // line 3585 function SetWaitableTimer(hTimer: THandle; var lpDueTime: TLargeInteger; lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine; lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL; stdcall; {$EXTERNALSYM SetWaitableTimer} // WinBase.h line 8839 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} // WinBase.h line 10251 function SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName: LPCSTR): BOOL; stdcall; {$EXTERNALSYM SetVolumeMountPoint} function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCSTR): BOOL; stdcall; {$EXTERNALSYM DeleteVolumeMountPoint} function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall; {$EXTERNALSYM GetVolumeNameForVolumeMountPoint} {$ENDIF ~CLR} type {$EXTERNALSYM ULONG_PTR} ULONG_PTR = LongWord; // Need to have the same size like Pointer {$EXTERNALSYM DWORD_PTR} DWORD_PTR = ULONG_PTR; {$EXTERNALSYM PDWORD_PTR} PDWORD_PTR = ^PLongWord; // From JwaAclApi // line 185 {$IFNDEF CLR} function SetNamedSecurityInfoW(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE; SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID; pDacl, pSacl: PACL): DWORD; stdcall; {$EXTERNALSYM SetNamedSecurityInfoW} const IMAGE_SEPARATION = (64*1024); {$EXTERNALSYM IMAGE_SEPARATION} type PLOADED_IMAGE = ^LOADED_IMAGE; {$EXTERNALSYM PLOADED_IMAGE} _LOADED_IMAGE = record ModuleName: PChar; hFile: THandle; MappedAddress: PAnsiChar; // PUCHAR; FileHeader: PImageNtHeaders; LastRvaSection: PImageSectionHeader; NumberOfSections: ULONG; Sections: PImageSectionHeader; Characteristics: ULONG; fSystemImage: ByteBool; fDOSImage: ByteBool; Links: LIST_ENTRY; SizeOfImage: ULONG; end; {$EXTERNALSYM _LOADED_IMAGE} LOADED_IMAGE = _LOADED_IMAGE; {$EXTERNALSYM LOADED_IMAGE} TLoadedImage = LOADED_IMAGE; PLoadedImage = PLOADED_IMAGE; // line 152 function ReBaseImage(CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL; fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG; var OldImageSize: ULONG; var OldImageBase: ULONG_PTR; var NewImageSize: ULONG; var NewImageBase: ULONG_PTR; TimeStamp: ULONG): BOOL; stdcall; {$EXTERNALSYM ReBaseImage} // line 199 // // Define checksum function prototypes. // function CheckSumMappedFile(BaseAddress: Pointer; FileLength: DWORD; out HeaderSum, CheckSum: DWORD): PImageNtHeaders; stdcall; {$EXTERNALSYM CheckSumMappedFile} // line 227 function GetImageUnusedHeaderBytes(const LoadedImage: LOADED_IMAGE; var SizeUnusedHeaderBytes: DWORD): DWORD; stdcall; {$EXTERNALSYM GetImageUnusedHeaderBytes} // line 285 function MapAndLoad(ImageName, DllPath: PChar; var LoadedImage: LOADED_IMAGE; DotDll: BOOL; ReadOnly: BOOL): BOOL; stdcall; {$EXTERNALSYM MapAndLoad} function UnMapAndLoad(const LoadedImage: LOADED_IMAGE): BOOL; stdcall; {$EXTERNALSYM UnMapAndLoad} function TouchFileTimes(const FileHandle: THandle; const pSystemTime: TSystemTime): BOOL; stdcall; {$EXTERNALSYM TouchFileTimes} // line 347 function ImageDirectoryEntryToData(Base: Pointer; MappedAsImage: ByteBool; DirectoryEntry: USHORT; var Size: ULONG): Pointer; stdcall; {$EXTERNALSYM ImageDirectoryEntryToData} function ImageRvaToSection(NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG): PImageSectionHeader; stdcall; {$EXTERNALSYM ImageRvaToSection} function ImageRvaToVa(NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG; LastRvaSection: PPImageSectionHeader): Pointer; stdcall; {$EXTERNALSYM ImageRvaToVa} {$ENDIF ~CLR} // line 461 // // UnDecorateSymbolName Flags // const UNDNAME_COMPLETE = ($0000); // Enable full undecoration {$EXTERNALSYM UNDNAME_COMPLETE} UNDNAME_NO_LEADING_UNDERSCORES = ($0001); // Remove leading underscores from MS extended keywords {$EXTERNALSYM UNDNAME_NO_LEADING_UNDERSCORES} UNDNAME_NO_MS_KEYWORDS = ($0002); // Disable expansion of MS extended keywords {$EXTERNALSYM UNDNAME_NO_MS_KEYWORDS} UNDNAME_NO_FUNCTION_RETURNS = ($0004); // Disable expansion of return type for primary declaration {$EXTERNALSYM UNDNAME_NO_FUNCTION_RETURNS} UNDNAME_NO_ALLOCATION_MODEL = ($0008); // Disable expansion of the declaration model {$EXTERNALSYM UNDNAME_NO_ALLOCATION_MODEL} UNDNAME_NO_ALLOCATION_LANGUAGE = ($0010); // Disable expansion of the declaration language specifier {$EXTERNALSYM UNDNAME_NO_ALLOCATION_LANGUAGE} UNDNAME_NO_MS_THISTYPE = ($0020); // NYI Disable expansion of MS keywords on the 'this' type for primary declaration {$EXTERNALSYM UNDNAME_NO_MS_THISTYPE} UNDNAME_NO_CV_THISTYPE = ($0040); // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration {$EXTERNALSYM UNDNAME_NO_CV_THISTYPE} UNDNAME_NO_THISTYPE = ($0060); // Disable all modifiers on the 'this' type {$EXTERNALSYM UNDNAME_NO_THISTYPE} UNDNAME_NO_ACCESS_SPECIFIERS = ($0080); // Disable expansion of access specifiers for members {$EXTERNALSYM UNDNAME_NO_ACCESS_SPECIFIERS} UNDNAME_NO_THROW_SIGNATURES = ($0100); // Disable expansion of 'throw-signatures' for functions and pointers to functions {$EXTERNALSYM UNDNAME_NO_THROW_SIGNATURES} UNDNAME_NO_MEMBER_TYPE = ($0200); // Disable expansion of 'static' or 'virtual'ness of members {$EXTERNALSYM UNDNAME_NO_MEMBER_TYPE} UNDNAME_NO_RETURN_UDT_MODEL = ($0400); // Disable expansion of MS model for UDT returns {$EXTERNALSYM UNDNAME_NO_RETURN_UDT_MODEL} UNDNAME_32_BIT_DECODE = ($0800); // Undecorate 32-bit decorated names {$EXTERNALSYM UNDNAME_32_BIT_DECODE} UNDNAME_NAME_ONLY = ($1000); // Crack only the name for primary declaration; {$EXTERNALSYM UNDNAME_NAME_ONLY} // return just [scope::]name. Does expand template params UNDNAME_NO_ARGUMENTS = ($2000); // Don't undecorate arguments to function {$EXTERNALSYM UNDNAME_NO_ARGUMENTS} UNDNAME_NO_SPECIAL_SYMS = ($4000); // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc) {$EXTERNALSYM UNDNAME_NO_SPECIAL_SYMS} function UnDecorateSymbolName(DecoratedName: {$IFDEF CLR}string{$ELSE}PAnsiChar{$ENDIF}; UnDecoratedName: {$IFDEF CLR}string{$ELSE}PAnsiChar{$ENDIF}; UndecoratedLength: DWORD; Flags: DWORD): DWORD; stdcall; {$IFDEF CLR}external 'imagehlp.dll' name 'UnDecorateSymbolName';{$ENDIF} {$EXTERNALSYM UnDecorateSymbolName} const NERR_Success = 0; // Success {$EXTERNALSYM NERR_Success} // ERROR_ equates can be intermixed with NERR_ equates. // NERR_BASE is the base of error codes from network utilities, // chosen to avoid conflict with system and redirector error codes. // 2100 is a value that has been assigned to us by system. NERR_BASE = 2100; {$EXTERNALSYM NERR_BASE} //*INTERNAL_ONLY* {**********WARNING ***************** *See the comment in lmcons.h for * *info on the allocation of errors * ***********************************} {**********WARNING ***************** *The range 2750-2799 has been * *allocated to the IBM LAN Server * ***********************************} {**********WARNING ***************** *The range 2900-2999 has been * *reserved for Microsoft OEMs * ***********************************} // UNUSED BASE+0 // UNUSED BASE+1 NERR_NetNotStarted = (NERR_BASE+2); // The workstation driver is not installed. {$EXTERNALSYM NERR_NetNotStarted} NERR_UnknownServer = (NERR_BASE+3); // The server could not be located. {$EXTERNALSYM NERR_UnknownServer} NERR_ShareMem = (NERR_BASE+4); // An internal error occurred. The network cannot access a shared memory segment. {$EXTERNALSYM NERR_ShareMem} NERR_NoNetworkResource = (NERR_BASE+5); // A network resource shortage occurred . {$EXTERNALSYM NERR_NoNetworkResource} NERR_RemoteOnly = (NERR_BASE+6); // This operation is not supported on workstations. {$EXTERNALSYM NERR_RemoteOnly} NERR_DevNotRedirected = (NERR_BASE+7); // The device is not connected. {$EXTERNALSYM NERR_DevNotRedirected} // NERR_BASE+8 is used for ERROR_CONNECTED_OTHER_PASSWORD // NERR_BASE+9 is used for ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT // UNUSED BASE+10 // UNUSED BASE+11 // UNUSED BASE+12 // UNUSED BASE+13 NERR_ServerNotStarted = (NERR_BASE+14); // The Server service is not started. {$EXTERNALSYM NERR_ServerNotStarted} NERR_ItemNotFound = (NERR_BASE+15); // The queue is empty. {$EXTERNALSYM NERR_ItemNotFound} NERR_UnknownDevDir = (NERR_BASE+16); // The device or directory does not exist. {$EXTERNALSYM NERR_UnknownDevDir} NERR_RedirectedPath = (NERR_BASE+17); // The operation is invalid on a redirected resource. {$EXTERNALSYM NERR_RedirectedPath} NERR_DuplicateShare = (NERR_BASE+18); // The name has already been shared. {$EXTERNALSYM NERR_DuplicateShare} NERR_NoRoom = (NERR_BASE+19); // The server is currently out of the requested resource. {$EXTERNALSYM NERR_NoRoom} // UNUSED BASE+20 NERR_TooManyItems = (NERR_BASE+21); // Requested addition of items exceeds the maximum allowed. {$EXTERNALSYM NERR_TooManyItems} NERR_InvalidMaxUsers = (NERR_BASE+22); // The Peer service supports only two simultaneous users. {$EXTERNALSYM NERR_InvalidMaxUsers} NERR_BufTooSmall = (NERR_BASE+23); // The API return buffer is too small. {$EXTERNALSYM NERR_BufTooSmall} // UNUSED BASE+24 // UNUSED BASE+25 // UNUSED BASE+26 NERR_RemoteErr = (NERR_BASE+27); // A remote API error occurred. {$EXTERNALSYM NERR_RemoteErr} // UNUSED BASE+28 // UNUSED BASE+29 // UNUSED BASE+30 NERR_LanmanIniError = (NERR_BASE+31); // An error occurred when opening or reading the configuration file. {$EXTERNALSYM NERR_LanmanIniError} // UNUSED BASE+32 // UNUSED BASE+33 // UNUSED BASE+34 // UNUSED BASE+35 NERR_NetworkError = (NERR_BASE+36); // A general network error occurred. {$EXTERNALSYM NERR_NetworkError} NERR_WkstaInconsistentState = (NERR_BASE+37); {$EXTERNALSYM NERR_WkstaInconsistentState} // The Workstation service is in an inconsistent state. Restart the computer before restarting the Workstation service. NERR_WkstaNotStarted = (NERR_BASE+38); // The Workstation service has not been started. {$EXTERNALSYM NERR_WkstaNotStarted} NERR_BrowserNotStarted = (NERR_BASE+39); // The requested information is not available. {$EXTERNALSYM NERR_BrowserNotStarted} NERR_InternalError = (NERR_BASE+40); // An internal Windows 2000 error occurred. {$EXTERNALSYM NERR_InternalError} NERR_BadTransactConfig = (NERR_BASE+41); // The server is not configured for transactions. {$EXTERNALSYM NERR_BadTransactConfig} NERR_InvalidAPI = (NERR_BASE+42); // The requested API is not supported on the remote server. {$EXTERNALSYM NERR_InvalidAPI} NERR_BadEventName = (NERR_BASE+43); // The event name is invalid. {$EXTERNALSYM NERR_BadEventName} NERR_DupNameReboot = (NERR_BASE+44); // The computer name already exists on the network. Change it and restart the computer. {$EXTERNALSYM NERR_DupNameReboot} // // Config API related // Error codes from BASE+45 to BASE+49 // UNUSED BASE+45 NERR_CfgCompNotFound = (NERR_BASE+46); // The specified component could not be found in the configuration information. {$EXTERNALSYM NERR_CfgCompNotFound} NERR_CfgParamNotFound = (NERR_BASE+47); // The specified parameter could not be found in the configuration information. {$EXTERNALSYM NERR_CfgParamNotFound} NERR_LineTooLong = (NERR_BASE+49); // A line in the configuration file is too long. {$EXTERNALSYM NERR_LineTooLong} // // Spooler API related // Error codes from BASE+50 to BASE+79 NERR_QNotFound = (NERR_BASE+50); // The printer does not exist. {$EXTERNALSYM NERR_QNotFound} NERR_JobNotFound = (NERR_BASE+51); // The print job does not exist. {$EXTERNALSYM NERR_JobNotFound} NERR_DestNotFound = (NERR_BASE+52); // The printer destination cannot be found. {$EXTERNALSYM NERR_DestNotFound} NERR_DestExists = (NERR_BASE+53); // The printer destination already exists. {$EXTERNALSYM NERR_DestExists} NERR_QExists = (NERR_BASE+54); // The printer queue already exists. {$EXTERNALSYM NERR_QExists} NERR_QNoRoom = (NERR_BASE+55); // No more printers can be added. {$EXTERNALSYM NERR_QNoRoom} NERR_JobNoRoom = (NERR_BASE+56); // No more print jobs can be added. {$EXTERNALSYM NERR_JobNoRoom} NERR_DestNoRoom = (NERR_BASE+57); // No more printer destinations can be added. {$EXTERNALSYM NERR_DestNoRoom} NERR_DestIdle = (NERR_BASE+58); // This printer destination is idle and cannot accept control operations. {$EXTERNALSYM NERR_DestIdle} NERR_DestInvalidOp = (NERR_BASE+59); // This printer destination request contains an invalid control function. {$EXTERNALSYM NERR_DestInvalidOp} NERR_ProcNoRespond = (NERR_BASE+60); // The print processor is not responding. {$EXTERNALSYM NERR_ProcNoRespond} NERR_SpoolerNotLoaded = (NERR_BASE+61); // The spooler is not running. {$EXTERNALSYM NERR_SpoolerNotLoaded} NERR_DestInvalidState = (NERR_BASE+62); // This operation cannot be performed on the print destination in its current state. {$EXTERNALSYM NERR_DestInvalidState} NERR_QInvalidState = (NERR_BASE+63); // This operation cannot be performed on the printer queue in its current state. {$EXTERNALSYM NERR_QInvalidState} NERR_JobInvalidState = (NERR_BASE+64); // This operation cannot be performed on the print job in its current state. {$EXTERNALSYM NERR_JobInvalidState} NERR_SpoolNoMemory = (NERR_BASE+65); // A spooler memory allocation failure occurred. {$EXTERNALSYM NERR_SpoolNoMemory} NERR_DriverNotFound = (NERR_BASE+66); // The device driver does not exist. {$EXTERNALSYM NERR_DriverNotFound} NERR_DataTypeInvalid = (NERR_BASE+67); // The data type is not supported by the print processor. {$EXTERNALSYM NERR_DataTypeInvalid} NERR_ProcNotFound = (NERR_BASE+68); // The print processor is not installed. {$EXTERNALSYM NERR_ProcNotFound} // // Service API related // Error codes from BASE+80 to BASE+99 NERR_ServiceTableLocked = (NERR_BASE+80); // The service database is locked. {$EXTERNALSYM NERR_ServiceTableLocked} NERR_ServiceTableFull = (NERR_BASE+81); // The service table is full. {$EXTERNALSYM NERR_ServiceTableFull} NERR_ServiceInstalled = (NERR_BASE+82); // The requested service has already been started. {$EXTERNALSYM NERR_ServiceInstalled} NERR_ServiceEntryLocked = (NERR_BASE+83); // The service does not respond to control actions. {$EXTERNALSYM NERR_ServiceEntryLocked} NERR_ServiceNotInstalled = (NERR_BASE+84); // The service has not been started. {$EXTERNALSYM NERR_ServiceNotInstalled} NERR_BadServiceName = (NERR_BASE+85); // The service name is invalid. {$EXTERNALSYM NERR_BadServiceName} NERR_ServiceCtlTimeout = (NERR_BASE+86); // The service is not responding to the control function. {$EXTERNALSYM NERR_ServiceCtlTimeout} NERR_ServiceCtlBusy = (NERR_BASE+87); // The service control is busy. {$EXTERNALSYM NERR_ServiceCtlBusy} NERR_BadServiceProgName = (NERR_BASE+88); // The configuration file contains an invalid service program name. {$EXTERNALSYM NERR_BadServiceProgName} NERR_ServiceNotCtrl = (NERR_BASE+89); // The service could not be controlled in its present state. {$EXTERNALSYM NERR_ServiceNotCtrl} NERR_ServiceKillProc = (NERR_BASE+90); // The service ended abnormally. {$EXTERNALSYM NERR_ServiceKillProc} NERR_ServiceCtlNotValid = (NERR_BASE+91); // The requested pause,continue, or stop is not valid for this service. {$EXTERNALSYM NERR_ServiceCtlNotValid} NERR_NotInDispatchTbl = (NERR_BASE+92); // The service control dispatcher could not find the service name in the dispatch table. {$EXTERNALSYM NERR_NotInDispatchTbl} NERR_BadControlRecv = (NERR_BASE+93); // The service control dispatcher pipe read failed. {$EXTERNALSYM NERR_BadControlRecv} NERR_ServiceNotStarting = (NERR_BASE+94); // A thread for the new service could not be created. {$EXTERNALSYM NERR_ServiceNotStarting} // // Wksta and Logon API related // Error codes from BASE+100 to BASE+118 NERR_AlreadyLoggedOn = (NERR_BASE+100); // This workstation is already logged on to the local-area network. {$EXTERNALSYM NERR_AlreadyLoggedOn} NERR_NotLoggedOn = (NERR_BASE+101); // The workstation is not logged on to the local-area network. {$EXTERNALSYM NERR_NotLoggedOn} NERR_BadUsername = (NERR_BASE+102); // The user name or group name parameter is invalid. {$EXTERNALSYM NERR_BadUsername} NERR_BadPassword = (NERR_BASE+103); // The password parameter is invalid. {$EXTERNALSYM NERR_BadPassword} NERR_UnableToAddName_W = (NERR_BASE+104); // @W The logon processor did not add the message alias. {$EXTERNALSYM NERR_UnableToAddName_W} NERR_UnableToAddName_F = (NERR_BASE+105); // The logon processor did not add the message alias. {$EXTERNALSYM NERR_UnableToAddName_F} NERR_UnableToDelName_W = (NERR_BASE+106); // @W The logoff processor did not delete the message alias. {$EXTERNALSYM NERR_UnableToDelName_W} NERR_UnableToDelName_F = (NERR_BASE+107); // The logoff processor did not delete the message alias. {$EXTERNALSYM NERR_UnableToDelName_F} // UNUSED BASE+108 NERR_LogonsPaused = (NERR_BASE+109); // Network logons are paused. {$EXTERNALSYM NERR_LogonsPaused} NERR_LogonServerConflict = (NERR_BASE+110); // A centralized logon-server conflict occurred. {$EXTERNALSYM NERR_LogonServerConflict} NERR_LogonNoUserPath = (NERR_BASE+111); // The server is configured without a valid user path. {$EXTERNALSYM NERR_LogonNoUserPath} NERR_LogonScriptError = (NERR_BASE+112); // An error occurred while loading or running the logon script. {$EXTERNALSYM NERR_LogonScriptError} // UNUSED BASE+113 NERR_StandaloneLogon = (NERR_BASE+114); // The logon server was not specified. Your computer will be logged on as STANDALONE. {$EXTERNALSYM NERR_StandaloneLogon} NERR_LogonServerNotFound = (NERR_BASE+115); // The logon server could not be found. {$EXTERNALSYM NERR_LogonServerNotFound} NERR_LogonDomainExists = (NERR_BASE+116); // There is already a logon domain for this computer. {$EXTERNALSYM NERR_LogonDomainExists} NERR_NonValidatedLogon = (NERR_BASE+117); // The logon server could not validate the logon. {$EXTERNALSYM NERR_NonValidatedLogon} // // ACF API related (access, user, group) // Error codes from BASE+119 to BASE+149 NERR_ACFNotFound = (NERR_BASE+119); // The security database could not be found. {$EXTERNALSYM NERR_ACFNotFound} NERR_GroupNotFound = (NERR_BASE+120); // The group name could not be found. {$EXTERNALSYM NERR_GroupNotFound} NERR_UserNotFound = (NERR_BASE+121); // The user name could not be found. {$EXTERNALSYM NERR_UserNotFound} NERR_ResourceNotFound = (NERR_BASE+122); // The resource name could not be found. {$EXTERNALSYM NERR_ResourceNotFound} NERR_GroupExists = (NERR_BASE+123); // The group already exists. {$EXTERNALSYM NERR_GroupExists} NERR_UserExists = (NERR_BASE+124); // The account already exists. {$EXTERNALSYM NERR_UserExists} NERR_ResourceExists = (NERR_BASE+125); // The resource permission list already exists. {$EXTERNALSYM NERR_ResourceExists} NERR_NotPrimary = (NERR_BASE+126); // This operation is only allowed on the primary domain controller of the domain. {$EXTERNALSYM NERR_NotPrimary} NERR_ACFNotLoaded = (NERR_BASE+127); // The security database has not been started. {$EXTERNALSYM NERR_ACFNotLoaded} NERR_ACFNoRoom = (NERR_BASE+128); // There are too many names in the user accounts database. {$EXTERNALSYM NERR_ACFNoRoom} NERR_ACFFileIOFail = (NERR_BASE+129); // A disk I/O failure occurred. {$EXTERNALSYM NERR_ACFFileIOFail} NERR_ACFTooManyLists = (NERR_BASE+130); // The limit of 64 entries per resource was exceeded. {$EXTERNALSYM NERR_ACFTooManyLists} NERR_UserLogon = (NERR_BASE+131); // Deleting a user with a session is not allowed. {$EXTERNALSYM NERR_UserLogon} NERR_ACFNoParent = (NERR_BASE+132); // The parent directory could not be located. {$EXTERNALSYM NERR_ACFNoParent} NERR_CanNotGrowSegment = (NERR_BASE+133); // Unable to add to the security database session cache segment. {$EXTERNALSYM NERR_CanNotGrowSegment} NERR_SpeGroupOp = (NERR_BASE+134); // This operation is not allowed on this special group. {$EXTERNALSYM NERR_SpeGroupOp} NERR_NotInCache = (NERR_BASE+135); // This user is not cached in user accounts database session cache. {$EXTERNALSYM NERR_NotInCache} NERR_UserInGroup = (NERR_BASE+136); // The user already belongs to this group. {$EXTERNALSYM NERR_UserInGroup} NERR_UserNotInGroup = (NERR_BASE+137); // The user does not belong to this group. {$EXTERNALSYM NERR_UserNotInGroup} NERR_AccountUndefined = (NERR_BASE+138); // This user account is undefined. {$EXTERNALSYM NERR_AccountUndefined} NERR_AccountExpired = (NERR_BASE+139); // This user account has expired. {$EXTERNALSYM NERR_AccountExpired} NERR_InvalidWorkstation = (NERR_BASE+140); // The user is not allowed to log on from this workstation. {$EXTERNALSYM NERR_InvalidWorkstation} NERR_InvalidLogonHours = (NERR_BASE+141); // The user is not allowed to log on at this time. {$EXTERNALSYM NERR_InvalidLogonHours} NERR_PasswordExpired = (NERR_BASE+142); // The password of this user has expired. {$EXTERNALSYM NERR_PasswordExpired} NERR_PasswordCantChange = (NERR_BASE+143); // The password of this user cannot change. {$EXTERNALSYM NERR_PasswordCantChange} NERR_PasswordHistConflict = (NERR_BASE+144); // This password cannot be used now. {$EXTERNALSYM NERR_PasswordHistConflict} NERR_PasswordTooShort = (NERR_BASE+145); // The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements. {$EXTERNALSYM NERR_PasswordTooShort} NERR_PasswordTooRecent = (NERR_BASE+146); // The password of this user is too recent to change. {$EXTERNALSYM NERR_PasswordTooRecent} NERR_InvalidDatabase = (NERR_BASE+147); // The security database is corrupted. {$EXTERNALSYM NERR_InvalidDatabase} NERR_DatabaseUpToDate = (NERR_BASE+148); // No updates are necessary to this replicant network/local security database. {$EXTERNALSYM NERR_DatabaseUpToDate} NERR_SyncRequired = (NERR_BASE+149); // This replicant database is outdated; synchronization is required. {$EXTERNALSYM NERR_SyncRequired} // // Use API related // Error codes from BASE+150 to BASE+169 NERR_UseNotFound = (NERR_BASE+150); // The network connection could not be found. {$EXTERNALSYM NERR_UseNotFound} NERR_BadAsgType = (NERR_BASE+151); // This asg_type is invalid. {$EXTERNALSYM NERR_BadAsgType} NERR_DeviceIsShared = (NERR_BASE+152); // This device is currently being shared. {$EXTERNALSYM NERR_DeviceIsShared} // // Message Server related // Error codes BASE+170 to BASE+209 NERR_NoComputerName = (NERR_BASE+170); // The computer name could not be added as a message alias. The name may already exist on the network. {$EXTERNALSYM NERR_NoComputerName} NERR_MsgAlreadyStarted = (NERR_BASE+171); // The Messenger service is already started. {$EXTERNALSYM NERR_MsgAlreadyStarted} NERR_MsgInitFailed = (NERR_BASE+172); // The Messenger service failed to start. {$EXTERNALSYM NERR_MsgInitFailed} NERR_NameNotFound = (NERR_BASE+173); // The message alias could not be found on the network. {$EXTERNALSYM NERR_NameNotFound} NERR_AlreadyForwarded = (NERR_BASE+174); // This message alias has already been forwarded. {$EXTERNALSYM NERR_AlreadyForwarded} NERR_AddForwarded = (NERR_BASE+175); // This message alias has been added but is still forwarded. {$EXTERNALSYM NERR_AddForwarded} NERR_AlreadyExists = (NERR_BASE+176); // This message alias already exists locally. {$EXTERNALSYM NERR_AlreadyExists} NERR_TooManyNames = (NERR_BASE+177); // The maximum number of added message aliases has been exceeded. {$EXTERNALSYM NERR_TooManyNames} NERR_DelComputerName = (NERR_BASE+178); // The computer name could not be deleted. {$EXTERNALSYM NERR_DelComputerName} NERR_LocalForward = (NERR_BASE+179); // Messages cannot be forwarded back to the same workstation. {$EXTERNALSYM NERR_LocalForward} NERR_GrpMsgProcessor = (NERR_BASE+180); // An error occurred in the domain message processor. {$EXTERNALSYM NERR_GrpMsgProcessor} NERR_PausedRemote = (NERR_BASE+181); // The message was sent, but the recipient has paused the Messenger service. {$EXTERNALSYM NERR_PausedRemote} NERR_BadReceive = (NERR_BASE+182); // The message was sent but not received. {$EXTERNALSYM NERR_BadReceive} NERR_NameInUse = (NERR_BASE+183); // The message alias is currently in use. Try again later. {$EXTERNALSYM NERR_NameInUse} NERR_MsgNotStarted = (NERR_BASE+184); // The Messenger service has not been started. {$EXTERNALSYM NERR_MsgNotStarted} NERR_NotLocalName = (NERR_BASE+185); // The name is not on the local computer. {$EXTERNALSYM NERR_NotLocalName} NERR_NoForwardName = (NERR_BASE+186); // The forwarded message alias could not be found on the network. {$EXTERNALSYM NERR_NoForwardName} NERR_RemoteFull = (NERR_BASE+187); // The message alias table on the remote station is full. {$EXTERNALSYM NERR_RemoteFull} NERR_NameNotForwarded = (NERR_BASE+188); // Messages for this alias are not currently being forwarded. {$EXTERNALSYM NERR_NameNotForwarded} NERR_TruncatedBroadcast = (NERR_BASE+189); // The broadcast message was truncated. {$EXTERNALSYM NERR_TruncatedBroadcast} NERR_InvalidDevice = (NERR_BASE+194); // This is an invalid device name. {$EXTERNALSYM NERR_InvalidDevice} NERR_WriteFault = (NERR_BASE+195); // A write fault occurred. {$EXTERNALSYM NERR_WriteFault} // UNUSED BASE+196 NERR_DuplicateName = (NERR_BASE+197); // A duplicate message alias exists on the network. {$EXTERNALSYM NERR_DuplicateName} NERR_DeleteLater = (NERR_BASE+198); // @W This message alias will be deleted later. {$EXTERNALSYM NERR_DeleteLater} NERR_IncompleteDel = (NERR_BASE+199); // The message alias was not successfully deleted from all networks. {$EXTERNALSYM NERR_IncompleteDel} NERR_MultipleNets = (NERR_BASE+200); // This operation is not supported on computers with multiple networks. {$EXTERNALSYM NERR_MultipleNets} // // Server API related // Error codes BASE+210 to BASE+229 NERR_NetNameNotFound = (NERR_BASE+210); // This shared resource does not exist. {$EXTERNALSYM NERR_NetNameNotFound} NERR_DeviceNotShared = (NERR_BASE+211); // This device is not shared. {$EXTERNALSYM NERR_DeviceNotShared} NERR_ClientNameNotFound = (NERR_BASE+212); // A session does not exist with that computer name. {$EXTERNALSYM NERR_ClientNameNotFound} NERR_FileIdNotFound = (NERR_BASE+214); // There is not an open file with that identification number. {$EXTERNALSYM NERR_FileIdNotFound} NERR_ExecFailure = (NERR_BASE+215); // A failure occurred when executing a remote administration command. {$EXTERNALSYM NERR_ExecFailure} NERR_TmpFile = (NERR_BASE+216); // A failure occurred when opening a remote temporary file. {$EXTERNALSYM NERR_TmpFile} NERR_TooMuchData = (NERR_BASE+217); // The data returned from a remote administration command has been truncated to 64K. {$EXTERNALSYM NERR_TooMuchData} NERR_DeviceShareConflict = (NERR_BASE+218); // This device cannot be shared as both a spooled and a non-spooled resource. {$EXTERNALSYM NERR_DeviceShareConflict} NERR_BrowserTableIncomplete = (NERR_BASE+219); // The information in the list of servers may be incorrect. {$EXTERNALSYM NERR_BrowserTableIncomplete} NERR_NotLocalDomain = (NERR_BASE+220); // The computer is not active in this domain. {$EXTERNALSYM NERR_NotLocalDomain} NERR_IsDfsShare = (NERR_BASE+221); // The share must be removed from the Distributed File System before it can be deleted. {$EXTERNALSYM NERR_IsDfsShare} // // CharDev API related // Error codes BASE+230 to BASE+249 // UNUSED BASE+230 NERR_DevInvalidOpCode = (NERR_BASE+231); // The operation is invalid for this device. {$EXTERNALSYM NERR_DevInvalidOpCode} NERR_DevNotFound = (NERR_BASE+232); // This device cannot be shared. {$EXTERNALSYM NERR_DevNotFound} NERR_DevNotOpen = (NERR_BASE+233); // This device was not open. {$EXTERNALSYM NERR_DevNotOpen} NERR_BadQueueDevString = (NERR_BASE+234); // This device name list is invalid. {$EXTERNALSYM NERR_BadQueueDevString} NERR_BadQueuePriority = (NERR_BASE+235); // The queue priority is invalid. {$EXTERNALSYM NERR_BadQueuePriority} NERR_NoCommDevs = (NERR_BASE+237); // There are no shared communication devices. {$EXTERNALSYM NERR_NoCommDevs} NERR_QueueNotFound = (NERR_BASE+238); // The queue you specified does not exist. {$EXTERNALSYM NERR_QueueNotFound} NERR_BadDevString = (NERR_BASE+240); // This list of devices is invalid. {$EXTERNALSYM NERR_BadDevString} NERR_BadDev = (NERR_BASE+241); // The requested device is invalid. {$EXTERNALSYM NERR_BadDev} NERR_InUseBySpooler = (NERR_BASE+242); // This device is already in use by the spooler. {$EXTERNALSYM NERR_InUseBySpooler} NERR_CommDevInUse = (NERR_BASE+243); // This device is already in use as a communication device. {$EXTERNALSYM NERR_CommDevInUse} // // NetICanonicalize and NetIType and NetIMakeLMFileName // NetIListCanon and NetINameCheck // Error codes BASE+250 to BASE+269 NERR_InvalidComputer = (NERR_BASE+251); // This computer name is invalid. {$EXTERNALSYM NERR_InvalidComputer} // UNUSED BASE+252 // UNUSED BASE+253 NERR_MaxLenExceeded = (NERR_BASE+254); // The string and prefix specified are too long. {$EXTERNALSYM NERR_MaxLenExceeded} // UNUSED BASE+255 NERR_BadComponent = (NERR_BASE+256); // This path component is invalid. {$EXTERNALSYM NERR_BadComponent} NERR_CantType = (NERR_BASE+257); // Could not determine the type of input. {$EXTERNALSYM NERR_CantType} // UNUSED BASE+258 // UNUSED BASE+259 NERR_TooManyEntries = (NERR_BASE+262); // The buffer for types is not big enough. {$EXTERNALSYM NERR_TooManyEntries} // // NetProfile // Error codes BASE+270 to BASE+276 NERR_ProfileFileTooBig = (NERR_BASE+270); // Profile files cannot exceed 64K. {$EXTERNALSYM NERR_ProfileFileTooBig} NERR_ProfileOffset = (NERR_BASE+271); // The start offset is out of range. {$EXTERNALSYM NERR_ProfileOffset} NERR_ProfileCleanup = (NERR_BASE+272); // The system cannot delete current connections to network resources. {$EXTERNALSYM NERR_ProfileCleanup} NERR_ProfileUnknownCmd = (NERR_BASE+273); // The system was unable to parse the command line in this file. {$EXTERNALSYM NERR_ProfileUnknownCmd} NERR_ProfileLoadErr = (NERR_BASE+274); // An error occurred while loading the profile file. {$EXTERNALSYM NERR_ProfileLoadErr} NERR_ProfileSaveErr = (NERR_BASE+275); // @W Errors occurred while saving the profile file. The profile was partially saved. {$EXTERNALSYM NERR_ProfileSaveErr} // // NetAudit and NetErrorLog // Error codes BASE+277 to BASE+279 NERR_LogOverflow = (NERR_BASE+277); // Log file %1 is full. {$EXTERNALSYM NERR_LogOverflow} NERR_LogFileChanged = (NERR_BASE+278); // This log file has changed between reads. {$EXTERNALSYM NERR_LogFileChanged} NERR_LogFileCorrupt = (NERR_BASE+279); // Log file %1 is corrupt. {$EXTERNALSYM NERR_LogFileCorrupt} // // NetRemote // Error codes BASE+280 to BASE+299 NERR_SourceIsDir = (NERR_BASE+280); // The source path cannot be a directory. {$EXTERNALSYM NERR_SourceIsDir} NERR_BadSource = (NERR_BASE+281); // The source path is illegal. {$EXTERNALSYM NERR_BadSource} NERR_BadDest = (NERR_BASE+282); // The destination path is illegal. {$EXTERNALSYM NERR_BadDest} NERR_DifferentServers = (NERR_BASE+283); // The source and destination paths are on different servers. {$EXTERNALSYM NERR_DifferentServers} // UNUSED BASE+284 NERR_RunSrvPaused = (NERR_BASE+285); // The Run server you requested is paused. {$EXTERNALSYM NERR_RunSrvPaused} // UNUSED BASE+286 // UNUSED BASE+287 // UNUSED BASE+288 NERR_ErrCommRunSrv = (NERR_BASE+289); // An error occurred when communicating with a Run server. {$EXTERNALSYM NERR_ErrCommRunSrv} // UNUSED BASE+290 NERR_ErrorExecingGhost = (NERR_BASE+291); // An error occurred when starting a background process. {$EXTERNALSYM NERR_ErrorExecingGhost} NERR_ShareNotFound = (NERR_BASE+292); // The shared resource you are connected to could not be found. {$EXTERNALSYM NERR_ShareNotFound} // UNUSED BASE+293 // UNUSED BASE+294 // // NetWksta.sys (redir) returned error codes. // // NERR_BASE + (300-329) NERR_InvalidLana = (NERR_BASE+300); // The LAN adapter number is invalid. {$EXTERNALSYM NERR_InvalidLana} NERR_OpenFiles = (NERR_BASE+301); // There are open files on the connection. {$EXTERNALSYM NERR_OpenFiles} NERR_ActiveConns = (NERR_BASE+302); // Active connections still exist. {$EXTERNALSYM NERR_ActiveConns} NERR_BadPasswordCore = (NERR_BASE+303); // This share name or password is invalid. {$EXTERNALSYM NERR_BadPasswordCore} NERR_DevInUse = (NERR_BASE+304); // The device is being accessed by an active process. {$EXTERNALSYM NERR_DevInUse} NERR_LocalDrive = (NERR_BASE+305); // The drive letter is in use locally. {$EXTERNALSYM NERR_LocalDrive} // // Alert error codes. // // NERR_BASE + (330-339) NERR_AlertExists = (NERR_BASE+330); // The specified client is already registered for the specified event. {$EXTERNALSYM NERR_AlertExists} NERR_TooManyAlerts = (NERR_BASE+331); // The alert table is full. {$EXTERNALSYM NERR_TooManyAlerts} NERR_NoSuchAlert = (NERR_BASE+332); // An invalid or nonexistent alert name was raised. {$EXTERNALSYM NERR_NoSuchAlert} NERR_BadRecipient = (NERR_BASE+333); // The alert recipient is invalid. {$EXTERNALSYM NERR_BadRecipient} NERR_AcctLimitExceeded = (NERR_BASE+334); // A user's session with this server has been deleted {$EXTERNALSYM NERR_AcctLimitExceeded} // because the user's logon hours are no longer valid. // // Additional Error and Audit log codes. // // NERR_BASE +(340-343) NERR_InvalidLogSeek = (NERR_BASE+340); // The log file does not contain the requested record number. {$EXTERNALSYM NERR_InvalidLogSeek} // UNUSED BASE+341 // UNUSED BASE+342 // UNUSED BASE+343 // // Additional UAS and NETLOGON codes // // NERR_BASE +(350-359) NERR_BadUasConfig = (NERR_BASE+350); // The user accounts database is not configured correctly. {$EXTERNALSYM NERR_BadUasConfig} NERR_InvalidUASOp = (NERR_BASE+351); // This operation is not permitted when the Netlogon service is running. {$EXTERNALSYM NERR_InvalidUASOp} NERR_LastAdmin = (NERR_BASE+352); // This operation is not allowed on the last administrative account. {$EXTERNALSYM NERR_LastAdmin} NERR_DCNotFound = (NERR_BASE+353); // Could not find domain controller for this domain. {$EXTERNALSYM NERR_DCNotFound} NERR_LogonTrackingError = (NERR_BASE+354); // Could not set logon information for this user. {$EXTERNALSYM NERR_LogonTrackingError} NERR_NetlogonNotStarted = (NERR_BASE+355); // The Netlogon service has not been started. {$EXTERNALSYM NERR_NetlogonNotStarted} NERR_CanNotGrowUASFile = (NERR_BASE+356); // Unable to add to the user accounts database. {$EXTERNALSYM NERR_CanNotGrowUASFile} NERR_TimeDiffAtDC = (NERR_BASE+357); // This server's clock is not synchronized with the primary domain controller's clock. {$EXTERNALSYM NERR_TimeDiffAtDC} NERR_PasswordMismatch = (NERR_BASE+358); // A password mismatch has been detected. {$EXTERNALSYM NERR_PasswordMismatch} // // Server Integration error codes. // // NERR_BASE +(360-369) NERR_NoSuchServer = (NERR_BASE+360); // The server identification does not specify a valid server. {$EXTERNALSYM NERR_NoSuchServer} NERR_NoSuchSession = (NERR_BASE+361); // The session identification does not specify a valid session. {$EXTERNALSYM NERR_NoSuchSession} NERR_NoSuchConnection = (NERR_BASE+362); // The connection identification does not specify a valid connection. {$EXTERNALSYM NERR_NoSuchConnection} NERR_TooManyServers = (NERR_BASE+363); // There is no space for another entry in the table of available servers. {$EXTERNALSYM NERR_TooManyServers} NERR_TooManySessions = (NERR_BASE+364); // The server has reached the maximum number of sessions it supports. {$EXTERNALSYM NERR_TooManySessions} NERR_TooManyConnections = (NERR_BASE+365); // The server has reached the maximum number of connections it supports. {$EXTERNALSYM NERR_TooManyConnections} NERR_TooManyFiles = (NERR_BASE+366); // The server cannot open more files because it has reached its maximum number. {$EXTERNALSYM NERR_TooManyFiles} NERR_NoAlternateServers = (NERR_BASE+367); // There are no alternate servers registered on this server. {$EXTERNALSYM NERR_NoAlternateServers} // UNUSED BASE+368 // UNUSED BASE+369 NERR_TryDownLevel = (NERR_BASE+370); // Try down-level (remote admin protocol) version of API instead. {$EXTERNALSYM NERR_TryDownLevel} // // UPS error codes. // // NERR_BASE + (380-384) NERR_UPSDriverNotStarted = (NERR_BASE+380); // The UPS driver could not be accessed by the UPS service. {$EXTERNALSYM NERR_UPSDriverNotStarted} NERR_UPSInvalidConfig = (NERR_BASE+381); // The UPS service is not configured correctly. {$EXTERNALSYM NERR_UPSInvalidConfig} NERR_UPSInvalidCommPort = (NERR_BASE+382); // The UPS service could not access the specified Comm Port. {$EXTERNALSYM NERR_UPSInvalidCommPort} NERR_UPSSignalAsserted = (NERR_BASE+383); // The UPS indicated a line fail or low battery situation. Service not started. {$EXTERNALSYM NERR_UPSSignalAsserted} NERR_UPSShutdownFailed = (NERR_BASE+384); // The UPS service failed to perform a system shut down. {$EXTERNALSYM NERR_UPSShutdownFailed} // // Remoteboot error codes. // // NERR_BASE + (400-419) // Error codes 400 - 405 are used by RPLBOOT.SYS. // Error codes 403, 407 - 416 are used by RPLLOADR.COM, // Error code 417 is the alerter message of REMOTEBOOT (RPLSERVR.EXE). // Error code 418 is for when REMOTEBOOT can't start // Error code 419 is for a disallowed 2nd rpl connection // NERR_BadDosRetCode = (NERR_BASE+400); // The program below returned an MS-DOS error code: {$EXTERNALSYM NERR_BadDosRetCode} NERR_ProgNeedsExtraMem = (NERR_BASE+401); // The program below needs more memory: {$EXTERNALSYM NERR_ProgNeedsExtraMem} NERR_BadDosFunction = (NERR_BASE+402); // The program below called an unsupported MS-DOS function: {$EXTERNALSYM NERR_BadDosFunction} NERR_RemoteBootFailed = (NERR_BASE+403); // The workstation failed to boot. {$EXTERNALSYM NERR_RemoteBootFailed} NERR_BadFileCheckSum = (NERR_BASE+404); // The file below is corrupt. {$EXTERNALSYM NERR_BadFileCheckSum} NERR_NoRplBootSystem = (NERR_BASE+405); // No loader is specified in the boot-block definition file. {$EXTERNALSYM NERR_NoRplBootSystem} NERR_RplLoadrNetBiosErr = (NERR_BASE+406); // NetBIOS returned an error: The NCB and SMB are dumped above. {$EXTERNALSYM NERR_RplLoadrNetBiosErr} NERR_RplLoadrDiskErr = (NERR_BASE+407); // A disk I/O error occurred. {$EXTERNALSYM NERR_RplLoadrDiskErr} NERR_ImageParamErr = (NERR_BASE+408); // Image parameter substitution failed. {$EXTERNALSYM NERR_ImageParamErr} NERR_TooManyImageParams = (NERR_BASE+409); // Too many image parameters cross disk sector boundaries. {$EXTERNALSYM NERR_TooManyImageParams} NERR_NonDosFloppyUsed = (NERR_BASE+410); // The image was not generated from an MS-DOS diskette formatted with /S. {$EXTERNALSYM NERR_NonDosFloppyUsed} NERR_RplBootRestart = (NERR_BASE+411); // Remote boot will be restarted later. {$EXTERNALSYM NERR_RplBootRestart} NERR_RplSrvrCallFailed = (NERR_BASE+412); // The call to the Remoteboot server failed. {$EXTERNALSYM NERR_RplSrvrCallFailed} NERR_CantConnectRplSrvr = (NERR_BASE+413); // Cannot connect to the Remoteboot server. {$EXTERNALSYM NERR_CantConnectRplSrvr} NERR_CantOpenImageFile = (NERR_BASE+414); // Cannot open image file on the Remoteboot server. {$EXTERNALSYM NERR_CantOpenImageFile} NERR_CallingRplSrvr = (NERR_BASE+415); // Connecting to the Remoteboot server... {$EXTERNALSYM NERR_CallingRplSrvr} NERR_StartingRplBoot = (NERR_BASE+416); // Connecting to the Remoteboot server... {$EXTERNALSYM NERR_StartingRplBoot} NERR_RplBootServiceTerm = (NERR_BASE+417); // Remote boot service was stopped; check the error log for the cause of the problem. {$EXTERNALSYM NERR_RplBootServiceTerm} NERR_RplBootStartFailed = (NERR_BASE+418); // Remote boot startup failed; check the error log for the cause of the problem. {$EXTERNALSYM NERR_RplBootStartFailed} NERR_RPL_CONNECTED = (NERR_BASE+419); // A second connection to a Remoteboot resource is not allowed. {$EXTERNALSYM NERR_RPL_CONNECTED} // // FTADMIN API error codes // // NERR_BASE + (425-434) // // (Currently not used in NT) // // // Browser service API error codes // // NERR_BASE + (450-475) // NERR_BrowserConfiguredToNotRun = (NERR_BASE+450); // The browser service was configured with MaintainServerList=No. {$EXTERNALSYM NERR_BrowserConfiguredToNotRun} // // Additional Remoteboot error codes. // // NERR_BASE + (510-550) NERR_RplNoAdaptersStarted = (NERR_BASE+510); // Service failed to start since none of the network adapters started with this service. {$EXTERNALSYM NERR_RplNoAdaptersStarted} NERR_RplBadRegistry = (NERR_BASE+511); // Service failed to start due to bad startup information in the registry. {$EXTERNALSYM NERR_RplBadRegistry} NERR_RplBadDatabase = (NERR_BASE+512); // Service failed to start because its database is absent or corrupt. {$EXTERNALSYM NERR_RplBadDatabase} NERR_RplRplfilesShare = (NERR_BASE+513); // Service failed to start because RPLFILES share is absent. {$EXTERNALSYM NERR_RplRplfilesShare} NERR_RplNotRplServer = (NERR_BASE+514); // Service failed to start because RPLUSER group is absent. {$EXTERNALSYM NERR_RplNotRplServer} NERR_RplCannotEnum = (NERR_BASE+515); // Cannot enumerate service records. {$EXTERNALSYM NERR_RplCannotEnum} NERR_RplWkstaInfoCorrupted = (NERR_BASE+516); // Workstation record information has been corrupted. {$EXTERNALSYM NERR_RplWkstaInfoCorrupted} NERR_RplWkstaNotFound = (NERR_BASE+517); // Workstation record was not found. {$EXTERNALSYM NERR_RplWkstaNotFound} NERR_RplWkstaNameUnavailable = (NERR_BASE+518); // Workstation name is in use by some other workstation. {$EXTERNALSYM NERR_RplWkstaNameUnavailable} NERR_RplProfileInfoCorrupted = (NERR_BASE+519); // Profile record information has been corrupted. {$EXTERNALSYM NERR_RplProfileInfoCorrupted} NERR_RplProfileNotFound = (NERR_BASE+520); // Profile record was not found. {$EXTERNALSYM NERR_RplProfileNotFound} NERR_RplProfileNameUnavailable = (NERR_BASE+521); // Profile name is in use by some other profile. {$EXTERNALSYM NERR_RplProfileNameUnavailable} NERR_RplProfileNotEmpty = (NERR_BASE+522); // There are workstations using this profile. {$EXTERNALSYM NERR_RplProfileNotEmpty} NERR_RplConfigInfoCorrupted = (NERR_BASE+523); // Configuration record information has been corrupted. {$EXTERNALSYM NERR_RplConfigInfoCorrupted} NERR_RplConfigNotFound = (NERR_BASE+524); // Configuration record was not found. {$EXTERNALSYM NERR_RplConfigNotFound} NERR_RplAdapterInfoCorrupted = (NERR_BASE+525); // Adapter id record information has been corrupted. {$EXTERNALSYM NERR_RplAdapterInfoCorrupted} NERR_RplInternal = (NERR_BASE+526); // An internal service error has occurred. {$EXTERNALSYM NERR_RplInternal} NERR_RplVendorInfoCorrupted = (NERR_BASE+527); // Vendor id record information has been corrupted. {$EXTERNALSYM NERR_RplVendorInfoCorrupted} NERR_RplBootInfoCorrupted = (NERR_BASE+528); // Boot block record information has been corrupted. {$EXTERNALSYM NERR_RplBootInfoCorrupted} NERR_RplWkstaNeedsUserAcct = (NERR_BASE+529); // The user account for this workstation record is missing. {$EXTERNALSYM NERR_RplWkstaNeedsUserAcct} NERR_RplNeedsRPLUSERAcct = (NERR_BASE+530); // The RPLUSER local group could not be found. {$EXTERNALSYM NERR_RplNeedsRPLUSERAcct} NERR_RplBootNotFound = (NERR_BASE+531); // Boot block record was not found. {$EXTERNALSYM NERR_RplBootNotFound} NERR_RplIncompatibleProfile = (NERR_BASE+532); // Chosen profile is incompatible with this workstation. {$EXTERNALSYM NERR_RplIncompatibleProfile} NERR_RplAdapterNameUnavailable = (NERR_BASE+533); // Chosen network adapter id is in use by some other workstation. {$EXTERNALSYM NERR_RplAdapterNameUnavailable} NERR_RplConfigNotEmpty = (NERR_BASE+534); // There are profiles using this configuration. {$EXTERNALSYM NERR_RplConfigNotEmpty} NERR_RplBootInUse = (NERR_BASE+535); // There are workstations, profiles or configurations using this boot block. {$EXTERNALSYM NERR_RplBootInUse} NERR_RplBackupDatabase = (NERR_BASE+536); // Service failed to backup Remoteboot database. {$EXTERNALSYM NERR_RplBackupDatabase} NERR_RplAdapterNotFound = (NERR_BASE+537); // Adapter record was not found. {$EXTERNALSYM NERR_RplAdapterNotFound} NERR_RplVendorNotFound = (NERR_BASE+538); // Vendor record was not found. {$EXTERNALSYM NERR_RplVendorNotFound} NERR_RplVendorNameUnavailable = (NERR_BASE+539); // Vendor name is in use by some other vendor record. {$EXTERNALSYM NERR_RplVendorNameUnavailable} NERR_RplBootNameUnavailable = (NERR_BASE+540); // (boot name, vendor id) is in use by some other boot block record. {$EXTERNALSYM NERR_RplBootNameUnavailable} NERR_RplConfigNameUnavailable = (NERR_BASE+541); // Configuration name is in use by some other configuration. {$EXTERNALSYM NERR_RplConfigNameUnavailable} //*INTERNAL_ONLY* // // Dfs API error codes. // // NERR_BASE + (560-590) NERR_DfsInternalCorruption = (NERR_BASE+560); // The internal database maintained by the DFS service is corrupt {$EXTERNALSYM NERR_DfsInternalCorruption} NERR_DfsVolumeDataCorrupt = (NERR_BASE+561); // One of the records in the internal DFS database is corrupt {$EXTERNALSYM NERR_DfsVolumeDataCorrupt} NERR_DfsNoSuchVolume = (NERR_BASE+562); // There is no DFS name whose entry path matches the input Entry Path {$EXTERNALSYM NERR_DfsNoSuchVolume} NERR_DfsVolumeAlreadyExists = (NERR_BASE+563); // A root or link with the given name already exists {$EXTERNALSYM NERR_DfsVolumeAlreadyExists} NERR_DfsAlreadyShared = (NERR_BASE+564); // The server share specified is already shared in the DFS {$EXTERNALSYM NERR_DfsAlreadyShared} NERR_DfsNoSuchShare = (NERR_BASE+565); // The indicated server share does not support the indicated DFS namespace {$EXTERNALSYM NERR_DfsNoSuchShare} NERR_DfsNotALeafVolume = (NERR_BASE+566); // The operation is not valid on this portion of the namespace {$EXTERNALSYM NERR_DfsNotALeafVolume} NERR_DfsLeafVolume = (NERR_BASE+567); // The operation is not valid on this portion of the namespace {$EXTERNALSYM NERR_DfsLeafVolume} NERR_DfsVolumeHasMultipleServers = (NERR_BASE+568); // The operation is ambiguous because the link has multiple servers {$EXTERNALSYM NERR_DfsVolumeHasMultipleServers} NERR_DfsCantCreateJunctionPoint = (NERR_BASE+569); // Unable to create a link {$EXTERNALSYM NERR_DfsCantCreateJunctionPoint} NERR_DfsServerNotDfsAware = (NERR_BASE+570); // The server is not DFS Aware {$EXTERNALSYM NERR_DfsServerNotDfsAware} NERR_DfsBadRenamePath = (NERR_BASE+571); // The specified rename target path is invalid {$EXTERNALSYM NERR_DfsBadRenamePath} NERR_DfsVolumeIsOffline = (NERR_BASE+572); // The specified DFS link is offline {$EXTERNALSYM NERR_DfsVolumeIsOffline} NERR_DfsNoSuchServer = (NERR_BASE+573); // The specified server is not a server for this link {$EXTERNALSYM NERR_DfsNoSuchServer} NERR_DfsCyclicalName = (NERR_BASE+574); // A cycle in the DFS name was detected {$EXTERNALSYM NERR_DfsCyclicalName} NERR_DfsNotSupportedInServerDfs = (NERR_BASE+575); // The operation is not supported on a server-based DFS {$EXTERNALSYM NERR_DfsNotSupportedInServerDfs} NERR_DfsDuplicateService = (NERR_BASE+576); // This link is already supported by the specified server-share {$EXTERNALSYM NERR_DfsDuplicateService} NERR_DfsCantRemoveLastServerShare = (NERR_BASE+577); // Can't remove the last server-share supporting this root or link {$EXTERNALSYM NERR_DfsCantRemoveLastServerShare} NERR_DfsVolumeIsInterDfs = (NERR_BASE+578); // The operation is not supported for an Inter-DFS link {$EXTERNALSYM NERR_DfsVolumeIsInterDfs} NERR_DfsInconsistent = (NERR_BASE+579); // The internal state of the DFS Service has become inconsistent {$EXTERNALSYM NERR_DfsInconsistent} NERR_DfsServerUpgraded = (NERR_BASE+580); // The DFS Service has been installed on the specified server {$EXTERNALSYM NERR_DfsServerUpgraded} NERR_DfsDataIsIdentical = (NERR_BASE+581); // The DFS data being reconciled is identical {$EXTERNALSYM NERR_DfsDataIsIdentical} NERR_DfsCantRemoveDfsRoot = (NERR_BASE+582); // The DFS root cannot be deleted - Uninstall DFS if required {$EXTERNALSYM NERR_DfsCantRemoveDfsRoot} NERR_DfsChildOrParentInDfs = (NERR_BASE+583); // A child or parent directory of the share is already in a DFS {$EXTERNALSYM NERR_DfsChildOrParentInDfs} NERR_DfsInternalError = (NERR_BASE+590); // DFS internal error {$EXTERNALSYM NERR_DfsInternalError} // // Net setup error codes. // // NERR_BASE + (591-600) NERR_SetupAlreadyJoined = (NERR_BASE+591); // This machine is already joined to a domain. {$EXTERNALSYM NERR_SetupAlreadyJoined} NERR_SetupNotJoined = (NERR_BASE+592); // This machine is not currently joined to a domain. {$EXTERNALSYM NERR_SetupNotJoined} NERR_SetupDomainController = (NERR_BASE+593); // This machine is a domain controller and cannot be unjoined from a domain. {$EXTERNALSYM NERR_SetupDomainController} NERR_DefaultJoinRequired = (NERR_BASE+594); // The destination domain controller does not support creating machine accounts in OUs. {$EXTERNALSYM NERR_DefaultJoinRequired} NERR_InvalidWorkgroupName = (NERR_BASE+595); // The specified workgroup name is invalid. {$EXTERNALSYM NERR_InvalidWorkgroupName} NERR_NameUsesIncompatibleCodePage = (NERR_BASE+596); // The specified computer name is incompatible with the default language used on the domain controller. {$EXTERNALSYM NERR_NameUsesIncompatibleCodePage} NERR_ComputerAccountNotFound = (NERR_BASE+597); // The specified computer account could not be found. {$EXTERNALSYM NERR_ComputerAccountNotFound} NERR_PersonalSku = (NERR_BASE+598); // This version of Windows cannot be joined to a domain. {$EXTERNALSYM NERR_PersonalSku} // // Some Password and account error results // // NERR_BASE + (601 - 608) // NERR_PasswordMustChange = (NERR_BASE + 601); // Password must change at next logon {$EXTERNALSYM NERR_PasswordMustChange} NERR_AccountLockedOut = (NERR_BASE + 602); // Account is locked out {$EXTERNALSYM NERR_AccountLockedOut} NERR_PasswordTooLong = (NERR_BASE + 603); // Password is too long {$EXTERNALSYM NERR_PasswordTooLong} NERR_PasswordNotComplexEnough = (NERR_BASE + 604); // Password doesn't meet the complexity policy {$EXTERNALSYM NERR_PasswordNotComplexEnough} NERR_PasswordFilterError = (NERR_BASE + 605); // Password doesn't meet the requirements of the filter dll's {$EXTERNALSYM NERR_PasswordFilterError} //**********WARNING **************** //The range 2750-2799 has been * //allocated to the IBM LAN Server * //********************************* //**********WARNING **************** //The range 2900-2999 has been * //reserved for Microsoft OEMs * //********************************* //*END_INTERNAL* MAX_NERR = (NERR_BASE+899); // This is the last error in NERR range. {$EXTERNALSYM MAX_NERR} // // end of list // // WARNING: Do not exceed MAX_NERR; values above this are used by // other error code ranges (errlog.h, service.h, apperr.h). // JwaLmCons, complete // LAN Manager common definitions const NetApi32 = 'netapi32.dll'; // // NOTE: Lengths of strings are given as the maximum lengths of the // string in characters (not bytes). This does not include space for the // terminating 0-characters. When allocating space for such an item, // use the form: // // TCHAR username[UNLEN+1]; // // Definitions of the form LN20_* define those values in effect for // LanMan 2.0. // // // String Lengths for various LanMan names // const CNLEN = 15; // Computer name length {$EXTERNALSYM CNLEN} LM20_CNLEN = 15; // LM 2.0 Computer name length {$EXTERNALSYM LM20_CNLEN} DNLEN = CNLEN; // Maximum domain name length {$EXTERNALSYM DNLEN} LM20_DNLEN = LM20_CNLEN; // LM 2.0 Maximum domain name length {$EXTERNALSYM LM20_DNLEN} //#if (CNLEN != DNLEN) //#error CNLEN and DNLEN are not equal //#endif UNCLEN = (CNLEN+2); // UNC computer name length {$EXTERNALSYM UNCLEN} LM20_UNCLEN = (LM20_CNLEN+2); // LM 2.0 UNC computer name length {$EXTERNALSYM LM20_UNCLEN} NNLEN = 80; // Net name length (share name) {$EXTERNALSYM NNLEN} LM20_NNLEN = 12; // LM 2.0 Net name length {$EXTERNALSYM LM20_NNLEN} RMLEN = (UNCLEN+1+NNLEN); // Max remote name length {$EXTERNALSYM RMLEN} LM20_RMLEN = (LM20_UNCLEN+1+LM20_NNLEN); // LM 2.0 Max remote name length {$EXTERNALSYM LM20_RMLEN} SNLEN = 80; // Service name length {$EXTERNALSYM SNLEN} LM20_SNLEN = 15; // LM 2.0 Service name length {$EXTERNALSYM LM20_SNLEN} STXTLEN = 256; // Service text length {$EXTERNALSYM STXTLEN} LM20_STXTLEN = 63; // LM 2.0 Service text length {$EXTERNALSYM LM20_STXTLEN} PATHLEN = 256; // Max. path (not including drive name) {$EXTERNALSYM PATHLEN} LM20_PATHLEN = 256; // LM 2.0 Max. path {$EXTERNALSYM LM20_PATHLEN} DEVLEN = 80; // Device name length {$EXTERNALSYM DEVLEN} LM20_DEVLEN = 8; // LM 2.0 Device name length {$EXTERNALSYM LM20_DEVLEN} EVLEN = 16; // Event name length {$EXTERNALSYM EVLEN} // // User, Group and Password lengths // UNLEN = 256; // Maximum user name length {$EXTERNALSYM UNLEN} LM20_UNLEN = 20; // LM 2.0 Maximum user name length {$EXTERNALSYM LM20_UNLEN} GNLEN = UNLEN; // Group name {$EXTERNALSYM GNLEN} LM20_GNLEN = LM20_UNLEN; // LM 2.0 Group name {$EXTERNALSYM LM20_GNLEN} PWLEN = 256; // Maximum password length {$EXTERNALSYM PWLEN} LM20_PWLEN = 14; // LM 2.0 Maximum password length {$EXTERNALSYM LM20_PWLEN} SHPWLEN = 8; // Share password length (bytes) {$EXTERNALSYM SHPWLEN} CLTYPE_LEN = 12; // Length of client type string {$EXTERNALSYM CLTYPE_LEN} MAXCOMMENTSZ = 256; // Multipurpose comment length {$EXTERNALSYM MAXCOMMENTSZ} LM20_MAXCOMMENTSZ = 48; // LM 2.0 Multipurpose comment length {$EXTERNALSYM LM20_MAXCOMMENTSZ} QNLEN = NNLEN; // Queue name maximum length {$EXTERNALSYM QNLEN} LM20_QNLEN = LM20_NNLEN; // LM 2.0 Queue name maximum length {$EXTERNALSYM LM20_QNLEN} //#if (QNLEN != NNLEN) //# error QNLEN and NNLEN are not equal //#endif // // The ALERTSZ and MAXDEVENTRIES defines have not yet been NT'ized. // Whoever ports these components should change these values appropriately. // ALERTSZ = 128; // size of alert string in server {$EXTERNALSYM ALERTSZ} MAXDEVENTRIES = (SizeOf(Integer)*8); // Max number of device entries {$EXTERNALSYM MAXDEVENTRIES} // // We use int bitmap to represent // NETBIOS_NAME_LEN = 16; // NetBIOS net name (bytes) {$EXTERNALSYM NETBIOS_NAME_LEN} // // Value to be used with APIs which have a "preferred maximum length" // parameter. This value indicates that the API should just allocate // "as much as it takes." // MAX_PREFERRED_LENGTH = DWORD(-1); {$EXTERNALSYM MAX_PREFERRED_LENGTH} // // Constants used with encryption // CRYPT_KEY_LEN = 7; {$EXTERNALSYM CRYPT_KEY_LEN} CRYPT_TXT_LEN = 8; {$EXTERNALSYM CRYPT_TXT_LEN} ENCRYPTED_PWLEN = 16; {$EXTERNALSYM ENCRYPTED_PWLEN} SESSION_PWLEN = 24; {$EXTERNALSYM SESSION_PWLEN} SESSION_CRYPT_KLEN = 21; {$EXTERNALSYM SESSION_CRYPT_KLEN} // // Value to be used with SetInfo calls to allow setting of all // settable parameters (parmnum zero option) // PARMNUM_ALL = 0; {$EXTERNALSYM PARMNUM_ALL} PARM_ERROR_UNKNOWN = DWORD(-1); {$EXTERNALSYM PARM_ERROR_UNKNOWN} PARM_ERROR_NONE = 0; {$EXTERNALSYM PARM_ERROR_NONE} PARMNUM_BASE_INFOLEVEL = 1000; {$EXTERNALSYM PARMNUM_BASE_INFOLEVEL} // // Only the UNICODE version of the LM APIs are available on NT. // Non-UNICODE version on other platforms // //#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( FORCE_UNICODE ) {$IFDEF _WIN32_WINNT} {$DEFINE LM_USE_UNICODE} {$ENDIF} {$IFDEF FORCE_UNICODE} {$DEFINE LM_USE_UNICODE} {$ENDIF} {$IFDEF LM_USE_UNICODE} type LMSTR = LPWSTR; {$EXTERNALSYM LMSTR} LMCSTR = LPCWSTR; {$EXTERNALSYM LMCSTR} PLMSTR = ^LMSTR; {$NODEFINE PLMSTR} {$ELSE} type LMSTR = LPSTR; {$EXTERNALSYM LMSTR} LMCSTR = LPCSTR; {$EXTERNALSYM LMCSTR} {$ENDIF} // // Message File Names // const MESSAGE_FILENAME = 'NETMSG'; {$EXTERNALSYM MESSAGE_FILENAME} OS2MSG_FILENAME = 'BASE'; {$EXTERNALSYM OS2MSG_FILENAME} HELP_MSG_FILENAME = 'NETH'; {$EXTERNALSYM HELP_MSG_FILENAME} // ** INTERNAL_ONLY ** // The backup message file named here is a duplicate of net.msg. It // is not shipped with the product, but is used at buildtime to // msgbind certain messages to netapi.dll and some of the services. // This allows for OEMs to modify the message text in net.msg and // have those changes show up. Only in case there is an error in // retrieving the messages from net.msg do we then get the bound // messages out of bak.msg (really out of the message segment). BACKUP_MSG_FILENAME = 'BAK.MSG'; {$EXTERNALSYM BACKUP_MSG_FILENAME} // ** END_INTERNAL ** // // Keywords used in Function Prototypes // type NET_API_STATUS = DWORD; {$EXTERNALSYM NET_API_STATUS} TNetApiStatus = NET_API_STATUS; // // The platform ID indicates the levels to use for platform-specific // information. // const PLATFORM_ID_DOS = 300; {$EXTERNALSYM PLATFORM_ID_DOS} PLATFORM_ID_OS2 = 400; {$EXTERNALSYM PLATFORM_ID_OS2} PLATFORM_ID_NT = 500; {$EXTERNALSYM PLATFORM_ID_NT} PLATFORM_ID_OSF = 600; {$EXTERNALSYM PLATFORM_ID_OSF} PLATFORM_ID_VMS = 700; {$EXTERNALSYM PLATFORM_ID_VMS} // // There message numbers assigned to different LANMAN components // are as defined below. // // lmerr.h: 2100 - 2999 NERR_BASE // alertmsg.h: 3000 - 3049 ALERT_BASE // lmsvc.h: 3050 - 3099 SERVICE_BASE // lmerrlog.h: 3100 - 3299 ERRLOG_BASE // msgtext.h: 3300 - 3499 MTXT_BASE // apperr.h: 3500 - 3999 APPERR_BASE // apperrfs.h: 4000 - 4299 APPERRFS_BASE // apperr2.h: 4300 - 5299 APPERR2_BASE // ncberr.h: 5300 - 5499 NRCERR_BASE // alertmsg.h: 5500 - 5599 ALERT2_BASE // lmsvc.h: 5600 - 5699 SERVICE2_BASE // lmerrlog.h 5700 - 5899 ERRLOG2_BASE // MIN_LANMAN_MESSAGE_ID = NERR_BASE; {$EXTERNALSYM MIN_LANMAN_MESSAGE_ID} MAX_LANMAN_MESSAGE_ID = 5899; {$EXTERNALSYM MAX_LANMAN_MESSAGE_ID} // line 59 // // Function Prototypes - User // {$IFNDEF CLR} function NetUserAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserAdd} function NetUserEnum(servername: LPCWSTR; level, filter: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserEnum} function NetUserGetInfo(servername, username: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserGetInfo} function NetUserSetInfo(servername, username: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserSetInfo} function NetUserDel(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserDel} function NetUserGetGroups(servername, username: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserGetGroups} function NetUserSetGroups(servername, username: LPCWSTR; level: DWORD; buf: PByte; num_entries: DWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserSetGroups} function NetUserGetLocalGroups(servername, username: LPCWSTR; level, flags: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserGetLocalGroups} function NetUserModalsGet(servername: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserModalsGet} function NetUserModalsSet(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserModalsSet} function NetUserChangePassword(domainname, username, oldpassword, newpassword: LPCWSTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetUserChangePassword} {$ENDIF ~CLR} // // Data Structures - User // type LPUSER_INFO_0 = ^USER_INFO_0; {$EXTERNALSYM LPUSER_INFO_0} PUSER_INFO_0 = ^USER_INFO_0; {$EXTERNALSYM PUSER_INFO_0} _USER_INFO_0 = record usri0_name: LPWSTR; end; {$EXTERNALSYM _USER_INFO_0} USER_INFO_0 = _USER_INFO_0; {$EXTERNALSYM USER_INFO_0} TUserInfo0 = USER_INFO_0; PUserInfo0 = PUSER_INFO_0; LPUSER_INFO_1 = ^USER_INFO_1; {$EXTERNALSYM LPUSER_INFO_1} PUSER_INFO_1 = ^USER_INFO_1; {$EXTERNALSYM PUSER_INFO_1} _USER_INFO_1 = record usri1_name: LPWSTR; usri1_password: LPWSTR; usri1_password_age: DWORD; usri1_priv: DWORD; usri1_home_dir: LPWSTR; usri1_comment: LPWSTR; usri1_flags: DWORD; usri1_script_path: LPWSTR; end; {$EXTERNALSYM _USER_INFO_1} USER_INFO_1 = _USER_INFO_1; {$EXTERNALSYM USER_INFO_1} TUserInfo1 = USER_INFO_1; PUserInfo1 = PUSER_INFO_1; LPUSER_INFO_2 = ^USER_INFO_2; {$EXTERNALSYM LPUSER_INFO_2} PUSER_INFO_2 = ^USER_INFO_2; {$EXTERNALSYM PUSER_INFO_2} _USER_INFO_2 = record usri2_name: LPWSTR; usri2_password: LPWSTR; usri2_password_age: DWORD; usri2_priv: DWORD; usri2_home_dir: LPWSTR; usri2_comment: LPWSTR; usri2_flags: DWORD; usri2_script_path: LPWSTR; usri2_auth_flags: DWORD; usri2_full_name: LPWSTR; usri2_usr_comment: LPWSTR; usri2_parms: LPWSTR; usri2_workstations: LPWSTR; usri2_last_logon: DWORD; usri2_last_logoff: DWORD; usri2_acct_expires: DWORD; usri2_max_storage: DWORD; usri2_units_per_week: DWORD; usri2_logon_hours: {$IFDEF CLR}IntPtr{$ELSE}PBYTE{$ENDIF}; usri2_bad_pw_count: DWORD; usri2_num_logons: DWORD; usri2_logon_server: LPWSTR; usri2_country_code: DWORD; usri2_code_page: DWORD; end; {$EXTERNALSYM _USER_INFO_2} USER_INFO_2 = _USER_INFO_2; {$EXTERNALSYM USER_INFO_2} TUserInfo2 = USER_INFO_2; PUserInfo2 = puser_info_2; // line 799 // // Special Values and Constants - User // // // Bit masks for field usriX_flags of USER_INFO_X (X = 0/1). // const UF_SCRIPT = $0001; {$EXTERNALSYM UF_SCRIPT} UF_ACCOUNTDISABLE = $0002; {$EXTERNALSYM UF_ACCOUNTDISABLE} UF_HOMEDIR_REQUIRED = $0008; {$EXTERNALSYM UF_HOMEDIR_REQUIRED} UF_LOCKOUT = $0010; {$EXTERNALSYM UF_LOCKOUT} UF_PASSWD_NOTREQD = $0020; {$EXTERNALSYM UF_PASSWD_NOTREQD} UF_PASSWD_CANT_CHANGE = $0040; {$EXTERNALSYM UF_PASSWD_CANT_CHANGE} UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = $0080; {$EXTERNALSYM UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED} // // Account type bits as part of usri_flags. // UF_TEMP_DUPLICATE_ACCOUNT = $0100; {$EXTERNALSYM UF_TEMP_DUPLICATE_ACCOUNT} UF_NORMAL_ACCOUNT = $0200; {$EXTERNALSYM UF_NORMAL_ACCOUNT} UF_INTERDOMAIN_TRUST_ACCOUNT = $0800; {$EXTERNALSYM UF_INTERDOMAIN_TRUST_ACCOUNT} UF_WORKSTATION_TRUST_ACCOUNT = $1000; {$EXTERNALSYM UF_WORKSTATION_TRUST_ACCOUNT} UF_SERVER_TRUST_ACCOUNT = $2000; {$EXTERNALSYM UF_SERVER_TRUST_ACCOUNT} UF_MACHINE_ACCOUNT_MASK = UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT; {$EXTERNALSYM UF_MACHINE_ACCOUNT_MASK} UF_ACCOUNT_TYPE_MASK = UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT; {$EXTERNALSYM UF_ACCOUNT_TYPE_MASK} UF_DONT_EXPIRE_PASSWD = $10000; {$EXTERNALSYM UF_DONT_EXPIRE_PASSWD} UF_MNS_LOGON_ACCOUNT = $20000; {$EXTERNALSYM UF_MNS_LOGON_ACCOUNT} UF_SMARTCARD_REQUIRED = $40000; {$EXTERNALSYM UF_SMARTCARD_REQUIRED} UF_TRUSTED_FOR_DELEGATION = $80000; {$EXTERNALSYM UF_TRUSTED_FOR_DELEGATION} UF_NOT_DELEGATED = $100000; {$EXTERNALSYM UF_NOT_DELEGATED} UF_USE_DES_KEY_ONLY = $200000; {$EXTERNALSYM UF_USE_DES_KEY_ONLY} UF_DONT_REQUIRE_PREAUTH = $400000; {$EXTERNALSYM UF_DONT_REQUIRE_PREAUTH} UF_PASSWORD_EXPIRED = DWORD($800000); {$EXTERNALSYM UF_PASSWORD_EXPIRED} UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = $1000000; {$EXTERNALSYM UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION} UF_SETTABLE_BITS = UF_SCRIPT or UF_ACCOUNTDISABLE or UF_LOCKOUT or UF_HOMEDIR_REQUIRED or UF_PASSWD_NOTREQD or UF_PASSWD_CANT_CHANGE or UF_ACCOUNT_TYPE_MASK or UF_DONT_EXPIRE_PASSWD or UF_MNS_LOGON_ACCOUNT or UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED or UF_SMARTCARD_REQUIRED or UF_TRUSTED_FOR_DELEGATION or UF_NOT_DELEGATED or UF_USE_DES_KEY_ONLY or UF_DONT_REQUIRE_PREAUTH or UF_PASSWORD_EXPIRED or UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION; {$EXTERNALSYM UF_SETTABLE_BITS} // line 1056 // // For SetInfo call (parmnum 0) when password change not required // NULL_USERSETINFO_PASSWD = ' '; {$EXTERNALSYM NULL_USERSETINFO_PASSWD} TIMEQ_FOREVER = ULONG(-1); {$EXTERNALSYM TIMEQ_FOREVER} USER_MAXSTORAGE_UNLIMITED = ULONG(-1); {$EXTERNALSYM USER_MAXSTORAGE_UNLIMITED} USER_NO_LOGOFF = ULONG(-1); {$EXTERNALSYM USER_NO_LOGOFF} UNITS_PER_DAY = 24; {$EXTERNALSYM UNITS_PER_DAY} UNITS_PER_WEEK = UNITS_PER_DAY * 7; {$EXTERNALSYM UNITS_PER_WEEK} // // Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)). // USER_PRIV_MASK = $3; {$EXTERNALSYM USER_PRIV_MASK} USER_PRIV_GUEST = 0; {$EXTERNALSYM USER_PRIV_GUEST} USER_PRIV_USER = 1; {$EXTERNALSYM USER_PRIV_USER} USER_PRIV_ADMIN = 2; {$EXTERNALSYM USER_PRIV_ADMIN} // line 1177 // // Group Class // // // Function Prototypes // {$IFNDEF CLR} function NetGroupAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupAdd} function NetGroupAddUser(servername, GroupName, username: LPCWSTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupAddUser} function NetGroupEnum(servername: LPCWSTR; level: DWORD; out bufptr: PByte; prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupEnum} function NetGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; bufptr: PByte): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupGetInfo} function NetGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupSetInfo} function NetGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupDel} function NetGroupDelUser(servername: LPCWSTR; GroupName: LPCWSTR; Username: LPCWSTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupDelUser} function NetGroupGetUsers(servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; ResumeHandle: PDWORD_PTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupGetUsers} function NetGroupSetUsers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetGroupSetUsers} {$ENDIF ~CLR} // // Data Structures - Group // type LPGROUP_INFO_0 = ^GROUP_INFO_0; {$EXTERNALSYM LPGROUP_INFO_0} PGROUP_INFO_0 = ^GROUP_INFO_0; {$EXTERNALSYM PGROUP_INFO_0} _GROUP_INFO_0 = record grpi0_name: LPWSTR; end; {$EXTERNALSYM _GROUP_INFO_0} GROUP_INFO_0 = _GROUP_INFO_0; {$EXTERNALSYM GROUP_INFO_0} TGroupInfo0 = GROUP_INFO_0; PGroupInfo0 = PGROUP_INFO_0; LPGROUP_INFO_1 = ^GROUP_INFO_1; {$EXTERNALSYM LPGROUP_INFO_1} PGROUP_INFO_1 = ^GROUP_INFO_1; {$EXTERNALSYM PGROUP_INFO_1} _GROUP_INFO_1 = record grpi1_name: LPWSTR; grpi1_comment: LPWSTR; end; {$EXTERNALSYM _GROUP_INFO_1} GROUP_INFO_1 = _GROUP_INFO_1; {$EXTERNALSYM GROUP_INFO_1} TGroupInfo1 = GROUP_INFO_1; PGroupInfo1 = PGROUP_INFO_1; // line 1380 // // LocalGroup Class // // // Function Prototypes // {$IFNDEF CLR} function NetLocalGroupAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupAdd} function NetLocalGroupAddMember(servername, groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupAddMember} function NetLocalGroupEnum(servername: LPCWSTR; level: DWORD; out bufptr: PByte; prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupEnum} function NetLocalGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupGetInfo} function NetLocalGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupSetInfo} function NetLocalGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupDel} function NetLocalGroupDelMember(servername: LPCWSTR; groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupDelMember} function NetLocalGroupGetMembers(servername, localgroupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupGetMembers} function NetLocalGroupSetMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupSetMembers} function NetLocalGroupAddMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupAddMembers} function NetLocalGroupDelMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall; {$EXTERNALSYM NetLocalGroupDelMembers} {$ENDIF ~CLR} // // Data Structures - LocalGroup // type LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0; {$EXTERNALSYM LPLOCALGROUP_INFO_0} PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0; {$EXTERNALSYM PLOCALGROUP_INFO_0} _LOCALGROUP_INFO_0 = record lgrpi0_name: LPWSTR; end; {$EXTERNALSYM _LOCALGROUP_INFO_0} LOCALGROUP_INFO_0 = _LOCALGROUP_INFO_0; {$EXTERNALSYM LOCALGROUP_INFO_0} TLocalGroupInfo0 = LOCALGROUP_INFO_0; PLocalGroupInfo0 = PLOCALGROUP_INFO_0; LPLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1; {$EXTERNALSYM LPLOCALGROUP_INFO_1} PLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1; {$EXTERNALSYM PLOCALGROUP_INFO_1} _LOCALGROUP_INFO_1 = record lgrpi1_name: LPWSTR; lgrpi1_comment: LPWSTR; end; {$EXTERNALSYM _LOCALGROUP_INFO_1} LOCALGROUP_INFO_1 = _LOCALGROUP_INFO_1; {$EXTERNALSYM LOCALGROUP_INFO_1} TLocalGroupInfo1 = LOCALGROUP_INFO_1; PLocalGroupInfo1 = PLOCALGROUP_INFO_1; LPLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002; {$EXTERNALSYM LPLOCALGROUP_INFO_1002} PLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002; {$EXTERNALSYM PLOCALGROUP_INFO_1002} _LOCALGROUP_INFO_1002 = record lgrpi1002_comment: LPWSTR; end; {$EXTERNALSYM _LOCALGROUP_INFO_1002} LOCALGROUP_INFO_1002 = _LOCALGROUP_INFO_1002; {$EXTERNALSYM LOCALGROUP_INFO_1002} TLocalGroupInfo1002 = LOCALGROUP_INFO_1002; PLocalGroupInfo1002 = PLOCALGROUP_INFO_1002; LPLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0; {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_0} PLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0; {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_0} _LOCALGROUP_MEMBERS_INFO_0 = record lgrmi0_sid: PSID; end; {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_0} LOCALGROUP_MEMBERS_INFO_0 = _LOCALGROUP_MEMBERS_INFO_0; {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_0} TLocalGroupMembersInfo0 = LOCALGROUP_MEMBERS_INFO_0; PLocalGroupMembersInfo0 = PLOCALGROUP_MEMBERS_INFO_0; LPLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1; {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_1} PLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1; {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_1} _LOCALGROUP_MEMBERS_INFO_1 = record lgrmi1_sid: PSID; lgrmi1_sidusage: SID_NAME_USE; lgrmi1_name: LPWSTR; end; {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_1} LOCALGROUP_MEMBERS_INFO_1 = _LOCALGROUP_MEMBERS_INFO_1; {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_1} TLocalGroupMembersInfo1 = LOCALGROUP_MEMBERS_INFO_1; PLocalGroupMembersInfo1 = PLOCALGROUP_MEMBERS_INFO_1; LPLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2; {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_2} PLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2; {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_2} _LOCALGROUP_MEMBERS_INFO_2 = record lgrmi2_sid: PSID; lgrmi2_sidusage: SID_NAME_USE; lgrmi2_domainandname: LPWSTR; end; {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_2} LOCALGROUP_MEMBERS_INFO_2 = _LOCALGROUP_MEMBERS_INFO_2; {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_2} TLocalGroupMembersInfo2 = LOCALGROUP_MEMBERS_INFO_2; PLocalGroupMembersInfo2 = PLOCALGROUP_MEMBERS_INFO_2; LPLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3; {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_3} PLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3; {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_3} _LOCALGROUP_MEMBERS_INFO_3 = record lgrmi3_domainandname: LPWSTR; end; {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_3} LOCALGROUP_MEMBERS_INFO_3 = _LOCALGROUP_MEMBERS_INFO_3; {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_3} TLocalGroupMembersInfo3 = LOCALGROUP_MEMBERS_INFO_3; PLocalGroupMembersInfo3 = PLOCALGROUP_MEMBERS_INFO_3; {$IFNDEF CLR} function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; {$EXTERNALSYM NetApiBufferFree} (**************************************************************** * * * Data structure templates * * * ****************************************************************) const NCBNAMSZ = 16; // absolute length of a net name {$EXTERNALSYM NCBNAMSZ} MAX_LANA = 254; // lana's in range 0 to MAX_LANA inclusive {$EXTERNALSYM MAX_LANA} // // Network Control Block // type PNCB = ^NCB; TNcbPost = procedure (P: PNCB); stdcall; _NCB = record ncb_command: UCHAR; // command code ncb_retcode: UCHAR; // return code ncb_lsn: UCHAR; // local session number ncb_num: UCHAR; // number of our network name ncb_buffer: PChar; // address of message buffer ncb_length: Word; // size of message buffer ncb_callname: array [0..NCBNAMSZ - 1] of Char; // blank-padded name of remote ncb_name: array [0..NCBNAMSZ - 1] of Char; // our blank-padded netname ncb_rto: UCHAR; // rcv timeout/retry count ncb_sto: UCHAR; // send timeout/sys timeout ncb_post: TNcbPost; // POST routine address ncb_lana_num: UCHAR; // lana (adapter) number ncb_cmd_cplt: UCHAR; // 0xff => commmand pending {$IFDEF _WIN64} ncb_reserve: array [0..17] of Char; // reserved, used by BIOS {$ELSE} ncb_reserve: array [0..9] of Char; // reserved, used by BIOS {$ENDIF} ncb_event: THandle; // HANDLE to Win32 event which // will be set to the signalled // state when an ASYNCH command // completes end; {$EXTERNALSYM _NCB} NCB = _NCB; {$EXTERNALSYM NCB} TNcb = NCB; // // Structure returned to the NCB command NCBASTAT is ADAPTER_STATUS followed // by an array of NAME_BUFFER structures. // _ADAPTER_STATUS = record adapter_address: array [0..5] of UCHAR; rev_major: UCHAR; reserved0: UCHAR; adapter_type: UCHAR; rev_minor: UCHAR; duration: WORD; frmr_recv: WORD; frmr_xmit: WORD; iframe_recv_err: WORD; xmit_aborts: WORD; xmit_success: DWORD; recv_success: DWORD; iframe_xmit_err: WORD; recv_buff_unavail: WORD; t1_timeouts: WORD; ti_timeouts: WORD; reserved1: DWORD; free_ncbs: WORD; max_cfg_ncbs: WORD; max_ncbs: WORD; xmit_buf_unavail: WORD; max_dgram_size: WORD; pending_sess: WORD; max_cfg_sess: WORD; max_sess: WORD; max_sess_pkt_size: WORD; name_count: WORD; end; {$EXTERNALSYM _ADAPTER_STATUS} ADAPTER_STATUS = _ADAPTER_STATUS; {$EXTERNALSYM ADAPTER_STATUS} PADAPTER_STATUS = ^ADAPTER_STATUS; {$EXTERNALSYM PADAPTER_STATUS} TAdapterStatus = ADAPTER_STATUS; PAdapterStatus = PADAPTER_STATUS; _NAME_BUFFER = record name: array [0..NCBNAMSZ - 1] of Char; name_num: UCHAR; name_flags: UCHAR; end; {$EXTERNALSYM _NAME_BUFFER} NAME_BUFFER = _NAME_BUFFER; {$EXTERNALSYM NAME_BUFFER} PNAME_BUFFER = ^NAME_BUFFER; {$EXTERNALSYM PNAME_BUFFER} TNameBuffer = NAME_BUFFER; PNameBuffer = PNAME_BUFFER; // values for name_flags bits. const NAME_FLAGS_MASK = $87; {$EXTERNALSYM NAME_FLAGS_MASK} GROUP_NAME = $80; {$EXTERNALSYM GROUP_NAME} UNIQUE_NAME = $00; {$EXTERNALSYM UNIQUE_NAME} REGISTERING = $00; {$EXTERNALSYM REGISTERING} REGISTERED = $04; {$EXTERNALSYM REGISTERED} DEREGISTERED = $05; {$EXTERNALSYM DEREGISTERED} DUPLICATE = $06; {$EXTERNALSYM DUPLICATE} DUPLICATE_DEREG = $07; {$EXTERNALSYM DUPLICATE_DEREG} // // Structure returned to the NCB command NCBSSTAT is SESSION_HEADER followed // by an array of SESSION_BUFFER structures. If the NCB_NAME starts with an // asterisk then an array of these structures is returned containing the // status for all names. // type _SESSION_HEADER = record sess_name: UCHAR; num_sess: UCHAR; rcv_dg_outstanding: UCHAR; rcv_any_outstanding: UCHAR; end; {$EXTERNALSYM _SESSION_HEADER} SESSION_HEADER = _SESSION_HEADER; {$EXTERNALSYM SESSION_HEADER} PSESSION_HEADER = ^SESSION_HEADER; {$EXTERNALSYM PSESSION_HEADER} TSessionHeader = SESSION_HEADER; PSessionHeader = PSESSION_HEADER; _SESSION_BUFFER = record lsn: UCHAR; state: UCHAR; local_name: array [0..NCBNAMSZ - 1] of UCHAR; remote_name: array [0..NCBNAMSZ - 1] of UCHAR; rcvs_outstanding: UCHAR; sends_outstanding: UCHAR; end; {$EXTERNALSYM _SESSION_BUFFER} SESSION_BUFFER = _SESSION_BUFFER; {$EXTERNALSYM SESSION_BUFFER} PSESSION_BUFFER = ^SESSION_BUFFER; {$EXTERNALSYM PSESSION_BUFFER} TSessionBuffer = SESSION_BUFFER; PSessionBuffer = PSESSION_BUFFER; // Values for state const LISTEN_OUTSTANDING = $01; {$EXTERNALSYM LISTEN_OUTSTANDING} CALL_PENDING = $02; {$EXTERNALSYM CALL_PENDING} SESSION_ESTABLISHED = $03; {$EXTERNALSYM SESSION_ESTABLISHED} HANGUP_PENDING = $04; {$EXTERNALSYM HANGUP_PENDING} HANGUP_COMPLETE = $05; {$EXTERNALSYM HANGUP_COMPLETE} SESSION_ABORTED = $06; {$EXTERNALSYM SESSION_ABORTED} // // Structure returned to the NCB command NCBENUM. // // On a system containing lana's 0, 2 and 3, a structure with // length =3, lana[0]=0, lana[1]=2 and lana[2]=3 will be returned. // type _LANA_ENUM = record length: UCHAR; // Number of valid entries in lana[] lana: array [0..MAX_LANA] of UCHAR; end; {$EXTERNALSYM _LANA_ENUM} LANA_ENUM = _LANA_ENUM; {$EXTERNALSYM LANA_ENUM} PLANA_ENUM = ^LANA_ENUM; {$EXTERNALSYM PLANA_ENUM} TLanaEnum = LANA_ENUM; PLanaEnum = PLANA_ENUM; // // Structure returned to the NCB command NCBFINDNAME is FIND_NAME_HEADER followed // by an array of FIND_NAME_BUFFER structures. // type _FIND_NAME_HEADER = record node_count: WORD; reserved: UCHAR; unique_group: UCHAR; end; {$EXTERNALSYM _FIND_NAME_HEADER} FIND_NAME_HEADER = _FIND_NAME_HEADER; {$EXTERNALSYM FIND_NAME_HEADER} PFIND_NAME_HEADER = ^FIND_NAME_HEADER; {$EXTERNALSYM PFIND_NAME_HEADER} TFindNameHeader = FIND_NAME_HEADER; PFindNameHeader = PFIND_NAME_HEADER; _FIND_NAME_BUFFER = record length: UCHAR; access_control: UCHAR; frame_control: UCHAR; destination_addr: array [0..5] of UCHAR; source_addr: array [0..5] of UCHAR; routing_info: array [0..17] of UCHAR; end; {$EXTERNALSYM _FIND_NAME_BUFFER} FIND_NAME_BUFFER = _FIND_NAME_BUFFER; {$EXTERNALSYM FIND_NAME_BUFFER} PFIND_NAME_BUFFER = ^FIND_NAME_BUFFER; {$EXTERNALSYM PFIND_NAME_BUFFER} TFindNameBuffer = FIND_NAME_BUFFER; PFindNameBuffer = PFIND_NAME_BUFFER; // // Structure provided with NCBACTION. The purpose of NCBACTION is to provide // transport specific extensions to netbios. // _ACTION_HEADER = record transport_id: ULONG; action_code: USHORT; reserved: USHORT; end; {$EXTERNALSYM _ACTION_HEADER} ACTION_HEADER = _ACTION_HEADER; {$EXTERNALSYM ACTION_HEADER} PACTION_HEADER = ^ACTION_HEADER; {$EXTERNALSYM PACTION_HEADER} TActionHeader = ACTION_HEADER; PActionHeader = PACTION_HEADER; // Values for transport_id const ALL_TRANSPORTS = 'M'#0#0#0; {$EXTERNALSYM ALL_TRANSPORTS} MS_NBF = 'MNBF'; {$EXTERNALSYM MS_NBF} {$ENDIF ~CLR} (**************************************************************** * * * Special values and constants * * * ****************************************************************) // // NCB Command codes // const NCBCALL = $10; // NCB CALL {$EXTERNALSYM NCBCALL} NCBLISTEN = $11; // NCB LISTEN {$EXTERNALSYM NCBLISTEN} NCBHANGUP = $12; // NCB HANG UP {$EXTERNALSYM NCBHANGUP} NCBSEND = $14; // NCB SEND {$EXTERNALSYM NCBSEND} NCBRECV = $15; // NCB RECEIVE {$EXTERNALSYM NCBRECV} NCBRECVANY = $16; // NCB RECEIVE ANY {$EXTERNALSYM NCBRECVANY} NCBCHAINSEND = $17; // NCB CHAIN SEND {$EXTERNALSYM NCBCHAINSEND} NCBDGSEND = $20; // NCB SEND DATAGRAM {$EXTERNALSYM NCBDGSEND} NCBDGRECV = $21; // NCB RECEIVE DATAGRAM {$EXTERNALSYM NCBDGRECV} NCBDGSENDBC = $22; // NCB SEND BROADCAST DATAGRAM {$EXTERNALSYM NCBDGSENDBC} NCBDGRECVBC = $23; // NCB RECEIVE BROADCAST DATAGRAM {$EXTERNALSYM NCBDGRECVBC} NCBADDNAME = $30; // NCB ADD NAME {$EXTERNALSYM NCBADDNAME} NCBDELNAME = $31; // NCB DELETE NAME {$EXTERNALSYM NCBDELNAME} NCBRESET = $32; // NCB RESET {$EXTERNALSYM NCBRESET} NCBASTAT = $33; // NCB ADAPTER STATUS {$EXTERNALSYM NCBASTAT} NCBSSTAT = $34; // NCB SESSION STATUS {$EXTERNALSYM NCBSSTAT} NCBCANCEL = $35; // NCB CANCEL {$EXTERNALSYM NCBCANCEL} NCBADDGRNAME = $36; // NCB ADD GROUP NAME {$EXTERNALSYM NCBADDGRNAME} NCBENUM = $37; // NCB ENUMERATE LANA NUMBERS {$EXTERNALSYM NCBENUM} NCBUNLINK = $70; // NCB UNLINK {$EXTERNALSYM NCBUNLINK} NCBSENDNA = $71; // NCB SEND NO ACK {$EXTERNALSYM NCBSENDNA} NCBCHAINSENDNA = $72; // NCB CHAIN SEND NO ACK {$EXTERNALSYM NCBCHAINSENDNA} NCBLANSTALERT = $73; // NCB LAN STATUS ALERT {$EXTERNALSYM NCBLANSTALERT} NCBACTION = $77; // NCB ACTION {$EXTERNALSYM NCBACTION} NCBFINDNAME = $78; // NCB FIND NAME {$EXTERNALSYM NCBFINDNAME} NCBTRACE = $79; // NCB TRACE {$EXTERNALSYM NCBTRACE} ASYNCH = $80; // high bit set == asynchronous {$EXTERNALSYM ASYNCH} // // NCB Return codes // NRC_GOODRET = $00; // good return also returned when ASYNCH request accepted {$EXTERNALSYM NRC_GOODRET} NRC_BUFLEN = $01; // illegal buffer length {$EXTERNALSYM NRC_BUFLEN} NRC_ILLCMD = $03; // illegal command {$EXTERNALSYM NRC_ILLCMD} NRC_CMDTMO = $05; // command timed out {$EXTERNALSYM NRC_CMDTMO} NRC_INCOMP = $06; // message incomplete, issue another command {$EXTERNALSYM NRC_INCOMP} NRC_BADDR = $07; // illegal buffer address {$EXTERNALSYM NRC_BADDR} NRC_SNUMOUT = $08; // session number out of range {$EXTERNALSYM NRC_SNUMOUT} NRC_NORES = $09; // no resource available {$EXTERNALSYM NRC_NORES} NRC_SCLOSED = $0a; // session closed {$EXTERNALSYM NRC_SCLOSED} NRC_CMDCAN = $0b; // command cancelled {$EXTERNALSYM NRC_CMDCAN} NRC_DUPNAME = $0d; // duplicate name {$EXTERNALSYM NRC_DUPNAME} NRC_NAMTFUL = $0e; // name table full {$EXTERNALSYM NRC_NAMTFUL} NRC_ACTSES = $0f; // no deletions, name has active sessions {$EXTERNALSYM NRC_ACTSES} NRC_LOCTFUL = $11; // local session table full {$EXTERNALSYM NRC_LOCTFUL} NRC_REMTFUL = $12; // remote session table full {$EXTERNALSYM NRC_REMTFUL} NRC_ILLNN = $13; // illegal name number {$EXTERNALSYM NRC_ILLNN} NRC_NOCALL = $14; // no callname {$EXTERNALSYM NRC_NOCALL} NRC_NOWILD = $15; // cannot put * in NCB_NAME {$EXTERNALSYM NRC_NOWILD} NRC_INUSE = $16; // name in use on remote adapter {$EXTERNALSYM NRC_INUSE} NRC_NAMERR = $17; // name deleted {$EXTERNALSYM NRC_NAMERR} NRC_SABORT = $18; // session ended abnormally {$EXTERNALSYM NRC_SABORT} NRC_NAMCONF = $19; // name conflict detected {$EXTERNALSYM NRC_NAMCONF} NRC_IFBUSY = $21; // interface busy, IRET before retrying {$EXTERNALSYM NRC_IFBUSY} NRC_TOOMANY = $22; // too many commands outstanding, retry later {$EXTERNALSYM NRC_TOOMANY} NRC_BRIDGE = $23; // ncb_lana_num field invalid {$EXTERNALSYM NRC_BRIDGE} NRC_CANOCCR = $24; // command completed while cancel occurring {$EXTERNALSYM NRC_CANOCCR} NRC_CANCEL = $26; // command not valid to cancel {$EXTERNALSYM NRC_CANCEL} NRC_DUPENV = $30; // name defined by anther local process {$EXTERNALSYM NRC_DUPENV} NRC_ENVNOTDEF = $34; // environment undefined. RESET required {$EXTERNALSYM NRC_ENVNOTDEF} NRC_OSRESNOTAV = $35; // required OS resources exhausted {$EXTERNALSYM NRC_OSRESNOTAV} NRC_MAXAPPS = $36; // max number of applications exceeded {$EXTERNALSYM NRC_MAXAPPS} NRC_NOSAPS = $37; // no saps available for netbios {$EXTERNALSYM NRC_NOSAPS} NRC_NORESOURCES = $38; // requested resources are not available {$EXTERNALSYM NRC_NORESOURCES} NRC_INVADDRESS = $39; // invalid ncb address or length > segment {$EXTERNALSYM NRC_INVADDRESS} NRC_INVDDID = $3B; // invalid NCB DDID {$EXTERNALSYM NRC_INVDDID} NRC_LOCKFAIL = $3C; // lock of user area failed {$EXTERNALSYM NRC_LOCKFAIL} NRC_OPENERR = $3f; // NETBIOS not loaded {$EXTERNALSYM NRC_OPENERR} NRC_SYSTEM = $40; // system error {$EXTERNALSYM NRC_SYSTEM} NRC_PENDING = $ff; // asynchronous command is not yet finished {$EXTERNALSYM NRC_PENDING} (**************************************************************** * * * main user entry point for NetBIOS 3.0 * * * * Usage: result = Netbios( pncb ); * ****************************************************************) {$IFNDEF CLR} function Netbios(pncb: PNCB): UCHAR; stdcall; {$EXTERNALSYM Netbios} {$ENDIF ~CLR} type PRasDialDlg = ^TRasDialDlg; tagRASDIALDLG = packed record dwSize: DWORD; hwndOwner: THandle; dwFlags: DWORD; xDlg: Longint; yDlg: Longint; dwSubEntry: DWORD; dwError: DWORD; reserved: Longword; reserved2: Longword; end; {$EXTERNALSYM tagRASDIALDLG} RASDIALDLG = tagRASDIALDLG; {$EXTERNALSYM RASDIALDLG} TRasDialDlg = tagRASDIALDLG; // Reason flags // Flags used by the various UIs. const SHTDN_REASON_FLAG_COMMENT_REQUIRED = $01000000; {$EXTERNALSYM SHTDN_REASON_FLAG_COMMENT_REQUIRED} SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = $02000000; {$EXTERNALSYM SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED} SHTDN_REASON_FLAG_CLEAN_UI = $04000000; {$EXTERNALSYM SHTDN_REASON_FLAG_CLEAN_UI} SHTDN_REASON_FLAG_DIRTY_UI = $08000000; {$EXTERNALSYM SHTDN_REASON_FLAG_DIRTY_UI} // Flags that end up in the event log code. SHTDN_REASON_FLAG_USER_DEFINED = $40000000; {$EXTERNALSYM SHTDN_REASON_FLAG_USER_DEFINED} SHTDN_REASON_FLAG_PLANNED = DWORD($80000000); {$EXTERNALSYM SHTDN_REASON_FLAG_PLANNED} // Microsoft major reasons. SHTDN_REASON_MAJOR_OTHER = $00000000; {$EXTERNALSYM SHTDN_REASON_MAJOR_OTHER} SHTDN_REASON_MAJOR_NONE = $00000000; {$EXTERNALSYM SHTDN_REASON_MAJOR_NONE} SHTDN_REASON_MAJOR_HARDWARE = $00010000; {$EXTERNALSYM SHTDN_REASON_MAJOR_HARDWARE} SHTDN_REASON_MAJOR_OPERATINGSYSTEM = $00020000; {$EXTERNALSYM SHTDN_REASON_MAJOR_OPERATINGSYSTEM} SHTDN_REASON_MAJOR_SOFTWARE = $00030000; {$EXTERNALSYM SHTDN_REASON_MAJOR_SOFTWARE} SHTDN_REASON_MAJOR_APPLICATION = $00040000; {$EXTERNALSYM SHTDN_REASON_MAJOR_APPLICATION} SHTDN_REASON_MAJOR_SYSTEM = $00050000; {$EXTERNALSYM SHTDN_REASON_MAJOR_SYSTEM} SHTDN_REASON_MAJOR_POWER = $00060000; {$EXTERNALSYM SHTDN_REASON_MAJOR_POWER} SHTDN_REASON_MAJOR_LEGACY_API = $00070000; {$EXTERNALSYM SHTDN_REASON_MAJOR_LEGACY_API} // Microsoft minor reasons. SHTDN_REASON_MINOR_OTHER = $00000000; {$EXTERNALSYM SHTDN_REASON_MINOR_OTHER} SHTDN_REASON_MINOR_NONE = $000000ff; {$EXTERNALSYM SHTDN_REASON_MINOR_NONE} SHTDN_REASON_MINOR_MAINTENANCE = $00000001; {$EXTERNALSYM SHTDN_REASON_MINOR_MAINTENANCE} SHTDN_REASON_MINOR_INSTALLATION = $00000002; {$EXTERNALSYM SHTDN_REASON_MINOR_INSTALLATION} SHTDN_REASON_MINOR_UPGRADE = $00000003; {$EXTERNALSYM SHTDN_REASON_MINOR_UPGRADE} SHTDN_REASON_MINOR_RECONFIG = $00000004; {$EXTERNALSYM SHTDN_REASON_MINOR_RECONFIG} SHTDN_REASON_MINOR_HUNG = $00000005; {$EXTERNALSYM SHTDN_REASON_MINOR_HUNG} SHTDN_REASON_MINOR_UNSTABLE = $00000006; {$EXTERNALSYM SHTDN_REASON_MINOR_UNSTABLE} SHTDN_REASON_MINOR_DISK = $00000007; {$EXTERNALSYM SHTDN_REASON_MINOR_DISK} SHTDN_REASON_MINOR_PROCESSOR = $00000008; {$EXTERNALSYM SHTDN_REASON_MINOR_PROCESSOR} SHTDN_REASON_MINOR_NETWORKCARD = $00000009; {$EXTERNALSYM SHTDN_REASON_MINOR_NETWORKCARD} SHTDN_REASON_MINOR_POWER_SUPPLY = $0000000a; {$EXTERNALSYM SHTDN_REASON_MINOR_POWER_SUPPLY} SHTDN_REASON_MINOR_CORDUNPLUGGED = $0000000b; {$EXTERNALSYM SHTDN_REASON_MINOR_CORDUNPLUGGED} SHTDN_REASON_MINOR_ENVIRONMENT = $0000000c; {$EXTERNALSYM SHTDN_REASON_MINOR_ENVIRONMENT} SHTDN_REASON_MINOR_HARDWARE_DRIVER = $0000000d; {$EXTERNALSYM SHTDN_REASON_MINOR_HARDWARE_DRIVER} SHTDN_REASON_MINOR_OTHERDRIVER = $0000000e; {$EXTERNALSYM SHTDN_REASON_MINOR_OTHERDRIVER} SHTDN_REASON_MINOR_BLUESCREEN = $0000000F; {$EXTERNALSYM SHTDN_REASON_MINOR_BLUESCREEN} SHTDN_REASON_MINOR_SERVICEPACK = $00000010; {$EXTERNALSYM SHTDN_REASON_MINOR_SERVICEPACK} SHTDN_REASON_MINOR_HOTFIX = $00000011; {$EXTERNALSYM SHTDN_REASON_MINOR_HOTFIX} SHTDN_REASON_MINOR_SECURITYFIX = $00000012; {$EXTERNALSYM SHTDN_REASON_MINOR_SECURITYFIX} SHTDN_REASON_MINOR_SECURITY = $00000013; {$EXTERNALSYM SHTDN_REASON_MINOR_SECURITY} SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = $00000014; {$EXTERNALSYM SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY} SHTDN_REASON_MINOR_WMI = $00000015; {$EXTERNALSYM SHTDN_REASON_MINOR_WMI} SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = $00000016; {$EXTERNALSYM SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL} SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = $00000017; {$EXTERNALSYM SHTDN_REASON_MINOR_HOTFIX_UNINSTALL} SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = $00000018; {$EXTERNALSYM SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL} SHTDN_REASON_MINOR_MMC = $00000019; {$EXTERNALSYM SHTDN_REASON_MINOR_MMC} SHTDN_REASON_MINOR_TERMSRV = $00000020; {$EXTERNALSYM SHTDN_REASON_MINOR_TERMSRV} SHTDN_REASON_MINOR_DC_PROMOTION = $00000021; {$EXTERNALSYM SHTDN_REASON_MINOR_DC_PROMOTION} SHTDN_REASON_MINOR_DC_DEMOTION = $00000022; {$EXTERNALSYM SHTDN_REASON_MINOR_DC_DEMOTION} SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE; {$EXTERNALSYM SHTDN_REASON_UNKNOWN} SHTDN_REASON_LEGACY_API = (SHTDN_REASON_MAJOR_LEGACY_API or SHTDN_REASON_FLAG_PLANNED); {$EXTERNALSYM SHTDN_REASON_LEGACY_API} // This mask cuts out UI flags. SHTDN_REASON_VALID_BIT_MASK = DWORD($c0ffffff); {$EXTERNALSYM SHTDN_REASON_VALID_BIT_MASK} // Convenience flags. PCLEANUI = (SHTDN_REASON_FLAG_PLANNED or SHTDN_REASON_FLAG_CLEAN_UI); {$EXTERNALSYM PCLEANUI} UCLEANUI = (SHTDN_REASON_FLAG_CLEAN_UI); {$EXTERNALSYM UCLEANUI} PDIRTYUI = (SHTDN_REASON_FLAG_PLANNED or SHTDN_REASON_FLAG_DIRTY_UI); {$EXTERNALSYM PDIRTYUI} UDIRTYUI = (SHTDN_REASON_FLAG_DIRTY_UI); {$EXTERNALSYM UDIRTYUI} const CSIDL_COMMON_APPDATA = $0023; { All Users\Application Data } CSIDL_WINDOWS = $0024; { GetWindowsDirectory() } CSIDL_SYSTEM = $0025; { GetSystemDirectory() } CSIDL_PROGRAM_FILES = $0026; { C:\Program Files } CSIDL_MYPICTURES = $0027; { C:\Program Files\My Pictures } CSIDL_PROFILE = $0028; { USERPROFILE } CSIDL_PROGRAM_FILES_COMMON = $002B; { C:\Program Files\Common } CSIDL_COMMON_TEMPLATES = $002D; { All Users\Templates } CSIDL_COMMON_DOCUMENTS = $002E; { All Users\Documents } CSIDL_COMMON_ADMINTOOLS = $002F; { All Users\Start Menu\Programs\Administrative Tools } CSIDL_ADMINTOOLS = $0030; { \Start Menu\Programs\Administrative Tools } CSIDL_CONNECTIONS = $0031; { Network and Dial-up Connections } CSIDL_COMMON_MUSIC = $0035; { All Users\My Music } CSIDL_COMMON_PICTURES = $0036; { All Users\My Pictures } CSIDL_COMMON_VIDEO = $0037; { All Users\My Video } CSIDL_RESOURCES = $0038; { Resource Direcotry } CSIDL_RESOURCES_LOCALIZED = $0039; { Localized Resource Direcotry } CSIDL_COMMON_OEM_LINKS = $003A; { Links to All Users OEM specific apps } CSIDL_CDBURN_AREA = $003B; { USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning } CSIDL_COMPUTERSNEARME = $003D; { Computers Near Me (computered from Workgroup membership) } {$EXTERNALSYM CSIDL_COMMON_APPDATA} {$EXTERNALSYM CSIDL_WINDOWS} {$EXTERNALSYM CSIDL_SYSTEM} {$EXTERNALSYM CSIDL_PROGRAM_FILES} {$EXTERNALSYM CSIDL_MYPICTURES} {$EXTERNALSYM CSIDL_PROFILE} {$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON} {$EXTERNALSYM CSIDL_COMMON_TEMPLATES} {$EXTERNALSYM CSIDL_COMMON_DOCUMENTS} {$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS} {$EXTERNALSYM CSIDL_ADMINTOOLS} {$EXTERNALSYM CSIDL_CONNECTIONS} {$EXTERNALSYM CSIDL_COMMON_MUSIC} {$EXTERNALSYM CSIDL_COMMON_PICTURES} {$EXTERNALSYM CSIDL_COMMON_VIDEO} {$EXTERNALSYM CSIDL_RESOURCES} {$EXTERNALSYM CSIDL_RESOURCES_LOCALIZED} {$EXTERNALSYM CSIDL_COMMON_OEM_LINKS} {$EXTERNALSYM CSIDL_CDBURN_AREA} {$EXTERNALSYM CSIDL_COMPUTERSNEARME} { TODO BCB-compatibility} const DLLVER_PLATFORM_WINDOWS = $00000001; {$EXTERNALSYM DLLVER_PLATFORM_WINDOWS} DLLVER_PLATFORM_NT = $00000002; {$EXTERNALSYM DLLVER_PLATFORM_NT} type PDllVersionInfo = ^TDllVersionInfo; _DLLVERSIONINFO = packed record cbSize: DWORD; dwMajorVersion: DWORD; dwMinorVersion: DWORD; dwBuildNumber: DWORD; dwPlatformId: DWORD; end; {$EXTERNALSYM _DLLVERSIONINFO} TDllVersionInfo = _DLLVERSIONINFO; DLLVERSIONINFO = _DLLVERSIONINFO; {$EXTERNALSYM DLLVERSIONINFO} // JwaWinError // line 22146 const // // Task Scheduler errors // // // MessageId: SCHED_S_TASK_READY // // MessageText: // // The task is ready to run at its next scheduled time. // SCHED_S_TASK_READY = HRESULT($00041300); {$EXTERNALSYM SCHED_S_TASK_READY} // // MessageId: SCHED_S_TASK_RUNNING // // MessageText: // // The task is currently running. // SCHED_S_TASK_RUNNING = HRESULT($00041301); {$EXTERNALSYM SCHED_S_TASK_RUNNING} // // MessageId: SCHED_S_TASK_DISABLED // // MessageText: // // The task will not run at the scheduled times because it has been disabled. // SCHED_S_TASK_DISABLED = HRESULT($00041302); {$EXTERNALSYM SCHED_S_TASK_DISABLED} // // MessageId: SCHED_S_TASK_HAS_NOT_RUN // // MessageText: // // The task has not yet run. // SCHED_S_TASK_HAS_NOT_RUN = HRESULT($00041303); {$EXTERNALSYM SCHED_S_TASK_HAS_NOT_RUN} // // MessageId: SCHED_S_TASK_NO_MORE_RUNS // // MessageText: // // There are no more runs scheduled for this task. // SCHED_S_TASK_NO_MORE_RUNS = HRESULT($00041304); {$EXTERNALSYM SCHED_S_TASK_NO_MORE_RUNS} // // MessageId: SCHED_S_TASK_NOT_SCHEDULED // // MessageText: // // One or more of the properties that are needed to run this task on a schedule have not been set. // SCHED_S_TASK_NOT_SCHEDULED = HRESULT($00041305); {$EXTERNALSYM SCHED_S_TASK_NOT_SCHEDULED} // // MessageId: SCHED_S_TASK_TERMINATED // // MessageText: // // The last run of the task was terminated by the user. // SCHED_S_TASK_TERMINATED = HRESULT($00041306); {$EXTERNALSYM SCHED_S_TASK_TERMINATED} // // MessageId: SCHED_S_TASK_NO_VALID_TRIGGERS // // MessageText: // // Either the task has no triggers or the existing triggers are disabled or not set. // SCHED_S_TASK_NO_VALID_TRIGGERS = HRESULT($00041307); {$EXTERNALSYM SCHED_S_TASK_NO_VALID_TRIGGERS} // // MessageId: SCHED_S_EVENT_TRIGGER // // MessageText: // // Event triggers don't have set run times. // SCHED_S_EVENT_TRIGGER = HRESULT($00041308); {$EXTERNALSYM SCHED_S_EVENT_TRIGGER} // // MessageId: SCHED_E_TRIGGER_NOT_FOUND // // MessageText: // // Trigger not found. // SCHED_E_TRIGGER_NOT_FOUND = HRESULT($80041309); {$EXTERNALSYM SCHED_E_TRIGGER_NOT_FOUND} // // MessageId: SCHED_E_TASK_NOT_READY // // MessageText: // // One or more of the properties that are needed to run this task have not been set. // SCHED_E_TASK_NOT_READY = HRESULT($8004130A); {$EXTERNALSYM SCHED_E_TASK_NOT_READY} // // MessageId: SCHED_E_TASK_NOT_RUNNING // // MessageText: // // There is no running instance of the task to terminate. // SCHED_E_TASK_NOT_RUNNING = HRESULT($8004130B); {$EXTERNALSYM SCHED_E_TASK_NOT_RUNNING} // // MessageId: SCHED_E_SERVICE_NOT_INSTALLED // // MessageText: // // The Task Scheduler Service is not installed on this computer. // SCHED_E_SERVICE_NOT_INSTALLED = HRESULT($8004130C); {$EXTERNALSYM SCHED_E_SERVICE_NOT_INSTALLED} // // MessageId: SCHED_E_CANNOT_OPEN_TASK // // MessageText: // // The task object could not be opened. // SCHED_E_CANNOT_OPEN_TASK = HRESULT($8004130D); {$EXTERNALSYM SCHED_E_CANNOT_OPEN_TASK} // // MessageId: SCHED_E_INVALID_TASK // // MessageText: // // The object is either an invalid task object or is not a task object. // SCHED_E_INVALID_TASK = HRESULT($8004130E); {$EXTERNALSYM SCHED_E_INVALID_TASK} // // MessageId: SCHED_E_ACCOUNT_INFORMATION_NOT_SET // // MessageText: // // No account information could be found in the Task Scheduler security database for the task indicated. // SCHED_E_ACCOUNT_INFORMATION_NOT_SET = HRESULT($8004130F); {$EXTERNALSYM SCHED_E_ACCOUNT_INFORMATION_NOT_SET} // // MessageId: SCHED_E_ACCOUNT_NAME_NOT_FOUND // // MessageText: // // Unable to establish existence of the account specified. // SCHED_E_ACCOUNT_NAME_NOT_FOUND = HRESULT($80041310); {$EXTERNALSYM SCHED_E_ACCOUNT_NAME_NOT_FOUND} // // MessageId: SCHED_E_ACCOUNT_DBASE_CORRUPT // // MessageText: // // Corruption was detected in the Task Scheduler security database; the database has been reset. // SCHED_E_ACCOUNT_DBASE_CORRUPT = HRESULT($80041311); {$EXTERNALSYM SCHED_E_ACCOUNT_DBASE_CORRUPT} // // MessageId: SCHED_E_NO_SECURITY_SERVICES // // MessageText: // // Task Scheduler security services are available only on Windows NT. // SCHED_E_NO_SECURITY_SERVICES = HRESULT($80041312); {$EXTERNALSYM SCHED_E_NO_SECURITY_SERVICES} // // MessageId: SCHED_E_UNKNOWN_OBJECT_VERSION // // MessageText: // // The task object version is either unsupported or invalid. // SCHED_E_UNKNOWN_OBJECT_VERSION = HRESULT($80041313); {$EXTERNALSYM SCHED_E_UNKNOWN_OBJECT_VERSION} // // MessageId: SCHED_E_UNSUPPORTED_ACCOUNT_OPTION // // MessageText: // // The task has been configured with an unsupported combination of account settings and run time options. // SCHED_E_UNSUPPORTED_ACCOUNT_OPTION = HRESULT($80041314); {$EXTERNALSYM SCHED_E_UNSUPPORTED_ACCOUNT_OPTION} // // MessageId: SCHED_E_SERVICE_NOT_RUNNING // // MessageText: // // The Task Scheduler Service is not running. // SCHED_E_SERVICE_NOT_RUNNING = HRESULT($80041315); {$EXTERNALSYM SCHED_E_SERVICE_NOT_RUNNING} // line 151 // // Define the various device type values. Note that values used by Microsoft // Corporation are in the range 0-32767, and 32768-65535 are reserved for use // by customers. // type DEVICE_TYPE = DWORD; {$EXTERNALSYM DEVICE_TYPE} const FILE_DEVICE_BEEP = $00000001; {$EXTERNALSYM FILE_DEVICE_BEEP} FILE_DEVICE_CD_ROM = $00000002; {$EXTERNALSYM FILE_DEVICE_CD_ROM} FILE_DEVICE_CD_ROM_FILE_SYSTEM = $00000003; {$EXTERNALSYM FILE_DEVICE_CD_ROM_FILE_SYSTEM} FILE_DEVICE_CONTROLLER = $00000004; {$EXTERNALSYM FILE_DEVICE_CONTROLLER} FILE_DEVICE_DATALINK = $00000005; {$EXTERNALSYM FILE_DEVICE_DATALINK} FILE_DEVICE_DFS = $00000006; {$EXTERNALSYM FILE_DEVICE_DFS} FILE_DEVICE_DISK = $00000007; {$EXTERNALSYM FILE_DEVICE_DISK} FILE_DEVICE_DISK_FILE_SYSTEM = $00000008; {$EXTERNALSYM FILE_DEVICE_DISK_FILE_SYSTEM} FILE_DEVICE_FILE_SYSTEM = $00000009; {$EXTERNALSYM FILE_DEVICE_FILE_SYSTEM} FILE_DEVICE_INPORT_PORT = $0000000a; {$EXTERNALSYM FILE_DEVICE_INPORT_PORT} FILE_DEVICE_KEYBOARD = $0000000b; {$EXTERNALSYM FILE_DEVICE_KEYBOARD} FILE_DEVICE_MAILSLOT = $0000000c; {$EXTERNALSYM FILE_DEVICE_MAILSLOT} FILE_DEVICE_MIDI_IN = $0000000d; {$EXTERNALSYM FILE_DEVICE_MIDI_IN} FILE_DEVICE_MIDI_OUT = $0000000e; {$EXTERNALSYM FILE_DEVICE_MIDI_OUT} FILE_DEVICE_MOUSE = $0000000f; {$EXTERNALSYM FILE_DEVICE_MOUSE} FILE_DEVICE_MULTI_UNC_PROVIDER = $00000010; {$EXTERNALSYM FILE_DEVICE_MULTI_UNC_PROVIDER} FILE_DEVICE_NAMED_PIPE = $00000011; {$EXTERNALSYM FILE_DEVICE_NAMED_PIPE} FILE_DEVICE_NETWORK = $00000012; {$EXTERNALSYM FILE_DEVICE_NETWORK} FILE_DEVICE_NETWORK_BROWSER = $00000013; {$EXTERNALSYM FILE_DEVICE_NETWORK_BROWSER} FILE_DEVICE_NETWORK_FILE_SYSTEM = $00000014; {$EXTERNALSYM FILE_DEVICE_NETWORK_FILE_SYSTEM} FILE_DEVICE_NULL = $00000015; {$EXTERNALSYM FILE_DEVICE_NULL} FILE_DEVICE_PARALLEL_PORT = $00000016; {$EXTERNALSYM FILE_DEVICE_PARALLEL_PORT} FILE_DEVICE_PHYSICAL_NETCARD = $00000017; {$EXTERNALSYM FILE_DEVICE_PHYSICAL_NETCARD} FILE_DEVICE_PRINTER = $00000018; {$EXTERNALSYM FILE_DEVICE_PRINTER} FILE_DEVICE_SCANNER = $00000019; {$EXTERNALSYM FILE_DEVICE_SCANNER} FILE_DEVICE_SERIAL_MOUSE_PORT = $0000001a; {$EXTERNALSYM FILE_DEVICE_SERIAL_MOUSE_PORT} FILE_DEVICE_SERIAL_PORT = $0000001b; {$EXTERNALSYM FILE_DEVICE_SERIAL_PORT} FILE_DEVICE_SCREEN = $0000001c; {$EXTERNALSYM FILE_DEVICE_SCREEN} FILE_DEVICE_SOUND = $0000001d; {$EXTERNALSYM FILE_DEVICE_SOUND} FILE_DEVICE_STREAMS = $0000001e; {$EXTERNALSYM FILE_DEVICE_STREAMS} FILE_DEVICE_TAPE = $0000001f; {$EXTERNALSYM FILE_DEVICE_TAPE} FILE_DEVICE_TAPE_FILE_SYSTEM = $00000020; {$EXTERNALSYM FILE_DEVICE_TAPE_FILE_SYSTEM} FILE_DEVICE_TRANSPORT = $00000021; {$EXTERNALSYM FILE_DEVICE_TRANSPORT} FILE_DEVICE_UNKNOWN = $00000022; {$EXTERNALSYM FILE_DEVICE_UNKNOWN} FILE_DEVICE_VIDEO = $00000023; {$EXTERNALSYM FILE_DEVICE_VIDEO} FILE_DEVICE_VIRTUAL_DISK = $00000024; {$EXTERNALSYM FILE_DEVICE_VIRTUAL_DISK} FILE_DEVICE_WAVE_IN = $00000025; {$EXTERNALSYM FILE_DEVICE_WAVE_IN} FILE_DEVICE_WAVE_OUT = $00000026; {$EXTERNALSYM FILE_DEVICE_WAVE_OUT} FILE_DEVICE_8042_PORT = $00000027; {$EXTERNALSYM FILE_DEVICE_8042_PORT} FILE_DEVICE_NETWORK_REDIRECTOR = $00000028; {$EXTERNALSYM FILE_DEVICE_NETWORK_REDIRECTOR} FILE_DEVICE_BATTERY = $00000029; {$EXTERNALSYM FILE_DEVICE_BATTERY} FILE_DEVICE_BUS_EXTENDER = $0000002a; {$EXTERNALSYM FILE_DEVICE_BUS_EXTENDER} FILE_DEVICE_MODEM = $0000002b; {$EXTERNALSYM FILE_DEVICE_MODEM} FILE_DEVICE_VDM = $0000002c; {$EXTERNALSYM FILE_DEVICE_VDM} FILE_DEVICE_MASS_STORAGE = $0000002d; {$EXTERNALSYM FILE_DEVICE_MASS_STORAGE} FILE_DEVICE_SMB = $0000002e; {$EXTERNALSYM FILE_DEVICE_SMB} FILE_DEVICE_KS = $0000002f; {$EXTERNALSYM FILE_DEVICE_KS} FILE_DEVICE_CHANGER = $00000030; {$EXTERNALSYM FILE_DEVICE_CHANGER} FILE_DEVICE_SMARTCARD = $00000031; {$EXTERNALSYM FILE_DEVICE_SMARTCARD} FILE_DEVICE_ACPI = $00000032; {$EXTERNALSYM FILE_DEVICE_ACPI} FILE_DEVICE_DVD = $00000033; {$EXTERNALSYM FILE_DEVICE_DVD} FILE_DEVICE_FULLSCREEN_VIDEO = $00000034; {$EXTERNALSYM FILE_DEVICE_FULLSCREEN_VIDEO} FILE_DEVICE_DFS_FILE_SYSTEM = $00000035; {$EXTERNALSYM FILE_DEVICE_DFS_FILE_SYSTEM} FILE_DEVICE_DFS_VOLUME = $00000036; {$EXTERNALSYM FILE_DEVICE_DFS_VOLUME} FILE_DEVICE_SERENUM = $00000037; {$EXTERNALSYM FILE_DEVICE_SERENUM} FILE_DEVICE_TERMSRV = $00000038; {$EXTERNALSYM FILE_DEVICE_TERMSRV} FILE_DEVICE_KSEC = $00000039; {$EXTERNALSYM FILE_DEVICE_KSEC} FILE_DEVICE_FIPS = $0000003A; {$EXTERNALSYM FILE_DEVICE_FIPS} FILE_DEVICE_INFINIBAND = $0000003B; {$EXTERNALSYM FILE_DEVICE_INFINIBAND} // line 297 // // Define the method codes for how buffers are passed for I/O and FS controls // const METHOD_BUFFERED = 0; {$EXTERNALSYM METHOD_BUFFERED} METHOD_IN_DIRECT = 1; {$EXTERNALSYM METHOD_IN_DIRECT} METHOD_OUT_DIRECT = 2; {$EXTERNALSYM METHOD_OUT_DIRECT} METHOD_NEITHER = 3; {$EXTERNALSYM METHOD_NEITHER} // // Define some easier to comprehend aliases: // METHOD_DIRECT_TO_HARDWARE (writes, aka METHOD_IN_DIRECT) // METHOD_DIRECT_FROM_HARDWARE (reads, aka METHOD_OUT_DIRECT) // METHOD_DIRECT_TO_HARDWARE = METHOD_IN_DIRECT; {$EXTERNALSYM METHOD_DIRECT_TO_HARDWARE} METHOD_DIRECT_FROM_HARDWARE = METHOD_OUT_DIRECT; {$EXTERNALSYM METHOD_DIRECT_FROM_HARDWARE} // // Define the access check value for any access // // // The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in // ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these // constants *MUST* always be in sync. // // // FILE_SPECIAL_ACCESS is checked by the NT I/O system the same as FILE_ANY_ACCESS. // The file systems, however, may add additional access checks for I/O and FS controls // that use this value. // const FILE_ANY_ACCESS = 0; {$EXTERNALSYM FILE_ANY_ACCESS} FILE_SPECIAL_ACCESS = FILE_ANY_ACCESS; {$EXTERNALSYM FILE_SPECIAL_ACCESS} FILE_READ_ACCESS = $0001; // file & pipe {$EXTERNALSYM FILE_READ_ACCESS} FILE_WRITE_ACCESS = $0002; // file & pipe {$EXTERNALSYM FILE_WRITE_ACCESS} // line 3425 // // The following is a list of the native file system fsctls followed by // additional network file system fsctls. Some values have been // decommissioned. // const FSCTL_REQUEST_OPLOCK_LEVEL_1 = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (0 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_REQUEST_OPLOCK_LEVEL_1} FSCTL_REQUEST_OPLOCK_LEVEL_2 = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (1 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_REQUEST_OPLOCK_LEVEL_2} FSCTL_REQUEST_BATCH_OPLOCK = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (2 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_REQUEST_BATCH_OPLOCK} FSCTL_OPLOCK_BREAK_ACKNOWLEDGE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (3 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_OPLOCK_BREAK_ACKNOWLEDGE} FSCTL_OPBATCH_ACK_CLOSE_PENDING = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (4 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_OPBATCH_ACK_CLOSE_PENDING} FSCTL_OPLOCK_BREAK_NOTIFY = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (5 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_OPLOCK_BREAK_NOTIFY} FSCTL_LOCK_VOLUME = ((FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (6 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_LOCK_VOLUME} FSCTL_UNLOCK_VOLUME = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (7 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_UNLOCK_VOLUME} FSCTL_DISMOUNT_VOLUME = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (8 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_DISMOUNT_VOLUME} // decommissioned fsctl value 9 FSCTL_IS_VOLUME_MOUNTED = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (10 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_IS_VOLUME_MOUNTED} FSCTL_IS_PATHNAME_VALID = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (11 shl 2) or METHOD_BUFFERED); // PATHNAME_BUFFER, {$EXTERNALSYM FSCTL_IS_PATHNAME_VALID} FSCTL_MARK_VOLUME_DIRTY = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (12 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_MARK_VOLUME_DIRTY} // decommissioned fsctl value 13 FSCTL_QUERY_RETRIEVAL_POINTERS = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (14 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_QUERY_RETRIEVAL_POINTERS} FSCTL_GET_COMPRESSION = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (15 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_GET_COMPRESSION} FSCTL_SET_COMPRESSION = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or (16 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SET_COMPRESSION} // decommissioned fsctl value 17 // decommissioned fsctl value 18 FSCTL_MARK_AS_SYSTEM_HIVE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (19 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_MARK_AS_SYSTEM_HIVE} FSCTL_OPLOCK_BREAK_ACK_NO_2 = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (20 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_OPLOCK_BREAK_ACK_NO_2} FSCTL_INVALIDATE_VOLUMES = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (21 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_INVALIDATE_VOLUMES} FSCTL_QUERY_FAT_BPB = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (22 shl 2) or METHOD_BUFFERED); // FSCTL_QUERY_FAT_BPB_BUFFER {$EXTERNALSYM FSCTL_QUERY_FAT_BPB} FSCTL_REQUEST_FILTER_OPLOCK = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (23 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_REQUEST_FILTER_OPLOCK} FSCTL_FILESYSTEM_GET_STATISTICS = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (24 shl 2) or METHOD_BUFFERED); // FILESYSTEM_STATISTICS {$EXTERNALSYM FSCTL_FILESYSTEM_GET_STATISTICS} FSCTL_GET_NTFS_VOLUME_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (25 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_GET_NTFS_VOLUME_DATA} FSCTL_GET_NTFS_FILE_RECORD = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (26 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_GET_NTFS_FILE_RECORD} FSCTL_GET_VOLUME_BITMAP = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (27 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_GET_VOLUME_BITMAP} FSCTL_GET_RETRIEVAL_POINTERS = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (28 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_GET_RETRIEVAL_POINTERS} FSCTL_MOVE_FILE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (29 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_MOVE_FILE} FSCTL_IS_VOLUME_DIRTY = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (30 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_IS_VOLUME_DIRTY} // decomissioned fsctl value 31 (* FSCTL_GET_HFS_INFORMATION = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (31 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_GET_HFS_INFORMATION} *) FSCTL_ALLOW_EXTENDED_DASD_IO = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (32 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_ALLOW_EXTENDED_DASD_IO} // decommissioned fsctl value 33 // decommissioned fsctl value 34 (* FSCTL_READ_PROPERTY_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (33 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_READ_PROPERTY_DATA} FSCTL_WRITE_PROPERTY_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (34 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_WRITE_PROPERTY_DATA} *) FSCTL_FIND_FILES_BY_SID = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (35 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_FIND_FILES_BY_SID} // decommissioned fsctl value 36 // decommissioned fsctl value 37 (* FSCTL_DUMP_PROPERTY_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (37 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_DUMP_PROPERTY_DATA} *) FSCTL_SET_OBJECT_ID = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (38 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SET_OBJECT_ID} FSCTL_GET_OBJECT_ID = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (39 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_GET_OBJECT_ID} FSCTL_DELETE_OBJECT_ID = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (40 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_DELETE_OBJECT_ID} FSCTL_SET_REPARSE_POINT = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (41 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SET_REPARSE_POINT} FSCTL_GET_REPARSE_POINT = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (42 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_GET_REPARSE_POINT} FSCTL_DELETE_REPARSE_POINT = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (43 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_DELETE_REPARSE_POINT} FSCTL_ENUM_USN_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (44 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_ENUM_USN_DATA} FSCTL_SECURITY_ID_CHECK = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or (45 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_SECURITY_ID_CHECK} FSCTL_READ_USN_JOURNAL = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (46 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_READ_USN_JOURNAL} FSCTL_SET_OBJECT_ID_EXTENDED = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (47 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SET_OBJECT_ID_EXTENDED} FSCTL_CREATE_OR_GET_OBJECT_ID = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (48 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_CREATE_OR_GET_OBJECT_ID} FSCTL_SET_SPARSE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (49 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SET_SPARSE} FSCTL_SET_ZERO_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_WRITE_DATA shl 14) or (50 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SET_ZERO_DATA} FSCTL_QUERY_ALLOCATED_RANGES = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or (51 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_QUERY_ALLOCATED_RANGES} // decommissioned fsctl value 52 (* FSCTL_ENABLE_UPGRADE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_WRITE_DATA shl 14) or (52 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_ENABLE_UPGRADE} *) FSCTL_SET_ENCRYPTION = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (53 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_SET_ENCRYPTION} FSCTL_ENCRYPTION_FSCTL_IO = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (54 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_ENCRYPTION_FSCTL_IO} FSCTL_WRITE_RAW_ENCRYPTED = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (55 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_WRITE_RAW_ENCRYPTED} FSCTL_READ_RAW_ENCRYPTED = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (56 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_READ_RAW_ENCRYPTED} FSCTL_CREATE_USN_JOURNAL = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (57 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_CREATE_USN_JOURNAL} FSCTL_READ_FILE_USN_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (58 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_READ_FILE_USN_DATA} FSCTL_WRITE_USN_CLOSE_RECORD = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (59 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_WRITE_USN_CLOSE_RECORD} FSCTL_EXTEND_VOLUME = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (60 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_EXTEND_VOLUME} FSCTL_QUERY_USN_JOURNAL = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (61 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_QUERY_USN_JOURNAL} FSCTL_DELETE_USN_JOURNAL = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (62 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_DELETE_USN_JOURNAL} FSCTL_MARK_HANDLE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (63 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_MARK_HANDLE} FSCTL_SIS_COPYFILE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (64 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SIS_COPYFILE} FSCTL_SIS_LINK_FILES = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or (65 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_SIS_LINK_FILES} FSCTL_HSM_MSG = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or (66 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_HSM_MSG} // decommissioned fsctl value 67 (* FSCTL_NSS_CONTROL = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_WRITE_DATA shl 14) or (67 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_NSS_CONTROL} *) FSCTL_HSM_DATA = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or (68 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_HSM_DATA} FSCTL_RECALL_FILE = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (69 shl 2) or METHOD_NEITHER); {$EXTERNALSYM FSCTL_RECALL_FILE} // decommissioned fsctl value 70 (* FSCTL_NSS_RCONTROL = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or (70 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_NSS_RCONTROL} *) FSCTL_READ_FROM_PLEX = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or (71 shl 2) or METHOD_OUT_DIRECT); {$EXTERNALSYM FSCTL_READ_FROM_PLEX} FSCTL_FILE_PREFETCH = ( (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or (72 shl 2) or METHOD_BUFFERED); {$EXTERNALSYM FSCTL_FILE_PREFETCH} // line 4553 // // Structure for FSCTL_SET_ZERO_DATA // type PFILE_ZERO_DATA_INFORMATION = ^FILE_ZERO_DATA_INFORMATION; {$EXTERNALSYM PFILE_ZERO_DATA_INFORMATION} _FILE_ZERO_DATA_INFORMATION = record FileOffset: LARGE_INTEGER; BeyondFinalZero: LARGE_INTEGER; end; {$EXTERNALSYM _FILE_ZERO_DATA_INFORMATION} FILE_ZERO_DATA_INFORMATION = _FILE_ZERO_DATA_INFORMATION; {$EXTERNALSYM FILE_ZERO_DATA_INFORMATION} TFileZeroDataInformation = FILE_ZERO_DATA_INFORMATION; PFileZeroDataInformation = PFILE_ZERO_DATA_INFORMATION; // // Structure for FSCTL_QUERY_ALLOCATED_RANGES // // // Querying the allocated ranges requires an output buffer to store the // allocated ranges and an input buffer to specify the range to query. // The input buffer contains a single entry, the output buffer is an // array of the following structure. // PFILE_ALLOCATED_RANGE_BUFFER = ^FILE_ALLOCATED_RANGE_BUFFER; {$EXTERNALSYM PFILE_ALLOCATED_RANGE_BUFFER} _FILE_ALLOCATED_RANGE_BUFFER = record FileOffset: LARGE_INTEGER; Length: LARGE_INTEGER; end; {$EXTERNALSYM _FILE_ALLOCATED_RANGE_BUFFER} FILE_ALLOCATED_RANGE_BUFFER = _FILE_ALLOCATED_RANGE_BUFFER; {$EXTERNALSYM FILE_ALLOCATED_RANGE_BUFFER} TFileAllocatedRangeBuffer = FILE_ALLOCATED_RANGE_BUFFER; PFileAllocatedRangeBuffer = PFILE_ALLOCATED_RANGE_BUFFER; // line 340 // // Code Page Default Values. // const CP_ACP = 0; // default to ANSI code page {$EXTERNALSYM CP_ACP} CP_OEMCP = 1; // default to OEM code page {$EXTERNALSYM CP_OEMCP} CP_MACCP = 2; // default to MAC code page {$EXTERNALSYM CP_MACCP} CP_THREAD_ACP = 3; // current thread's ANSI code page {$EXTERNALSYM CP_THREAD_ACP} CP_SYMBOL = 42; // SYMBOL translations {$EXTERNALSYM CP_SYMBOL} CP_UTF7 = 65000; // UTF-7 translation {$EXTERNALSYM CP_UTF7} CP_UTF8 = 65001; // UTF-8 translation {$EXTERNALSYM CP_UTF8} // line 597 const // // The following LCTypes may be used in combination with any other LCTypes. // // LOCALE_NOUSEROVERRIDE is also used in GetTimeFormat and // GetDateFormat. // // LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need // to do string translation. // // LOCALE_RETURN_NUMBER will return the result from GetLocaleInfo as a // number instead of a string. This flag is only valid for the LCTypes // beginning with LOCALE_I. // LOCALE_NOUSEROVERRIDE = DWORD($80000000); // do not use user overrides {$EXTERNALSYM LOCALE_NOUSEROVERRIDE} LOCALE_USE_CP_ACP = $40000000; // use the system ACP {$EXTERNALSYM LOCALE_USE_CP_ACP} LOCALE_RETURN_NUMBER = $20000000; // return number instead of string {$EXTERNALSYM LOCALE_RETURN_NUMBER} // line 841 const LOCALE_IDEFAULTEBCDICCODEPAGE = $00001012; // default ebcdic code page {$EXTERNALSYM LOCALE_IDEFAULTEBCDICCODEPAGE} LOCALE_IPAPERSIZE = $0000100A; // 1 = letter, 5 = legal, 8 = a3, 9 = a4 {$EXTERNALSYM LOCALE_IPAPERSIZE} LOCALE_SENGCURRNAME = $00001007; // english name of currency {$EXTERNALSYM LOCALE_SENGCURRNAME} LOCALE_SNATIVECURRNAME = $00001008; // native name of currency {$EXTERNALSYM LOCALE_SNATIVECURRNAME} LOCALE_SYEARMONTH = $00001006; // year month format string {$EXTERNALSYM LOCALE_SYEARMONTH} LOCALE_SSORTNAME = $00001013; // sort name {$EXTERNALSYM LOCALE_SSORTNAME} LOCALE_IDIGITSUBSTITUTION = $00001014; // 0 = context, 1 = none, 2 = national {$EXTERNALSYM LOCALE_IDIGITSUBSTITUTION} // line 880 DATE_YEARMONTH = $00000008; // use year month picture {$EXTERNALSYM DATE_YEARMONTH} DATE_LTRREADING = $00000010; // add marks for left to right reading order layout {$EXTERNALSYM DATE_LTRREADING} DATE_RTLREADING = $00000020; // add marks for right to left reading order layout {$EXTERNALSYM DATE_RTLREADING} // // Calendar Types. // // These types are used for the EnumCalendarInfo and GetCalendarInfo // NLS API routines. // Some of these types are also used for the SetCalendarInfo NLS API // routine. // // // The following CalTypes may be used in combination with any other CalTypes. // // CAL_NOUSEROVERRIDE // // CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string // translation. // // CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a // number instead of a string. This flag is only valid for the CalTypes // beginning with CAL_I. // CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE; // do not use user overrides {$EXTERNALSYM CAL_NOUSEROVERRIDE} CAL_USE_CP_ACP = LOCALE_USE_CP_ACP; // use the system ACP {$EXTERNALSYM CAL_USE_CP_ACP} CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER; // return number instead of string {$EXTERNALSYM CAL_RETURN_NUMBER} // line 1014 CAL_SYEARMONTH = $0000002f; // year month format string {$EXTERNALSYM CAL_SYEARMONTH} CAL_ITWODIGITYEARMAX = $00000030; // two digit year max {$EXTERNALSYM CAL_ITWODIGITYEARMAX} // line 1424 type CALINFO_ENUMPROCEXA = function (lpCalendarInfoString: LPSTR; Calendar: CALID): BOOL; stdcall; {$EXTERNALSYM CALINFO_ENUMPROCEXA} TCalInfoEnumProcExA = CALINFO_ENUMPROCEXA; // line 1635 {$IFNDEF CLR} function GetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE; lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall; {$EXTERNALSYM GetCalendarInfoA} function GetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE; lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall; {$EXTERNALSYM GetCalendarInfoW} // line 1754 function EnumCalendarInfoExA(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXA; Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall; {$EXTERNALSYM EnumCalendarInfoExA} {$ENDIF ~CLR} type {$IFDEF CLR} MAKEINTRESOURCEA = Integer; MAKEINTRESOURCEW = Integer; {$ELSE} MAKEINTRESOURCEA = LPSTR; {$EXTERNALSYM MAKEINTRESOURCEA} MAKEINTRESOURCEW = LPWSTR; {$EXTERNALSYM MAKEINTRESOURCEW} {$ENDIF CLR} {$IFDEF UNICODE} MAKEINTRESOURCE = MAKEINTRESOURCEW; {$EXTERNALSYM MAKEINTRESOURCE} {$ELSE} MAKEINTRESOURCE = MAKEINTRESOURCEA; {$EXTERNALSYM MAKEINTRESOURCE} {$ENDIF} // // Predefined Resource Types // const RT_CURSOR = MAKEINTRESOURCE(1); {$EXTERNALSYM RT_CURSOR} RT_BITMAP = MAKEINTRESOURCE(2); {$EXTERNALSYM RT_BITMAP} RT_ICON = MAKEINTRESOURCE(3); {$EXTERNALSYM RT_ICON} RT_MENU = MAKEINTRESOURCE(4); {$EXTERNALSYM RT_MENU} RT_DIALOG = MAKEINTRESOURCE(5); {$EXTERNALSYM RT_DIALOG} RT_STRING = MAKEINTRESOURCE(6); {$EXTERNALSYM RT_STRING} RT_FONTDIR = MAKEINTRESOURCE(7); {$EXTERNALSYM RT_FONTDIR} RT_FONT = MAKEINTRESOURCE(8); {$EXTERNALSYM RT_FONT} RT_ACCELERATOR = MAKEINTRESOURCE(9); {$EXTERNALSYM RT_ACCELERATOR} RT_RCDATA = MAKEINTRESOURCE(10); {$EXTERNALSYM RT_RCDATA} RT_MESSAGETABLE = MAKEINTRESOURCE(11); {$EXTERNALSYM RT_MESSAGETABLE} DIFFERENCE = 11; {$EXTERNALSYM DIFFERENCE} RT_GROUP_CURSOR = MAKEINTRESOURCE(ULONG_PTR(RT_CURSOR) + DIFFERENCE); {$EXTERNALSYM RT_GROUP_CURSOR} RT_GROUP_ICON = MAKEINTRESOURCE(ULONG_PTR(RT_ICON) + DIFFERENCE); {$EXTERNALSYM RT_GROUP_ICON} RT_VERSION = MAKEINTRESOURCE(16); {$EXTERNALSYM RT_VERSION} RT_DLGINCLUDE = MAKEINTRESOURCE(17); {$EXTERNALSYM RT_DLGINCLUDE} RT_PLUGPLAY = MAKEINTRESOURCE(19); {$EXTERNALSYM RT_PLUGPLAY} RT_VXD = MAKEINTRESOURCE(20); {$EXTERNALSYM RT_VXD} RT_ANICURSOR = MAKEINTRESOURCE(21); {$EXTERNALSYM RT_ANICURSOR} RT_ANIICON = MAKEINTRESOURCE(22); {$EXTERNALSYM RT_ANIICON} RT_HTML = MAKEINTRESOURCE(23); {$EXTERNALSYM RT_HTML} RT_MANIFEST = MAKEINTRESOURCE(24); CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1); {$EXTERNALSYM CREATEPROCESS_MANIFEST_RESOURCE_ID} ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(2); {$EXTERNALSYM ISOLATIONAWARE_MANIFEST_RESOURCE_ID} ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(3); {$EXTERNALSYM ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID} MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1{inclusive}); {$EXTERNALSYM MINIMUM_RESERVED_MANIFEST_RESOURCE_ID} MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(16{inclusive}); {$EXTERNALSYM MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID} // line 1451 KLF_SETFORPROCESS = $00000100; {$EXTERNALSYM KLF_SETFORPROCESS} KLF_SHIFTLOCK = $00010000; {$EXTERNALSYM KLF_SHIFTLOCK} KLF_RESET = $40000000; {$EXTERNALSYM KLF_RESET} {$IFNDEF CLR} type { TODO : Source unknown } {$EXTERNALSYM ImgDelayDescr} ImgDelayDescr = packed record grAttrs: DWORD; // attributes szName: DWORD; // pointer to dll name phmod: PDWORD; // address of module handle { TODO : probably wrong declaration } pIAT: TImageThunkData; // address of the IAT { TODO : probably wrong declaration } pINT: TImageThunkData; // address of the INT { TODO : probably wrong declaration } pBoundIAT: TImageThunkData; // address of the optional bound IAT { TODO : probably wrong declaration } pUnloadIAT: TImageThunkData; // address of optional copy of original IAT dwTimeStamp: DWORD; // 0 if not bound, // O.W. date/time stamp of DLL bound to (Old BIND) end; TImgDelayDescr = ImgDelayDescr; PImgDelayDescr = ^ImgDelayDescr; (* // DelayImp.h, Borland BCC 5.5 {$EXTERNALSYM ImgDelayDescr} ImgDelayDescr = packed record grAttrs: DWORD; // attributes szName: LPCSTR; // pointer to dll name { TODO : probably wrong declaration } hmod: HMODULE; // address of module handle pIAT: PIMAGE_THUNK_DATA; // address of the IAT pINT: PIMAGE_THUNK_DATA; // address of the INT pBoundIAT: PIMAGE_THUNK_DATA; // address of the optional bound IAT pUnloadIAT: PIMAGE_THUNK_DATA; // address of optional copy of original IAT dwTimeStamp: DWORD; // 0 if not bound, // O.W. date/time stamp of DLL bound to (Old BIND) end; TImgDelayDescr = ImgDelayDescr; PImgDelayDescr = ^ImgDelayDescr; // Microsoft version (64 bit SDK) {$EXTERNALSYM RVA} RVA = DWORD; {$EXTERNALSYM ImgDelayDescr} ImgDelayDescr = packed record grAttrs: DWORD; // attributes rvaDLLName: RVA; // RVA to dll name rvaHmod: RVA; // RVA of module handle rvaIAT: RVA; // RVA of the IAT rvaINT: RVA; // RVA of the INT rvaBoundIAT: RVA; // RVA of the optional bound IAT rvaUnloadIAT: RVA; // RVA of optional copy of original IAT dwTimeStamp: DWORD; // 0 if not bound, // O.W. date/time stamp of DLL bound to (Old BIND) end; {$EXTERNALSYM PImgDelayDescr} PImgDelayDescr = ImgDelayDescr; TImgDelayDescr = ImgDelayDescr; *) const RtdlSetNamedSecurityInfoW: function(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE; SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID; pDacl, pSacl: PACL): DWORD; stdcall = SetNamedSecurityInfoW; RtdlSetWaitableTimer: function(hTimer: THandle; var lpDueTime: TLargeInteger; lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine; lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL; stdcall = SetWaitableTimer; RtdlNetUserAdd: function(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: PDWord): NET_API_STATUS; stdcall = NetUserAdd; RtdlNetUserDel: function(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall = NetUserDel; RtdlNetGroupAdd: function(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: PDWord): NET_API_STATUS; stdcall = NetGroupAdd; RtdlNetGroupEnum: function(servername: LPCWSTR; level: DWORD; out bufptr: PByte; prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall = NetGroupEnum; RtdlNetGroupDel: function(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall = NetGroupDel; RtdlNetLocalGroupAdd: function(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: PDWord): NET_API_STATUS; stdcall = NetLocalGroupAdd; RtdlNetLocalGroupEnum: function(servername: LPCWSTR; level: DWORD; out bufptr: PByte; prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall = NetLocalGroupEnum; RtdlNetLocalGroupDel: function(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall = NetLocalGroupDel; RtdlNetLocalGroupAddMembers: function(servername: LPCWSTR; groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall = NetLocalGroupAddMembers; RtdlNetApiBufferFree: function(Buffer: Pointer): NET_API_STATUS; stdcall = NetApiBufferFree; RtdlGetCalendarInfoA: function(Locale: LCID; Calendar: CALID; CalType: CALTYPE; lpCalData: PAnsiChar; cchData: Integer; lpValue: PDWORD): Integer; stdcall = GetCalendarInfoA; RtdlGetCalendarInfoW: function(Locale: LCID; Calendar: CALID; CalType: CALTYPE; lpCalData: PWideChar; cchData: Integer; lpValue: PDWORD): Integer; stdcall = GetCalendarInfoW; RtdlEnumCalendarInfoExA: function(lpCalInfoEnumProc: TCalInfoEnumProcExA; Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall = EnumCalendarInfoExA; RtdlGetVolumeNameForVolumeMountPoint: function(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall = GetVolumeNameForVolumeMountPoint; RtdlSetVolumeMountPoint: function(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPCSTR): BOOL; stdcall = SetVolumeMountPoint; RtdlDeleteVolumeMountPoint: function(lpszVolumeMountPoint: LPCSTR): BOOL; stdcall = DeleteVolumeMountPoint; RtdlNetBios: function(P: PNCB): UCHAR; stdcall = NetBios; {$ENDIF ~CLR} implementation uses JclResources; const {$IFDEF UNICODE} AWSuffix = 'W'; {$ELSE ~UNICODE} AWSuffix = 'A'; {$ENDIF ~UNICODE} {$IFNDEF CLR} procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: string); var ModuleHandle: HMODULE; begin if not Assigned(P) then begin ModuleHandle := GetModuleHandle(PChar(ModuleName)); if ModuleHandle = 0 then begin ModuleHandle := LoadLibrary(PChar(ModuleName)); if ModuleHandle = 0 then raise EJclError.CreateResFmt(@RsELibraryNotFound, [ModuleName]); end; P := GetProcAddress(ModuleHandle, PChar(ProcName)); if not Assigned(P) then raise EJclError.CreateResFmt(@RsEFunctionNotFound, [ModuleName, ProcName]); end; end; const aclapilib = 'advapi32.dll'; var _SetNamedSecurityInfoW: Pointer; function SetNamedSecurityInfoW; begin GetProcedureAddress(_SetNamedSecurityInfoW, aclapilib, 'SetNamedSecurityInfoW'); asm mov esp, ebp pop ebp jmp [_SetNamedSecurityInfoW] end; end; const ImageHlpLib = 'imagehlp.dll'; var _ReBaseImage: Pointer; function ReBaseImage; begin GetProcedureAddress(_ReBaseImage, ImageHlpLib, 'ReBaseImage'); asm mov esp, ebp pop ebp jmp [_ReBaseImage] end; end; var _CheckSumMappedFile: Pointer; function CheckSumMappedFile; begin GetProcedureAddress(_CheckSumMappedFile, ImageHlpLib, 'CheckSumMappedFile'); asm mov esp, ebp pop ebp jmp [_CheckSumMappedFile] end; end; var _GetImageUnusedHeaderBytes: Pointer; function GetImageUnusedHeaderBytes; begin GetProcedureAddress(_GetImageUnusedHeaderBytes, ImageHlpLib, 'GetImageUnusedHeaderBytes'); asm mov esp, ebp pop ebp jmp [_GetImageUnusedHeaderBytes] end; end; var _MapAndLoad: Pointer; function MapAndLoad; begin GetProcedureAddress(_MapAndLoad, ImageHlpLib, 'MapAndLoad'); asm mov esp, ebp pop ebp jmp [_MapAndLoad] end; end; var _UnMapAndLoad: Pointer; function UnMapAndLoad; begin GetProcedureAddress(_UnMapAndLoad, ImageHlpLib, 'UnMapAndLoad'); asm mov esp, ebp pop ebp jmp [_UnMapAndLoad] end; end; var _TouchFileTimes: Pointer; function TouchFileTimes; begin GetProcedureAddress(_TouchFileTimes, ImageHlpLib, 'TouchFileTimes'); asm mov esp, ebp pop ebp jmp [_TouchFileTimes] end; end; var _ImageDirectoryEntryToData: Pointer; function ImageDirectoryEntryToData; begin GetProcedureAddress(_ImageDirectoryEntryToData, ImageHlpLib, 'ImageDirectoryEntryToData'); asm mov esp, ebp pop ebp jmp [_ImageDirectoryEntryToData] end; end; var _ImageRvaToSection: Pointer; function ImageRvaToSection; begin GetProcedureAddress(_ImageRvaToSection, ImageHlpLib, 'ImageRvaToSection'); asm mov esp, ebp pop ebp jmp [_ImageRvaToSection] end; end; var _ImageRvaToVa: Pointer; function ImageRvaToVa; begin GetProcedureAddress(_ImageRvaToVa, ImageHlpLib, 'ImageRvaToVa'); asm mov esp, ebp pop ebp jmp [_ImageRvaToVa] end; end; var _UnDecorateSymbolName: Pointer; function UnDecorateSymbolName; begin GetProcedureAddress(_UnDecorateSymbolName, ImageHlpLib, 'UnDecorateSymbolName'); asm mov esp, ebp pop ebp jmp [_UnDecorateSymbolName] end; end; var _NetUserAdd: Pointer; function NetUserAdd; begin GetProcedureAddress(_NetUserAdd, netapi32, 'NetUserAdd'); asm mov esp, ebp pop ebp jmp [_NetUserAdd] end; end; var _NetUserEnum: Pointer; function NetUserEnum; begin GetProcedureAddress(_NetUserEnum, netapi32, 'NetUserEnum'); asm mov esp, ebp pop ebp jmp [_NetUserEnum] end; end; var _NetUserGetInfo: Pointer; function NetUserGetInfo; begin GetProcedureAddress(_NetUserGetInfo, netapi32, 'NetUserGetInfo'); asm mov esp, ebp pop ebp jmp [_NetUserGetInfo] end; end; var _NetUserSetInfo: Pointer; function NetUserSetInfo; begin GetProcedureAddress(_NetUserSetInfo, netapi32, 'NetUserSetInfo'); asm mov esp, ebp pop ebp jmp [_NetUserSetInfo] end; end; var _NetUserDel: Pointer; function NetUserDel; begin GetProcedureAddress(_NetUserDel, netapi32, 'NetUserDel'); asm mov esp, ebp pop ebp jmp [_NetUserDel] end; end; var _NetUserGetGroups: Pointer; function NetUserGetGroups; begin GetProcedureAddress(_NetUserGetGroups, netapi32, 'NetUserGetGroups'); asm mov esp, ebp pop ebp jmp [_NetUserGetGroups] end; end; var _NetUserSetGroups: Pointer; function NetUserSetGroups; begin GetProcedureAddress(_NetUserSetGroups, netapi32, 'NetUserSetGroups'); asm mov esp, ebp pop ebp jmp [_NetUserSetGroups] end; end; var _NetUserGetLocalGroups: Pointer; function NetUserGetLocalGroups; begin GetProcedureAddress(_NetUserGetLocalGroups, netapi32, 'NetUserGetLocalGroups'); asm mov esp, ebp pop ebp jmp [_NetUserGetLocalGroups] end; end; var _NetUserModalsGet: Pointer; function NetUserModalsGet; begin GetProcedureAddress(_NetUserModalsGet, netapi32, 'NetUserModalsGet'); asm mov esp, ebp pop ebp jmp [_NetUserModalsGet] end; end; var _NetUserModalsSet: Pointer; function NetUserModalsSet; begin GetProcedureAddress(_NetUserModalsSet, netapi32, 'NetUserModalsSet'); asm mov esp, ebp pop ebp jmp [_NetUserModalsSet] end; end; var _NetUserChangePassword: Pointer; function NetUserChangePassword; begin GetProcedureAddress(_NetUserChangePassword, netapi32, 'NetUserChangePassword'); asm mov esp, ebp pop ebp jmp [_NetUserChangePassword] end; end; var _NetGroupAdd: Pointer; function NetGroupAdd; begin GetProcedureAddress(_NetGroupAdd, netapi32, 'NetGroupAdd'); asm mov esp, ebp pop ebp jmp [_NetGroupAdd] end; end; var _NetGroupAddUser: Pointer; function NetGroupAddUser; begin GetProcedureAddress(_NetGroupAddUser, netapi32, 'NetGroupAddUser'); asm mov esp, ebp pop ebp jmp [_NetGroupAddUser] end; end; var _NetGroupEnum: Pointer; function NetGroupEnum; begin GetProcedureAddress(_NetGroupEnum, netapi32, 'NetGroupEnum'); asm mov esp, ebp pop ebp jmp [_NetGroupEnum] end; end; var _NetGroupGetInfo: Pointer; function NetGroupGetInfo; begin GetProcedureAddress(_NetGroupGetInfo, netapi32, 'NetGroupGetInfo'); asm mov esp, ebp pop ebp jmp [_NetGroupGetInfo] end; end; var _NetGroupSetInfo: Pointer; function NetGroupSetInfo; begin GetProcedureAddress(_NetGroupSetInfo, netapi32, 'NetGroupSetInfo'); asm mov esp, ebp pop ebp jmp [_NetGroupSetInfo] end; end; var _NetGroupDel: Pointer; function NetGroupDel; begin GetProcedureAddress(_NetGroupDel, netapi32, 'NetGroupDel'); asm mov esp, ebp pop ebp jmp [_NetGroupDel] end; end; var _NetGroupDelUser: Pointer; function NetGroupDelUser; begin GetProcedureAddress(_NetGroupDelUser, netapi32, 'NetGroupDelUser'); asm mov esp, ebp pop ebp jmp [_NetGroupDelUser] end; end; var _NetGroupGetUsers: Pointer; function NetGroupGetUsers; begin GetProcedureAddress(_NetGroupGetUsers, netapi32, 'NetGroupGetUsers'); asm mov esp, ebp pop ebp jmp [_NetGroupGetUsers] end; end; var _NetGroupSetUsers: Pointer; function NetGroupSetUsers; begin GetProcedureAddress(_NetGroupSetUsers, netapi32, 'NetGroupSetUsers'); asm mov esp, ebp pop ebp jmp [_NetGroupSetUsers] end; end; var _NetLocalGroupAdd: Pointer; function NetLocalGroupAdd; begin GetProcedureAddress(_NetLocalGroupAdd, netapi32, 'NetLocalGroupAdd'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupAdd] end; end; var _NetLocalGroupAddMember: Pointer; function NetLocalGroupAddMember; begin GetProcedureAddress(_NetLocalGroupAddMember, netapi32, 'NetLocalGroupAddMember'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupAddMember] end; end; var _NetLocalGroupEnum: Pointer; function NetLocalGroupEnum; begin GetProcedureAddress(_NetLocalGroupEnum, netapi32, 'NetLocalGroupEnum'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupEnum] end; end; var _NetLocalGroupGetInfo: Pointer; function NetLocalGroupGetInfo; begin GetProcedureAddress(_NetLocalGroupGetInfo, netapi32, 'NetLocalGroupGetInfo'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupGetInfo] end; end; var _NetLocalGroupSetInfo: Pointer; function NetLocalGroupSetInfo; begin GetProcedureAddress(_NetLocalGroupSetInfo, netapi32, 'NetLocalGroupSetInfo'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupSetInfo] end; end; var _NetLocalGroupDel: Pointer; function NetLocalGroupDel; begin GetProcedureAddress(_NetLocalGroupDel, netapi32, 'NetLocalGroupDel'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupDel] end; end; var _NetLocalGroupDelMember: Pointer; function NetLocalGroupDelMember; begin GetProcedureAddress(_NetLocalGroupDelMember, netapi32, 'NetLocalGroupDelMember'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupDelMember] end; end; var _NetLocalGroupGetMembers: Pointer; function NetLocalGroupGetMembers; begin GetProcedureAddress(_NetLocalGroupGetMembers, netapi32, 'NetLocalGroupGetMembers'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupGetMembers] end; end; var _NetLocalGroupSetMembers: Pointer; function NetLocalGroupSetMembers; begin GetProcedureAddress(_NetLocalGroupSetMembers, netapi32, 'NetLocalGroupSetMembers'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupSetMembers] end; end; var _NetLocalGroupAddMembers: Pointer; function NetLocalGroupAddMembers; begin GetProcedureAddress(_NetLocalGroupAddMembers, netapi32, 'NetLocalGroupAddMembers'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupAddMembers] end; end; var _NetLocalGroupDelMembers: Pointer; function NetLocalGroupDelMembers; begin GetProcedureAddress(_NetLocalGroupDelMembers, netapi32, 'NetLocalGroupDelMembers'); asm mov esp, ebp pop ebp jmp [_NetLocalGroupDelMembers] end; end; var _NetApiBufferFree: Pointer; function NetApiBufferFree; begin GetProcedureAddress(_NetApiBufferFree, netapi32, 'NetApiBufferFree'); asm mov esp, ebp pop ebp jmp [_NetApiBufferFree] end; end; var _Netbios: Pointer; function Netbios; begin GetProcedureAddress(_Netbios, 'netapi32.dll', 'Netbios'); asm mov esp, ebp pop ebp jmp [_Netbios] end; end; var _BackupSeek: Pointer; function BackupSeek; begin GetProcedureAddress(_BackupSeek, kernel32, 'BackupSeek'); asm mov esp, ebp pop ebp jmp [_BackupSeek] end; end; var _AdjustTokenPrivileges: Pointer; function AdjustTokenPrivileges; begin GetProcedureAddress(_AdjustTokenPrivileges, advapi32, 'AdjustTokenPrivileges'); asm mov esp, ebp pop ebp jmp [_AdjustTokenPrivileges] end; end; function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: DWORD; lpName: PChar): THandle; stdcall; external kernel32 name 'CreateMutexA'; function GetVersionEx(var lpVersionInformation: TOSVersionInfoEx): BOOL; stdcall; external kernel32 name 'GetVersionExA'; function GetVersionEx(lpVersionInformation: POSVersionInfoEx): BOOL; stdcall; external kernel32 name 'GetVersionExA'; var _SetWaitableTimer: Pointer; function SetWaitableTimer; begin GetProcedureAddress(_SetWaitableTimer, kernel32, 'SetWaitableTimer'); asm mov esp, ebp pop ebp jmp [_SetWaitableTimer] 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 _SetVolumeMountPoint: Pointer; function SetVolumeMountPoint; begin GetProcedureAddress(_SetVolumeMountPoint, kernel32, 'SetVolumeMountPointA'); asm mov esp, ebp pop ebp jmp [_SetVolumeMountPoint] end; end; var _DeleteVolumeMountPoint: Pointer; function DeleteVolumeMountPoint; begin GetProcedureAddress(_DeleteVolumeMountPoint, kernel32, 'DeleteVolumeMountPointA'); asm mov esp, ebp pop ebp jmp [_DeleteVolumeMountPoint] end; end; var _GetVolumeNameForVolMountPoint: Pointer; function GetVolumeNameForVolumeMountPoint; begin GetProcedureAddress(_GetVolumeNameForVolMountPoint, kernel32, 'GetVolumeNameForVolumeMountPointA'); asm mov esp, ebp pop ebp jmp [_GetVolumeNameForVolMountPoint] end; end; var _GetCalendarInfoA: Pointer; function GetCalendarInfoA; begin GetProcedureAddress(_GetCalendarInfoA, kernel32, 'GetCalendarInfoA'); asm mov esp, ebp pop ebp jmp [_GetCalendarInfoA] end; end; var _GetCalendarInfoW: Pointer; function GetCalendarInfoW; begin GetProcedureAddress(_GetCalendarInfoW, kernel32, 'GetCalendarInfoW'); asm mov esp, ebp pop ebp jmp [_GetCalendarInfoW] end; end; var _EnumCalendarInfoExA: Pointer; function EnumCalendarInfoExA; begin GetProcedureAddress(_EnumCalendarInfoExA, kernel32, 'EnumCalendarInfoExA'); asm mov esp, ebp pop ebp jmp [_EnumCalendarInfoExA] end; end; {$ENDIF ~CLR} // line 9078 function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD; begin Result := (SubLang shl 10) or PrimaryLang; end; function PRIMARYLANGID(LangId: WORD): WORD; begin Result := LangId and $03FF; end; function SUBLANGID(LangId: WORD): WORD; begin Result := LangId shr 10; end; function MAKELCID(LangId, SortId: WORD): DWORD; begin Result := (DWORD(SortId) shl 16) or DWORD(LangId); end; function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD; begin Result := MAKELCID(LangId, SortId) or (SortVersion shl 20); end; function LANGIDFROMLCID(LocaleId: LCID): WORD; begin Result := WORD(LocaleId); end; function SORTIDFROMLCID(LocaleId: LCID): WORD; begin Result := WORD((DWORD(LocaleId) shr 16) and $000F); end; function SORTVERSIONFROMLCID(LocaleId: LCID): WORD; begin Result := WORD((DWORD(LocaleId) shr 20) and $000F); end; // line 9149 function IsReparseTagMicrosoft(Tag: ULONG): Boolean; begin Result := (Tag and ULONG($80000000)) <> 0; end; function IsReparseTagHighLatency(Tag: ULONG): Boolean; begin Result := (Tag and ULONG($40000000)) <> 0; end; function IsReparseTagNameSurrogate(Tag: ULONG): Boolean; begin Result := (Tag and ULONG($20000000)) <> 0; end; {$IFNDEF CLR} // IMAGE_FIRST_SECTION by Nico Bendlin - supplied by Markus Fuchs function FieldOffset(const Struc; const Field): Cardinal; begin Result := Cardinal(@Field) - Cardinal(@Struc); end; function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader; begin Result := PImageSectionHeader(Cardinal(NtHeader) + FieldOffset(NtHeader^, NtHeader^.OptionalHeader) + NtHeader^.FileHeader.SizeOfOptionalHeader); end; // line 9204 function IMAGE_ORDINAL64(Ordinal: ULONGLONG): ULONGLONG; begin Result := (Ordinal and $FFFF); end; function IMAGE_ORDINAL32(Ordinal: DWORD): DWORD; begin Result := (Ordinal and $0000FFFF); end; function IMAGE_ORDINAL(Ordinal: DWORD): DWORD; begin Result := (Ordinal and $0000FFFF); end; function IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG): Boolean; begin Result := ((Ordinal and IMAGE_ORDINAL_FLAG64) <> 0); end; function IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD): Boolean; begin Result := ((Ordinal and IMAGE_ORDINAL_FLAG32) <> 0); end; function IMAGE_SNAP_BY_ORDINAL(Ordinal: DWORD): Boolean; begin Result := ((Ordinal and IMAGE_ORDINAL_FLAG32) <> 0); end; {$ENDIF ~CLR} // History of source\prototypes\JclWin32.pas: // Revision 1.4 2005/03/08 08:33:19 marquardt // overhaul of exceptions and resourcestrings, minor style cleaning // // Revision 1.3 2005/03/07 07:49:12 marquardt // made the generator not remove IFDEF MSWINDOWS and UNIX // // Revision 1.2 2004/12/23 04:31:43 rrossmair // - check-in for JCL 1.94 RC 1 // // Revision 1.1 2004/12/03 04:05:19 rrossmair // JclWin32 a unit generated from prototype now // // History of source\windows\JclWin32.pas: // // Revision 1.32 2004/11/04 12:55:21 obones // BCB compatibility fix: aclapi.h and shlobj.h must not be included. // // Revision 1.31 2004/10/30 08:20:09 rrossmair // fixed BCB-related bugs // // Revision 1.30 2004/10/21 08:40:11 marquardt // style cleaning // // Revision 1.29 2004/10/19 21:28:41 rrossmair // - rewrite from scratch, cannibalizing MvB's Win32API distribution // // Revision 1.28 2004/10/09 13:58:52 marquardt // style cleaning JclPrint // remove WinSpool related functions from JclWin32 // // Revision 1.27 2004/08/02 06:34:59 marquardt // minor string literal improvements // // Revision 1.26 2004/08/01 05:50:00 marquardt // fix JclFreeLibrary // // Revision 1.25 2004/07/31 06:21:03 marquardt // fixing TStringLists, adding BeginUpdate/EndUpdate, finalization improved // // Revision 1.24 2004/07/28 18:00:55 marquardt // various style cleanings, some minor fixes // // Revision 1.23 2004/06/14 13:05:22 marquardt // style cleaning ENDIF, Tabs // // Revision 1.22 2004/06/14 11:05:53 marquardt // symbols added to all ENDIFs and some other minor style changes like removing IFOPT // // Revision 1.21 2004/06/02 03:23:47 rrossmair // cosmetic changes in several units (code formatting, help TODOs processed etc.) // // Revision 1.20 2004/05/28 14:00:46 obones // BCB5 compatibility // // Revision 1.19 2004/05/06 05:09:55 rrossmair // Changes for FPC v1.9.4 compatibility // // Revision 1.18 2004/05/05 05:38:38 rrossmair // Changes for FPC compatibility; header updated according to new policy: initial developers, contributors listed // // Revision 1.17 2004/04/18 00:45:05 // add run-time dynamic linking support for GetOpenGLVersion // // Revision 1.16 2004/04/11 22:16:20 mthoma // Modifications for GetDefaultPrinterName. Added GetDefaultPrinter API function. // // Revision 1.15 2004/04/08 19:59:11 ahuser // BCB compatibility // // Revision 1.14 2004/04/08 10:27:15 rrossmair // GetVersionEx overload added. // end.