mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-22 18:58:21 +02:00
* stdcall for callbacks (merged)
This commit is contained in:
parent
539c411afe
commit
3fd4aa8ec9
@ -915,323 +915,323 @@ end;
|
||||
*)
|
||||
|
||||
const
|
||||
SEVERITY_SUCCESS = $00000000;
|
||||
SEVERITY_INFORMATIONAL = $40000000;
|
||||
SEVERITY_WARNING = $80000000;
|
||||
SEVERITY_ERROR = $C0000000;
|
||||
SEVERITY_SUCCESS = $00000000;
|
||||
SEVERITY_INFORMATIONAL = $40000000;
|
||||
SEVERITY_WARNING = $80000000;
|
||||
SEVERITY_ERROR = $C0000000;
|
||||
|
||||
const
|
||||
STATUS_SEGMENT_NOTIFICATION = $40000005;
|
||||
DBG_TERMINATE_THREAD = $40010003;
|
||||
DBG_TERMINATE_PROCESS = $40010004;
|
||||
DBG_CONTROL_C = $40010005;
|
||||
DBG_CONTROL_BREAK = $40010008;
|
||||
STATUS_SEGMENT_NOTIFICATION = $40000005;
|
||||
DBG_TERMINATE_THREAD = $40010003;
|
||||
DBG_TERMINATE_PROCESS = $40010004;
|
||||
DBG_CONTROL_C = $40010005;
|
||||
DBG_CONTROL_BREAK = $40010008;
|
||||
|
||||
STATUS_GUARD_PAGE_VIOLATION = $80000001;
|
||||
STATUS_DATATYPE_MISALIGNMENT = $80000002;
|
||||
STATUS_BREAKPOINT = $80000003;
|
||||
STATUS_SINGLE_STEP = $80000004;
|
||||
DBG_EXCEPTION_NOT_HANDLED = $80010001;
|
||||
STATUS_GUARD_PAGE_VIOLATION = $80000001;
|
||||
STATUS_DATATYPE_MISALIGNMENT = $80000002;
|
||||
STATUS_BREAKPOINT = $80000003;
|
||||
STATUS_SINGLE_STEP = $80000004;
|
||||
DBG_EXCEPTION_NOT_HANDLED = $80010001;
|
||||
|
||||
STATUS_ACCESS_VIOLATION = $C0000005;
|
||||
STATUS_IN_PAGE_ERROR = $C0000006;
|
||||
STATUS_INVALID_HANDLE = $C0000008;
|
||||
STATUS_NO_MEMORY = $C0000017;
|
||||
STATUS_ILLEGAL_INSTRUCTION = $C000001D;
|
||||
STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
|
||||
STATUS_INVALID_DISPOSITION = $C0000026;
|
||||
STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
|
||||
STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
|
||||
STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
|
||||
STATUS_FLOAT_INEXACT_RESULT = $C000008F;
|
||||
STATUS_FLOAT_INVALID_OPERATION = $C0000090;
|
||||
STATUS_FLOAT_OVERFLOW = $C0000091;
|
||||
STATUS_FLOAT_STACK_CHECK = $C0000092;
|
||||
STATUS_FLOAT_UNDERFLOW = $C0000093;
|
||||
STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
|
||||
STATUS_INTEGER_OVERFLOW = $C0000095;
|
||||
STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
|
||||
STATUS_STACK_OVERFLOW = $C00000FD;
|
||||
STATUS_CONTROL_C_EXIT = $C000013A;
|
||||
STATUS_FLOAT_MULTIPLE_FAULTS = $C00002B4;
|
||||
STATUS_FLOAT_MULTIPLE_TRAPS = $C00002B5;
|
||||
STATUS_REG_NAT_CONSUMPTION = $C00002C9;
|
||||
STATUS_ACCESS_VIOLATION = $C0000005;
|
||||
STATUS_IN_PAGE_ERROR = $C0000006;
|
||||
STATUS_INVALID_HANDLE = $C0000008;
|
||||
STATUS_NO_MEMORY = $C0000017;
|
||||
STATUS_ILLEGAL_INSTRUCTION = $C000001D;
|
||||
STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
|
||||
STATUS_INVALID_DISPOSITION = $C0000026;
|
||||
STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
|
||||
STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
|
||||
STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
|
||||
STATUS_FLOAT_INEXACT_RESULT = $C000008F;
|
||||
STATUS_FLOAT_INVALID_OPERATION = $C0000090;
|
||||
STATUS_FLOAT_OVERFLOW = $C0000091;
|
||||
STATUS_FLOAT_STACK_CHECK = $C0000092;
|
||||
STATUS_FLOAT_UNDERFLOW = $C0000093;
|
||||
STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
|
||||
STATUS_INTEGER_OVERFLOW = $C0000095;
|
||||
STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
|
||||
STATUS_STACK_OVERFLOW = $C00000FD;
|
||||
STATUS_CONTROL_C_EXIT = $C000013A;
|
||||
STATUS_FLOAT_MULTIPLE_FAULTS = $C00002B4;
|
||||
STATUS_FLOAT_MULTIPLE_TRAPS = $C00002B5;
|
||||
STATUS_REG_NAT_CONSUMPTION = $C00002C9;
|
||||
|
||||
EXCEPTION_EXECUTE_HANDLER = 1;
|
||||
EXCEPTION_CONTINUE_EXECUTION = -1;
|
||||
EXCEPTION_CONTINUE_SEARCH = 0;
|
||||
EXCEPTION_EXECUTE_HANDLER = 1;
|
||||
EXCEPTION_CONTINUE_EXECUTION = -1;
|
||||
EXCEPTION_CONTINUE_SEARCH = 0;
|
||||
|
||||
EXCEPTION_MAXIMUM_PARAMETERS = 15;
|
||||
EXCEPTION_MAXIMUM_PARAMETERS = 15;
|
||||
|
||||
CONTEXT_X86 = $00010000;
|
||||
CONTEXT_CONTROL = CONTEXT_X86 or $00000001;
|
||||
CONTEXT_INTEGER = CONTEXT_X86 or $00000002;
|
||||
CONTEXT_SEGMENTS = CONTEXT_X86 or $00000004;
|
||||
CONTEXT_FLOATING_POINT = CONTEXT_X86 or $00000008;
|
||||
CONTEXT_DEBUG_REGISTERS = CONTEXT_X86 or $00000010;
|
||||
CONTEXT_EXTENDED_REGISTERS = CONTEXT_X86 or $00000020;
|
||||
CONTEXT_X86 = $00010000;
|
||||
CONTEXT_CONTROL = CONTEXT_X86 or $00000001;
|
||||
CONTEXT_INTEGER = CONTEXT_X86 or $00000002;
|
||||
CONTEXT_SEGMENTS = CONTEXT_X86 or $00000004;
|
||||
CONTEXT_FLOATING_POINT = CONTEXT_X86 or $00000008;
|
||||
CONTEXT_DEBUG_REGISTERS = CONTEXT_X86 or $00000010;
|
||||
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
|
||||
PFloatingSaveArea = ^TFloatingSaveArea;
|
||||
TFloatingSaveArea = packed record
|
||||
ControlWord : Cardinal;
|
||||
StatusWord : Cardinal;
|
||||
TagWord : Cardinal;
|
||||
ErrorOffset : Cardinal;
|
||||
ErrorSelector : Cardinal;
|
||||
DataOffset : Cardinal;
|
||||
DataSelector : Cardinal;
|
||||
RegisterArea : array[0..79] of Byte;
|
||||
Cr0NpxState : Cardinal;
|
||||
end;
|
||||
PFloatingSaveArea = ^TFloatingSaveArea;
|
||||
TFloatingSaveArea = packed record
|
||||
ControlWord : Cardinal;
|
||||
StatusWord : Cardinal;
|
||||
TagWord : Cardinal;
|
||||
ErrorOffset : Cardinal;
|
||||
ErrorSelector : Cardinal;
|
||||
DataOffset : Cardinal;
|
||||
DataSelector : Cardinal;
|
||||
RegisterArea : array[0..79] of Byte;
|
||||
Cr0NpxState : Cardinal;
|
||||
end;
|
||||
|
||||
PContext = ^TContext;
|
||||
TContext = packed record
|
||||
//
|
||||
// The flags values within this flag control the contents of
|
||||
// a CONTEXT record.
|
||||
//
|
||||
ContextFlags : Cardinal;
|
||||
PContext = ^TContext;
|
||||
TContext = packed record
|
||||
//
|
||||
// The flags values within this flag control the contents of
|
||||
// a CONTEXT record.
|
||||
//
|
||||
ContextFlags : Cardinal;
|
||||
|
||||
//
|
||||
// This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
|
||||
// set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
|
||||
// included in CONTEXT_FULL.
|
||||
//
|
||||
Dr0, Dr1, Dr2,
|
||||
Dr3, Dr6, Dr7 : Cardinal;
|
||||
//
|
||||
// This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
|
||||
// set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
|
||||
// included in CONTEXT_FULL.
|
||||
//
|
||||
Dr0, Dr1, Dr2,
|
||||
Dr3, Dr6, Dr7 : Cardinal;
|
||||
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_FLOATING_POINT.
|
||||
//
|
||||
FloatSave : TFloatingSaveArea;
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_FLOATING_POINT.
|
||||
//
|
||||
FloatSave : TFloatingSaveArea;
|
||||
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_SEGMENTS.
|
||||
//
|
||||
SegGs, SegFs,
|
||||
SegEs, SegDs : Cardinal;
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_SEGMENTS.
|
||||
//
|
||||
SegGs, SegFs,
|
||||
SegEs, SegDs : Cardinal;
|
||||
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_INTEGER.
|
||||
//
|
||||
Edi, Esi, Ebx,
|
||||
Edx, Ecx, Eax : Cardinal;
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_INTEGER.
|
||||
//
|
||||
Edi, Esi, Ebx,
|
||||
Edx, Ecx, Eax : Cardinal;
|
||||
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_CONTROL.
|
||||
//
|
||||
Ebp : Cardinal;
|
||||
Eip : Cardinal;
|
||||
SegCs : Cardinal;
|
||||
EFlags, Esp, SegSs : Cardinal;
|
||||
//
|
||||
// This section is specified/returned if the
|
||||
// ContextFlags word contains the flag CONTEXT_CONTROL.
|
||||
//
|
||||
Ebp : Cardinal;
|
||||
Eip : Cardinal;
|
||||
SegCs : Cardinal;
|
||||
EFlags, Esp, SegSs : Cardinal;
|
||||
|
||||
//
|
||||
// This section is specified/returned if the ContextFlags word
|
||||
// contains the flag CONTEXT_EXTENDED_REGISTERS.
|
||||
// The format and contexts are processor specific
|
||||
//
|
||||
ExtendedRegisters : array[0..MAXIMUM_SUPPORTED_EXTENSION-1] of Byte;
|
||||
end;
|
||||
//
|
||||
// This section is specified/returned if the ContextFlags word
|
||||
// contains the flag CONTEXT_EXTENDED_REGISTERS.
|
||||
// The format and contexts are processor specific
|
||||
//
|
||||
ExtendedRegisters : array[0..MAXIMUM_SUPPORTED_EXTENSION-1] of Byte;
|
||||
end;
|
||||
|
||||
type
|
||||
PExceptionRecord = ^TExceptionRecord;
|
||||
TExceptionRecord = packed record
|
||||
ExceptionCode : Longint;
|
||||
ExceptionFlags : Longint;
|
||||
ExceptionRecord : PExceptionRecord;
|
||||
ExceptionAddress : Pointer;
|
||||
NumberParameters : Longint;
|
||||
ExceptionInformation : array[0..EXCEPTION_MAXIMUM_PARAMETERS-1] of Pointer;
|
||||
end;
|
||||
PExceptionRecord = ^TExceptionRecord;
|
||||
TExceptionRecord = packed record
|
||||
ExceptionCode : Longint;
|
||||
ExceptionFlags : Longint;
|
||||
ExceptionRecord : PExceptionRecord;
|
||||
ExceptionAddress : Pointer;
|
||||
NumberParameters : Longint;
|
||||
ExceptionInformation : array[0..EXCEPTION_MAXIMUM_PARAMETERS-1] of Pointer;
|
||||
end;
|
||||
|
||||
PExceptionPointers = ^TExceptionPointers;
|
||||
TExceptionPointers = packed record
|
||||
ExceptionRecord : PExceptionRecord;
|
||||
ContextRecord : PContext;
|
||||
end;
|
||||
PExceptionPointers = ^TExceptionPointers;
|
||||
TExceptionPointers = packed record
|
||||
ExceptionRecord : PExceptionRecord;
|
||||
ContextRecord : PContext;
|
||||
end;
|
||||
|
||||
{ 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;
|
||||
external 'kernel32' name 'SetUnhandledExceptionFilter';
|
||||
external 'kernel32' name 'SetUnhandledExceptionFilter';
|
||||
|
||||
const
|
||||
MaxExceptionLevel = 16;
|
||||
exceptLevel : Byte = 0;
|
||||
MaxExceptionLevel = 16;
|
||||
exceptLevel : Byte = 0;
|
||||
|
||||
var
|
||||
exceptEip : array[0..MaxExceptionLevel-1] of Longint;
|
||||
exceptError : array[0..MaxExceptionLevel-1] of Byte;
|
||||
resetFPU : array[0..MaxExceptionLevel-1] of Boolean;
|
||||
exceptEip : array[0..MaxExceptionLevel-1] of Longint;
|
||||
exceptError : array[0..MaxExceptionLevel-1] of Byte;
|
||||
resetFPU : array[0..MaxExceptionLevel-1] of Boolean;
|
||||
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
procedure DebugHandleErrorAddrFrame(error, addr, frame : longint);
|
||||
begin
|
||||
if IsConsole then begin
|
||||
write(stderr,'HandleErrorAddrFrame(error=',error);
|
||||
write(stderr,',addr=',hexstr(addr,8));
|
||||
writeln(stderr,',frame=',hexstr(frame,8),')');
|
||||
end;
|
||||
HandleErrorAddrFrame(error,addr,frame);
|
||||
if IsConsole then begin
|
||||
write(stderr,'HandleErrorAddrFrame(error=',error);
|
||||
write(stderr,',addr=',hexstr(addr,8));
|
||||
writeln(stderr,',frame=',hexstr(frame,8),')');
|
||||
end;
|
||||
HandleErrorAddrFrame(error,addr,frame);
|
||||
end;
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
|
||||
procedure JumpToHandleErrorFrame;
|
||||
var
|
||||
eip, ebp, error : Longint;
|
||||
eip, ebp, error : Longint;
|
||||
begin
|
||||
// save ebp
|
||||
asm
|
||||
movl (%ebp),%eax
|
||||
movl %eax,ebp
|
||||
end;
|
||||
if (exceptLevel > 0) then
|
||||
dec(exceptLevel);
|
||||
// save ebp
|
||||
asm
|
||||
movl (%ebp),%eax
|
||||
movl %eax,ebp
|
||||
end;
|
||||
if (exceptLevel > 0) then
|
||||
dec(exceptLevel);
|
||||
|
||||
eip:=exceptEip[exceptLevel];
|
||||
error:=exceptError[exceptLevel];
|
||||
eip:=exceptEip[exceptLevel];
|
||||
error:=exceptError[exceptLevel];
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
if IsConsole then
|
||||
writeln(stderr,'In JumpToHandleErrorFrame error=',error);
|
||||
end;
|
||||
if IsConsole then
|
||||
writeln(stderr,'In JumpToHandleErrorFrame error=',error);
|
||||
end;
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
if resetFPU[exceptLevel] then asm
|
||||
fninit
|
||||
fldcw fpucw
|
||||
end;
|
||||
{ build a fake stack }
|
||||
asm
|
||||
movl ebp,%eax
|
||||
pushl %eax
|
||||
movl eip,%eax
|
||||
pushl %eax
|
||||
movl error,%eax
|
||||
pushl %eax
|
||||
movl eip,%eax
|
||||
pushl %eax
|
||||
movl ebp,%ebp // Change frame pointer
|
||||
if resetFPU[exceptLevel] then asm
|
||||
fninit
|
||||
fldcw fpucw
|
||||
end;
|
||||
{ build a fake stack }
|
||||
asm
|
||||
movl ebp,%eax
|
||||
pushl %eax
|
||||
movl eip,%eax
|
||||
pushl %eax
|
||||
movl error,%eax
|
||||
pushl %eax
|
||||
movl eip,%eax
|
||||
pushl %eax
|
||||
movl ebp,%ebp // Change frame pointer
|
||||
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
jmpl DebugHandleErrorAddrFrame
|
||||
jmpl DebugHandleErrorAddrFrame
|
||||
{$else not SYSTEMEXCEPTIONDEBUG}
|
||||
jmpl HandleErrorAddrFrame
|
||||
jmpl HandleErrorAddrFrame
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function syswin32_i386_exception_handler(excep : PExceptionPointers) : Longint;
|
||||
function syswin32_i386_exception_handler(excep : PExceptionPointers) : Longint;stdcall;
|
||||
var
|
||||
frame,
|
||||
res : longint;
|
||||
frame,
|
||||
res : longint;
|
||||
|
||||
function SysHandleErrorFrame(error, frame : Longint; must_reset_fpu : Boolean) : Longint;
|
||||
begin
|
||||
if (frame = 0) then
|
||||
SysHandleErrorFrame:=EXCEPTION_CONTINUE_SEARCH
|
||||
else begin
|
||||
if (exceptLevel >= MaxExceptionLevel) then exit;
|
||||
if (frame = 0) then
|
||||
SysHandleErrorFrame:=EXCEPTION_CONTINUE_SEARCH
|
||||
else begin
|
||||
if (exceptLevel >= MaxExceptionLevel) then exit;
|
||||
|
||||
exceptEip[exceptLevel] := excep^.ContextRecord^.Eip;
|
||||
exceptError[exceptLevel] := error;
|
||||
resetFPU[exceptLevel] := must_reset_fpu;
|
||||
inc(exceptLevel);
|
||||
exceptEip[exceptLevel] := excep^.ContextRecord^.Eip;
|
||||
exceptError[exceptLevel] := error;
|
||||
resetFPU[exceptLevel] := must_reset_fpu;
|
||||
inc(exceptLevel);
|
||||
|
||||
excep^.ContextRecord^.Eip := Longint(@JumpToHandleErrorFrame);
|
||||
excep^.ExceptionRecord^.ExceptionCode := 0;
|
||||
excep^.ContextRecord^.Eip := Longint(@JumpToHandleErrorFrame);
|
||||
excep^.ExceptionRecord^.ExceptionCode := 0;
|
||||
|
||||
SysHandleErrorFrame := EXCEPTION_CONTINUE_EXECUTION;
|
||||
SysHandleErrorFrame := EXCEPTION_CONTINUE_EXECUTION;
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
if IsConsole then begin
|
||||
writeln(stderr,'Exception Continue Exception set at ',
|
||||
hexstr(exceptEip[exceptLevel],8));
|
||||
writeln(stderr,'Eip changed to ',
|
||||
hexstr(longint(@JumpToHandleErrorFrame),8), ' error=', error);
|
||||
end;
|
||||
if IsConsole then begin
|
||||
writeln(stderr,'Exception Continue Exception set at ',
|
||||
hexstr(exceptEip[exceptLevel],8));
|
||||
writeln(stderr,'Eip changed to ',
|
||||
hexstr(longint(@JumpToHandleErrorFrame),8), ' error=', error);
|
||||
end;
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
if excep^.ContextRecord^.SegSs=_SS then
|
||||
frame := excep^.ContextRecord^.Ebp
|
||||
else
|
||||
frame := 0;
|
||||
res := EXCEPTION_CONTINUE_SEARCH;
|
||||
if excep^.ContextRecord^.SegSs=_SS then
|
||||
frame := excep^.ContextRecord^.Ebp
|
||||
else
|
||||
frame := 0;
|
||||
res := EXCEPTION_CONTINUE_SEARCH;
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
if IsConsole then Writeln(stderr,'Exception ',
|
||||
hexstr(excep^.ExceptionRecord^.ExceptionCode, 8));
|
||||
if IsConsole then Writeln(stderr,'Exception ',
|
||||
hexstr(excep^.ExceptionRecord^.ExceptionCode, 8));
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
case excep^.ExceptionRecord^.ExceptionCode of
|
||||
STATUS_INTEGER_DIVIDE_BY_ZERO,
|
||||
STATUS_FLOAT_DIVIDE_BY_ZERO :
|
||||
res := SysHandleErrorFrame(200, frame, true);
|
||||
STATUS_ARRAY_BOUNDS_EXCEEDED :
|
||||
res := SysHandleErrorFrame(201, frame, false);
|
||||
STATUS_STACK_OVERFLOW :
|
||||
res := SysHandleErrorFrame(202, frame, false);
|
||||
STATUS_FLOAT_OVERFLOW :
|
||||
res := SysHandleErrorFrame(205, frame, true);
|
||||
STATUS_FLOAT_UNDERFLOW :
|
||||
res := SysHandleErrorFrame(206, frame, true);
|
||||
case excep^.ExceptionRecord^.ExceptionCode of
|
||||
STATUS_INTEGER_DIVIDE_BY_ZERO,
|
||||
STATUS_FLOAT_DIVIDE_BY_ZERO :
|
||||
res := SysHandleErrorFrame(200, frame, true);
|
||||
STATUS_ARRAY_BOUNDS_EXCEEDED :
|
||||
res := SysHandleErrorFrame(201, frame, false);
|
||||
STATUS_STACK_OVERFLOW :
|
||||
res := SysHandleErrorFrame(202, frame, false);
|
||||
STATUS_FLOAT_OVERFLOW :
|
||||
res := SysHandleErrorFrame(205, frame, true);
|
||||
STATUS_FLOAT_UNDERFLOW :
|
||||
res := SysHandleErrorFrame(206, frame, true);
|
||||
{excep^.ContextRecord^.FloatSave.StatusWord := excep^.ContextRecord^.FloatSave.StatusWord and $ffffff00;}
|
||||
STATUS_FLOAT_INVALID_OPERATION,
|
||||
STATUS_FLOAT_STACK_CHECK :
|
||||
res := SysHandleErrorFrame(207, frame, true);
|
||||
STATUS_INTEGER_OVERFLOW :
|
||||
res := SysHandleErrorFrame(215, frame, false);
|
||||
STATUS_ACCESS_VIOLATION,
|
||||
STATUS_FLOAT_DENORMAL_OPERAND :
|
||||
res := SysHandleErrorFrame(216, frame, true);
|
||||
else begin
|
||||
if ((excep^.ExceptionRecord^.ExceptionCode and SEVERITY_ERROR) = SEVERITY_ERROR) then
|
||||
res := SysHandleErrorFrame(217, frame, true);
|
||||
end;
|
||||
end;
|
||||
syswin32_i386_exception_handler := res;
|
||||
STATUS_FLOAT_INVALID_OPERATION,
|
||||
STATUS_FLOAT_STACK_CHECK :
|
||||
res := SysHandleErrorFrame(207, frame, true);
|
||||
STATUS_INTEGER_OVERFLOW :
|
||||
res := SysHandleErrorFrame(215, frame, false);
|
||||
STATUS_ACCESS_VIOLATION,
|
||||
STATUS_FLOAT_DENORMAL_OPERAND :
|
||||
res := SysHandleErrorFrame(216, frame, true);
|
||||
else begin
|
||||
if ((excep^.ExceptionRecord^.ExceptionCode and SEVERITY_ERROR) = SEVERITY_ERROR) then
|
||||
res := SysHandleErrorFrame(217, frame, true);
|
||||
end;
|
||||
end;
|
||||
syswin32_i386_exception_handler := res;
|
||||
end;
|
||||
|
||||
|
||||
procedure install_exception_handlers;
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
var
|
||||
oldexceptaddr,
|
||||
newexceptaddr : Longint;
|
||||
oldexceptaddr,
|
||||
newexceptaddr : Longint;
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
|
||||
begin
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
asm
|
||||
movl $0,%eax
|
||||
movl %fs:(%eax),%eax
|
||||
movl %eax,oldexceptaddr
|
||||
end;
|
||||
asm
|
||||
movl $0,%eax
|
||||
movl %fs:(%eax),%eax
|
||||
movl %eax,oldexceptaddr
|
||||
end;
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
SetUnhandledExceptionFilter(@syswin32_i386_exception_handler);
|
||||
SetUnhandledExceptionFilter(@syswin32_i386_exception_handler);
|
||||
{$ifdef SYSTEMEXCEPTIONDEBUG}
|
||||
asm
|
||||
movl $0,%eax
|
||||
movl %fs:(%eax),%eax
|
||||
movl %eax,newexceptaddr
|
||||
end;
|
||||
if IsConsole then
|
||||
writeln(stderr,'Old exception ',hexstr(oldexceptaddr,8),
|
||||
' new exception ',hexstr(newexceptaddr,8));
|
||||
asm
|
||||
movl $0,%eax
|
||||
movl %fs:(%eax),%eax
|
||||
movl %eax,newexceptaddr
|
||||
end;
|
||||
if IsConsole then
|
||||
writeln(stderr,'Old exception ',hexstr(oldexceptaddr,8),
|
||||
' new exception ',hexstr(newexceptaddr,8));
|
||||
{$endif SYSTEMEXCEPTIONDEBUG}
|
||||
end;
|
||||
|
||||
procedure remove_exception_handlers;
|
||||
begin
|
||||
SetUnhandledExceptionFilter(nil);
|
||||
SetUnhandledExceptionFilter(nil);
|
||||
end;
|
||||
|
||||
{$else not i386 (Processor specific !!)}
|
||||
@ -1380,7 +1380,10 @@ end.
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.3 2000/09/04 19:36:59 peter
|
||||
|
@ -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 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 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 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;
|
||||
@ -487,7 +487,10 @@ end;
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
}
|
||||
|
@ -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 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 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 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;
|
||||
@ -488,7 +488,10 @@ end;
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
}
|
||||
|
@ -503,101 +503,101 @@
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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
|
||||
#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
|
||||
#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
|
||||
@ -655,10 +655,11 @@
|
||||
|
||||
type
|
||||
|
||||
CALLB = procedure ;CDECL;
|
||||
|
||||
{ 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;
|
||||
{ End of stuff from ddeml.h in old Cygnus headers }
|
||||
@ -940,7 +941,10 @@ type
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.2 2000/07/13 11:33:58 michael
|
||||
|
@ -4142,7 +4142,7 @@
|
||||
TMSG = MSG;
|
||||
PMSG = ^MSG;
|
||||
|
||||
MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);
|
||||
MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);stdcall;
|
||||
TMSGBOXCALLBACK = MSGBOXCALLBACK;
|
||||
|
||||
MSGBOXPARAMS = record
|
||||
@ -4973,7 +4973,7 @@
|
||||
TPROCESSINFORMATION = 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;
|
||||
|
||||
PROPSHEETPAGE = record
|
||||
@ -5037,10 +5037,10 @@
|
||||
PPROPSHEETHEADER = ^PROPSHEETHEADER;
|
||||
|
||||
{ PropertySheet callbacks }
|
||||
LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;
|
||||
LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;stdcall;
|
||||
TFNADDPROPSHEETPAGE = LPFNADDPROPSHEETPAGE;
|
||||
|
||||
LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;
|
||||
LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;stdcall;
|
||||
TFNADDPROPSHEETPAGES = LPFNADDPROPSHEETPAGES;
|
||||
|
||||
PROTOCOL_INFO = record
|
||||
@ -6202,17 +6202,17 @@
|
||||
TNETCONNECTINFOSTRUCT = 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 }
|
||||
|
||||
@ -6961,7 +6961,10 @@ type
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
}
|
||||
|
@ -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 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 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 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
|
||||
@ -493,7 +493,10 @@ end;
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
}
|
||||
|
@ -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 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 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 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;
|
||||
@ -493,7 +493,10 @@ end;
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user