1// Copyright (c) 2011 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 CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
6#define CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
7
8#include "base/memory/ref_counted.h"
9#include "base/process/process.h"
10#include "base/strings/string16.h"
11
12namespace content {
13
14enum HandleType {
15  ProcessHandle,
16  ThreadHandle,
17  FileHandle,
18  DirectoryHandle,
19  KeyHandle,
20  WindowStationHandle,
21  DesktopHandle,
22  ServiceHandle,
23  EventHandle,
24  MutexHandle,
25  SemaphoreHandle,
26  TimerHandle,
27  NamedPipeHandle,
28  JobHandle,
29  FileMapHandle,
30  AlpcPortHandle,
31  OtherHandle
32};
33
34static HandleType StringToHandleType(const base::string16& type);
35
36static base::string16 GetAccessString(HandleType handle_type,
37                                      ACCESS_MASK access);
38
39class HandleEnumerator : public base::RefCountedThreadSafe<HandleEnumerator> {
40 public:
41  explicit HandleEnumerator(bool all_handles):
42      all_handles_(all_handles) { }
43
44  void EnumerateHandles();
45
46 private:
47  bool all_handles_;
48
49  DISALLOW_COPY_AND_ASSIGN(HandleEnumerator);
50};
51
52}  // namespace content
53
54#endif  // CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
55
56