mirror of
https://git.suyu.dev/suyu/Yucom.git
synced 2026-01-06 14:38:05 +01:00
vrclient: Respect provided struct sizes when returning structures.
CW-Bug-Id: #22729 CW-Bug-Id: #23147
This commit is contained in:
parent
37dc6df5eb
commit
77c5345632
6 changed files with 503 additions and 95 deletions
|
|
@ -69,18 +69,22 @@ uint32_t __thiscall winIVRInput_IVRInput_004_GetDigitalActionData( struct w_stea
|
|||
w_InputDigitalActionData_t *pActionData,
|
||||
uint32_t unActionDataSize, uint32_t ulRestrictToDevice )
|
||||
{
|
||||
w_InputDigitalActionData_t w_pActionData;
|
||||
struct IVRInput_IVRInput_004_GetDigitalActionData_params params =
|
||||
{
|
||||
.linux_side = _this->u_iface,
|
||||
.action = action,
|
||||
.pActionData = pActionData,
|
||||
.pActionData = pActionData ? &w_pActionData : NULL,
|
||||
.unActionDataSize = unActionDataSize,
|
||||
.ulRestrictToDevice = ulRestrictToDevice,
|
||||
};
|
||||
|
||||
TRACE( "%p\n", _this );
|
||||
|
||||
unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) );
|
||||
if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize );
|
||||
VRCLIENT_CALL( IVRInput_IVRInput_004_GetDigitalActionData, ¶ms );
|
||||
if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize );
|
||||
#ifdef __x86_64__
|
||||
return params._ret;
|
||||
#else
|
||||
|
|
@ -93,18 +97,22 @@ uint32_t __thiscall winIVRInput_IVRInput_005_GetDigitalActionData( struct w_stea
|
|||
w_InputDigitalActionData_t *pActionData,
|
||||
uint32_t unActionDataSize, uint32_t ulRestrictToDevice )
|
||||
{
|
||||
w_InputDigitalActionData_t w_pActionData;
|
||||
struct IVRInput_IVRInput_005_GetDigitalActionData_params params =
|
||||
{
|
||||
.linux_side = _this->u_iface,
|
||||
.action = action,
|
||||
.pActionData = pActionData,
|
||||
.pActionData = pActionData ? &w_pActionData : NULL,
|
||||
.unActionDataSize = unActionDataSize,
|
||||
.ulRestrictToDevice = ulRestrictToDevice,
|
||||
};
|
||||
|
||||
TRACE( "%p\n", _this );
|
||||
|
||||
unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) );
|
||||
if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize );
|
||||
VRCLIENT_CALL( IVRInput_IVRInput_005_GetDigitalActionData, ¶ms );
|
||||
if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize );
|
||||
#ifdef __x86_64__
|
||||
return params._ret;
|
||||
#else
|
||||
|
|
@ -117,18 +125,22 @@ uint32_t __thiscall winIVRInput_IVRInput_006_GetDigitalActionData( struct w_stea
|
|||
w_InputDigitalActionData_t *pActionData,
|
||||
uint32_t unActionDataSize, uint32_t ulRestrictToDevice )
|
||||
{
|
||||
w_InputDigitalActionData_t w_pActionData;
|
||||
struct IVRInput_IVRInput_006_GetDigitalActionData_params params =
|
||||
{
|
||||
.linux_side = _this->u_iface,
|
||||
.action = action,
|
||||
.pActionData = pActionData,
|
||||
.pActionData = pActionData ? &w_pActionData : NULL,
|
||||
.unActionDataSize = unActionDataSize,
|
||||
.ulRestrictToDevice = ulRestrictToDevice,
|
||||
};
|
||||
|
||||
TRACE( "%p\n", _this );
|
||||
|
||||
unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) );
|
||||
if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize );
|
||||
VRCLIENT_CALL( IVRInput_IVRInput_006_GetDigitalActionData, ¶ms );
|
||||
if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize );
|
||||
#ifdef __x86_64__
|
||||
return params._ret;
|
||||
#else
|
||||
|
|
@ -141,18 +153,22 @@ uint32_t __thiscall winIVRInput_IVRInput_007_GetDigitalActionData( struct w_stea
|
|||
w_InputDigitalActionData_t *pActionData,
|
||||
uint32_t unActionDataSize, uint32_t ulRestrictToDevice )
|
||||
{
|
||||
w_InputDigitalActionData_t w_pActionData;
|
||||
struct IVRInput_IVRInput_007_GetDigitalActionData_params params =
|
||||
{
|
||||
.linux_side = _this->u_iface,
|
||||
.action = action,
|
||||
.pActionData = pActionData,
|
||||
.pActionData = pActionData ? &w_pActionData : NULL,
|
||||
.unActionDataSize = unActionDataSize,
|
||||
.ulRestrictToDevice = ulRestrictToDevice,
|
||||
};
|
||||
|
||||
TRACE( "%p\n", _this );
|
||||
|
||||
unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) );
|
||||
if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize );
|
||||
VRCLIENT_CALL( IVRInput_IVRInput_007_GetDigitalActionData, ¶ms );
|
||||
if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize );
|
||||
#ifdef __x86_64__
|
||||
return params._ret;
|
||||
#else
|
||||
|
|
@ -165,18 +181,22 @@ uint32_t __thiscall winIVRInput_IVRInput_010_GetDigitalActionData( struct w_stea
|
|||
w_InputDigitalActionData_t *pActionData,
|
||||
uint32_t unActionDataSize, uint32_t ulRestrictToDevice )
|
||||
{
|
||||
w_InputDigitalActionData_t w_pActionData;
|
||||
struct IVRInput_IVRInput_010_GetDigitalActionData_params params =
|
||||
{
|
||||
.linux_side = _this->u_iface,
|
||||
.action = action,
|
||||
.pActionData = pActionData,
|
||||
.pActionData = pActionData ? &w_pActionData : NULL,
|
||||
.unActionDataSize = unActionDataSize,
|
||||
.ulRestrictToDevice = ulRestrictToDevice,
|
||||
};
|
||||
|
||||
TRACE( "%p\n", _this );
|
||||
|
||||
unActionDataSize = min( unActionDataSize, sizeof(w_pActionData) );
|
||||
if (pActionData) memcpy( &w_pActionData, pActionData, unActionDataSize );
|
||||
VRCLIENT_CALL( IVRInput_IVRInput_010_GetDigitalActionData, ¶ms );
|
||||
if (pActionData) memcpy( pActionData, &w_pActionData, unActionDataSize );
|
||||
#ifdef __x86_64__
|
||||
return params._ret;
|
||||
#else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue