Index: device/hid/hid_connection_win.cc |
diff --git a/device/hid/hid_connection_win.cc b/device/hid/hid_connection_win.cc |
index 44bd8471bc1ca95d803e39e9212ab0a015e44cb8..a967ef5fbd6d2fe3a6cae23dd6dc0871c999981c 100644 |
--- a/device/hid/hid_connection_win.cc |
+++ b/device/hid/hid_connection_win.cc |
@@ -103,6 +103,7 @@ void PendingHidTransfer::WillDestroyCurrentMessageLoop() { |
HidConnectionWin::HidConnectionWin(const HidDeviceInfo& device_info) |
: HidConnection(device_info) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
Ken Rockot(use gerrit already)
2014/04/21 20:33:25
nit: Remove extra vertical whitespace.
jracle (use Gerrit)
2014/04/23 07:38:09
sure, sorry. Thought DCHECK(...) was the only line
|
+ |
file_.Set(CreateFileA(device_info.device_id.c_str(), |
GENERIC_WRITE | GENERIC_READ, |
FILE_SHARE_READ | FILE_SHARE_WRITE, |
@@ -110,6 +111,17 @@ HidConnectionWin::HidConnectionWin(const HidDeviceInfo& device_info) |
OPEN_EXISTING, |
FILE_FLAG_OVERLAPPED, |
NULL)); |
+ |
+ if (!file_.IsValid() && |
+ file_.error_details() == base::File::FILE_ERROR_ACCESS_DENIED) { |
+ file_.Set(CreateFileA(device_info.device_id.c_str(), |
+ GENERIC_READ, |
+ FILE_SHARE_READ, |
+ NULL, |
+ OPEN_EXISTING, |
+ FILE_FLAG_OVERLAPPED, |
+ NULL)); |
+ } |
} |
bool HidConnectionWin::available() const { |