blob: e76db77fa526d8d5a1bf7ad166414478391a820e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_HOST_ELEVATED_CONTROLLER_WIN_H_
#define REMOTING_HOST_ELEVATED_CONTROLLER_WIN_H_
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>
#include "remoting/base/scoped_sc_handle_win.h"
// MIDL-generated declarations.
#include "remoting/host/elevated_controller.h"
namespace remoting {
class ATL_NO_VTABLE ElevatedControllerWin
: public ATL::CComObjectRootEx<ATL::CComSingleThreadModel>,
public ATL::CComCoClass<ElevatedControllerWin, &CLSID_ElevatedController>,
public ATL::IDispatchImpl<IDaemonControl, &IID_IDaemonControl,
&LIBID_ChromotingElevatedControllerLib, 1, 0> {
public:
ElevatedControllerWin();
HRESULT FinalConstruct();
void FinalRelease();
// IDaemonControl implementation.
STDMETHOD(GetConfig)(BSTR* config_out);
STDMETHOD(GetVersion)(BSTR* version_out);
STDMETHOD(SetConfig)(BSTR config);
STDMETHOD(SetOwnerWindow)(LONG_PTR owner_window);
STDMETHOD(StartDaemon)();
STDMETHOD(StopDaemon)();
STDMETHOD(UpdateConfig)(BSTR config);
DECLARE_NO_REGISTRY()
private:
HRESULT OpenService(ScopedScHandle* service_out);
BEGIN_COM_MAP(ElevatedControllerWin)
COM_INTERFACE_ENTRY(IDaemonControl)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// Handle of the owner window (if any) for any UI to be shown.
HWND owner_window_;
DECLARE_PROTECT_FINAL_CONSTRUCT()
};
OBJECT_ENTRY_AUTO(CLSID_ElevatedController, ElevatedControllerWin)
} // namespace remoting
#endif // REMOTING_HOST_ELEVATED_CONTROLLER_WIN_H_
|