Added support for multiple devices.

diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index c59b1b1..54365c7 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -238,7 +238,7 @@
 {
     IDirectInputImpl *This = (IDirectInputImpl *)iface;
     DIDEVICEINSTANCEA devInstance;
-    int i;
+    int i, j, r;
     
     TRACE("(this=%p,0x%04lx '%s',%p,%p,%04lx)\n",
 	  This, dwDevType, _dump_DIDEVTYPE_value(dwDevType),
@@ -246,11 +246,13 @@
     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;
+        for (j = 0, r = -1; r != 0; j++) {
+	    devInstance.dwSize = sizeof(devInstance);
+	    TRACE("  - checking device %d ('%s')\n", i, dinput_devices[i]->name);
+	    if ((r = dinput_devices[i]->enum_deviceA(dwDevType, dwFlags, &devInstance, This->version, j))) {
+	        if (lpCallback(&devInstance,pvRef) == DIENUM_STOP)
+		    return 0;
+	    }
 	}
     }
     
@@ -265,7 +267,7 @@
 {
     IDirectInputImpl *This = (IDirectInputImpl *)iface;
     DIDEVICEINSTANCEW devInstance;
-    int i;
+    int i, j, r;
     
     TRACE("(this=%p,0x%04lx '%s',%p,%p,%04lx)\n",
 	  This, dwDevType, _dump_DIDEVTYPE_value(dwDevType),
@@ -273,11 +275,13 @@
     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;
+        for (j = 0, r = -1; r != 0; j++) {
+	    devInstance.dwSize = sizeof(devInstance);
+	    TRACE("  - checking device %d ('%s')\n", i, dinput_devices[i]->name);
+	    if ((r = dinput_devices[i]->enum_deviceW(dwDevType, dwFlags, &devInstance, This->version, j))) {
+	        if (lpCallback(&devInstance,pvRef) == DIENUM_STOP)
+		    return 0;
+	    }
 	}
     }