[ros-dev] Crash in win32k.sys

Filip Navara xnavara at volny.cz
Thu Dec 30 14:58:43 CET 2004


Maarten Bosma wrote:

> I wrote:
>
>>> Uncomment these lines in subsys/win32k/objects/gdiobj.c:
>>> /*{GDI_OBJECT_TYPE_DIRECTDRAW,  sizeof(DD_DIRECTDRAW), DD_Cleanup},
>>>  {GDI_OBJECT_TYPE_DD_SURFACE,  sizeof(DD_SURFACE),    
>>> DDSURF_Cleanup},*/
>>
>> If I do so, I get a lot of errors. I guess "win32k/ntddraw.h" has to 
>> be included somewhere.
>
> If I include "intddraw.h", where GDI_OBJECT_TYPE_DIRECTDRAW is 
> defined, I get a lot of errors. I think something in the header system 
> has to be changed.

See attached patch.
-------------- next part --------------
Index: include/win32k/ntddraw.h
===================================================================
RCS file: /CVS/ReactOS/reactos/include/win32k/ntddraw.h,v
retrieving revision 1.2
diff -u -r1.2 ntddraw.h
--- include/win32k/ntddraw.h	28 Oct 2003 19:30:08 -0000	1.2
+++ include/win32k/ntddraw.h	30 Dec 2004 13:35:30 -0000
@@ -2,8 +2,6 @@
 #ifndef __WIN32K_NTDDRAW_H
 #define __WIN32K_NTDDRAW_H
 
-#include <windows.h>
-#include <ddk/ddrawint.h>
 #include <ddk/d3dnthal.h>
 
 #ifdef __cplusplus
Index: subsys/win32k/w32k.h
===================================================================
RCS file: /CVS/ReactOS/reactos/subsys/win32k/w32k.h,v
retrieving revision 1.7
diff -u -r1.7 w32k.h
--- subsys/win32k/w32k.h	12 Dec 2004 01:40:37 -0000	1.7
+++ subsys/win32k/w32k.h	30 Dec 2004 13:37:58 -0000
@@ -8,6 +8,8 @@
 #include <roscfg.h>
 #include <roskrnl.h>
 
+#include <win32k/ntddraw.h>
+
 #include <ddk/winddi.h>
 #include <ddk/ntddk.h>
 #include <ddk/ntddmou.h>
@@ -49,6 +51,7 @@
 #include <include/input.h>
 #include <include/inteng.h>
 #include <include/intgdi.h>
+#include <include/intddraw.h>
 #include <include/menu.h>
 #include <include/monitor.h>
 #include <include/mouse.h>
Index: subsys/win32k/include/intddraw.h
===================================================================
RCS file: /CVS/ReactOS/reactos/subsys/win32k/include/intddraw.h,v
retrieving revision 1.2
diff -u -r1.2 intddraw.h
--- subsys/win32k/include/intddraw.h	12 Dec 2004 01:40:37 -0000	1.2
+++ subsys/win32k/include/intddraw.h	30 Dec 2004 13:39:10 -0000
@@ -61,7 +61,7 @@
 	PDD_SURFCB_UNLOCK               DdUnlockD3DBuffer;
 } DD_DIRECTDRAW, *PDD_DIRECTDRAW;
 
-BOOL FASTCALL DD_Cleanup(PDD_DIRECTDRAW pDD);
-BOOL FASTCALL DDSURF_Cleanup(PDD_SURFACE pDDSurf);
+BOOL INTERNAL_CALL DD_Cleanup(PVOID ObjectBody);
+BOOL INTERNAL_CALL DDSURF_Cleanup(PVOID ObjectBody);
 
 #endif /* _INT_W32k_DDRAW */
Index: subsys/win32k/ntddraw/ddraw.c
===================================================================
RCS file: /CVS/ReactOS/reactos/subsys/win32k/ntddraw/ddraw.c,v
retrieving revision 1.3
diff -u -r1.3 ddraw.c
--- subsys/win32k/ntddraw/ddraw.c	12 Dec 2004 01:40:37 -0000	1.3
+++ subsys/win32k/ntddraw/ddraw.c	30 Dec 2004 13:42:22 -0000
@@ -9,11 +9,7 @@
  *       25-10-2003  PB  Created
  */
 
-#include <ddk/ntddk.h>
-#include <win32k/ntddraw.h>
-#include <win32k/win32k.h>
-#include <include/intddraw.h>
-#include <win32k/gdiobj.h>
+#include <w32k.h>
 
 #define NDEBUG
 #include <debug.h>
@@ -22,9 +18,11 @@
 /* DIRECT DRAW OBJECT                                                   */
 /************************************************************************/
 
-BOOL FASTCALL
-DD_Cleanup(PDD_DIRECTDRAW pDD)
+BOOL INTERNAL_CALL
+DD_Cleanup(PVOID ObjectBody)
 {
+	PDD_DIRECTDRAW pDD = (PDD_DIRECTDRAW)ObjectBody;
+
 	pDD->DrvDisableDirectDraw(pDD->Global.dhpdev);
 	return TRUE;
 }
@@ -197,9 +195,10 @@
 /* SURFACE OBJECT                                                       */
 /************************************************************************/
 
-BOOL FASTCALL
-DDSURF_Cleanup(PDD_SURFACE pDDSurf)
+BOOL INTERNAL_CALL
+DDSURF_Cleanup(PVOID ObjectBody)
 {
+	/* PDD_SURFACE pDDSurf = (PDD_SURFACE)ObjectBody; */
 	//FIXME: implement
 	return TRUE;
 }
Index: subsys/win32k/objects/gdiobj.c
===================================================================
RCS file: /CVS/ReactOS/reactos/subsys/win32k/objects/gdiobj.c,v
retrieving revision 1.83
diff -u -r1.83 gdiobj.c
--- subsys/win32k/objects/gdiobj.c	21 Dec 2004 04:05:18 -0000	1.83
+++ subsys/win32k/objects/gdiobj.c	30 Dec 2004 13:31:28 -0000
@@ -97,8 +97,8 @@
   {GDI_OBJECT_TYPE_PEN,         sizeof(GDIBRUSHOBJ),   GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_FONT,        sizeof(TEXTOBJ),       GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_DCE,         sizeof(DCE),           DCE_Cleanup},
-/*{GDI_OBJECT_TYPE_DIRECTDRAW,  sizeof(DD_DIRECTDRAW), DD_Cleanup},
-  {GDI_OBJECT_TYPE_DD_SURFACE,  sizeof(DD_SURFACE),    DDSURF_Cleanup},*/
+  {GDI_OBJECT_TYPE_DIRECTDRAW,  sizeof(DD_DIRECTDRAW), DD_Cleanup},
+  {GDI_OBJECT_TYPE_DD_SURFACE,  sizeof(DD_SURFACE),    DDSURF_Cleanup},
   {GDI_OBJECT_TYPE_EXTPEN,      0,                     GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_METADC,      0,                     GDI_CleanupDummy},
   {GDI_OBJECT_TYPE_METAFILE,    0,                     GDI_CleanupDummy},


More information about the Ros-dev mailing list