- some new logging on device enumeration
- fix version setting in DirectInputCreate(A/W) functions

diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index c21328e..c29e29d 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -162,6 +162,12 @@
 	This = (IDirectInputImpl*)HeapAlloc(GetProcessHeap(),0,sizeof(IDirectInputImpl));
 	This->lpVtbl = &ddi7avt;
 	This->ref = 1;
+	if (dwVersion >= 0x0800) {
+	    This->version = 8;
+	} else {
+	    /* We do not differientiate between version 1, 2 and 7 */
+	    This->version = 1;
+	}
 	*ppDI = (IDirectInputA*)This;
 	return 0;
 
@@ -177,9 +183,50 @@
 	This = (IDirectInputImpl*)HeapAlloc(GetProcessHeap(),0,sizeof(IDirectInputImpl));
 	This->lpVtbl = &ddi7wvt;
 	This->ref = 1;
+	if (dwVersion >= 0x0800) {
+	    This->version = 8;
+	} else {
+	    /* We do not differientiate between version 1, 2 and 7 */
+	    This->version = 1;
+	}
 	*ppDI = (IDirectInputW*)This;
 	return 0;
+}
 
+static char *_dump_DIDEVTYPE_value(DWORD dwDevType) {
+    switch (dwDevType) {
+        case 0: return "All devices";
+	case DIDEVTYPE_MOUSE: return "DIDEVTYPE_MOUSE";
+	case DIDEVTYPE_KEYBOARD: return "DIDEVTYPE_KEYBOARD";
+	case DIDEVTYPE_JOYSTICK: return "DIDEVTYPE_JOYSTICK";
+	case DIDEVTYPE_DEVICE: return "DIDEVTYPE_DEVICE";
+	default: return "Unkown";
+    }
+}
+
+static void _dump_EnumDevices_dwFlags(DWORD dwFlags) {
+    if (TRACE_ON(dinput)) {
+	int   i;
+	static const struct {
+	    DWORD       mask;
+	    const char  *name;
+	} flags[] = {
+#define FE(x) { x, #x}
+	    FE(DIEDFL_ALLDEVICES),
+	    FE(DIEDFL_ATTACHEDONLY),
+	    FE(DIEDFL_FORCEFEEDBACK),
+	    FE(DIEDFL_INCLUDEALIASES),
+	    FE(DIEDFL_INCLUDEPHANTOMS)
+#undef FE
+	};
+	if (dwFlags == 0) {
+	    DPRINTF("DIEDFL_ALLDEVICES");
+	    return;
+	}
+	for (i = 0; i < (sizeof(flags) / sizeof(flags[0])); i++)
+	    if (flags[i].mask & dwFlags)
+		DPRINTF("%s ",flags[i].name);
+    }
 }
 
 /******************************************************************************
@@ -189,21 +236,25 @@
 	LPDIRECTINPUT7A iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback,
 	LPVOID pvRef, DWORD dwFlags)
 {
-	ICOM_THIS(IDirectInputImpl,iface);
-	DIDEVICEINSTANCEA devInstance;
-	int i;
-
-	TRACE("(this=%p,0x%04lx,%p,%p,%04lx)\n", This, dwDevType, lpCallback, pvRef, dwFlags);
-
-	for (i = 0; i < nrof_dinput_devices; i++) {
-	  devInstance.dwSize = sizeof(devInstance);
-	  if (dinput_devices[i]->enum_deviceA(dwDevType, dwFlags, &devInstance, This->version)) {
+    ICOM_THIS(IDirectInputImpl,iface);
+    DIDEVICEINSTANCEA devInstance;
+    int i;
+    
+    TRACE("(this=%p,0x%04lx '%s',%p,%p,%04lx)\n",
+	  This, dwDevType, _dump_DIDEVTYPE_value(dwDevType),
+	  lpCallback, pvRef, dwFlags);
+    TRACE(" flags: "); _dump_EnumDevices_dwFlags(dwFlags); TRACE("\n");
+    
+    for (i = 0; i < nrof_dinput_devices; i++) {
+	devInstance.dwSize = sizeof(devInstance);
+	TRACE("  - checking device %d ('%s')\n", i, dinput_devices[i]->name);
+	if (dinput_devices[i]->enum_deviceA(dwDevType, dwFlags, &devInstance, This->version)) {
 	    if (lpCallback(&devInstance,pvRef) == DIENUM_STOP)
-	      return 0;
-	  }
+		return 0;
 	}
-
-	return 0;
+    }
+    
+    return 0;
 }
 /******************************************************************************
  *	IDirectInputW_EnumDevices
@@ -212,21 +263,25 @@
 	LPDIRECTINPUT7W iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKW lpCallback,
 	LPVOID pvRef, DWORD dwFlags) 
 {
-	ICOM_THIS(IDirectInputImpl,iface);
-	DIDEVICEINSTANCEW devInstance;
-	int i;
-
-	TRACE("(this=%p,0x%04lx,%p,%p,%04lx)\n", This, dwDevType, lpCallback, pvRef, dwFlags);
-
-	for (i = 0; i < nrof_dinput_devices; i++) {
-	  devInstance.dwSize = sizeof(devInstance);
-	  if (dinput_devices[i]->enum_deviceW(dwDevType, dwFlags, &devInstance, This->version)) {
+    ICOM_THIS(IDirectInputImpl,iface);
+    DIDEVICEINSTANCEW devInstance;
+    int i;
+    
+    TRACE("(this=%p,0x%04lx '%s',%p,%p,%04lx)\n",
+	  This, dwDevType, _dump_DIDEVTYPE_value(dwDevType),
+	  lpCallback, pvRef, dwFlags);
+    TRACE(" flags: "); _dump_EnumDevices_dwFlags(dwFlags); TRACE("\n");
+    
+    for (i = 0; i < nrof_dinput_devices; i++) {
+	devInstance.dwSize = sizeof(devInstance);
+	TRACE("  - checking device %d ('%s')\n", i, dinput_devices[i]->name);
+	if (dinput_devices[i]->enum_deviceW(dwDevType, dwFlags, &devInstance, This->version)) {
 	    if (lpCallback(&devInstance,pvRef) == DIENUM_STOP)
-	      return 0;
-	  }
+		return 0;
 	}
-
-	return 0;
+    }
+    
+    return 0;
 }
 
 static ULONG WINAPI IDirectInputAImpl_AddRef(LPDIRECTINPUT7A iface)