Вызов __stdio_common_vswprintf(..., va_list _ArgList)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 03.04.21 05:54
Оценка:
Нужно преобразовать 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?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.