• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 namespace content {
13 
14 enum 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 
34 static HandleType StringToHandleType(const base::string16& type);
35 
36 static base::string16 GetAccessString(HandleType handle_type,
37                                       ACCESS_MASK access);
38 
39 class HandleEnumerator : public base::RefCountedThreadSafe<HandleEnumerator> {
40  public:
HandleEnumerator(bool all_handles)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