scoped_winusb_handle.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2017 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. #ifndef SERVICES_DEVICE_USB_SCOPED_WINUSB_HANDLE_H_
  5. #define SERVICES_DEVICE_USB_SCOPED_WINUSB_HANDLE_H_
  6. #include "base/win/scoped_handle.h"
  7. extern "C" {
  8. typedef void* WINUSB_INTERFACE_HANDLE;
  9. }
  10. namespace device {
  11. class WinUsbHandleTraits {
  12. public:
  13. using Handle = WINUSB_INTERFACE_HANDLE;
  14. WinUsbHandleTraits() = delete;
  15. WinUsbHandleTraits(const WinUsbHandleTraits&) = delete;
  16. WinUsbHandleTraits& operator=(const WinUsbHandleTraits&) = delete;
  17. static bool CloseHandle(Handle handle);
  18. static bool IsHandleValid(Handle handle) {
  19. return handle != nullptr && handle != INVALID_HANDLE_VALUE;
  20. }
  21. static Handle NullHandle() { return nullptr; }
  22. };
  23. using ScopedWinUsbHandle =
  24. base::win::GenericScopedHandle<WinUsbHandleTraits,
  25. base::win::DummyVerifierTraits>;
  26. } // namespace device
  27. #endif // SERVICES_DEVICE_USB_SCOPED_WINUSB_HANDLE_H_