LPUNKNOWN pUnkOuter did check it was NULL and return 
forget it should be not equal with NULL it return 
thx to mifritscher did the first test to find my mistake
Modified: trunk/reactos/lib/ddraw/ddraw.c

Modified: trunk/reactos/lib/ddraw/ddraw.c
--- trunk/reactos/lib/ddraw/ddraw.c	2005-03-20 17:39:11 UTC (rev 14227)
+++ trunk/reactos/lib/ddraw/ddraw.c	2005-03-20 18:20:59 UTC (rev 14228)
@@ -15,14 +15,14 @@
                
 HRESULT WINAPI DirectDrawCreate(LPGUID lpGUID, LPDIRECTDRAW* lplpDD, LPUNKNOWN pUnkOuter) 
 {    	
-    if (pUnkOuter==NULL) return DDERR_INVALIDPARAMS;
+    if (pUnkOuter!=NULL) return DDERR_INVALIDPARAMS;
 	return DDRAW_Create(lpGUID, (LPVOID*) lplpDD, pUnkOuter, &IID_IDirectDraw, FALSE);
 }
 
                 
 HRESULT WINAPI DirectDrawCreateEx(LPGUID lpGUID, LPVOID* lplpDD, REFIID iid, LPUNKNOWN pUnkOuter)
 {
-	if (pUnkOuter==NULL) return DDERR_INVALIDPARAMS;
+	if (pUnkOuter!=NULL) return DDERR_INVALIDPARAMS;
 	if (!IsEqualGUID(iid, &IID_IDirectDraw7)) return DDERR_INVALIDPARAMS;
 
     return DDRAW_Create(lpGUID, lplpDD, pUnkOuter, iid, TRUE);