910e62b5创建于 1月15日历史提交
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "remoting/base/fqdn.h"

#include "build/build_config.h"

#if BUILDFLAG(IS_WIN)
#include "base/logging.h"
#include "base/strings/utf_string_conversions.h"

// Needed for GetComputerNameExW/ComputerNameDnsFullyQualified.
#include <windows.h>
#else
#include "net/base/network_interfaces.h"
#endif

namespace remoting {

std::string GetFqdn() {
#if BUILDFLAG(IS_WIN)
  wchar_t buffer[MAX_PATH] = {};
  DWORD size = MAX_PATH;
  if (!::GetComputerNameExW(ComputerNameDnsFullyQualified, buffer, &size)) {
    PLOG(ERROR) << "GetComputerNameExW failed";
    return std::string();
  }
  std::string fqdn;
  if (!base::WideToUTF8(buffer, size, &fqdn)) {
    LOG(ERROR) << "Failed to convert from Wide to UTF8";
    return std::string();
  }
  return fqdn;
#else
  return net::GetHostName();
#endif
}

}  // namespace remoting