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 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:
     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