ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

device_private.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2000 Lionel Ulmer
00003  * Copyright 2000-2001 TransGaming Technologies Inc.
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Lesser General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2.1 of the License, or (at your option) any later version.
00009  *
00010  * This library is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Lesser General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Lesser General Public
00016  * License along with this library; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00018  */
00019 
00020 #ifndef __WINE_DLLS_DINPUT_DINPUTDEVICE_PRIVATE_H
00021 #define __WINE_DLLS_DINPUT_DINPUTDEVICE_PRIVATE_H
00022 
00023 #include <stdarg.h>
00024 
00025 #include "windef.h"
00026 #include "winbase.h"
00027 #include "dinput.h"
00028 #include "wine/list.h"
00029 #include "dinput_private.h"
00030 
00031 typedef struct
00032 {
00033     int size;
00034     int offset_in;
00035     int offset_out;
00036     int value;
00037 } DataTransform;
00038 
00039 typedef struct
00040 {
00041     int                         size;
00042     int                         internal_format_size;
00043     DataTransform              *dt;
00044 
00045     int                        *offsets;     /* object offsets */
00046     LPDIDATAFORMAT              wine_df;     /* wine internal data format */
00047     LPDIDATAFORMAT              user_df;     /* user defined data format */
00048 } DataFormat;
00049 
00050 /* Device implementation */
00051 typedef struct IDirectInputDevice2AImpl IDirectInputDevice2AImpl;
00052 struct IDirectInputDevice2AImpl
00053 {
00054     const void                 *lpVtbl;
00055     LONG                        ref;
00056     GUID                        guid;
00057     CRITICAL_SECTION            crit;
00058     IDirectInputImpl           *dinput;
00059     struct list                 entry;       /* entry into IDirectInput devices list */
00060     HANDLE                      hEvent;
00061     DWORD                       dwCoopLevel;
00062     HWND                        win;
00063     int                         acquired;
00064     DI_EVENT_PROC               event_proc;  /* function to receive mouse & keyboard events */
00065 
00066     LPDIDEVICEOBJECTDATA        data_queue;  /* buffer for 'GetDeviceData'.                 */
00067     int                         queue_len;   /* size of the queue - set in 'SetProperty'    */
00068     int                         queue_head;  /* position to write new event into queue      */
00069     int                         queue_tail;  /* next event to read from queue               */
00070     BOOL                        overflow;    /* return DI_BUFFEROVERFLOW in 'GetDeviceData' */
00071 
00072     DataFormat                  data_format; /* user data format and wine to user format converter */
00073 };
00074 
00075 extern BOOL get_app_key(HKEY*, HKEY*);
00076 extern DWORD get_config_key(HKEY, HKEY, const char*, char*, DWORD);
00077 
00078 /* Routines to do DataFormat / WineFormat conversions */
00079 extern void fill_DataFormat(void *out, DWORD size, const void *in, const DataFormat *df) ;
00080 extern void release_DataFormat(DataFormat *df) ;
00081 extern void queue_event(LPDIRECTINPUTDEVICE8A iface, int ofs, DWORD data, DWORD time, DWORD seq);
00082 /* Helper functions to work with data format */
00083 extern int id_to_object(LPCDIDATAFORMAT df, int id);
00084 extern int id_to_offset(const DataFormat *df, int id);
00085 extern int find_property(const DataFormat *df, LPCDIPROPHEADER ph);
00086 
00087 /* Common joystick stuff */
00088 typedef struct
00089 {
00090     LONG lDevMin;
00091     LONG lDevMax;
00092     LONG lMin;
00093     LONG lMax;
00094     LONG lDeadZone;
00095     LONG lSaturation;
00096 } ObjProps;
00097 
00098 extern DWORD joystick_map_pov(POINTL *p);
00099 extern LONG joystick_map_axis(ObjProps *props, int val);
00100 
00101 typedef struct
00102 {
00103     struct list entry;
00104     LPDIRECTINPUTEFFECT ref;
00105 } effect_list_item;
00106 
00107 extern const GUID DInput_Wine_Keyboard_GUID;
00108 extern const GUID DInput_Wine_Mouse_GUID;
00109 
00110 /* Various debug tools */
00111 extern void _dump_DIPROPHEADER(LPCDIPROPHEADER diph) ;
00112 extern void _dump_OBJECTINSTANCEA(const DIDEVICEOBJECTINSTANCEA *ddoi) ;
00113 extern void _dump_OBJECTINSTANCEW(const DIDEVICEOBJECTINSTANCEW *ddoi) ;
00114 extern void _dump_DIDATAFORMAT(const DIDATAFORMAT *df) ;
00115 extern const char *_dump_dinput_GUID(const GUID *guid) ;
00116 
00117 /* And the stubs */
00118 extern HRESULT WINAPI IDirectInputDevice2AImpl_Acquire(LPDIRECTINPUTDEVICE8A iface);
00119 extern HRESULT WINAPI IDirectInputDevice2AImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface);
00120 extern HRESULT WINAPI IDirectInputDevice2AImpl_SetDataFormat(
00121     LPDIRECTINPUTDEVICE8A iface,LPCDIDATAFORMAT df ) ;
00122 extern HRESULT WINAPI IDirectInputDevice2AImpl_SetCooperativeLevel(
00123     LPDIRECTINPUTDEVICE8A iface,HWND hwnd,DWORD dwflags ) ;
00124 extern HRESULT WINAPI IDirectInputDevice2AImpl_SetEventNotification(
00125     LPDIRECTINPUTDEVICE8A iface,HANDLE hnd ) ;
00126 extern ULONG WINAPI IDirectInputDevice2AImpl_Release(LPDIRECTINPUTDEVICE8A iface) ;
00127 extern HRESULT WINAPI IDirectInputDevice2AImpl_QueryInterface(LPDIRECTINPUTDEVICE8A iface,REFIID riid,LPVOID *ppobj);
00128 extern HRESULT WINAPI IDirectInputDevice2WImpl_QueryInterface(LPDIRECTINPUTDEVICE8W iface,REFIID riid,LPVOID *ppobj);
00129 extern ULONG WINAPI IDirectInputDevice2AImpl_AddRef(
00130     LPDIRECTINPUTDEVICE8A iface) ;
00131 extern HRESULT WINAPI IDirectInputDevice2AImpl_EnumObjects(
00132     LPDIRECTINPUTDEVICE8A iface,
00133     LPDIENUMDEVICEOBJECTSCALLBACKA lpCallback,
00134     LPVOID lpvRef,
00135     DWORD dwFlags) ;
00136 extern HRESULT WINAPI IDirectInputDevice2WImpl_EnumObjects(
00137     LPDIRECTINPUTDEVICE8W iface,
00138     LPDIENUMDEVICEOBJECTSCALLBACKW lpCallback,
00139     LPVOID lpvRef,
00140     DWORD dwFlags) ;
00141 extern HRESULT WINAPI IDirectInputDevice2AImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPDIPROPHEADER pdiph);
00142 extern HRESULT WINAPI IDirectInputDevice2AImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPCDIPROPHEADER pdiph);
00143 extern HRESULT WINAPI IDirectInputDevice2AImpl_GetObjectInfo(
00144     LPDIRECTINPUTDEVICE8A iface,
00145     LPDIDEVICEOBJECTINSTANCEA pdidoi,
00146     DWORD dwObj,
00147     DWORD dwHow) ;
00148 extern HRESULT WINAPI IDirectInputDevice2WImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface, 
00149                                  LPDIDEVICEOBJECTINSTANCEW pdidoi,
00150                                  DWORD dwObj,
00151                                  DWORD dwHow);
00152 extern HRESULT WINAPI IDirectInputDevice2AImpl_GetDeviceData(LPDIRECTINPUTDEVICE8A iface,
00153         DWORD dodsize, LPDIDEVICEOBJECTDATA dod, LPDWORD entries, DWORD flags);
00154 extern HRESULT WINAPI IDirectInputDevice2AImpl_RunControlPanel(
00155     LPDIRECTINPUTDEVICE8A iface,
00156     HWND hwndOwner,
00157     DWORD dwFlags) ;
00158 extern HRESULT WINAPI IDirectInputDevice2AImpl_Initialize(
00159     LPDIRECTINPUTDEVICE8A iface,
00160     HINSTANCE hinst,
00161     DWORD dwVersion,
00162     REFGUID rguid) ;
00163 extern HRESULT WINAPI IDirectInputDevice2AImpl_CreateEffect(
00164     LPDIRECTINPUTDEVICE8A iface,
00165     REFGUID rguid,
00166     LPCDIEFFECT lpeff,
00167     LPDIRECTINPUTEFFECT *ppdef,
00168     LPUNKNOWN pUnkOuter) ;
00169 extern HRESULT WINAPI IDirectInputDevice2AImpl_EnumEffects(
00170     LPDIRECTINPUTDEVICE8A iface,
00171     LPDIENUMEFFECTSCALLBACKA lpCallback,
00172     LPVOID lpvRef,
00173     DWORD dwFlags) ;
00174 extern HRESULT WINAPI IDirectInputDevice2WImpl_EnumEffects(
00175     LPDIRECTINPUTDEVICE8W iface,
00176     LPDIENUMEFFECTSCALLBACKW lpCallback,
00177     LPVOID lpvRef,
00178     DWORD dwFlags) ;
00179 extern HRESULT WINAPI IDirectInputDevice2AImpl_GetEffectInfo(
00180     LPDIRECTINPUTDEVICE8A iface,
00181     LPDIEFFECTINFOA lpdei,
00182     REFGUID rguid) ;
00183 extern HRESULT WINAPI IDirectInputDevice2WImpl_GetEffectInfo(
00184     LPDIRECTINPUTDEVICE8W iface,
00185     LPDIEFFECTINFOW lpdei,
00186     REFGUID rguid) ;
00187 extern HRESULT WINAPI IDirectInputDevice2AImpl_GetForceFeedbackState(
00188     LPDIRECTINPUTDEVICE8A iface,
00189     LPDWORD pdwOut) ;
00190 extern HRESULT WINAPI IDirectInputDevice2AImpl_SendForceFeedbackCommand(
00191     LPDIRECTINPUTDEVICE8A iface,
00192     DWORD dwFlags) ;
00193 extern HRESULT WINAPI IDirectInputDevice2AImpl_EnumCreatedEffectObjects(
00194     LPDIRECTINPUTDEVICE8A iface,
00195     LPDIENUMCREATEDEFFECTOBJECTSCALLBACK lpCallback,
00196     LPVOID lpvRef,
00197     DWORD dwFlags) ;
00198 extern HRESULT WINAPI IDirectInputDevice2AImpl_Escape(
00199     LPDIRECTINPUTDEVICE8A iface,
00200     LPDIEFFESCAPE lpDIEEsc) ;
00201 extern HRESULT WINAPI IDirectInputDevice2AImpl_Poll(
00202     LPDIRECTINPUTDEVICE8A iface) ;
00203 extern HRESULT WINAPI IDirectInputDevice2AImpl_SendDeviceData(
00204     LPDIRECTINPUTDEVICE8A iface,
00205     DWORD cbObjectData,
00206     LPCDIDEVICEOBJECTDATA rgdod,
00207     LPDWORD pdwInOut,
00208     DWORD dwFlags) ;
00209 extern HRESULT WINAPI IDirectInputDevice7AImpl_EnumEffectsInFile(LPDIRECTINPUTDEVICE8A iface,
00210                                  LPCSTR lpszFileName,
00211                                  LPDIENUMEFFECTSINFILECALLBACK pec,
00212                                  LPVOID pvRef,
00213                                  DWORD dwFlags) ;
00214 extern HRESULT WINAPI IDirectInputDevice7WImpl_EnumEffectsInFile(LPDIRECTINPUTDEVICE8W iface,
00215                                  LPCWSTR lpszFileName,
00216                                  LPDIENUMEFFECTSINFILECALLBACK pec,
00217                                  LPVOID pvRef,
00218                                  DWORD dwFlags) ;
00219 extern HRESULT WINAPI IDirectInputDevice7AImpl_WriteEffectToFile(LPDIRECTINPUTDEVICE8A iface,
00220                                  LPCSTR lpszFileName,
00221                                  DWORD dwEntries,
00222                                  LPDIFILEEFFECT rgDiFileEft,
00223                                  DWORD dwFlags) ;
00224 extern HRESULT WINAPI IDirectInputDevice7WImpl_WriteEffectToFile(LPDIRECTINPUTDEVICE8W iface,
00225                                  LPCWSTR lpszFileName,
00226                                  DWORD dwEntries,
00227                                  LPDIFILEEFFECT rgDiFileEft,
00228                                  DWORD dwFlags) ;
00229 extern HRESULT WINAPI IDirectInputDevice8AImpl_BuildActionMap(LPDIRECTINPUTDEVICE8A iface,
00230                                   LPDIACTIONFORMATA lpdiaf,
00231                                   LPCSTR lpszUserName,
00232                                   DWORD dwFlags);
00233 extern HRESULT WINAPI IDirectInputDevice8WImpl_BuildActionMap(LPDIRECTINPUTDEVICE8W iface,
00234                                   LPDIACTIONFORMATW lpdiaf,
00235                                   LPCWSTR lpszUserName,
00236                                   DWORD dwFlags);
00237 extern HRESULT WINAPI IDirectInputDevice8AImpl_SetActionMap(LPDIRECTINPUTDEVICE8A iface,
00238                                 LPDIACTIONFORMATA lpdiaf,
00239                                 LPCSTR lpszUserName,
00240                                 DWORD dwFlags);
00241 extern HRESULT WINAPI IDirectInputDevice8WImpl_SetActionMap(LPDIRECTINPUTDEVICE8W iface,
00242                                 LPDIACTIONFORMATW lpdiaf,
00243                                 LPCWSTR lpszUserName,
00244                                 DWORD dwFlags);
00245 extern HRESULT WINAPI IDirectInputDevice8AImpl_GetImageInfo(LPDIRECTINPUTDEVICE8A iface,
00246                                 LPDIDEVICEIMAGEINFOHEADERA lpdiDevImageInfoHeader);
00247 extern HRESULT WINAPI IDirectInputDevice8WImpl_GetImageInfo(LPDIRECTINPUTDEVICE8W iface,
00248                                 LPDIDEVICEIMAGEINFOHEADERW lpdiDevImageInfoHeader);
00249 
00250 #endif /* __WINE_DLLS_DINPUT_DINPUTDEVICE_PRIVATE_H */

Generated on Sun May 27 2012 04:21:31 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.