windows-nt/Source/XPSP1/NT/multimedia/directx/dinput/dx8/dimap/dimap.h
2020-09-26 16:20:57 +08:00

208 lines
8.4 KiB
C

/******************************************************************************
*
* dimap.h
*
* Copyright (c) 1999, 2000 Microsoft Corporation. All Rights Reserved.
*
* Abstract:
*
* Contents:
*
*****************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _DIMAP_H
#define _DIMAP_H
#include "dinput.h"
//temporary error codes
//If codes are changed or more are added,
//change exception handling dump as well.
#define E_SYNTAX_ERROR \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000600L)
#define E_DEFINITION_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000601L)
#define E_LINE_TO_LONG \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000602L)
#define E_ACTION_NOT_DEFINED \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000603L)
#define E_DEVICE_NOT_DEFINED \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000604L)
#define E_VENDORID_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000605L)
#define E_PRODUCTID_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000606L)
#define E_USAGE_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000607L)
#define E_USAGEPAGE_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000608L)
#define E_DEVICE_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000609L)
#define E_BAD_VERSION \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0000060aL)
#define E_DEVICE_MISSING_CONTROL \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0000060bL)
#define E_DEV_OBJ_NOT_FOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0000060cL)
#define E_CTRL_W_OFFSET_NOTFOUND \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0000060dL)
#define E_FILENAME_TO_LONG \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0000060eL)
#define E_WRONG_ALIGN_DATA \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x0000060fL)
#define E_CORRUPT_IMAGE_DATA \
MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000610L)
#define S_NOMAP ((HRESULT)0x00000002L)
#undef INTERFACE
#define INTERFACE IDirectInputMapperW
DECLARE_INTERFACE_(IDirectInputMapperW, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectInputMapperW methods ***/
// STDMETHOD(Unacquire)(THIS) PURE;
// STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
STDMETHOD(Initialize)(THIS_ LPCGUID,LPCWSTR,DWORD) PURE;
STDMETHOD(GetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,LPFILETIME,DWORD) PURE;
STDMETHOD(SaveActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE;
STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE;
};
typedef struct IDirectInputMapperW *LPDIRECTINPUTMAPPERW;
#undef INTERFACE
#define INTERFACE IDirectInputMapperA
DECLARE_INTERFACE_(IDirectInputMapperA, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectInputMapperA methods ***/
// STDMETHOD(Unacquire)(THIS) PURE;
// STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
STDMETHOD(Initialize)(THIS_ LPCGUID,LPCSTR,DWORD) PURE;
STDMETHOD(GetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,LPFILETIME,DWORD) PURE;
STDMETHOD(SaveActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE;
STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE;
};
typedef struct IDirectInputMapperA *LPDIRECTINPUTMAPPERA;
#undef INTERFACE
#define INTERFACE IDirectInputMapperVendorW
DECLARE_INTERFACE_(IDirectInputMapperVendorW, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectInputMapperVendorW methods ***/
STDMETHOD(Initialize)(THIS_ LPCGUID,LPCWSTR,DWORD) PURE;
STDMETHOD(WriteVendorFile)(THIS_ LPDIACTIONFORMATW,LPDIDEVICEIMAGEINFOHEADERW,DWORD) PURE;
};
typedef struct IDirectInputMapperVendorW *LPDIRECTINPUTMAPPERVENDORW;
#undef INTERFACE
#define INTERFACE IDirectInputMapperVendorA
DECLARE_INTERFACE_(IDirectInputMapperVendorA, IUnknown)
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;
/*** IDirectInputMapperVendorA methods ***/
STDMETHOD(Initialize)(THIS_ LPCGUID,LPCSTR,DWORD) PURE;
STDMETHOD(WriteVendorFile)(THIS_ LPDIACTIONFORMATA,LPDIDEVICEIMAGEINFOHEADERA,DWORD) PURE;
};
typedef struct IDirectInputMapperVendorA *LPDIRECTINPUTMAPPERVENDORA;
#ifdef UNICODE
#define IID_IDirectInputMapI IID_IDirectInputMapIW
#define IDirectInputMapper IDirectInputMapperW
#define IDirectInputMapperVtbl IDirectInputMapperWVtbl
#define IID_IDirectInputMapperVendor IID_IDirectInputMapperVendorW
#define IDirectInputMapperVendor IDirectInputMapperVendorW
#define IDirectInputMapperVendorVtbl IDirectInputMapperVendorWVtbl
#else
#define IID_IDirectInputMapI IID_IDirectInputMapIA
#define IDirectInputMapper IDirectInputMapperA
#define IDirectInputMapperVtbl IDirectInputMapperAVtbl
#define IID_IDirectInputMapperVendor IID_IDirectInputMapperVendorA
#define IDirectInputMapperVendor IDirectInputMapperVendorA
#define IDirectInputMapperVendorVtbl IDirectInputMapperVendorAVtbl
#endif
typedef struct IDirectInputMapper *LPDIRECTINPUTMAPPER;
typedef struct IDirectInputMapperVendor *LPDIRECTINPUTMAPPERVENDOR;
#if !defined(__cplusplus) || defined(CINTERFACE)
#define IDirectInputMapper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectInputMapper_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectInputMapper_Release(p) (p)->lpVtbl->Release(p)
//#define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)
//#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
#define IDirectInputMapper_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
#define IDirectInputMapper_GetActionMap(p,a,b,c,d) (p)->lpVtbl->GetActionMap(p,a,b,c,d)
#define IDirectInputMapper_SaveActionMap(p,a,b,c) (p)->lpVtbl->SaveActionMap(p,a,b,c)
#define IDirectInputMapper_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a)
#define IDirectInputMapperVendor_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDirectInputMapperVendor_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDirectInputMapperVendor_Release(p) (p)->lpVtbl->Release(p)
#define IDirectInputMapperVendor_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
#define IDirectInputMapperVendor_WriteVendorFile(p,a,b,c) (p)->lpVtbl->WriteVendorFile(p,a,b,c)
#else
#define IDirectInputMapper_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
#define IDirectInputMapper_AddRef(p) (p)->AddRef()
#define IDirectInputMapper_Release(p) (p)->Release()
//#define IDirectInputDevice_Unacquire(p) (p)->Unacquire()
//#define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
#define IDirectInputMapper_Initialize(p,a,b,c) (p)->Initialize(p,a,b,c)
#define IDirectInputMapper_GetActionMap(p,a,b,c,d) (p)->GetActionMap(p,a,b,c,d)
#define IDirectInputMapper_SaveActionMap(p,a,b,c) (p)->SaveActionMap(p,a,b,c)
#define IDirectInputMapper_GetImageInfo(p,a) (p)->GetImageInfo(p,a)
#define IDirectInputMapperVendor_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
#define IDirectInputMapperVendor_AddRef(p) (p)->AddRef(p)
#define IDirectInputMapperVendor_Release(p) (p)->Release(p)
#define IDirectInputMapperVendor_Initialize(p,a,b,c) (p)->Initialize(p,a,b,c)
#define IDirectInputMapperVendor_WriteVendorFile(p,a,b,c) (p)->WriteVendorFile(p,a,b,c)
#endif
//{E364F0AE-60F7-4550-ABF1-BABBE085D68E}
DEFINE_GUID(IID_IDirectInputMapIA,0xe364f0ae,0x60f7,0x4550,0xab,0xf1,0xba,0xbb,0xe0,0x85,0xd6,0x8e);
//{01E8A5B8-7A8E-4565-9FF0-36FCD8E33B79}
DEFINE_GUID(IID_IDirectInputMapIW,0x01e8a5b8,0x7a8e,0x4565,0x9f,0xf0,0x36,0xfc,0xd8,0xe3,0x3b,0x79);
//{EE3DBC5D-9EFE-4c09-B044-7D9BBB32FC4E}
DEFINE_GUID(IID_IDirectInputMapClsFact,0xee3dbc5d,0x9efe,0x4c09,0xb0,0x44,0x7d,0x9b,0xbb,0x32,0xfc,0x4e);
// {44C5D19C-49F3-4fba-92A7-00E3A69CD595}
DEFINE_GUID(IID_IDirectInputMapVendorIA,0x44c5d19c,0x49f3,0x4fba,0x92,0xa7,0x00,0xe3,0xa6,0x9c,0xd5,0x95);
// {9FB90FFB-F9A2-4e9b-949E-1617F08EB549}
DEFINE_GUID(IID_IDirectInputMapVendorIW,0x9fb90ffb,0xf9a2,0x4e9b,0x94,0x9e,0x16,0x17,0xf0,0x8e,0xb5,0x49);
#endif
#ifdef __cplusplus
} /* ... extern "C" */
#endif