Index: chrome/browser/guid_win.cc |
diff --git a/chrome/browser/guid_win.cc b/chrome/browser/guid_win.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..115e8062c9a8cc4efdf17750b8924825df672f09 |
--- /dev/null |
+++ b/chrome/browser/guid_win.cc |
@@ -0,0 +1,38 @@ |
+// Copyright (c) 2008 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 "chrome/browser/guid.h" |
+ |
+#include <stdlib.h> |
+ |
+#include <objbase.h> |
+#include <windows.h> |
+ |
+#include "base/basictypes.h" |
+#include "base/logging.h" |
+#include "base/string_util.h" |
+#include "base/utf_string_conversions.h" |
+ |
+namespace guid { |
+ |
+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 |