Index: rlz/win/lib/machine_id_win.cc |
diff --git a/rlz/win/lib/machine_id_win.cc b/rlz/win/lib/machine_id_win.cc |
deleted file mode 100644 |
index 8eb138adf27fc3e708549cceb70ecf575c4466ec..0000000000000000000000000000000000000000 |
--- a/rlz/win/lib/machine_id_win.cc |
+++ /dev/null |
@@ -1,130 +0,0 @@ |
-// 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 <windows.h> |
-#include <Sddl.h> // For ConvertSidToStringSidW. |
-#include <string> |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/string16.h" |
-#include "rlz/lib/assert.h" |
- |
-namespace rlz_lib { |
- |
-namespace { |
- |
-bool GetSystemVolumeSerialNumber(int* number) { |
- if (!number) |
- return false; |
- |
- *number = 0; |
- |
- // Find the system root path (e.g: C:\). |
- wchar_t system_path[MAX_PATH + 1]; |
- if (!GetSystemDirectoryW(system_path, MAX_PATH)) |
- return false; |
- |
- wchar_t* first_slash = wcspbrk(system_path, L"\\/"); |
- if (first_slash != NULL) |
- *(first_slash + 1) = 0; |
- |
- DWORD number_local = 0; |
- if (!GetVolumeInformationW(system_path, NULL, 0, &number_local, NULL, NULL, |
- NULL, 0)) |
- return false; |
- |
- *number = number_local; |
- return true; |
-} |
- |
-bool GetComputerSid(const wchar_t* account_name, SID* sid, DWORD sid_size) { |
- static const DWORD kStartDomainLength = 128; // reasonable to start with |
- |
- scoped_array<wchar_t> domain_buffer(new wchar_t[kStartDomainLength]); |
- DWORD domain_size = kStartDomainLength; |
- DWORD sid_dword_size = sid_size; |
- SID_NAME_USE sid_name_use; |
- |
- BOOL success = ::LookupAccountNameW(NULL, account_name, sid, |
- &sid_dword_size, domain_buffer.get(), |
- &domain_size, &sid_name_use); |
- if (!success && ::GetLastError() == ERROR_INSUFFICIENT_BUFFER) { |
- // We could have gotten the insufficient buffer error because |
- // one or both of sid and szDomain was too small. Check for that |
- // here. |
- if (sid_dword_size > sid_size) |
- return false; |
- |
- if (domain_size > kStartDomainLength) |
- domain_buffer.reset(new wchar_t[domain_size]); |
- |
- success = ::LookupAccountNameW(NULL, account_name, sid, &sid_dword_size, |
- domain_buffer.get(), &domain_size, |
- &sid_name_use); |
- } |
- |
- return success != FALSE; |
-} |
- |
-std::wstring ConvertSidToString(SID* sid) { |
- std::wstring sid_string; |
-#if _WIN32_WINNT >= 0x500 |
- wchar_t* sid_buffer = NULL; |
- if (ConvertSidToStringSidW(sid, &sid_buffer)) { |
- sid_string = sid_buffer; |
- LocalFree(sid_buffer); |
- } |
-#else |
- SID_IDENTIFIER_AUTHORITY* sia = ::GetSidIdentifierAuthority(sid); |
- |
- if(sia->Value[0] || sia->Value[1]) { |
- base::SStringPrintf( |
- &sid_string, L"S-%d-0x%02hx%02hx%02hx%02hx%02hx%02hx", |
- SID_REVISION, (USHORT)sia->Value[0], (USHORT)sia->Value[1], |
- (USHORT)sia->Value[2], (USHORT)sia->Value[3], (USHORT)sia->Value[4], |
- (USHORT)sia->Value[5]); |
- } else { |
- ULONG authority = 0; |
- for (int i = 2; i < 6; ++i) { |
- authority <<= 8; |
- authority |= sia->Value[i]; |
- } |
- base::SStringPrintf(&sid_string, L"S-%d-%lu", SID_REVISION, authority); |
- } |
- |
- int sub_auth_count = *::GetSidSubAuthorityCount(sid); |
- for(int i = 0; i < sub_auth_count; ++i) |
- base::StringAppendF(&sid_string, L"-%lu", *::GetSidSubAuthority(sid, i)); |
-#endif |
- |
- return sid_string; |
-} |
- |
-} // namespace |
- |
-bool GetRawMachineId(string16* sid_string, int* volume_id) { |
- // Calculate the Windows SID. |
- |
- wchar_t computer_name[MAX_COMPUTERNAME_LENGTH + 1] = {0}; |
- DWORD size = arraysize(computer_name); |
- |
- if (GetComputerNameW(computer_name, &size)) { |
- char sid_buffer[SECURITY_MAX_SID_SIZE]; |
- SID* sid = reinterpret_cast<SID*>(sid_buffer); |
- if (GetComputerSid(computer_name, sid, SECURITY_MAX_SID_SIZE)) { |
- *sid_string = ConvertSidToString(sid); |
- } |
- } |
- |
- // Get the system drive volume serial number. |
- *volume_id = 0; |
- if (!GetSystemVolumeSerialNumber(volume_id)) { |
- ASSERT_STRING("GetMachineId: Failed to retrieve volume serial number"); |
- *volume_id = 0; |
- } |
- |
- return true; |
-} |
- |
-} // namespace rlz_lib |