- DInput WideChar classes support. This time all dinput versions have
  widechar classes.
- fix a stupid bug in callback handling caught by Lionel.
- add some forgotten IID on class factory (better if we want to active
  the code)
- many cleanups on COM Macros (don't need A and W variants as they are
  the same)

diff --git a/dlls/dinput/dinput_private.h b/dlls/dinput/dinput_private.h
index 918714b..55201c7 100644
--- a/dlls/dinput/dinput_private.h
+++ b/dlls/dinput/dinput_private.h
@@ -23,8 +23,8 @@
 #include "dinput.h"
 
 /* Implementation specification */
-typedef struct IDirectInputAImpl IDirectInputAImpl;
-struct IDirectInputAImpl
+typedef struct IDirectInputImpl IDirectInputImpl;
+struct IDirectInputImpl
 {
    LPVOID lpVtbl;
    DWORD  ref;
@@ -38,11 +38,13 @@
 /* Function called by all devices that Wine supports */
 typedef struct dinput_device {
   INT pref;
-  BOOL (*enum_device)(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEA lpddi, int version);
-  HRESULT (*create_device)(IDirectInputAImpl *dinput, REFGUID rguid, REFIID riid, LPDIRECTINPUTDEVICEA* pdev);
+  BOOL (*enum_deviceA)(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEA lpddi, int version);
+  BOOL (*enum_deviceW)(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEW lpddi, int version);
+  HRESULT (*create_deviceA)(IDirectInputImpl *dinput, REFGUID rguid, REFIID riid, LPDIRECTINPUTDEVICEA* pdev);
+  HRESULT (*create_deviceW)(IDirectInputImpl *dinput, REFGUID rguid, REFIID riid, LPDIRECTINPUTDEVICEW* pdev);
 } dinput_device;
 
-extern void dinput_register_device(dinput_device *device) ;
+extern void dinput_register_device(dinput_device *device);
 
 extern HINSTANCE DINPUT_instance;