scoped_sc_handle_win.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright (c) 2012 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 REMOTING_BASE_SCOPED_SC_HANDLE_WIN_H_
  5. #define REMOTING_BASE_SCOPED_SC_HANDLE_WIN_H_
  6. #include <windows.h>
  7. #include "base/win/scoped_handle.h"
  8. namespace remoting {
  9. class ScHandleTraits {
  10. public:
  11. typedef SC_HANDLE Handle;
  12. ScHandleTraits() = delete;
  13. ScHandleTraits(const ScHandleTraits&) = delete;
  14. ScHandleTraits& operator=(const ScHandleTraits&) = delete;
  15. // Closes the handle.
  16. static bool CloseHandle(SC_HANDLE handle) {
  17. return ::CloseServiceHandle(handle) != FALSE;
  18. }
  19. // Returns true if the handle value is valid.
  20. static bool IsHandleValid(SC_HANDLE handle) {
  21. return handle != NULL;
  22. }
  23. // Returns NULL handle value.
  24. static SC_HANDLE NullHandle() {
  25. return NULL;
  26. }
  27. };
  28. typedef base::win::GenericScopedHandle<
  29. ScHandleTraits, base::win::DummyVerifierTraits> ScopedScHandle;
  30. } // namespace remoting
  31. #endif // REMOTING_BASE_SCOPED_SC_HANDLE_WIN_H_