Sfoglia il codice sorgente

* stdcall for callbacks (merged)

peter 25 anni fa
parent
commit
3fd4aa8ec9

+ 258 - 255
rtl/win32/syswin32.pp

@@ -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_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;
-
-	EXCEPTION_EXECUTE_HANDLER		= 1;
-	EXCEPTION_CONTINUE_EXECUTION	= -1;
-	EXCEPTION_CONTINUE_SEARCH		= 0;
-
-	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_FULL				= CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
-
-	MAXIMUM_SUPPORTED_EXTENSION	= 512;
+        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_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_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_FULL                            = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
+
+        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;
-
-	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 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_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_EXTENDED_REGISTERS.
-	    // The format and contexts are processor specific
-	    //
-		ExtendedRegisters : array[0..MAXIMUM_SUPPORTED_EXTENSION-1] of Byte;
-	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;
+
+            //
+            // 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_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_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;
 
 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;
-
-	PExceptionPointers = ^TExceptionPointers;
-	TExceptionPointers = packed record
-		ExceptionRecord   : PExceptionRecord;
-		ContextRecord     : PContext;
-	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;
 
      { 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);
-
-	eip:=exceptEip[exceptLevel];
-	error:=exceptError[exceptLevel];
+        // save ebp
+        asm
+                movl (%ebp),%eax
+                movl %eax,ebp
+        end;
+        if (exceptLevel > 0) then
+                dec(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
@@ -1389,4 +1392,4 @@ end.
   Revision 1.2  2000/07/13 11:33:58  michael
   + removed logs
 
-}
+}

+ 5 - 2
rtl/win32/wininc/ascdef.inc

@@ -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
  
 }

+ 5 - 2
rtl/win32/wininc/ascfun.inc

@@ -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
  
 }

+ 50 - 46
rtl/win32/wininc/base.inc

@@ -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

+ 14 - 11
rtl/win32/wininc/struct.inc

@@ -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
  
 }

+ 5 - 2
rtl/win32/wininc/unidef.inc

@@ -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
  
 }

+ 5 - 2
rtl/win32/wininc/unifun.inc

@@ -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
  
 }