Commit 8e1dd185 authored by haven@chromium.org's avatar haven@chromium.org

Changes Windows disk identifiers from GUID to PhysicalDriveN

BUG=384426

Review URL: https://codereview.chromium.org/362903002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282192 0039d316-1c4b-4281-b951-d872f2087c98
parent 5bba72e2
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <setupapi.h> #include <setupapi.h>
#include <winioctl.h> #include <winioctl.h>
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/win/scoped_handle.h" #include "base/win/scoped_handle.h"
...@@ -126,12 +127,30 @@ bool AddDeviceInfo(HANDLE interface_enumerator, ...@@ -126,12 +127,30 @@ bool AddDeviceInfo(HANDLE interface_enumerator,
return true; return true;
} }
// Create a drive identifier from the drive number.
STORAGE_DEVICE_NUMBER device_number = {0};
status = DeviceIoControl(
device_handle, // Device handle.
IOCTL_STORAGE_GET_DEVICE_NUMBER,// Flag to request device number.
NULL, // Query parameters, should be NULL.
0, // Query parameters size, should be 0.
&device_number, // output buffer.
sizeof(device_number), // Size of buffer.
&bytes_returned, // Number of bytes returned.
NULL); // Optional unused overlapped perameter.
if (status == FALSE) {
PLOG(ERROR) << "Storage device number query failed.";
return false;
}
std::string drive_id = "\\\\.\\PhysicalDrive";
drive_id.append(base::Uint64ToString(device_number.DeviceNumber));
linked_ptr<api::image_writer_private::RemovableStorageDevice> device( linked_ptr<api::image_writer_private::RemovableStorageDevice> device(
new api::image_writer_private::RemovableStorageDevice()); new api::image_writer_private::RemovableStorageDevice());
device->capacity = disk_capacity; device->capacity = disk_capacity;
device->storage_unit_id = drive_id;
base::string16 device_path_16(interface_detail_data->DevicePath);
device->storage_unit_id = base::UTF16ToUTF8(device_path_16);
if (device_descriptor->VendorIdOffset && if (device_descriptor->VendorIdOffset &&
output_buf[device_descriptor->VendorIdOffset]) { output_buf[device_descriptor->VendorIdOffset]) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment