Нужно преобразовать double в строку используя __stdio_common_vswprintf
Реализовал такой вариант:
// _Success_(return >= 0)
// _Check_return_opt_
// _ACRTIMP int __cdecl __stdio_common_vswprintf(
// _In_ unsigned __int64 _Options,
// _Out_writes_opt_z_(_BufferCount) wchar_t* _Buffer,
// _In_ size_t _BufferCount,
// _In_z_ _Printf_format_string_params_(2) wchar_t const* _Format,
// _In_opt_ _locale_t _Locale, //pointer
// va_list _ArgList
// );
[DllImport("ucrtbase.dll",
EntryPoint = "__stdio_common_vswprintf",
CharSet=CharSet.Unicode,
CallingConvention=CallingConvention.Cdecl,
PreserveSig=true)]
private static extern int __stdio_common_vswprintf___for_double
(ulong options,
IntPtr buffer,
IntPtr bufferSize,
String format,
IntPtr locale,
ref double arg);
Вроде работает (в ассемблерный код не заглядывал...).
Это нормальный вариант или есть более правильный способ передачи данных в va_list?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --