mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-22 12:18:26 +02:00
* stdcall for callbacks (merged)
This commit is contained in:
parent
539c411afe
commit
3fd4aa8ec9
@ -915,323 +915,323 @@ end;
|
|||||||
*)
|
*)
|
||||||
|
|
||||||
const
|
const
|
||||||
SEVERITY_SUCCESS = $00000000;
|
SEVERITY_SUCCESS = $00000000;
|
||||||
SEVERITY_INFORMATIONAL = $40000000;
|
SEVERITY_INFORMATIONAL = $40000000;
|
||||||
SEVERITY_WARNING = $80000000;
|
SEVERITY_WARNING = $80000000;
|
||||||
SEVERITY_ERROR = $C0000000;
|
SEVERITY_ERROR = $C0000000;
|
||||||
|
|
||||||
const
|
const
|
||||||
STATUS_SEGMENT_NOTIFICATION = $40000005;
|
STATUS_SEGMENT_NOTIFICATION = $40000005;
|
||||||
DBG_TERMINATE_THREAD = $40010003;
|
DBG_TERMINATE_THREAD = $40010003;
|
||||||
DBG_TERMINATE_PROCESS = $40010004;
|
DBG_TERMINATE_PROCESS = $40010004;
|
||||||
DBG_CONTROL_C = $40010005;
|
DBG_CONTROL_C = $40010005;
|
||||||
DBG_CONTROL_BREAK = $40010008;
|
DBG_CONTROL_BREAK = $40010008;
|
||||||
|
|
||||||
STATUS_GUARD_PAGE_VIOLATION = $80000001;
|
STATUS_GUARD_PAGE_VIOLATION = $80000001;
|
||||||
STATUS_DATATYPE_MISALIGNMENT = $80000002;
|
STATUS_DATATYPE_MISALIGNMENT = $80000002;
|
||||||
STATUS_BREAKPOINT = $80000003;
|
STATUS_BREAKPOINT = $80000003;
|
||||||
STATUS_SINGLE_STEP = $80000004;
|
STATUS_SINGLE_STEP = $80000004;
|
||||||
DBG_EXCEPTION_NOT_HANDLED = $80010001;
|
DBG_EXCEPTION_NOT_HANDLED = $80010001;
|
||||||
|
|
||||||
STATUS_ACCESS_VIOLATION = $C0000005;
|
STATUS_ACCESS_VIOLATION = $C0000005;
|
||||||
STATUS_IN_PAGE_ERROR = $C0000006;
|
STATUS_IN_PAGE_ERROR = $C0000006;
|
||||||
STATUS_INVALID_HANDLE = $C0000008;
|
STATUS_INVALID_HANDLE = $C0000008;
|
||||||
STATUS_NO_MEMORY = $C0000017;
|
STATUS_NO_MEMORY = $C0000017;
|
||||||
STATUS_ILLEGAL_INSTRUCTION = $C000001D;
|
STATUS_ILLEGAL_INSTRUCTION = $C000001D;
|
||||||
STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
|
STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
|
||||||
STATUS_INVALID_DISPOSITION = $C0000026;
|
STATUS_INVALID_DISPOSITION = $C0000026;
|
||||||
STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
|
STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
|
||||||
STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
|
STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
|
||||||
STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
|
STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
|
||||||
STATUS_FLOAT_INEXACT_RESULT = $C000008F;
|
STATUS_FLOAT_INEXACT_RESULT = $C000008F;
|
||||||
STATUS_FLOAT_INVALID_OPERATION = $C0000090;
|
STATUS_FLOAT_INVALID_OPERATION = $C0000090;
|
||||||
STATUS_FLOAT_OVERFLOW = $C0000091;
|
STATUS_FLOAT_OVERFLOW = $C0000091;
|
||||||
STATUS_FLOAT_STACK_CHECK = $C0000092;
|
STATUS_FLOAT_STACK_CHECK = $C0000092;
|
||||||
STATUS_FLOAT_UNDERFLOW = $C0000093;
|
STATUS_FLOAT_UNDERFLOW = $C0000093;
|
||||||
STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
|
STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
|
||||||
STATUS_INTEGER_OVERFLOW = $C0000095;
|
STATUS_INTEGER_OVERFLOW = $C0000095;
|
||||||
STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
|
STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
|
||||||
STATUS_STACK_OVERFLOW = $C00000FD;
|
STATUS_STACK_OVERFLOW = $C00000FD;
|
||||||
STATUS_CONTROL_C_EXIT = $C000013A;
|
STATUS_CONTROL_C_EXIT = $C000013A;
|
||||||
STATUS_FLOAT_MULTIPLE_FAULTS = $C00002B4;
|
STATUS_FLOAT_MULTIPLE_FAULTS = $C00002B4;
|
||||||
STATUS_FLOAT_MULTIPLE_TRAPS = $C00002B5;
|
STATUS_FLOAT_MULTIPLE_TRAPS = $C00002B5;
|
||||||
STATUS_REG_NAT_CONSUMPTION = $C00002C9;
|
STATUS_REG_NAT_CONSUMPTION = $C00002C9;
|
||||||
|
|
||||||
EXCEPTION_EXECUTE_HANDLER = 1;
|
EXCEPTION_EXECUTE_HANDLER = 1;
|
||||||
EXCEPTION_CONTINUE_EXECUTION = -1;
|
EXCEPTION_CONTINUE_EXECUTION = -1;
|
||||||
EXCEPTION_CONTINUE_SEARCH = 0;
|
EXCEPTION_CONTINUE_SEARCH = 0;
|
||||||
|
|
||||||
EXCEPTION_MAXIMUM_PARAMETERS = 15;
|
EXCEPTION_MAXIMUM_PARAMETERS = 15;
|
||||||
|
|
||||||
CONTEXT_X86 = $00010000;
|
CONTEXT_X86 = $00010000;
|
||||||
CONTEXT_CONTROL = CONTEXT_X86 or $00000001;
|
CONTEXT_CONTROL = CONTEXT_X86 or $00000001;
|
||||||
CONTEXT_INTEGER = CONTEXT_X86 or $00000002;
|
CONTEXT_INTEGER = CONTEXT_X86 or $00000002;
|
||||||
CONTEXT_SEGMENTS = CONTEXT_X86 or $00000004;
|
CONTEXT_SEGMENTS = CONTEXT_X86 or $00000004;
|
||||||
CONTEXT_FLOATING_POINT = CONTEXT_X86 or $00000008;
|
CONTEXT_FLOATING_POINT = CONTEXT_X86 or $00000008;
|
||||||
CONTEXT_DEBUG_REGISTERS = CONTEXT_X86 or $00000010;
|
CONTEXT_DEBUG_REGISTERS = CONTEXT_X86 or $00000010;
|
||||||
CONTEXT_EXTENDED_REGISTERS = CONTEXT_X86 or $00000020;
|
CONTEXT_EXTENDED_REGISTERS = CONTEXT_X86 or $00000020;
|
||||||
|
|
||||||
CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
|
CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
|
||||||
|
|
||||||
MAXIMUM_SUPPORTED_EXTENSION = 512;
|
MAXIMUM_SUPPORTED_EXTENSION = 512;
|
||||||
|
|
||||||
type
|
type
|
||||||
PFloatingSaveArea = ^TFloatingSaveArea;
|
PFloatingSaveArea = ^TFloatingSaveArea;
|
||||||
TFloatingSaveArea = packed record
|
TFloatingSaveArea = packed record
|
||||||
ControlWord : Cardinal;
|
ControlWord : Cardinal;
|
||||||
StatusWord : Cardinal;
|
StatusWord : Cardinal;
|
||||||
TagWord : Cardinal;
|
TagWord : Cardinal;
|
||||||
ErrorOffset : Cardinal;
|
ErrorOffset : Cardinal;
|
||||||
ErrorSelector : Cardinal;
|
ErrorSelector : Cardinal;
|
||||||
DataOffset : Cardinal;
|
DataOffset : Cardinal;
|
||||||
DataSelector : Cardinal;
|
DataSelector : Cardinal;
|
||||||
RegisterArea : array[0..79] of Byte;
|
RegisterArea : array[0..79] of Byte;
|
||||||
Cr0NpxState : Cardinal;
|
Cr0NpxState : Cardinal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PContext = ^TContext;
|
PContext = ^TContext;
|
||||||
TContext = packed record
|
TContext = packed record
|
||||||
//
|
//
|
||||||
// The flags values within this flag control the contents of
|
// The flags values within this flag control the contents of
|
||||||
// a CONTEXT record.
|
// a CONTEXT record.
|
||||||
//
|
//
|
||||||
ContextFlags : Cardinal;
|
ContextFlags : Cardinal;
|
||||||
|
|
||||||
//
|
//
|
||||||
// This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
|
// This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
|
||||||
// set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
|
// set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
|
||||||
// included in CONTEXT_FULL.
|
// included in CONTEXT_FULL.
|
||||||
//
|
//
|
||||||
Dr0, Dr1, Dr2,
|
Dr0, Dr1, Dr2,
|
||||||
Dr3, Dr6, Dr7 : Cardinal;
|
Dr3, Dr6, Dr7 : Cardinal;
|
||||||
|
|
||||||
//
|
//
|
||||||
// This section is specified/returned if the
|
// This section is specified/returned if the
|
||||||
// ContextFlags word contains the flag CONTEXT_FLOATING_POINT.
|
// ContextFlags word contains the flag CONTEXT_FLOATING_POINT.
|
||||||
//
|
//
|
||||||
FloatSave : TFloatingSaveArea;
|
FloatSave : TFloatingSaveArea;
|
||||||
|
|
||||||
//
|
//
|
||||||
// This section is specified/returned if the
|
// This section is specified/returned if the
|
||||||
// ContextFlags word contains the flag CONTEXT_SEGMENTS.
|
// ContextFlags word contains the flag CONTEXT_SEGMENTS.
|
||||||
//
|
//
|
||||||
SegGs, SegFs,
|
SegGs, SegFs,
|
||||||
SegEs, SegDs : Cardinal;
|
SegEs, SegDs : Cardinal;
|
||||||
|
|
||||||
//
|
//
|
||||||
// This section is specified/returned if the
|
// This section is specified/returned if the
|
||||||
// ContextFlags word contains the flag CONTEXT_INTEGER.
|
// ContextFlags word contains the flag CONTEXT_INTEGER.
|
||||||
//
|
//
|
||||||
Edi, Esi, Ebx,
|
Edi, Esi, Ebx,
|
||||||
Edx, Ecx, Eax : Cardinal;
|
Edx, Ecx, Eax : Cardinal;
|
||||||
|
|
||||||
//
|
//
|
||||||
// This section is specified/returned if the
|
// This section is specified/returned if the
|
||||||
// ContextFlags word contains the flag CONTEXT_CONTROL.
|
// ContextFlags word contains the flag CONTEXT_CONTROL.
|
||||||
//
|
//
|
||||||
Ebp : Cardinal;
|
Ebp : Cardinal;
|
||||||
Eip : Cardinal;
|
Eip : Cardinal;
|
||||||
SegCs : Cardinal;
|
SegCs : Cardinal;
|
||||||
EFlags, Esp, SegSs : Cardinal;
|
EFlags, Esp, SegSs : Cardinal;
|
||||||
|
|
||||||
//
|
//
|
||||||
// This section is specified/returned if the ContextFlags word
|
// This section is specified/returned if the ContextFlags word
|
||||||
// contains the flag CONTEXT_EXTENDED_REGISTERS.
|
// contains the flag CONTEXT_EXTENDED_REGISTERS.
|
||||||
// The format and contexts are processor specific
|
// The format and contexts are processor specific
|
||||||
//
|
//
|
||||||
ExtendedRegisters : array[0..MAXIMUM_SUPPORTED_EXTENSION-1] of Byte;
|
ExtendedRegisters : array[0..MAXIMUM_SUPPORTED_EXTENSION-1] of Byte;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
type
|
type
|
||||||
PExceptionRecord = ^TExceptionRecord;
|
PExceptionRecord = ^TExceptionRecord;
|
||||||
TExceptionRecord = packed record
|
TExceptionRecord = packed record
|
||||||
ExceptionCode : Longint;
|
ExceptionCode : Longint;
|
||||||
ExceptionFlags : Longint;
|
ExceptionFlags : Longint;
|
||||||
ExceptionRecord : PExceptionRecord;
|
ExceptionRecord : PExceptionRecord;
|
||||||
ExceptionAddress : Pointer;
|
ExceptionAddress : Pointer;
|
||||||
NumberParameters : Longint;
|
NumberParameters : Longint;
|
||||||
ExceptionInformation : array[0..EXCEPTION_MAXIMUM_PARAMETERS-1] of Pointer;
|
ExceptionInformation : array[0..EXCEPTION_MAXIMUM_PARAMETERS-1] of Pointer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PExceptionPointers = ^TExceptionPointers;
|
PExceptionPointers = ^TExceptionPointers;
|
||||||
TExceptionPointers = packed record
|
TExceptionPointers = packed record
|
||||||
ExceptionRecord : PExceptionRecord;
|
ExceptionRecord : PExceptionRecord;
|
||||||
ContextRecord : PContext;
|
ContextRecord : PContext;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ type of functions that should be used for exception handling }
|
{ type of functions that should be used for exception handling }
|
||||||
TTopLevelExceptionFilter = function (excep : PExceptionPointers) : Longint;
|
TTopLevelExceptionFilter = function (excep : PExceptionPointers) : Longint;
|
||||||
|
|
||||||
function SetUnhandledExceptionFilter(lpTopLevelExceptionFilter : TTopLevelExceptionFilter) : TTopLevelExceptionFilter;
|
function SetUnhandledExceptionFilter(lpTopLevelExceptionFilter : TTopLevelExceptionFilter) : TTopLevelExceptionFilter;
|
||||||
external 'kernel32' name 'SetUnhandledExceptionFilter';
|
external 'kernel32' name 'SetUnhandledExceptionFilter';
|
||||||
|
|
||||||
const
|
const
|
||||||
MaxExceptionLevel = 16;
|
MaxExceptionLevel = 16;
|
||||||
exceptLevel : Byte = 0;
|
exceptLevel : Byte = 0;
|
||||||
|
|
||||||
var
|
var
|
||||||
exceptEip : array[0..MaxExceptionLevel-1] of Longint;
|
exceptEip : array[0..MaxExceptionLevel-1] of Longint;
|
||||||
exceptError : array[0..MaxExceptionLevel-1] of Byte;
|
exceptError : array[0..MaxExceptionLevel-1] of Byte;
|
||||||
resetFPU : array[0..MaxExceptionLevel-1] of Boolean;
|
resetFPU : array[0..MaxExceptionLevel-1] of Boolean;
|
||||||
|
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
procedure DebugHandleErrorAddrFrame(error, addr, frame : longint);
|
procedure DebugHandleErrorAddrFrame(error, addr, frame : longint);
|
||||||
begin
|
begin
|
||||||
if IsConsole then begin
|
if IsConsole then begin
|
||||||
write(stderr,'HandleErrorAddrFrame(error=',error);
|
write(stderr,'HandleErrorAddrFrame(error=',error);
|
||||||
write(stderr,',addr=',hexstr(addr,8));
|
write(stderr,',addr=',hexstr(addr,8));
|
||||||
writeln(stderr,',frame=',hexstr(frame,8),')');
|
writeln(stderr,',frame=',hexstr(frame,8),')');
|
||||||
end;
|
end;
|
||||||
HandleErrorAddrFrame(error,addr,frame);
|
HandleErrorAddrFrame(error,addr,frame);
|
||||||
end;
|
end;
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
|
|
||||||
procedure JumpToHandleErrorFrame;
|
procedure JumpToHandleErrorFrame;
|
||||||
var
|
var
|
||||||
eip, ebp, error : Longint;
|
eip, ebp, error : Longint;
|
||||||
begin
|
begin
|
||||||
// save ebp
|
// save ebp
|
||||||
asm
|
asm
|
||||||
movl (%ebp),%eax
|
movl (%ebp),%eax
|
||||||
movl %eax,ebp
|
movl %eax,ebp
|
||||||
end;
|
end;
|
||||||
if (exceptLevel > 0) then
|
if (exceptLevel > 0) then
|
||||||
dec(exceptLevel);
|
dec(exceptLevel);
|
||||||
|
|
||||||
eip:=exceptEip[exceptLevel];
|
eip:=exceptEip[exceptLevel];
|
||||||
error:=exceptError[exceptLevel];
|
error:=exceptError[exceptLevel];
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
if IsConsole then
|
if IsConsole then
|
||||||
writeln(stderr,'In JumpToHandleErrorFrame error=',error);
|
writeln(stderr,'In JumpToHandleErrorFrame error=',error);
|
||||||
end;
|
end;
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
if resetFPU[exceptLevel] then asm
|
if resetFPU[exceptLevel] then asm
|
||||||
fninit
|
fninit
|
||||||
fldcw fpucw
|
fldcw fpucw
|
||||||
end;
|
end;
|
||||||
{ build a fake stack }
|
{ build a fake stack }
|
||||||
asm
|
asm
|
||||||
movl ebp,%eax
|
movl ebp,%eax
|
||||||
pushl %eax
|
pushl %eax
|
||||||
movl eip,%eax
|
movl eip,%eax
|
||||||
pushl %eax
|
pushl %eax
|
||||||
movl error,%eax
|
movl error,%eax
|
||||||
pushl %eax
|
pushl %eax
|
||||||
movl eip,%eax
|
movl eip,%eax
|
||||||
pushl %eax
|
pushl %eax
|
||||||
movl ebp,%ebp // Change frame pointer
|
movl ebp,%ebp // Change frame pointer
|
||||||
|
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
jmpl DebugHandleErrorAddrFrame
|
jmpl DebugHandleErrorAddrFrame
|
||||||
{$else not SYSTEMEXCEPTIONDEBUG}
|
{$else not SYSTEMEXCEPTIONDEBUG}
|
||||||
jmpl HandleErrorAddrFrame
|
jmpl HandleErrorAddrFrame
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function syswin32_i386_exception_handler(excep : PExceptionPointers) : Longint;
|
function syswin32_i386_exception_handler(excep : PExceptionPointers) : Longint;stdcall;
|
||||||
var
|
var
|
||||||
frame,
|
frame,
|
||||||
res : longint;
|
res : longint;
|
||||||
|
|
||||||
function SysHandleErrorFrame(error, frame : Longint; must_reset_fpu : Boolean) : Longint;
|
function SysHandleErrorFrame(error, frame : Longint; must_reset_fpu : Boolean) : Longint;
|
||||||
begin
|
begin
|
||||||
if (frame = 0) then
|
if (frame = 0) then
|
||||||
SysHandleErrorFrame:=EXCEPTION_CONTINUE_SEARCH
|
SysHandleErrorFrame:=EXCEPTION_CONTINUE_SEARCH
|
||||||
else begin
|
else begin
|
||||||
if (exceptLevel >= MaxExceptionLevel) then exit;
|
if (exceptLevel >= MaxExceptionLevel) then exit;
|
||||||
|
|
||||||
exceptEip[exceptLevel] := excep^.ContextRecord^.Eip;
|
exceptEip[exceptLevel] := excep^.ContextRecord^.Eip;
|
||||||
exceptError[exceptLevel] := error;
|
exceptError[exceptLevel] := error;
|
||||||
resetFPU[exceptLevel] := must_reset_fpu;
|
resetFPU[exceptLevel] := must_reset_fpu;
|
||||||
inc(exceptLevel);
|
inc(exceptLevel);
|
||||||
|
|
||||||
excep^.ContextRecord^.Eip := Longint(@JumpToHandleErrorFrame);
|
excep^.ContextRecord^.Eip := Longint(@JumpToHandleErrorFrame);
|
||||||
excep^.ExceptionRecord^.ExceptionCode := 0;
|
excep^.ExceptionRecord^.ExceptionCode := 0;
|
||||||
|
|
||||||
SysHandleErrorFrame := EXCEPTION_CONTINUE_EXECUTION;
|
SysHandleErrorFrame := EXCEPTION_CONTINUE_EXECUTION;
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
if IsConsole then begin
|
if IsConsole then begin
|
||||||
writeln(stderr,'Exception Continue Exception set at ',
|
writeln(stderr,'Exception Continue Exception set at ',
|
||||||
hexstr(exceptEip[exceptLevel],8));
|
hexstr(exceptEip[exceptLevel],8));
|
||||||
writeln(stderr,'Eip changed to ',
|
writeln(stderr,'Eip changed to ',
|
||||||
hexstr(longint(@JumpToHandleErrorFrame),8), ' error=', error);
|
hexstr(longint(@JumpToHandleErrorFrame),8), ' error=', error);
|
||||||
end;
|
end;
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if excep^.ContextRecord^.SegSs=_SS then
|
if excep^.ContextRecord^.SegSs=_SS then
|
||||||
frame := excep^.ContextRecord^.Ebp
|
frame := excep^.ContextRecord^.Ebp
|
||||||
else
|
else
|
||||||
frame := 0;
|
frame := 0;
|
||||||
res := EXCEPTION_CONTINUE_SEARCH;
|
res := EXCEPTION_CONTINUE_SEARCH;
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
if IsConsole then Writeln(stderr,'Exception ',
|
if IsConsole then Writeln(stderr,'Exception ',
|
||||||
hexstr(excep^.ExceptionRecord^.ExceptionCode, 8));
|
hexstr(excep^.ExceptionRecord^.ExceptionCode, 8));
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
case excep^.ExceptionRecord^.ExceptionCode of
|
case excep^.ExceptionRecord^.ExceptionCode of
|
||||||
STATUS_INTEGER_DIVIDE_BY_ZERO,
|
STATUS_INTEGER_DIVIDE_BY_ZERO,
|
||||||
STATUS_FLOAT_DIVIDE_BY_ZERO :
|
STATUS_FLOAT_DIVIDE_BY_ZERO :
|
||||||
res := SysHandleErrorFrame(200, frame, true);
|
res := SysHandleErrorFrame(200, frame, true);
|
||||||
STATUS_ARRAY_BOUNDS_EXCEEDED :
|
STATUS_ARRAY_BOUNDS_EXCEEDED :
|
||||||
res := SysHandleErrorFrame(201, frame, false);
|
res := SysHandleErrorFrame(201, frame, false);
|
||||||
STATUS_STACK_OVERFLOW :
|
STATUS_STACK_OVERFLOW :
|
||||||
res := SysHandleErrorFrame(202, frame, false);
|
res := SysHandleErrorFrame(202, frame, false);
|
||||||
STATUS_FLOAT_OVERFLOW :
|
STATUS_FLOAT_OVERFLOW :
|
||||||
res := SysHandleErrorFrame(205, frame, true);
|
res := SysHandleErrorFrame(205, frame, true);
|
||||||
STATUS_FLOAT_UNDERFLOW :
|
STATUS_FLOAT_UNDERFLOW :
|
||||||
res := SysHandleErrorFrame(206, frame, true);
|
res := SysHandleErrorFrame(206, frame, true);
|
||||||
{excep^.ContextRecord^.FloatSave.StatusWord := excep^.ContextRecord^.FloatSave.StatusWord and $ffffff00;}
|
{excep^.ContextRecord^.FloatSave.StatusWord := excep^.ContextRecord^.FloatSave.StatusWord and $ffffff00;}
|
||||||
STATUS_FLOAT_INVALID_OPERATION,
|
STATUS_FLOAT_INVALID_OPERATION,
|
||||||
STATUS_FLOAT_STACK_CHECK :
|
STATUS_FLOAT_STACK_CHECK :
|
||||||
res := SysHandleErrorFrame(207, frame, true);
|
res := SysHandleErrorFrame(207, frame, true);
|
||||||
STATUS_INTEGER_OVERFLOW :
|
STATUS_INTEGER_OVERFLOW :
|
||||||
res := SysHandleErrorFrame(215, frame, false);
|
res := SysHandleErrorFrame(215, frame, false);
|
||||||
STATUS_ACCESS_VIOLATION,
|
STATUS_ACCESS_VIOLATION,
|
||||||
STATUS_FLOAT_DENORMAL_OPERAND :
|
STATUS_FLOAT_DENORMAL_OPERAND :
|
||||||
res := SysHandleErrorFrame(216, frame, true);
|
res := SysHandleErrorFrame(216, frame, true);
|
||||||
else begin
|
else begin
|
||||||
if ((excep^.ExceptionRecord^.ExceptionCode and SEVERITY_ERROR) = SEVERITY_ERROR) then
|
if ((excep^.ExceptionRecord^.ExceptionCode and SEVERITY_ERROR) = SEVERITY_ERROR) then
|
||||||
res := SysHandleErrorFrame(217, frame, true);
|
res := SysHandleErrorFrame(217, frame, true);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
syswin32_i386_exception_handler := res;
|
syswin32_i386_exception_handler := res;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure install_exception_handlers;
|
procedure install_exception_handlers;
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
var
|
var
|
||||||
oldexceptaddr,
|
oldexceptaddr,
|
||||||
newexceptaddr : Longint;
|
newexceptaddr : Longint;
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
|
|
||||||
begin
|
begin
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
asm
|
asm
|
||||||
movl $0,%eax
|
movl $0,%eax
|
||||||
movl %fs:(%eax),%eax
|
movl %fs:(%eax),%eax
|
||||||
movl %eax,oldexceptaddr
|
movl %eax,oldexceptaddr
|
||||||
end;
|
end;
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
SetUnhandledExceptionFilter(@syswin32_i386_exception_handler);
|
SetUnhandledExceptionFilter(@syswin32_i386_exception_handler);
|
||||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||||
asm
|
asm
|
||||||
movl $0,%eax
|
movl $0,%eax
|
||||||
movl %fs:(%eax),%eax
|
movl %fs:(%eax),%eax
|
||||||
movl %eax,newexceptaddr
|
movl %eax,newexceptaddr
|
||||||
end;
|
end;
|
||||||
if IsConsole then
|
if IsConsole then
|
||||||
writeln(stderr,'Old exception ',hexstr(oldexceptaddr,8),
|
writeln(stderr,'Old exception ',hexstr(oldexceptaddr,8),
|
||||||
' new exception ',hexstr(newexceptaddr,8));
|
' new exception ',hexstr(newexceptaddr,8));
|
||||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure remove_exception_handlers;
|
procedure remove_exception_handlers;
|
||||||
begin
|
begin
|
||||||
SetUnhandledExceptionFilter(nil);
|
SetUnhandledExceptionFilter(nil);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$else not i386 (Processor specific !!)}
|
{$else not i386 (Processor specific !!)}
|
||||||
@ -1380,7 +1380,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.4 2000-09-11 20:19:28 florian
|
Revision 1.5 2000-10-11 16:05:55 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.4 2000/09/11 20:19:28 florian
|
||||||
* complete exception handling provided by Thomas Schatzl
|
* complete exception handling provided by Thomas Schatzl
|
||||||
|
|
||||||
Revision 1.3 2000/09/04 19:36:59 peter
|
Revision 1.3 2000/09/04 19:36:59 peter
|
||||||
@ -1389,4 +1392,4 @@ end.
|
|||||||
Revision 1.2 2000/07/13 11:33:58 michael
|
Revision 1.2 2000/07/13 11:33:58 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
@ -447,7 +447,7 @@ function FindExecutable(_para1:pchar; _para2:pchar;_para3:pchar):HINST; external
|
|||||||
function ShellAbout(_para1:HWND; _para2:pchar; _para3:pchar;_para4:HICON):longint; external 'shell32' name 'ShellAboutA';
|
function ShellAbout(_para1:HWND; _para2:pchar; _para3:pchar;_para4:HICON):longint; external 'shell32' name 'ShellAboutA';
|
||||||
function ShellExecute(_para1:HWND; _para2:pchar; _para3:pchar;_para4:pchar; _para5:pchar;_para6:longint):HINST; external 'shell32' name 'ShellExecuteA';
|
function ShellExecute(_para1:HWND; _para2:pchar; _para3:pchar;_para4:pchar; _para5:pchar;_para6:longint):HINST; external 'shell32' name 'ShellExecuteA';
|
||||||
function DdeCreateStringHandle(_para1:DWORD; _para2:pchar;_para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleA';
|
function DdeCreateStringHandle(_para1:DWORD; _para2:pchar;_para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleA';
|
||||||
function DdeInitialize(_para1:LPDWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT;external 'user32' name 'DdeInitializeA';
|
function DdeInitialize(_para1:LPDWORD; _para2:PFNCALLBACK; _para3:DWORD; _para4:DWORD):UINT;external 'user32' name 'DdeInitializeA';
|
||||||
function DdeQueryString(_para1:DWORD; _para2:HSZ; _para3:pchar;_para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringA';
|
function DdeQueryString(_para1:DWORD; _para2:HSZ; _para3:pchar;_para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringA';
|
||||||
function LogonUser(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserA';
|
function LogonUser(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserA';
|
||||||
function CreateProcessAsUser(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR;
|
function CreateProcessAsUser(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR;
|
||||||
@ -487,7 +487,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2000-07-13 11:33:58 michael
|
Revision 1.3 2000-10-11 16:05:55 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.2 2000/07/13 11:33:58 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -448,7 +448,7 @@ function FindExecutableA(_para1:pchar; _para2:pchar;_para3:pchar):HINST; externa
|
|||||||
function ShellAboutA(_para1:HWND; _para2:pchar; _para3:pchar;_para4:HICON):longint; external 'shell32' name 'ShellAboutA';
|
function ShellAboutA(_para1:HWND; _para2:pchar; _para3:pchar;_para4:HICON):longint; external 'shell32' name 'ShellAboutA';
|
||||||
function ShellExecuteA(_para1:HWND; _para2:pchar; _para3:pchar;_para4:pchar; _para5:pchar;_para6:longint):HINST; external 'shell32' name 'ShellExecuteA';
|
function ShellExecuteA(_para1:HWND; _para2:pchar; _para3:pchar;_para4:pchar; _para5:pchar;_para6:longint):HINST; external 'shell32' name 'ShellExecuteA';
|
||||||
function DdeCreateStringHandleA(_para1:DWORD; _para2:pchar;_para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleA';
|
function DdeCreateStringHandleA(_para1:DWORD; _para2:pchar;_para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleA';
|
||||||
function DdeInitializeA(_para1:LPDWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT;external 'user32' name 'DdeInitializeA';
|
function DdeInitializeA(_para1:LPDWORD; _para2:PFNCALLBACK; _para3:DWORD; _para4:DWORD):UINT;external 'user32' name 'DdeInitializeA';
|
||||||
function DdeQueryStringA(_para1:DWORD; _para2:HSZ; _para3:pchar;_para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringA';
|
function DdeQueryStringA(_para1:DWORD; _para2:HSZ; _para3:pchar;_para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringA';
|
||||||
function LogonUserA(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserA';
|
function LogonUserA(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserA';
|
||||||
function CreateProcessAsUserA(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR;
|
function CreateProcessAsUserA(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR;
|
||||||
@ -488,7 +488,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2000-07-13 11:33:58 michael
|
Revision 1.3 2000-10-11 16:05:56 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.2 2000/07/13 11:33:58 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -503,101 +503,101 @@
|
|||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
BFFCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM; _para4:LPARAM):longint;
|
BFFCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM; _para4:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
LPCCHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPCCHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
LPCFHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPCFHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
PTHREAD_START_ROUTINE = Pointer;
|
PTHREAD_START_ROUTINE = Pointer;
|
||||||
|
|
||||||
LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
|
LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
|
||||||
|
|
||||||
EDITSTREAMCALLBACK = function (_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;
|
EDITSTREAMCALLBACK = function (_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;stdcall;
|
||||||
|
|
||||||
LPFRHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPFRHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
LPOFNHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPOFNHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
LPPRINTHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPPRINTHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
LPSETUPHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPSETUPHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
DLGPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
|
DLGPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;stdcall;
|
||||||
|
|
||||||
PFNPROPSHEETCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM):longint;
|
PFNPROPSHEETCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPTSTR);
|
LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPTSTR);stdcall;
|
||||||
|
|
||||||
PFNTVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
|
PFNTVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
WNDPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
|
WNDPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;stdcall;
|
||||||
|
|
||||||
FARPROC = pointer;
|
FARPROC = pointer;
|
||||||
|
|
||||||
PROC = FARPROC;
|
PROC = FARPROC;
|
||||||
|
|
||||||
ENUMRESTYPEPROC = function (_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;
|
ENUMRESTYPEPROC = function (_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;stdcall;
|
||||||
|
|
||||||
ENUMRESNAMEPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LONG):WINBOOL;
|
ENUMRESNAMEPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LONG):WINBOOL;stdcall;
|
||||||
|
|
||||||
ENUMRESLANGPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPCTSTR; _para4:WORD; _para5:LONG):WINBOOL;
|
ENUMRESLANGPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPCTSTR; _para4:WORD; _para5:LONG):WINBOOL;stdcall;
|
||||||
|
|
||||||
DESKTOPENUMPROC = FARPROC;
|
DESKTOPENUMPROC = FARPROC;
|
||||||
|
|
||||||
ENUMWINDOWSPROC = function (_para1:HWND; _para2:LPARAM):WINBOOL;
|
ENUMWINDOWSPROC = function (_para1:HWND; _para2:LPARAM):WINBOOL;stdcall;
|
||||||
|
|
||||||
ENUMWINDOWSTATIONPROC = function (_para1:LPTSTR; _para2:LPARAM):WINBOOL;
|
ENUMWINDOWSTATIONPROC = function (_para1:LPTSTR; _para2:LPARAM):WINBOOL;stdcall;
|
||||||
|
|
||||||
SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);
|
SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);stdcall;
|
||||||
|
|
||||||
TIMERPROC = procedure (_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);
|
TIMERPROC = procedure (_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);stdcall;
|
||||||
|
|
||||||
GRAYSTRINGPROC = FARPROC;
|
GRAYSTRINGPROC = FARPROC;
|
||||||
|
|
||||||
DRAWSTATEPROC = function (_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;
|
DRAWSTATEPROC = function (_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;stdcall;
|
||||||
|
|
||||||
PROPENUMPROCEX = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;
|
PROPENUMPROCEX = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;stdcall;
|
||||||
|
|
||||||
PROPENUMPROC = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE):WINBOOL;
|
PROPENUMPROC = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE):WINBOOL;stdcall;
|
||||||
|
|
||||||
HOOKPROC = function (_para1:longint; _para2:WPARAM; _para3:LPARAM):LRESULT;
|
HOOKPROC = function (_para1:longint; _para2:WPARAM; _para3:LPARAM):LRESULT;stdcall;
|
||||||
|
|
||||||
ENUMOBJECTSPROC = procedure (_para1:LPVOID; _para2:LPARAM);
|
ENUMOBJECTSPROC = procedure (_para1:LPVOID; _para2:LPARAM);stdcall;
|
||||||
|
|
||||||
LINEDDAPROC = procedure (_para1:longint; _para2:longint; _para3:LPARAM);
|
LINEDDAPROC = procedure (_para1:longint; _para2:longint; _para3:LPARAM);stdcall;
|
||||||
|
|
||||||
TABORTPROC = function (_para1:HDC; _para2:longint):WINBOOL;
|
TABORTPROC = function (_para1:HDC; _para2:longint):WINBOOL;stdcall;
|
||||||
|
|
||||||
LPPAGEPAINTHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPPAGEPAINTHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
LPPAGESETUPHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
|
LPPAGESETUPHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;stdcall;
|
||||||
|
|
||||||
ICMENUMPROC = function (_para1:LPTSTR; _para2:LPARAM):longint;
|
ICMENUMPROC = function (_para1:LPTSTR; _para2:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
EDITWORDBREAKPROCEX = function (_para1:pchar; _para2:LONG; _para3:BYTE; _para4:INT):LONG;CDECL;
|
EDITWORDBREAKPROCEX = function (_para1:pchar; _para2:LONG; _para3:BYTE; _para4:INT):LONG;stdcall;
|
||||||
|
|
||||||
PFNLVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
|
PFNLVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
LOCALE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
|
LOCALE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;stdcall;
|
||||||
|
|
||||||
CODEPAGE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
|
CODEPAGE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;stdcall;
|
||||||
|
|
||||||
DATEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
|
DATEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;stdcall;
|
||||||
|
|
||||||
TIMEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
|
TIMEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;stdcall;
|
||||||
|
|
||||||
CALINFO_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
|
CALINFO_ENUMPROC = function (_para1:LPTSTR):WINBOOL;stdcall;
|
||||||
|
|
||||||
PHANDLER_ROUTINE = function (_para1:DWORD):WINBOOL;
|
PHANDLER_ROUTINE = function (_para1:DWORD):WINBOOL;stdcall;
|
||||||
|
|
||||||
LPHANDLER_FUNCTION = function (_para1:DWORD):WINBOOL;
|
LPHANDLER_FUNCTION = function (_para1:DWORD):WINBOOL;stdcall;
|
||||||
|
|
||||||
PFNGETPROFILEPATH = function (_para1:LPCTSTR; _para2:LPSTR; _para3:UINT):UINT;
|
PFNGETPROFILEPATH = function (_para1:LPCTSTR; _para2:LPSTR; _para3:UINT):UINT;stdcall;
|
||||||
|
|
||||||
PFNRECONCILEPROFILE = function (_para1:LPCTSTR; _para2:LPCTSTR; _para3:DWORD):UINT;
|
PFNRECONCILEPROFILE = function (_para1:LPCTSTR; _para2:LPCTSTR; _para3:DWORD):UINT;stdcall;
|
||||||
|
|
||||||
PFNPROCESSPOLICIES = function (_para1:HWND; _para2:LPCTSTR; _para3:LPCTSTR; _para4:LPCTSTR; _para5:DWORD):WINBOOL;
|
PFNPROCESSPOLICIES = function (_para1:HWND; _para2:LPCTSTR; _para3:LPCTSTR; _para4:LPCTSTR; _para5:DWORD):WINBOOL;stdcall;
|
||||||
(* Not convertable by H2PAS
|
(* Not convertable by H2PAS
|
||||||
#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
|
#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
|
||||||
#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
|
#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
|
||||||
@ -655,10 +655,11 @@
|
|||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
CALLB = procedure ;CDECL;
|
|
||||||
|
|
||||||
{ PFNCALLBACK = CALLB; }
|
{ PFNCALLBACK = CALLB; }
|
||||||
PFNCALLBACK = function(_para1, _para2: UINT;_para3: HCONV;_para4, _para5: HSZ; _para6: HDDEDATA;_para7 ,_para8 :DWORD): HDDEData;cdecl;
|
PFNCALLBACK = function(_para1, _para2: UINT;_para3: HCONV;_para4, _para5: HSZ; _para6: HDDEDATA;_para7 ,_para8 :DWORD): HDDEData;stdcall;
|
||||||
|
{ CALLB = procedure ;CDECL; }
|
||||||
|
CALLB = PFNCALLBACK;
|
||||||
|
|
||||||
|
|
||||||
SECURITY_CONTEXT_TRACKING_MODE = WINBOOL;
|
SECURITY_CONTEXT_TRACKING_MODE = WINBOOL;
|
||||||
{ End of stuff from ddeml.h in old Cygnus headers }
|
{ End of stuff from ddeml.h in old Cygnus headers }
|
||||||
@ -940,7 +941,10 @@ type
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.3 2000-08-16 18:35:19 peter
|
Revision 1.4 2000-10-11 16:05:56 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.3 2000/08/16 18:35:19 peter
|
||||||
* removed word=word declaration
|
* removed word=word declaration
|
||||||
|
|
||||||
Revision 1.2 2000/07/13 11:33:58 michael
|
Revision 1.2 2000/07/13 11:33:58 michael
|
||||||
|
@ -4142,7 +4142,7 @@
|
|||||||
TMSG = MSG;
|
TMSG = MSG;
|
||||||
PMSG = ^MSG;
|
PMSG = ^MSG;
|
||||||
|
|
||||||
MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);
|
MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);stdcall;
|
||||||
TMSGBOXCALLBACK = MSGBOXCALLBACK;
|
TMSGBOXCALLBACK = MSGBOXCALLBACK;
|
||||||
|
|
||||||
MSGBOXPARAMS = record
|
MSGBOXPARAMS = record
|
||||||
@ -4973,7 +4973,7 @@
|
|||||||
TPROCESSINFORMATION = PROCESS_INFORMATION;
|
TPROCESSINFORMATION = PROCESS_INFORMATION;
|
||||||
PPROCESSINFORMATION = ^PROCESS_INFORMATION;
|
PPROCESSINFORMATION = ^PROCESS_INFORMATION;
|
||||||
|
|
||||||
LPFNPSPCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPVOID):UINT;
|
LPFNPSPCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPVOID):UINT;stdcall;
|
||||||
TFNPSPCALLBACK = LPFNPSPCALLBACK;
|
TFNPSPCALLBACK = LPFNPSPCALLBACK;
|
||||||
|
|
||||||
PROPSHEETPAGE = record
|
PROPSHEETPAGE = record
|
||||||
@ -5037,10 +5037,10 @@
|
|||||||
PPROPSHEETHEADER = ^PROPSHEETHEADER;
|
PPROPSHEETHEADER = ^PROPSHEETHEADER;
|
||||||
|
|
||||||
{ PropertySheet callbacks }
|
{ PropertySheet callbacks }
|
||||||
LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;
|
LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;stdcall;
|
||||||
TFNADDPROPSHEETPAGE = LPFNADDPROPSHEETPAGE;
|
TFNADDPROPSHEETPAGE = LPFNADDPROPSHEETPAGE;
|
||||||
|
|
||||||
LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;
|
LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;stdcall;
|
||||||
TFNADDPROPSHEETPAGES = LPFNADDPROPSHEETPAGES;
|
TFNADDPROPSHEETPAGES = LPFNADDPROPSHEETPAGES;
|
||||||
|
|
||||||
PROTOCOL_INFO = record
|
PROTOCOL_INFO = record
|
||||||
@ -6202,17 +6202,17 @@
|
|||||||
TNETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
|
TNETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
|
||||||
PNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
|
PNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
|
||||||
|
|
||||||
ENUMMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:METARECORD; _para4:longint; _para5:LPARAM):longint;
|
ENUMMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:METARECORD; _para4:longint; _para5:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
ENHMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:ENHMETARECORD; _para4:longint; _para5:LPARAM):longint;
|
ENHMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:ENHMETARECORD; _para4:longint; _para5:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
ENUMFONTSPROC = function (_para1:LPLOGFONT; _para2:LPTEXTMETRIC; _para3:DWORD; _para4:LPARAM):longint;
|
ENUMFONTSPROC = function (_para1:LPLOGFONT; _para2:LPTEXTMETRIC; _para3:DWORD; _para4:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
FONTENUMPROC = function (var _para1:ENUMLOGFONT; var _para2:NEWTEXTMETRIC; _para3:longint; _para4:LPARAM):longint;
|
FONTENUMPROC = function (var _para1:ENUMLOGFONT; var _para2:NEWTEXTMETRIC; _para3:longint; _para4:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
FONTENUMEXPROC = function (var _para1:ENUMLOGFONTEX;var _para2:NEWTEXTMETRICEX; _para3:longint; _para4:LPARAM):longint;
|
FONTENUMEXPROC = function (var _para1:ENUMLOGFONTEX;var _para2:NEWTEXTMETRICEX; _para3:longint; _para4:LPARAM):longint;stdcall;
|
||||||
|
|
||||||
LPOVERLAPPED_COMPLETION_ROUTINE = procedure (_para1:DWORD; _para2:DWORD; _para3:LPOVERLAPPED);
|
LPOVERLAPPED_COMPLETION_ROUTINE = procedure (_para1:DWORD; _para2:DWORD; _para3:LPOVERLAPPED);stdcall;
|
||||||
|
|
||||||
{ Structures for the extensions to OpenGL }
|
{ Structures for the extensions to OpenGL }
|
||||||
|
|
||||||
@ -6961,7 +6961,10 @@ type
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2000-07-13 11:34:01 michael
|
Revision 1.3 2000-10-11 16:05:56 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.2 2000/07/13 11:34:01 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ function FindExecutable(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR):HINST; e
|
|||||||
function ShellAbout(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint; external 'shell32' name 'ShellAboutW';
|
function ShellAbout(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint; external 'shell32' name 'ShellAboutW';
|
||||||
function ShellExecute(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR;_para6:longint):HINST; external 'shell32' name 'ShellExecuteW';
|
function ShellExecute(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR;_para6:longint):HINST; external 'shell32' name 'ShellExecuteW';
|
||||||
function DdeCreateStringHandle(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleW';
|
function DdeCreateStringHandle(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleW';
|
||||||
function DdeInitialize(_para1:LPDWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT; external 'user32' name 'DdeInitializeW';
|
function DdeInitialize(_para1:LPDWORD; _para2:PFNCALLBACK; _para3:DWORD; _para4:DWORD):UINT; external 'user32' name 'DdeInitializeW';
|
||||||
function DdeQueryString(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringW';
|
function DdeQueryString(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringW';
|
||||||
function LogonUser(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserW';
|
function LogonUser(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserW';
|
||||||
function CreateProcessAsUser(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR; _para10:LPSTARTUPINFO;_para11:LPPROCESS_INFORMATION):WINBOOL
|
function CreateProcessAsUser(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR; _para10:LPSTARTUPINFO;_para11:LPPROCESS_INFORMATION):WINBOOL
|
||||||
@ -493,7 +493,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2000-07-13 11:34:03 michael
|
Revision 1.3 2000-10-11 16:05:56 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.2 2000/07/13 11:34:03 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ function FindExecutableW(_para1:LPCWSTR; _para2:LPCWSTR; _para3:LPCWSTR):HINST;
|
|||||||
function ShellAboutW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint; external 'shell32' name 'ShellAboutW';
|
function ShellAboutW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:HICON):longint; external 'shell32' name 'ShellAboutW';
|
||||||
function ShellExecuteW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR;_para6:longint):HINST; external 'shell32' name 'ShellExecuteW';
|
function ShellExecuteW(_para1:HWND; _para2:LPCWSTR; _para3:LPCWSTR; _para4:LPCWSTR; _para5:LPCWSTR;_para6:longint):HINST; external 'shell32' name 'ShellExecuteW';
|
||||||
function DdeCreateStringHandleW(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleW';
|
function DdeCreateStringHandleW(_para1:DWORD; _para2:LPCWSTR; _para3:longint):HSZ; external 'user32' name 'DdeCreateStringHandleW';
|
||||||
function DdeInitializeW(_para1:LPDWORD; _para2:CALLB; _para3:DWORD; _para4:DWORD):UINT; external 'user32' name 'DdeInitializeW';
|
function DdeInitializeW(_para1:LPDWORD; _para2:PFNCALLBACK; _para3:DWORD; _para4:DWORD):UINT; external 'user32' name 'DdeInitializeW';
|
||||||
function DdeQueryStringW(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringW';
|
function DdeQueryStringW(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD; _para5:longint):DWORD; external 'user32' name 'DdeQueryStringW';
|
||||||
function LogonUserW(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserW';
|
function LogonUserW(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserW';
|
||||||
function CreateProcessAsUserW(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR;
|
function CreateProcessAsUserW(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR;
|
||||||
@ -493,7 +493,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2000-07-13 11:34:03 michael
|
Revision 1.3 2000-10-11 16:05:56 peter
|
||||||
|
* stdcall for callbacks (merged)
|
||||||
|
|
||||||
|
Revision 1.2 2000/07/13 11:34:03 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user