Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(710)

Side by Side Diff: device/core/device_info_query_win.h

Issue 1439443002: Reland: Add code to deal with serial device disconnection detection on Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: changed some DVPLOG back to VPLOG Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef DEVICE_CORE_DEVICE_INFO_QUERY_WIN_H_
6 #define DEVICE_CORE_DEVICE_INFO_QUERY_WIN_H_
7
8 #include <windows.h>
9 #include <setupapi.h>
10
11 #include "base/macros.h"
12
13 namespace device {
14
15 // Wrapper around a HDEVINFO and SP_DEVINFO_DATA that automatically destroys
16 // them.
17 class DeviceInfoQueryWin {
18 public:
19 DeviceInfoQueryWin()
20 : device_info_list_(SetupDiCreateDeviceInfoList(NULL, NULL)) {
grt (UTC plus 2) 2015/11/16 16:14:16 nullptr in place of NULL throughout
juncai 2015/11/16 21:10:33 Done.
21 if (device_info_list_ != INVALID_HANDLE_VALUE)
22 device_info_list_valid_ = true;
23 memset(&device_info_data_, 0, sizeof(device_info_data_));
grt (UTC plus 2) 2015/11/16 16:14:16 #include <string.h> for memset
juncai 2015/11/16 21:10:34 Done.
24 device_info_data_.cbSize = sizeof(device_info_data_);
25 }
26
27 ~DeviceInfoQueryWin() {
28 if (device_info_list_valid_) {
29 if (device_info_data_valid_)
30 SetupDiDeleteDeviceInfo(device_info_list_, &device_info_data_);
31 SetupDiDestroyDeviceInfoList(device_info_list_);
32 }
33 }
34
35 bool AddDevice(const char* device_path) {
36 if (SetupDiOpenDeviceInterfaceA(device_info_list_, device_path, 0, NULL))
grt (UTC plus 2) 2015/11/16 16:14:16 return SetupDiOpenDeviceInterfaceA(...) != FALSE;
juncai 2015/11/16 21:10:33 Done.
37 return true;
38 else
39 return false;
40 }
41
42 bool GetDeviceInfo() {
43 if (SetupDiEnumDeviceInfo(device_info_list_, 0, &device_info_data_))
44 device_info_data_valid_ = true;
grt (UTC plus 2) 2015/11/16 16:14:16 remove device_info_data_valid_ and use "device_inf
juncai 2015/11/16 21:10:34 Done.
45 return device_info_data_valid_;
46 }
47
48 bool device_info_list_valid() { return device_info_list_valid_; }
grt (UTC plus 2) 2015/11/16 16:14:16 remove device_info_list_valid_ and change this to
juncai 2015/11/16 21:10:33 Done.
49
50 HDEVINFO device_info_list() { return device_info_list_; }
51
52 PSP_DEVINFO_DATA device_info_data() { return &device_info_data_; }
53
54 private:
55 HDEVINFO device_info_list_ = INVALID_HANDLE_VALUE;
56 SP_DEVINFO_DATA device_info_data_;
57 bool device_info_list_valid_ = false;
58 bool device_info_data_valid_ = false;
59
60 DISALLOW_COPY_AND_ASSIGN(DeviceInfoQueryWin);
61 };
62
63 } // namespace device
64
65 #endif // DEVICE_CORE_DEVICE_INFO_QUERY_WIN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698