| 10528 | }; |
| 10529 | |
| 10530 | struct DYNAPARM |
| 10531 | { |
| 10532 | union |
| 10533 | { |
| 10534 | int value_int; // Args whose width is less than 32-bit are also put in here because they are right justified within a 32-bit block on the stack. |
| 10535 | float value_float; |
| 10536 | __int64 value_int64; |
| 10537 | UINT_PTR value_uintptr; |
| 10538 | double value_double; |
| 10539 | char *astr; |
| 10540 | wchar_t *wstr; |
| 10541 | void *ptr; |
| 10542 | }; |
| 10543 | // Might help reduce struct size to keep other members last and adjacent to each other (due to |
| 10544 | // 8-byte alignment caused by the presence of double and __int64 members in the union above). |
| 10545 | DllArgTypes type; |
| 10546 | bool passed_by_address; |
| 10547 | bool is_unsigned; // Allows return value and output parameters to be interpreted as unsigned vs. signed. |
| 10548 | bool is_hresult; // Only used for the return value. |
| 10549 | }; |
| 10550 | |
| 10551 | #ifdef _WIN64 |
| 10552 | // This function was borrowed from http://dyncall.org/ |
nothing calls this directly
no outgoing calls
no test coverage detected