1/*
2 *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_WINFIREWALL_H_
12#define WEBRTC_BASE_WINFIREWALL_H_
13
14#ifndef _HRESULT_DEFINED
15#define _HRESULT_DEFINED
16typedef long HRESULT;  // Can't forward declare typedef, but don't need all win
17#endif // !_HRESULT_DEFINED
18
19struct INetFwMgr;
20struct INetFwPolicy;
21struct INetFwProfile;
22
23namespace rtc {
24
25//////////////////////////////////////////////////////////////////////
26// WinFirewall
27//////////////////////////////////////////////////////////////////////
28
29class WinFirewall {
30 public:
31  WinFirewall();
32  ~WinFirewall();
33
34  bool Initialize(HRESULT* result);
35  void Shutdown();
36
37  bool Enabled() const;
38  bool QueryAuthorized(const char* filename, bool* authorized) const;
39  bool QueryAuthorizedW(const wchar_t* filename, bool* authorized) const;
40
41  bool AddApplication(const char* filename, const char* friendly_name,
42                      bool authorized, HRESULT* result);
43  bool AddApplicationW(const wchar_t* filename, const wchar_t* friendly_name,
44                       bool authorized, HRESULT* result);
45
46 private:
47  INetFwMgr* mgr_;
48  INetFwPolicy* policy_;
49  INetFwProfile* profile_;
50};
51
52//////////////////////////////////////////////////////////////////////
53
54}  // namespace rtc
55
56#endif  // WEBRTC_BASE_WINFIREWALL_H_
57