15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
958e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch#include "base/process/process.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/strings/string16.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum HandleType {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProcessHandle,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ThreadHandle,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FileHandle,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DirectoryHandle,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  KeyHandle,
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WindowStationHandle,
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DesktopHandle,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ServiceHandle,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EventHandle,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MutexHandle,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SemaphoreHandle,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TimerHandle,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NamedPipeHandle,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  JobHandle,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FileMapHandle,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AlpcPortHandle,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OtherHandle
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)static HandleType StringToHandleType(const base::string16& type);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)static base::string16 GetAccessString(HandleType handle_type,
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)                                      ACCESS_MASK access);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HandleEnumerator : public base::RefCountedThreadSafe<HandleEnumerator> {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit HandleEnumerator(bool all_handles):
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      all_handles_(all_handles) { }
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void EnumerateHandles();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool all_handles_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(HandleEnumerator);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_COMMON_HANDLE_ENUMERATOR_WIN_H_
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56