Index: device/hid/hid_service_win.h |
diff --git a/device/hid/hid_service_win.h b/device/hid/hid_service_win.h |
index e9ac9e98c670c1780bbc0e6cb1ed964772c80ff8..50f635315cc67590aa18382db1ac306eb4b7d920 100644 |
--- a/device/hid/hid_service_win.h |
+++ b/device/hid/hid_service_win.h |
@@ -5,13 +5,6 @@ |
#ifndef DEVICE_HID_HID_SERVICE_WIN_H_ |
#define DEVICE_HID_HID_SERVICE_WIN_H_ |
-#include <map> |
- |
-#include "device/hid/hid_device_info.h" |
-#include "device/hid/hid_service.h" |
- |
-#if defined(OS_WIN) |
- |
#include <windows.h> |
#include <hidclass.h> |
@@ -20,25 +13,35 @@ extern "C" { |
#include <hidpi.h> |
} |
-#endif // defined(OS_WIN) |
+#include "base/memory/scoped_ptr.h" |
+#include "base/win/scoped_handle.h" |
+#include "device/hid/hid_device_info.h" |
+#include "device/hid/hid_service.h" |
-namespace device { |
+namespace base { |
+namespace win { |
+class MessageWindow; |
+} |
+} |
-class HidConnection; |
+namespace device { |
class HidServiceWin : public HidService { |
public: |
HidServiceWin(); |
- virtual void GetDevices(std::vector<HidDeviceInfo>* devices) override; |
- |
virtual void Connect(const HidDeviceId& device_id, |
const ConnectCallback& callback) override; |
private: |
virtual ~HidServiceWin(); |
- void Enumerate(); |
+ void RegisterForDeviceNotifications(); |
+ bool HandleMessage(UINT message, |
+ WPARAM wparam, |
+ LPARAM lparam, |
+ LRESULT* result); |
+ void DoInitialEnumeration(); |
static void CollectInfoFromButtonCaps(PHIDP_PREPARSED_DATA preparsed_data, |
HIDP_REPORT_TYPE report_type, |
USHORT button_caps_length, |
@@ -50,7 +53,12 @@ class HidServiceWin : public HidService { |
void PlatformAddDevice(const std::string& device_path); |
void PlatformRemoveDevice(const std::string& device_path); |
+ // Tries to open the device read-write and falls back to read-only. |
+ base::win::ScopedHandle OpenDevice(const std::string& device_path); |
+ |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
+ scoped_ptr<base::win::MessageWindow> window_; |
+ HDEVNOTIFY notify_handle_; |
DISALLOW_COPY_AND_ASSIGN(HidServiceWin); |
}; |