// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/guid.h" #include <stdlib.h> #include <objbase.h> #include <windows.h> #include "base/basictypes.h" #include "base/logging.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" namespace base { std::string GenerateGUID() { const int kGUIDSize = 39; GUID guid; HRESULT guid_result = CoCreateGuid(&guid); DCHECK(SUCCEEDED(guid_result)); if (!SUCCEEDED(guid_result)) return std::string(); std::wstring guid_string; int result = StringFromGUID2(guid, WriteInto(&guid_string, kGUIDSize), kGUIDSize); DCHECK(result == kGUIDSize); if (result != kGUIDSize) return std::string(); return WideToUTF8(guid_string.substr(1, guid_string.length() - 2)); } } // namespace guid