Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
2.7 KiB

#ifndef __IDirectInputEffectDriver_H__
#define __IDirectInputEffectDriver_H__
#include <windows.h>
#include <unknwn.h>
#include <dinput.h>
#include "dinputd.h"
extern "C"
{
#include <hidsdi.h>
}
#include <crtdbg.h>
#include "..\ControlItemCollection\Dualmode.h"
#include "..\ControlItemCollection\Actions.h" // FORCE_BLOCK
// class IDirectInputEffectDriver;
//class CIDirectInputEffectDriver : public IUnknown
class CIDirectInputEffectDriver
{
public:
CIDirectInputEffectDriver(IDirectInputEffectDriver* pIPIDEffectDriver, IClassFactory* pIPIDClassFactory);
~CIDirectInputEffectDriver();
//IUnknown members
virtual HRESULT __stdcall QueryInterface(REFIID refiid, void** ppvObject);
virtual ULONG __stdcall AddRef();
virtual ULONG __stdcall Release();
//IDirectInputEffectDriver
virtual HRESULT __stdcall DeviceID(DWORD dwDIVersion, DWORD dwExternalID, DWORD dwIsBegining,
DWORD dwInternalID, void* pReserved);
virtual HRESULT __stdcall GetVersions(DIDRIVERVERSIONS* pDriverVersions);
virtual HRESULT __stdcall Escape(DWORD dwDeviceID, DWORD dwEffectID, DIEFFESCAPE* pEscape);
virtual HRESULT __stdcall SetGain(DWORD dwDeviceID, DWORD dwGain);
virtual HRESULT __stdcall SendForceFeedbackCommand(DWORD dwDeviceID, DWORD dwState);
virtual HRESULT __stdcall GetForceFeedbackState(DWORD dwDeviceID, DIDEVICESTATE* pDeviceState);
virtual HRESULT __stdcall DownloadEffect(DWORD dwDeviceID, DWORD dwInternalEffectType,
DWORD* pdwDnloadID, DIEFFECT* pEffect, DWORD dwFlags);
virtual HRESULT __stdcall DestroyEffect(DWORD dwDeviceID, DWORD dwDnloadID);
virtual HRESULT __stdcall StartEffect(DWORD dwDeviceID, DWORD dwDnloadID, DWORD dwMode, DWORD dwIterations);
virtual HRESULT __stdcall StopEffect(DWORD dwDeviceID, DWORD dwDnloadID);
virtual HRESULT __stdcall GetEffectStatus(DWORD dwDeviceID, DWORD dwDnloadID, DWORD* pdwStatusCode);
void WaitForForceSchemeChange();
private:
void InitHidInformation(LPDIHIDFFINITINFO pHIDInitInfo);
void SendSpringChange();
DWORD m_dwDIVersion;
DWORD m_dwExternalDeviceID;
DWORD m_dwInternalDeviceID;
ULONG m_ulReferenceCount;
IDirectInputEffectDriver* m_pIPIDEffectDriver;
IClassFactory* m_pIPIDClassFactory;
HANDLE m_hKernelDeviceDriver;
HANDLE m_hKernelDeviceDriverDuplicate;
HANDLE m_hHidDeviceDriver;
DWORD m_dwGcKernelDevice;
HANDLE m_hForceSchemeChangeWaitThread;
DWORD m_dwForceSchemeChangeThreadID;
FORCE_BLOCK m_ForceMapping;
PHIDP_PREPARSED_DATA m_pPreparsedData;
HIDD_ATTRIBUTES m_HidAttributes;
HIDP_CAPS m_HidCaps;
};
extern CIDirectInputEffectDriver* g_IEffectDriverObject;
#endif __IDirectInputEffectDriver_H__