diff --git a/ViGEmClient.h b/ViGEmClient.h index d88be23..844df83 100644 --- a/ViGEmClient.h +++ b/ViGEmClient.h @@ -32,6 +32,16 @@ extern "C" { #include "ViGEmCommon.h" +#ifdef VIGEM_DYNAMIC +#ifdef VIGEM_EXPORTS +#define VIGEM_API __declspec(dllexport) +#else +#define VIGEM_API __declspec(dllimport) +#endif +#else +#define VIGEM_API +#endif + /** * \typedef enum _VIGEM_ERRORS * @@ -109,7 +119,7 @@ typedef VOID(CALLBACK* PVIGEM_TARGET_ADD_RESULT)( * * \return A new driver connection object. */ -PVIGEM_CLIENT vigem_alloc(void); +VIGEM_API PVIGEM_CLIENT vigem_alloc(void); /** * \fn void vigem_free(PVIGEM_CLIENT vigem); @@ -121,7 +131,7 @@ PVIGEM_CLIENT vigem_alloc(void); * * \param vigem The driver connection object. */ -void vigem_free(PVIGEM_CLIENT vigem); +VIGEM_API void vigem_free(PVIGEM_CLIENT vigem); /** * \fn VIGEM_ERROR vigem_connect(PVIGEM_CLIENT vigem); @@ -136,7 +146,7 @@ void vigem_free(PVIGEM_CLIENT vigem); * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_connect(PVIGEM_CLIENT vigem); +VIGEM_API VIGEM_ERROR vigem_connect(PVIGEM_CLIENT vigem); /** * \fn void vigem_disconnect(PVIGEM_CLIENT vigem); @@ -151,7 +161,7 @@ VIGEM_ERROR vigem_connect(PVIGEM_CLIENT vigem); * * \param vigem The driver connection object. */ -void vigem_disconnect(PVIGEM_CLIENT vigem); +VIGEM_API void vigem_disconnect(PVIGEM_CLIENT vigem); /** * \fn PVIGEM_TARGET vigem_target_x360_alloc(void); @@ -163,7 +173,7 @@ void vigem_disconnect(PVIGEM_CLIENT vigem); * * \return A PVIGEM_TARGET representing an Xbox 360 Controller device. */ -PVIGEM_TARGET vigem_target_x360_alloc(void); +VIGEM_API PVIGEM_TARGET vigem_target_x360_alloc(void); /** * \fn PVIGEM_TARGET vigem_target_ds4_alloc(void); @@ -175,7 +185,7 @@ PVIGEM_TARGET vigem_target_x360_alloc(void); * * \return A PVIGEM_TARGET representing a DualShock 4 Controller device. */ -PVIGEM_TARGET vigem_target_ds4_alloc(void); +VIGEM_API PVIGEM_TARGET vigem_target_ds4_alloc(void); /** * \fn void vigem_target_free(PVIGEM_TARGET target); @@ -190,7 +200,7 @@ PVIGEM_TARGET vigem_target_ds4_alloc(void); * * \param target The target device object. */ -void vigem_target_free(PVIGEM_TARGET target); +VIGEM_API void vigem_target_free(PVIGEM_TARGET target); /** * \fn VIGEM_ERROR vigem_target_add(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); @@ -207,7 +217,7 @@ void vigem_target_free(PVIGEM_TARGET target); * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_add(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); +VIGEM_API VIGEM_ERROR vigem_target_add(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); /** * \fn VIGEM_ERROR vigem_target_add_async(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_TARGET_ADD_RESULT result); @@ -226,7 +236,7 @@ VIGEM_ERROR vigem_target_add(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_add_async(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_TARGET_ADD_RESULT result); +VIGEM_API VIGEM_ERROR vigem_target_add_async(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_TARGET_ADD_RESULT result); /** * \fn VIGEM_ERROR vigem_target_remove(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); @@ -244,7 +254,7 @@ VIGEM_ERROR vigem_target_add_async(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PV * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_remove(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); +VIGEM_API VIGEM_ERROR vigem_target_remove(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); /** * \fn VIGEM_ERROR vigem_target_x360_register_notification(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_X360_NOTIFICATION notification); @@ -262,7 +272,7 @@ VIGEM_ERROR vigem_target_remove(PVIGEM_CLIENT vigem, PVIGEM_TARGET target); * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_x360_register_notification(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_X360_NOTIFICATION notification); +VIGEM_API VIGEM_ERROR vigem_target_x360_register_notification(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_X360_NOTIFICATION notification); /** * \fn VIGEM_ERROR vigem_target_ds4_register_notification(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_DS4_NOTIFICATION notification); @@ -280,7 +290,7 @@ VIGEM_ERROR vigem_target_x360_register_notification(PVIGEM_CLIENT vigem, PVIGEM_ * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_ds4_register_notification(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_DS4_NOTIFICATION notification); +VIGEM_API VIGEM_ERROR vigem_target_ds4_register_notification(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, PVIGEM_DS4_NOTIFICATION notification); /** * \fn void vigem_target_x360_unregister_notification(PVIGEM_TARGET target); @@ -292,7 +302,7 @@ VIGEM_ERROR vigem_target_ds4_register_notification(PVIGEM_CLIENT vigem, PVIGEM_T * * \param target The target device object. */ -void vigem_target_x360_unregister_notification(PVIGEM_TARGET target); +VIGEM_API void vigem_target_x360_unregister_notification(PVIGEM_TARGET target); /** * \fn void vigem_target_ds4_unregister_notification(PVIGEM_TARGET target); @@ -304,7 +314,7 @@ void vigem_target_x360_unregister_notification(PVIGEM_TARGET target); * * \param target The target device object. */ -void vigem_target_ds4_unregister_notification(PVIGEM_TARGET target); +VIGEM_API void vigem_target_ds4_unregister_notification(PVIGEM_TARGET target); /** * \fn void vigem_target_set_vid(PVIGEM_TARGET target, USHORT vid); @@ -317,7 +327,7 @@ void vigem_target_ds4_unregister_notification(PVIGEM_TARGET target); * \param target The target device object. * \param vid The Vendor ID to set. */ -void vigem_target_set_vid(PVIGEM_TARGET target, USHORT vid); +VIGEM_API void vigem_target_set_vid(PVIGEM_TARGET target, USHORT vid); /** * \fn void vigem_target_set_pid(PVIGEM_TARGET target, USHORT pid); @@ -330,7 +340,7 @@ void vigem_target_set_vid(PVIGEM_TARGET target, USHORT vid); * \param target The target device object. * \param pid The Product ID to set. */ -void vigem_target_set_pid(PVIGEM_TARGET target, USHORT pid); +VIGEM_API void vigem_target_set_pid(PVIGEM_TARGET target, USHORT pid); /** * \fn USHORT vigem_target_get_vid(PVIGEM_TARGET target); @@ -344,7 +354,7 @@ void vigem_target_set_pid(PVIGEM_TARGET target, USHORT pid); * * \return The Vendor ID. */ -USHORT vigem_target_get_vid(PVIGEM_TARGET target); +VIGEM_API USHORT vigem_target_get_vid(PVIGEM_TARGET target); /** * \fn USHORT vigem_target_get_pid(PVIGEM_TARGET target); @@ -358,7 +368,7 @@ USHORT vigem_target_get_vid(PVIGEM_TARGET target); * * \return The Product ID. */ -USHORT vigem_target_get_pid(PVIGEM_TARGET target); +VIGEM_API USHORT vigem_target_get_pid(PVIGEM_TARGET target); /** * \fn VIGEM_ERROR vigem_target_x360_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, XUSB_REPORT report); @@ -374,7 +384,7 @@ USHORT vigem_target_get_pid(PVIGEM_TARGET target); * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_x360_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, XUSB_REPORT report); +VIGEM_API VIGEM_ERROR vigem_target_x360_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, XUSB_REPORT report); /** * \fn VIGEM_ERROR vigem_target_ds4_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, DS4_REPORT report); @@ -390,7 +400,7 @@ VIGEM_ERROR vigem_target_x360_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, * * \return A VIGEM_ERROR. */ -VIGEM_ERROR vigem_target_ds4_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, DS4_REPORT report); +VIGEM_API VIGEM_ERROR vigem_target_ds4_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, DS4_REPORT report); /** * \fn ULONG vigem_target_get_index(PVIGEM_TARGET target); @@ -409,7 +419,7 @@ VIGEM_ERROR vigem_target_ds4_update(PVIGEM_CLIENT vigem, PVIGEM_TARGET target, D * * \return The internally used index of the target device. */ -ULONG vigem_target_get_index(PVIGEM_TARGET target); +VIGEM_API ULONG vigem_target_get_index(PVIGEM_TARGET target); /** * \fn VIGEM_TARGET_TYPE vigem_target_get_type(PVIGEM_TARGET target); @@ -423,7 +433,7 @@ ULONG vigem_target_get_index(PVIGEM_TARGET target); * * \return A VIGEM_TARGET_TYPE. */ -VIGEM_TARGET_TYPE vigem_target_get_type(PVIGEM_TARGET target); +VIGEM_API VIGEM_TARGET_TYPE vigem_target_get_type(PVIGEM_TARGET target); /** * \fn BOOL vigem_target_is_attached(PVIGEM_TARGET target); @@ -438,7 +448,7 @@ VIGEM_TARGET_TYPE vigem_target_get_type(PVIGEM_TARGET target); * * \return TRUE if device is attached to the bus, FALSE otherwise. */ -BOOL vigem_target_is_attached(PVIGEM_TARGET target); +VIGEM_API BOOL vigem_target_is_attached(PVIGEM_TARGET target); #ifdef __cplusplus }