59 wchar_t const*
const first = environment.get();
62 size_t const required_count =
last -
first;
64 __crt_unique_heap_ptr<wchar_t>
buffer(_malloc_crt_t(
wchar_t, required_count));
69 memcpy(
buffer.get(), environment.get(), required_count *
sizeof(
wchar_t));
81 if (!environment.is_valid())
84 wchar_t const*
const first = environment.get();
87 size_t const required_wide_count =
last -
first;
88#pragma warning(suppress:__WARNING_W2A_BEST_FIT)
93 static_cast<int>(required_wide_count),
99 if (required_narrow_count == 0)
102 __crt_unique_heap_ptr<char>
buffer(_malloc_crt_t(
char, required_narrow_count));
106#pragma warning(suppress:__WARNING_W2A_BEST_FIT)
111 static_cast<int>(required_wide_count),
113 static_cast<int>(required_narrow_count),
117 if (conversion_result == 0)
return __acrt_WideCharToMultiByte(code_page, 0, buffer.get(), -1, result_size !=0 ? result :nullptr, result_size, nullptr, nullptr)
result_buffer_count char *const _In_ int const _In_ bool const _In_ unsigned const _In_ STRFLT const _In_ bool const _Inout_ __crt_cached_ptd_host &ptd throw()
BOOL WINAPI FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
static wchar_t const *__cdecl find_end_of_double_null_terminated_sequence(wchar_t const *const first)
wchar_t *__cdecl __dcrt_get_wide_environment_from_os()
char *__cdecl __dcrt_get_narrow_environment_from_os()
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define memcpy(s1, s2, n)
__crt_unique_handle_t< environment_strings_traits > environment_strings_handle
static bool close(_In_ type p)
static type get_invalid_value()
LPWSTR WINAPI GetEnvironmentStringsW(void)