Home | History | Annotate | Download | only in common
      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 string16& type);
     35 
     36 static string16 GetAccessString(HandleType handle_type, ACCESS_MASK access);
     37 
     38 class HandleEnumerator : public base::RefCountedThreadSafe<HandleEnumerator> {
     39  public:
     40   explicit HandleEnumerator(bool all_handles):
     41       all_handles_(all_handles) { }
     42 
     43   void EnumerateHandles();
     44 
     45  private:
     46   bool all_handles_;
     47 
     48   DISALLOW_COPY_AND_ASSIGN(HandleEnumerator);
     49 };
     50 
     51 }  // namespace content
     52 
     53 #endif  // CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
     54 
     55