📄 jwawintype.pas
字号:
// where
//
// Sev - is the severity code
//
// 00 - Success
// 01 - Informational
// 10 - Warning
// 11 - Error
//
// C - is the Customer code flag
//
// Facility - is the facility code
//
// Code - is the facility's status code
//
//
// Generic test for success on any status value (non-negative numbers
// indicate success).
//
function NT_SUCCESS(Status: NTSTATUS): BOOL;
{$EXTERNALSYM NT_SUCCESS}
//
// Generic test for information on any status value.
//
function NT_INFORMATION(Status: NTSTATUS): BOOL;
{$EXTERNALSYM NT_INFORMATION}
//
// Generic test for warning on any status value.
//
function NT_WARNING(Status: NTSTATUS): BOOL;
{$EXTERNALSYM NT_WARNING}
//
// Generic test for error on any status value.
//
function NT_ERROR(Status: NTSTATUS): BOOL;
{$EXTERNALSYM NT_ERROR}
const
APPLICATION_ERROR_MASK = $20000000;
{$EXTERNALSYM APPLICATION_ERROR_MASK}
ERROR_SEVERITY_SUCCESS = $00000000;
{$EXTERNALSYM ERROR_SEVERITY_SUCCESS}
ERROR_SEVERITY_INFORMATIONAL = $40000000;
{$EXTERNALSYM ERROR_SEVERITY_INFORMATIONAL}
ERROR_SEVERITY_WARNING = DWORD($80000000);
{$EXTERNALSYM ERROR_SEVERITY_WARNING}
ERROR_SEVERITY_ERROR = DWORD($C0000000);
{$EXTERNALSYM ERROR_SEVERITY_ERROR}
//
// Large (64-bit) integer types and operations
//
type
LPLARGE_INTEGER = ^LARGE_INTEGER;
{$EXTERNALSYM LPLARGE_INTEGER}
{$IFDEF USE_DELPHI_TYPES}
_LARGE_INTEGER = Windows._LARGE_INTEGER;
LARGE_INTEGER = Windows.LARGE_INTEGER;
TLargeInteger = Windows.TLargeInteger;
{$ELSE}
_LARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: LONG);
1: (
QuadPart: LONGLONG);
end;
{$EXTERNALSYM _LARGE_INTEGER}
LARGE_INTEGER = _LARGE_INTEGER;
{$EXTERNALSYM LARGE_INTEGER}
TLargeInteger = LARGE_INTEGER;
{$ENDIF}
PLARGE_INTEGER = ^LARGE_INTEGER;
{$EXTERNALSYM PLARGE_INTEGER}
PLargeInteger = LPLARGE_INTEGER;
LPULARGE_INTEGER = ^ULARGE_INTEGER;
{$EXTERNALSYM LPULARGE_INTEGER}
{$IFDEF USE_DELPHI_TYPES}
ULARGE_INTEGER = Windows.ULARGE_INTEGER;
TULargeInteger = Windows.TULargeInteger;
PULargeInteger = Windows.PULargeInteger;
{$ELSE}
ULARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: DWORD);
1: (
QuadPart: LONGLONG);
end;
{$EXTERNALSYM ULARGE_INTEGER}
TULargeInteger = ULARGE_INTEGER;
PULargeInteger = LPULARGE_INTEGER;
{$ENDIF}
PULARGE_INTEGER = ^ULARGE_INTEGER;
{$EXTERNALSYM PULARGE_INTEGER}
TIME = LARGE_INTEGER;
{$EXTERNALSYM TIME}
_TIME = _LARGE_INTEGER;
{$EXTERNALSYM _TIME}
PTIME = PLARGE_INTEGER;
{$EXTERNALSYM PTIME}
//
// _M_IX86 included so that EM CONTEXT structure compiles with
// x86 programs. *** TBD should this be for all architectures?
//
//
// 16 byte aligned type for 128 bit floats
//
//
// For we define a 128 bit structure and use __declspec(align(16)) pragma to
// align to 128 bits.
//
type
PFloat128 = ^TFloat128;
_FLOAT128 = record
LowPart: Int64;
HighPart: Int64;
end;
{$EXTERNALSYM _FLOAT128}
FLOAT128 = _FLOAT128;
{$EXTERNALSYM FLOAT128}
TFloat128 = FLOAT128;
// Update Sequence Number
USN = LONGLONG;
{$EXTERNALSYM USN}
//
// Locally Unique Identifier
//
type
PLuid = ^LUID;
_LUID = record
LowPart: DWORD;
HighPart: LONG;
end;
{$EXTERNALSYM _LUID}
LUID = _LUID;
{$EXTERNALSYM LUID}
TLuid = LUID;
DWORDLONG = ULONGLONG;
{$EXTERNALSYM DWORDLONG}
PDWORDLONG = ^DWORDLONG;
{$EXTERNALSYM PDWORDLONG}
//
// Physical address.
//
PHYSICAL_ADDRESS = LARGE_INTEGER;
{$EXTERNALSYM PHYSICAL_ADDRESS}
PPHYSICAL_ADDRESS = ^LARGE_INTEGER;
{$EXTERNALSYM PPHYSICAL_ADDRESS}
//
// Define operations to logically shift an int64 by 0..31 bits and to multiply
// 32-bits by 32-bits to form a 64-bit product.
//
//
// The x86 C compiler understands inline assembler. Therefore, inline functions
// that employ inline assembler are used for shifts of 0..31. The multiplies
// rely on the compiler recognizing the cast of the multiplicand to int64 to
// generate the optimal code inline.
//
function Int32x32To64(a, b: LONG): LONGLONG;
{$EXTERNALSYM Int32x32To64}
function UInt32x32To64(a, b: DWORD): ULONGLONG;
{$EXTERNALSYM UInt32x32To64}
function Int64ShllMod32(Value: ULONGLONG; ShiftCount: DWORD): ULONGLONG;
{$EXTERNALSYM Int64ShllMod32}
function Int64ShraMod32(Value: LONGLONG; ShiftCount: DWORD): LONGLONG;
{$EXTERNALSYM Int64ShraMod32}
function Int64ShrlMod32(Value: ULONGLONG; ShiftCount: DWORD): ULONGLONG;
{$EXTERNALSYM Int64ShrlMod32}
//
// Event type
//
type
_EVENT_TYPE = (NotificationEvent, SynchronizationEvent);
{$EXTERNALSYM _EVENT_TYPE}
EVENT_TYPE = _EVENT_TYPE;
{$EXTERNALSYM EVENT_TYPE}
TEventType = _EVENT_TYPE;
//
// Timer type
//
_TIMER_TYPE = (NotificationTimer, SynchronizationTimer);
{$EXTERNALSYM _TIMER_TYPE}
TIMER_TYPE = _TIMER_TYPE;
{$EXTERNALSYM TIMER_TYPE}
//
// Wait type
//
_WAIT_TYPE = (WaitAll, WaitAny);
{$EXTERNALSYM _WAIT_TYPE}
WAIT_TYPE = _WAIT_TYPE;
{$EXTERNALSYM WAIT_TYPE}
//
// Pointer to an Asciiz string
//
PSZ = ^CHAR;
{$EXTERNALSYM PSZ}
PCSZ = ^CHAR;
{$EXTERNALSYM PCSZ}
//
// Counted String
//
PString = ^TString;
_STRING = record
Length: USHORT;
MaximumLength: USHORT;
Buffer: PCHAR;
end;
{$EXTERNALSYM _STRING}
TString = _STRING;
ANSI_STRING = _STRING;
{$EXTERNALSYM ANSI_STRING}
PANSI_STRING = PSTRING;
{$EXTERNALSYM PANSI_STRING}
OEM_STRING = _STRING;
{$EXTERNALSYM OEM_STRING}
POEM_STRING = PSTRING;
{$EXTERNALSYM POEM_STRING}
//
// CONSTCounted String
//
PCString = ^CSTRING;
_CSTRING = record
Length: USHORT;
MaximumLength: USHORT;
Buffer: PCHAR;
end;
{$EXTERNALSYM _CSTRING}
CSTRING = _CSTRING;
{$EXTERNALSYM CSTRING}
TCString = CSTRING;
const
ANSI_NULL = CHAR(0);
{$EXTERNALSYM ANSI_NULL}
UNICODE_NULL = WCHAR(0);
{$EXTERNALSYM UNICODE_NULL}
UNICODE_STRING_MAX_BYTES = WORD(65534);
{$EXTERNALSYM UNICODE_STRING_MAX_BYTES}
UNICODE_STRING_MAX_CHARS = 32767;
{$EXTERNALSYM UNICODE_STRING_MAX_CHARS}
type
CANSI_STRING = _STRING;
{$EXTERNALSYM CANSI_STRING}
PCANSI_STRING = PSTRING;
{$EXTERNALSYM PCANSI_STRING}
//
// Unicode strings are counted 16-bit character strings. If they are
// NULL terminated, Length does not include trailing NULL.
//
type
PUNICODE_STRING = ^UNICODE_STRING;
{$EXTERNALSYM PUNICODE_STRING}
_UNICODE_STRING = record
Length: USHORT;
MaximumLength: USHORT;
Buffer: PWSTR;
end;
{$EXTERNALSYM _UNICODE_STRING}
UNICODE_STRING = _UNICODE_STRING;
{$EXTERNALSYM UNICODE_STRING}
PCUNICODE_STRING = ^UNICODE_STRING;
{$EXTERNALSYM PCUNICODE_STRING}
TUnicodeString = UNICODE_STRING;
PUnicodeString = PUNICODE_STRING;
//
// Boolean
//
type
//typedef UCHAR BOOLEAN;
PBOOLEAN = ^ByteBool;
{$EXTERNALSYM PBOOLEAN}
//
// Doubly linked list structure. Can be used as either a list head, or
// as link words.
//
type
PLIST_ENTRY = ^LIST_ENTRY;
{$EXTERNALSYM PLIST_ENTRY}
{$IFDEF USE_DELPHI_TYPES}
_LIST_ENTRY = Windows._LIST_ENTRY;
LIST_ENTRY = Windows.LIST_ENTRY;
TListEntry = Windows.TListEntry;
PListEntry = Windows.PListEntry;
{$ELSE}
_LIST_ENTRY = record
Flink: PLIST_ENTRY;
Blink: PLIST_ENTRY;
end;
{$EXTERNALSYM _LIST_ENTRY}
LIST_ENTRY = _LIST_ENTRY;
{$EXTERNALSYM LIST_ENTRY}
TListEntry = LIST_ENTRY;
PListEntry = PLIST_ENTRY;
{$ENDIF}
PRLIST_ENTRY = ^LIST_ENTRY;
{$EXTERNALSYM PLIST_ENTRY}
//
// Singly linked list structure. Can be used as either a list head, or
// as link words.
//
PSINGLE_LIST_ENTRY = ^SINGLE_LIST_ENTRY;
{$EXTERNALSYM PSINGLE_LIST_ENTRY}
_SINGLE_LIST_ENTRY = record
Next: PSINGLE_LIST_ENTRY;
end;
{$EXTERNALSYM _SINGLE_LIST_ENTRY}
SINGLE_LIST_ENTRY = _SINGLE_LIST_ENTRY;
{$EXTERNALSYM SINGLE_LIST_ENTRY}
TSingleListEntry = SINGLE_LIST_ENTRY;
PSingleListEntry = PSINGLE_LIST_ENTRY;
//
// These are needed for portable debugger support.
//
PLIST_ENTRY32 = ^LIST_ENTRY32;
{$EXTERNALSYM PLIST_ENTRY32}
{$EXTERNALSYM PLIST_ENTRY32}
LIST_ENTRY32 = record
Flink: DWORD;
Blink: DWORD;
end;
{$EXTERNALSYM LIST_ENTRY32}
TListEntry32 = LIST_ENTRY32;
PListEntry32 = PLIST_ENTRY32;
PLIST_ENTRY64 = ^LIST_ENTRY64;
{$EXTERNALSYM PLIST_ENTRY64}
LIST_ENTRY64 = record
Flink: ULONGLONG;
Blink: ULONGLONG;
end;
{$EXTERNALSYM LIST_ENTRY64}
TListEntry64 = LIST_ENTRY64;
PListEntry64 = PLIST_ENTRY64;
procedure ListEntry32To64(l32: PLIST_ENTRY32; l64: PLIST_ENTRY64);
{$EXTERNALSYM ListEntry32To64}
procedure ListEntry64To32(l64: PLIST_ENTRY64; l32: PLIST_ENTRY32);
{$EXTERNALSYM ListEntry64To32}
//
// These macros are used to walk lists on a target system
//
{
#define CONTAINING_RECORD32(address, type, field) ( \
(ULONG_PTR)(address) - \
(ULONG_PTR)(&((type *)0)->field))
#define CONTAINING_RECORD64(address, type, field) ( \
(ULONGLONG)(address) - \
(ULONGLONG)(&((type *)0)->field))
}
type
PString32 = ^STRING32;
_STRING32 = record
Length: USHORT;
MaximumLength: USHORT;
Buffer: ULONG;
end;
{$EXTERNALSYM _STRING32}
STRING32 = _STRING32;
{$EXTERNALSYM STRING32}
TString32 = STRING32;
UNICODE_STRING32 = STRING32;
{$EXTERNALSYM UNICODE_STRING32}
PUNICODE_STRING32 = ^UNICODE_STRING32;
{$EXTERNALSYM PUNICODE_STRING32}
ANSI_STRING32 = STRING32;
{$EXTERNALSYM ANSI_STRING32}
PANSI_STRING32 = ^ANSI_STRING32;
{$EXTERNALSYM PANSI_STRING32}
PString64 = ^STRING64;
_STRING64 = record
Length: USHORT;
MaximumLength: USHORT;
Buffer: ULONGLONG;
end;
{$EXTERNALSYM _STRING64}
STRING64 = _STRING64;
{$EXTERNALSYM STRING64}
TString64 = STRING64;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -