Commit 6e5ea859 authored by S. Ganesh's avatar S. Ganesh Committed by Commit Bot

COM registration for the IElevator interface.

IElevator is registered with unique IIDs for the various flavors of Chrome and Chromium. This allows the different flavors of Chrome/Chromium to co-exist without side effects.

Bug: 833687
Change-Id: Icbba17012165cc9e3c04a47590a78b54bec761e7
Reviewed-on: https://chromium-review.googlesource.com/c/1327352
Commit-Queue: S. Ganesh <ganesh@chromium.org>
Reviewed-by: default avatarSorin Jianu <sorin@chromium.org>
Reviewed-by: default avatarScott Graham <scottmg@chromium.org>
Reviewed-by: default avatarGreg Thompson <grt@chromium.org>
Reviewed-by: default avatarWill Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607360}
parent 7419fdde
...@@ -34,4 +34,7 @@ END ...@@ -34,4 +34,7 @@ END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
#endif // English (United States) resources #endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
\ No newline at end of file 1 TYPELIB "chrome/elevation_service/elevation_service_idl.tlb"
/////////////////////////////////////////////////////////////////////////////
...@@ -34,6 +34,65 @@ interface IElevator : IUnknown ...@@ -34,6 +34,65 @@ interface IElevator : IUnknown
[out] ULONG_PTR* proc_handle); [out] ULONG_PTR* proc_handle);
}; };
// The interfaces below are all IElevator with unique IIDs. IElevator is
// registered with unique IIDs for the various flavors of Chrome and Chromium.
// This allows the different flavors of Chrome/Chromium to co-exist without side
// effects.
[
object,
oleautomation,
uuid(B88C45B9-8825-4629-B83E-77CC67D9CEED),
helpstring("IElevatorChromium Interface"),
pointer_default(unique)
]
interface IElevatorChromium : IElevator
{
};
[
object,
oleautomation,
uuid(463ABECF-410D-407F-8AF5-0DF35A005CC8),
helpstring("IElevatorChrome Interface"),
pointer_default(unique)
]
interface IElevatorChrome : IElevator
{
};
[
object,
oleautomation,
uuid(A2721D66-376E-4D2F-9F0F-9070E9A42B5F),
helpstring("IElevatorChromeBeta Interface"),
pointer_default(unique)
]
interface IElevatorChromeBeta : IElevator
{
};
[
object,
oleautomation,
uuid(BB2AA26B-343A-4072-8B6F-80557B8CE571),
helpstring("IElevatorChromeDev Interface"),
pointer_default(unique)
]
interface IElevatorChromeDev : IElevator
{
};
[
object,
oleautomation,
uuid(4F7CE041-28E9-484F-9DD0-61A8CACEFEE4),
helpstring("IElevatorChromeCanary Interface"),
pointer_default(unique)
]
interface IElevatorChromeCanary : IElevator
{
};
[ [
uuid(0014D784-7012-4A79-8AB6-ADDB8193A06E), uuid(0014D784-7012-4A79-8AB6-ADDB8193A06E),
version(1.0), version(1.0),
...@@ -43,4 +102,9 @@ library ElevatorLib { ...@@ -43,4 +102,9 @@ library ElevatorLib {
importlib("stdole2.tlb"); importlib("stdole2.tlb");
interface IElevator; interface IElevator;
interface IElevatorChromium;
interface IElevatorChrome;
interface IElevatorChromeBeta;
interface IElevatorChromeDev;
interface IElevatorChromeCanary;
}; };
...@@ -19,7 +19,12 @@ namespace elevation_service { ...@@ -19,7 +19,12 @@ namespace elevation_service {
class Elevator class Elevator
: public Microsoft::WRL::RuntimeClass< : public Microsoft::WRL::RuntimeClass<
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>, Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
IElevator> { IElevator,
IElevatorChromium,
IElevatorChrome,
IElevatorChromeBeta,
IElevatorChromeDev,
IElevatorChromeCanary> {
public: public:
Elevator() = default; Elevator() = default;
......
...@@ -58,15 +58,12 @@ int ServiceMain::Start() { ...@@ -58,15 +58,12 @@ int ServiceMain::Start() {
} }
// When _ServiceMain gets called, it initializes COM, and then calls Run(). // When _ServiceMain gets called, it initializes COM, and then calls Run().
// Run initializes security, then registers the COM objects. // Run() initializes security, then calls RegisterClassObject().
HRESULT ServiceMain::RegisterClassObjects() { HRESULT ServiceMain::RegisterClassObject() {
// Create an out-of-proc COM module with caching disabled. // Create an out-of-proc COM module with caching disabled.
auto& module = Microsoft::WRL::Module<Microsoft::WRL::OutOfProc>::Create( auto& module = Microsoft::WRL::Module<Microsoft::WRL::OutOfProc>::Create(
this, &ServiceMain::SignalExit); this, &ServiceMain::SignalExit);
// Register the Elevator class factories.
RegisterElevatorFactories();
// We hand-register a unique CLSID for each Chrome channel. // We hand-register a unique CLSID for each Chrome channel.
Microsoft::WRL::ComPtr<IUnknown> factory; Microsoft::WRL::ComPtr<IUnknown> factory;
unsigned int flags = Microsoft::WRL::ModuleType::OutOfProc; unsigned int flags = Microsoft::WRL::ModuleType::OutOfProc;
...@@ -107,15 +104,12 @@ HRESULT ServiceMain::RegisterClassObjects() { ...@@ -107,15 +104,12 @@ HRESULT ServiceMain::RegisterClassObjects() {
return hr; return hr;
} }
void ServiceMain::UnregisterClassObjects() { void ServiceMain::UnregisterClassObject() {
auto& module = Microsoft::WRL::Module<Microsoft::WRL::OutOfProc>::GetModule(); auto& module = Microsoft::WRL::Module<Microsoft::WRL::OutOfProc>::GetModule();
const HRESULT hr = const HRESULT hr =
module.UnregisterCOMObject(nullptr, cookies_, base::size(cookies_)); module.UnregisterCOMObject(nullptr, cookies_, base::size(cookies_));
if (FAILED(hr)) if (FAILED(hr))
LOG(ERROR) << "UnregisterCOMObject failed; hr: " << hr; LOG(ERROR) << "UnregisterCOMObject failed; hr: " << hr;
// Unregister the Elevator class factories.
UnregisterElevatorFactories();
} }
bool ServiceMain::IsExitSignaled() { bool ServiceMain::IsExitSignaled() {
...@@ -216,10 +210,10 @@ HRESULT ServiceMain::Run() { ...@@ -216,10 +210,10 @@ HRESULT ServiceMain::Run() {
if (FAILED(hr)) if (FAILED(hr))
return hr; return hr;
hr = RegisterClassObjects(); hr = RegisterClassObject();
if (SUCCEEDED(hr)) { if (SUCCEEDED(hr)) {
WaitForExitSignal(); WaitForExitSignal();
UnregisterClassObjects(); UnregisterClassObject();
} }
return hr; return hr;
...@@ -254,27 +248,4 @@ void ServiceMain::SignalExit() { ...@@ -254,27 +248,4 @@ void ServiceMain::SignalExit() {
exit_signal_.Signal(); exit_signal_.Signal();
} }
void ServiceMain::RegisterElevatorFactories() {
// Elevators will register their class factories here by calling
// RegisterElevatorFactory().
}
void ServiceMain::UnregisterElevatorFactories() {
factories_.clear();
}
void ServiceMain::RegisterElevatorFactory(const base::string16& id,
IClassFactory* factory) {
DCHECK(factory);
DCHECK(!base::ContainsKey(factories_, id));
factories_.emplace(id, factory);
}
Microsoft::WRL::ComPtr<IClassFactory> ServiceMain::GetElevatorFactory(
const base::string16& id) {
auto it = factories_.find(id);
return it != factories_.end() ? it->second : nullptr;
}
} // namespace elevation_service } // namespace elevation_service
...@@ -32,21 +32,17 @@ class ServiceMain { ...@@ -32,21 +32,17 @@ class ServiceMain {
// The following methods are public for the sake of testing. // The following methods are public for the sake of testing.
// Registers the Service COM objects so other applications can connect to // Registers the Service COM class factory object so other applications can
// them. Returns the registration status. // connect to it. Returns the registration status.
HRESULT RegisterClassObjects(); HRESULT RegisterClassObject();
// Unregisters the Service COM objects. // Unregisters the Service COM class factory object.
void UnregisterClassObjects(); void UnregisterClassObject();
// Returns true when the last object is released, or if the service is asked // Returns true when the last COM object is released, or if the service is
// to exit. // asked to exit.
bool IsExitSignaled(); bool IsExitSignaled();
// Returns the class factory for the elevator with the specified id.
Microsoft::WRL::ComPtr<IClassFactory> GetElevatorFactory(
const base::string16& id);
private: private:
ServiceMain(); ServiceMain();
~ServiceMain(); ~ServiceMain();
...@@ -86,10 +82,6 @@ class ServiceMain { ...@@ -86,10 +82,6 @@ class ServiceMain {
// Called when the last object is released or if the service is asked to exit. // Called when the last object is released or if the service is asked to exit.
void SignalExit(); void SignalExit();
// Registers class factories for all supported elevators.
void RegisterElevatorFactories();
void UnregisterElevatorFactories();
// Registers |factory| as the factory for the elevator identified by |id|. // Registers |factory| as the factory for the elevator identified by |id|.
void RegisterElevatorFactory(const base::string16& id, void RegisterElevatorFactory(const base::string16& id,
IClassFactory* factory); IClassFactory* factory);
...@@ -107,11 +99,6 @@ class ServiceMain { ...@@ -107,11 +99,6 @@ class ServiceMain {
// service control manager asks the service to exit. // service control manager asks the service to exit.
base::WaitableEvent exit_signal_; base::WaitableEvent exit_signal_;
using FactoryMap = base::flat_map<base::string16,
Microsoft::WRL::ComPtr<IClassFactory>>;
// The map containing all the Elevator class factories.
FactoryMap factories_;
friend class base::NoDestructor<ServiceMain>; friend class base::NoDestructor<ServiceMain>;
DISALLOW_COPY_AND_ASSIGN(ServiceMain); DISALLOW_COPY_AND_ASSIGN(ServiceMain);
......
...@@ -6,12 +6,25 @@ ...@@ -6,12 +6,25 @@
#include <wrl/client.h> #include <wrl/client.h>
#include <memory> #include <memory>
#include <string>
#include "base/files/file_path.h"
#include "base/path_service.h"
#include "base/win/scoped_com_initializer.h" #include "base/win/scoped_com_initializer.h"
#include "chrome/elevation_service/elevation_service_idl.h" #include "chrome/elevation_service/elevation_service_idl.h"
#include "chrome/install_static/install_util.h" #include "chrome/install_static/install_util.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace {
const base::FilePath TestFile(const std::string& file) {
base::FilePath path;
base::PathService::Get(base::DIR_MODULE, &path);
return path.AppendASCII("elevated_recovery_unittest").AppendASCII(file);
}
} // namespace
class ServiceMainTest : public testing::Test { class ServiceMainTest : public testing::Test {
protected: protected:
ServiceMainTest() = default; ServiceMainTest() = default;
...@@ -21,7 +34,7 @@ class ServiceMainTest : public testing::Test { ...@@ -21,7 +34,7 @@ class ServiceMainTest : public testing::Test {
ASSERT_TRUE(com_initializer_->Succeeded()); ASSERT_TRUE(com_initializer_->Succeeded());
service_main_ = elevation_service::ServiceMain::GetInstance(); service_main_ = elevation_service::ServiceMain::GetInstance();
HRESULT hr = service_main_->RegisterClassObjects(); HRESULT hr = service_main_->RegisterClassObject();
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
class_registration_succeeded_ = true; class_registration_succeeded_ = true;
...@@ -30,7 +43,7 @@ class ServiceMainTest : public testing::Test { ...@@ -30,7 +43,7 @@ class ServiceMainTest : public testing::Test {
void TearDown() override { void TearDown() override {
if (class_registration_succeeded_) if (class_registration_succeeded_)
service_main_->UnregisterClassObjects(); service_main_->UnregisterClassObject();
com_initializer_.reset(); com_initializer_.reset();
} }
...@@ -49,10 +62,21 @@ TEST_F(ServiceMainTest, ExitSignalTest) { ...@@ -49,10 +62,21 @@ TEST_F(ServiceMainTest, ExitSignalTest) {
// The waitable event starts unsignaled. // The waitable event starts unsignaled.
ASSERT_FALSE(service_main()->IsExitSignaled()); ASSERT_FALSE(service_main()->IsExitSignaled());
Microsoft::WRL::ComPtr<IUnknown> elevator; Microsoft::WRL::ComPtr<IUnknown> unknown;
ASSERT_HRESULT_SUCCEEDED( ASSERT_HRESULT_SUCCEEDED(
::CoCreateInstance(install_static::GetElevatorClsid(), nullptr, ::CoCreateInstance(install_static::GetElevatorClsid(), nullptr,
CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&elevator))); CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&unknown)));
Microsoft::WRL::ComPtr<IElevator> elevator;
ASSERT_HRESULT_SUCCEEDED(unknown.As(&elevator));
unknown.Reset();
ULONG_PTR proc_handle = 0;
EXPECT_EQ(CRYPT_E_NO_MATCH,
elevator->RunRecoveryCRXElevated(
TestFile("ChromeRecovery.crx3").value().c_str(),
L"{c49ab053-2387-4809-b188-1902648802e1}", L"57.8.0.1",
L"{c49ab053-2387-4809-b188-1902648802e1}", 0, &proc_handle));
// An object instance has been created upon the request, and is held by the // An object instance has been created upon the request, and is held by the
// server module. Therefore, the waitable event remains unsignaled. // server module. Therefore, the waitable event remains unsignaled.
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
// Brand-specific constants and install modes for Chromium. // Brand-specific constants and install modes for Chromium.
#include "chrome/install_static/chromium_install_modes.h"
#include <stdlib.h> #include <stdlib.h>
#include "chrome/app/chrome_dll_resource.h" #include "chrome/app/chrome_dll_resource.h"
...@@ -49,7 +51,14 @@ const InstallConstants kInstallModes[] = { ...@@ -49,7 +51,14 @@ const InstallConstants kInstallModes[] = {
0x6DB4, 0x6DB4,
0x4D6B, 0x4D6B,
{0x8B, 0xFE, 0x83, 0xBF, 0x8C, 0xA1, 0xB1, 0xB0}}, // Elevator CLSID. {0x8B, 0xFE, 0x83, 0xBF, 0x8C, 0xA1, 0xB1, 0xB0}}, // Elevator CLSID.
L"", // Empty default channel name since no update integration.
{0xb88c45b9,
0x8825,
0x4629,
{0xb8, 0x3e, 0x77, 0xcc, 0x67, 0xd9, 0xce,
0xed}}, // IElevator IID and TypeLib
// {B88C45B9-8825-4629-B83E-77CC67D9CEED}.
L"", // Empty default channel name since no update integration.
ChannelStrategy::UNSUPPORTED, ChannelStrategy::UNSUPPORTED,
true, // Supports system-level installs. true, // Supports system-level installs.
true, // Supports in-product set as default browser UX. true, // Supports in-product set as default browser UX.
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
// Brand-specific constants and install modes for Google Chrome. // Brand-specific constants and install modes for Google Chrome.
#include "chrome/install_static/google_chrome_install_modes.h"
#include <stdlib.h> #include <stdlib.h>
#include "chrome/app/chrome_dll_resource.h" #include "chrome/app/chrome_dll_resource.h"
...@@ -49,7 +51,14 @@ const InstallConstants kInstallModes[] = { ...@@ -49,7 +51,14 @@ const InstallConstants kInstallModes[] = {
0xF641, 0xF641,
0x4611, 0x4611,
{0x88, 0x95, 0x7D, 0x86, 0x7D, 0xD3, 0x67, 0x5B}}, // Elevator CLSID. {0x88, 0x95, 0x7D, 0x86, 0x7D, 0xD3, 0x67, 0x5B}}, // Elevator CLSID.
L"", // The empty string means "stable".
{0x463abecf,
0x410d,
0x407f,
{0x8a, 0xf5, 0xd, 0xf3, 0x5a, 0x0, 0x5c,
0xc8}}, // IElevator IID and TypeLib
// {463ABECF-410D-407F-8AF5-0DF35A005CC8}.
L"", // The empty string means "stable".
ChannelStrategy::ADDITIONAL_PARAMETERS, ChannelStrategy::ADDITIONAL_PARAMETERS,
true, // Supports system-level installs. true, // Supports system-level installs.
true, // Supports in-product set as default browser UX. true, // Supports in-product set as default browser UX.
...@@ -83,7 +92,14 @@ const InstallConstants kInstallModes[] = { ...@@ -83,7 +92,14 @@ const InstallConstants kInstallModes[] = {
0x3707, 0x3707,
0x4BF8, 0x4BF8,
{0xB9, 0xA7, 0x3, 0x86, 0x91, 0xA6, 0x8F, 0xC2}}, // Elevator CLSID. {0xB9, 0xA7, 0x3, 0x86, 0x91, 0xA6, 0x8F, 0xC2}}, // Elevator CLSID.
L"beta", // Forced channel name.
{0xa2721d66,
0x376e,
0x4d2f,
{0x9f, 0xf, 0x90, 0x70, 0xe9, 0xa4, 0x2b,
0x5f}}, // IElevator IID and TypeLib
// {A2721D66-376E-4D2F-9F0F-9070E9A42B5F}.
L"beta", // Forced channel name.
ChannelStrategy::FIXED, ChannelStrategy::FIXED,
true, // Supports system-level installs. true, // Supports system-level installs.
true, // Supports in-product set as default browser UX. true, // Supports in-product set as default browser UX.
...@@ -117,7 +133,14 @@ const InstallConstants kInstallModes[] = { ...@@ -117,7 +133,14 @@ const InstallConstants kInstallModes[] = {
0x2CAA, 0x2CAA,
0x4637, 0x4637,
{0xAA, 0x17, 0x7, 0x40, 0x58, 0x4D, 0xE7, 0xDA}}, // Elevator CLSID. {0xAA, 0x17, 0x7, 0x40, 0x58, 0x4D, 0xE7, 0xDA}}, // Elevator CLSID.
L"dev", // Forced channel name.
{0xbb2aa26b,
0x343a,
0x4072,
{0x8b, 0x6f, 0x80, 0x55, 0x7b, 0x8c, 0xe5,
0x71}}, // IElevator IID and TypeLib
// {BB2AA26B-343A-4072-8B6F-80557B8CE571}.
L"dev", // Forced channel name.
ChannelStrategy::FIXED, ChannelStrategy::FIXED,
true, // Supports system-level installs. true, // Supports system-level installs.
true, // Supports in-product set as default browser UX. true, // Supports in-product set as default browser UX.
...@@ -151,6 +174,13 @@ const InstallConstants kInstallModes[] = { ...@@ -151,6 +174,13 @@ const InstallConstants kInstallModes[] = {
0x2049, 0x2049,
0x435E, 0x435E,
{0xA4, 0x69, 0xA, 0x53, 0x43, 0x13, 0xC4, 0x2B}}, // Elevator CLSID. {0xA4, 0x69, 0xA, 0x53, 0x43, 0x13, 0xC4, 0x2B}}, // Elevator CLSID.
{0x4f7ce041,
0x28e9,
0x484f,
{0x9d, 0xd0, 0x61, 0xa8, 0xca, 0xce, 0xfe,
0xe4}}, // IElevator IID and TypeLib
// {4F7CE041-28E9-484F-9DD0-61A8CACEFEE4}.
L"canary", // Forced channel name. L"canary", // Forced channel name.
ChannelStrategy::FIXED, ChannelStrategy::FIXED,
false, // Does not support system-level installs. false, // Does not support system-level installs.
......
...@@ -104,6 +104,10 @@ struct InstallConstants { ...@@ -104,6 +104,10 @@ struct InstallConstants {
// The CLSID of the COM server that provides silent elevation functionality. // The CLSID of the COM server that provides silent elevation functionality.
CLSID elevator_clsid; CLSID elevator_clsid;
// The IID and the TypeLib of the IElevator interface that provides silent
// elevation functionality.
IID elevator_iid;
// The default name for this mode's update channel. // The default name for this mode's update channel.
const wchar_t* default_channel_name; const wchar_t* default_channel_name;
......
...@@ -114,6 +114,10 @@ class InstallDetails { ...@@ -114,6 +114,10 @@ class InstallDetails {
// The CLSID of the COM server that provides silent elevation functionality. // The CLSID of the COM server that provides silent elevation functionality.
const CLSID& elevator_clsid() const { return payload_->mode->elevator_clsid; } const CLSID& elevator_clsid() const { return payload_->mode->elevator_clsid; }
// The IID and the TypeLib of the IElevator interface that provides silent
// elevation functionality.
const IID& elevator_iid() const { return payload_->mode->elevator_iid; }
// Returns the unsuffixed portion of the AppUserModelId. The AppUserModelId is // Returns the unsuffixed portion of the AppUserModelId. The AppUserModelId is
// used to group an app's windows together on the Windows taskbar along with // used to group an app's windows together on the Windows taskbar along with
// its corresponding shortcuts; see // its corresponding shortcuts; see
......
...@@ -97,6 +97,9 @@ TEST(InstallModes, VerifyModes) { ...@@ -97,6 +97,9 @@ TEST(InstallModes, VerifyModes) {
// Every mode must have an elevator CLSID. // Every mode must have an elevator CLSID.
ASSERT_THAT(mode.elevator_clsid, Ne(CLSID_NULL)); ASSERT_THAT(mode.elevator_clsid, Ne(CLSID_NULL));
// Every mode must have an elevator IID.
ASSERT_THAT(mode.elevator_iid, Ne(CLSID_NULL));
// UNSUPPORTED and kUseGoogleUpdateIntegration are mutually exclusive. // UNSUPPORTED and kUseGoogleUpdateIntegration are mutually exclusive.
if (kUseGoogleUpdateIntegration) if (kUseGoogleUpdateIntegration)
ASSERT_THAT(mode.channel_strategy, Ne(ChannelStrategy::UNSUPPORTED)); ASSERT_THAT(mode.channel_strategy, Ne(ChannelStrategy::UNSUPPORTED));
......
...@@ -405,6 +405,10 @@ const CLSID& GetElevatorClsid() { ...@@ -405,6 +405,10 @@ const CLSID& GetElevatorClsid() {
return InstallDetails::Get().elevator_clsid(); return InstallDetails::Get().elevator_clsid();
} }
const CLSID& GetElevatorIid() {
return InstallDetails::Get().elevator_iid();
}
std::wstring GetElevationServiceName() { std::wstring GetElevationServiceName() {
std::wstring name = GetElevationServiceDisplayName(); std::wstring name = GetElevationServiceDisplayName();
name.erase(std::remove_if(name.begin(), name.end(), isspace), name.end()); name.erase(std::remove_if(name.begin(), name.end(), isspace), name.end());
......
...@@ -109,8 +109,10 @@ const wchar_t* GetAppGuid(); ...@@ -109,8 +109,10 @@ const wchar_t* GetAppGuid();
// the Windows OS. // the Windows OS.
const CLSID& GetToastActivatorClsid(); const CLSID& GetToastActivatorClsid();
// Return the Elevation Service CLSID, Name, and Display Name respectively. // Returns the Elevation Service CLSID, IID, Name, and Display Name
// respectively.
const CLSID& GetElevatorClsid(); const CLSID& GetElevatorClsid();
const IID& GetElevatorIid();
std::wstring GetElevationServiceName(); std::wstring GetElevationServiceName();
std::wstring GetElevationServiceDisplayName(); std::wstring GetElevationServiceDisplayName();
......
...@@ -581,6 +581,73 @@ TEST_P(InstallStaticUtilTest, GetElevatorClsid) { ...@@ -581,6 +581,73 @@ TEST_P(InstallStaticUtilTest, GetElevatorClsid) {
StrCaseEq(kElevatorClsidsString[std::get<0>(GetParam())])); StrCaseEq(kElevatorClsidsString[std::get<0>(GetParam())]));
} }
TEST_P(InstallStaticUtilTest, GetElevatorIid) {
#if defined(GOOGLE_CHROME_BUILD)
// The Elevator IIDs, one for each of the kInstallModes.
static constexpr IID kElevatorIids[] = {
{0x463abecf,
0x410d,
0x407f,
{0x8a, 0xf5, 0xd, 0xf3, 0x5a, 0x0, 0x5c,
0xc8}}, // IElevator IID and TypeLib
// {463ABECF-410D-407F-8AF5-0DF35A005CC8} for Google Chrome.
{0xa2721d66,
0x376e,
0x4d2f,
{0x9f, 0xf, 0x90, 0x70, 0xe9, 0xa4, 0x2b,
0x5f}}, // IElevator IID and TypeLib
// {A2721D66-376E-4D2F-9F0F-9070E9A42B5F} for Google Chrome
// Beta.
{0xbb2aa26b,
0x343a,
0x4072,
{0x8b, 0x6f, 0x80, 0x55, 0x7b, 0x8c, 0xe5,
0x71}}, // IElevator IID and TypeLib
// {BB2AA26B-343A-4072-8B6F-80557B8CE571} for Google Chrome
// Dev.
{0x4f7ce041,
0x28e9,
0x484f,
{0x9d, 0xd0, 0x61, 0xa8, 0xca, 0xce, 0xfe,
0xe4}}, // IElevator IID and TypeLib
// {4F7CE041-28E9-484F-9DD0-61A8CACEFEE4} for Google Chrome
// Canary.
};
// The string representation of the IIDs above.
static constexpr const wchar_t* kElevatorIidsString[] = {
L"{463ABECF-410D-407F-8AF5-0DF35A005CC8}", // Google Chrome.
L"{A2721D66-376E-4D2F-9F0F-9070E9A42B5F}", // Google Chrome Beta.
L"{BB2AA26B-343A-4072-8B6F-80557B8CE571}", // Google Chrome Dev.
L"{4F7CE041-28E9-484F-9DD0-61A8CACEFEE4}", // Google Chrome Canary.
};
#else
// The Elevator IIDs, one for each of the kInstallModes.
static constexpr IID kElevatorIids[] = {
{0xb88c45b9,
0x8825,
0x4629,
{0xb8, 0x3e, 0x77, 0xcc, 0x67, 0xd9, 0xce,
0xed}}, // IElevator IID and TypeLib
// {B88C45B9-8825-4629-B83E-77CC67D9CEED} for Chromium.
};
// The string representation of the IIDs above.
static constexpr const wchar_t* kElevatorIidsString[] = {
L"{B88C45B9-8825-4629-B83E-77CC67D9CEED}", // Chromium.
};
#endif
static_assert(base::size(kElevatorIids) == NUM_INSTALL_MODES,
"kElevatorIids needs to be updated for any new modes.");
EXPECT_EQ(GetElevatorIid(), kElevatorIids[std::get<0>(GetParam())]);
constexpr int kIIDSize = 39;
wchar_t iid_str[kIIDSize] = {};
ASSERT_EQ(::StringFromGUID2(GetElevatorIid(), iid_str, kIIDSize), kIIDSize);
EXPECT_THAT(iid_str, StrCaseEq(kElevatorIidsString[std::get<0>(GetParam())]));
}
TEST_P(InstallStaticUtilTest, UsageStatsAbsent) { TEST_P(InstallStaticUtilTest, UsageStatsAbsent) {
EXPECT_FALSE(GetCollectStatsConsent()); EXPECT_FALSE(GetCollectStatsConsent());
} }
......
...@@ -444,10 +444,14 @@ void AddElevationServiceWorkItems(const base::FilePath& elevation_service_path, ...@@ -444,10 +444,14 @@ void AddElevationServiceWorkItems(const base::FilePath& elevation_service_path,
const base::string16 clsid_reg_path = GetElevationServiceClsidRegistryPath(); const base::string16 clsid_reg_path = GetElevationServiceClsidRegistryPath();
const base::string16 appid_reg_path = GetElevationServiceAppidRegistryPath(); const base::string16 appid_reg_path = GetElevationServiceAppidRegistryPath();
const base::string16 iid_reg_path = GetElevationServiceIidRegistryPath();
const base::string16 typelib_reg_path =
GetElevationServiceTypeLibRegistryPath();
// Delete any old registrations first, taking into account 32-bit -> 64-bit or // Delete any old registrations first, taking into account 32-bit -> 64-bit or
// 64-bit -> 32-bit migration. // 64-bit -> 32-bit migration.
for (const auto& reg_path : {clsid_reg_path, appid_reg_path}) { for (const auto& reg_path :
{clsid_reg_path, appid_reg_path, iid_reg_path, typelib_reg_path}) {
for (const auto& key_flag : {KEY_WOW64_32KEY, KEY_WOW64_64KEY}) for (const auto& key_flag : {KEY_WOW64_32KEY, KEY_WOW64_64KEY})
list->AddDeleteRegKeyWorkItem(root, reg_path, key_flag); list->AddDeleteRegKeyWorkItem(root, reg_path, key_flag);
} }
...@@ -464,6 +468,39 @@ void AddElevationServiceWorkItems(const base::FilePath& elevation_service_path, ...@@ -464,6 +468,39 @@ void AddElevationServiceWorkItems(const base::FilePath& elevation_service_path,
list->AddSetRegValueWorkItem(root, appid_reg_path, WorkItem::kWow64Default, list->AddSetRegValueWorkItem(root, appid_reg_path, WorkItem::kWow64Default,
L"LocalService", L"LocalService",
install_static::GetElevationServiceName(), true); install_static::GetElevationServiceName(), true);
// Registering the Ole Automation marshaler with the CLSID
// {00020424-0000-0000-C000-000000000046} as the proxy/stub for the IElevator
// interface.
list->AddCreateRegKeyWorkItem(root, iid_reg_path, WorkItem::kWow64Default);
list->AddCreateRegKeyWorkItem(root, iid_reg_path + L"\\ProxyStubClsid32",
WorkItem::kWow64Default);
list->AddSetRegValueWorkItem(root, iid_reg_path + L"\\ProxyStubClsid32",
WorkItem::kWow64Default, L"",
L"{00020424-0000-0000-C000-000000000046}", true);
list->AddCreateRegKeyWorkItem(root, iid_reg_path + L"\\TypeLib",
WorkItem::kWow64Default);
list->AddSetRegValueWorkItem(root, iid_reg_path + L"\\TypeLib",
WorkItem::kWow64Default, L"",
GetElevationServiceIid(L""), true);
// The TypeLib registration for the Ole Automation marshaler.
list->AddCreateRegKeyWorkItem(root, typelib_reg_path,
WorkItem::kWow64Default);
list->AddCreateRegKeyWorkItem(root, typelib_reg_path + L"\\1.0",
WorkItem::kWow64Default);
list->AddCreateRegKeyWorkItem(root, typelib_reg_path + L"\\1.0\\0",
WorkItem::kWow64Default);
list->AddCreateRegKeyWorkItem(root, typelib_reg_path + L"\\1.0\\0\\win32",
WorkItem::kWow64Default);
list->AddSetRegValueWorkItem(root, typelib_reg_path + L"\\1.0\\0\\win32",
WorkItem::kWow64Default, L"",
elevation_service_path.value(), true);
list->AddCreateRegKeyWorkItem(root, typelib_reg_path + L"\\1.0\\0\\win64",
WorkItem::kWow64Default);
list->AddSetRegValueWorkItem(root, typelib_reg_path + L"\\1.0\\0\\win64",
WorkItem::kWow64Default, L"",
elevation_service_path.value(), true);
} }
} // namespace } // namespace
......
...@@ -879,4 +879,19 @@ base::string16 GetElevationServiceAppidRegistryPath() { ...@@ -879,4 +879,19 @@ base::string16 GetElevationServiceAppidRegistryPath() {
return GetElevationServiceGuid(L"Software\\Classes\\AppID\\"); return GetElevationServiceGuid(L"Software\\Classes\\AppID\\");
} }
base::string16 GetElevationServiceIid(base::StringPiece16 prefix) {
base::string16 result =
InstallUtil::String16FromGUID(install_static::GetElevatorIid());
result.insert(0, prefix.data(), prefix.size());
return result;
}
base::string16 GetElevationServiceIidRegistryPath() {
return GetElevationServiceIid(L"Software\\Classes\\Interface\\");
}
base::string16 GetElevationServiceTypeLibRegistryPath() {
return GetElevationServiceIid(L"Software\\Classes\\TypeLib\\");
}
} // namespace installer } // namespace installer
...@@ -168,6 +168,9 @@ base::string16 GetElevationServiceGuid(base::StringPiece16 prefix); ...@@ -168,6 +168,9 @@ base::string16 GetElevationServiceGuid(base::StringPiece16 prefix);
// Return the elevation service registry paths. // Return the elevation service registry paths.
base::string16 GetElevationServiceClsidRegistryPath(); base::string16 GetElevationServiceClsidRegistryPath();
base::string16 GetElevationServiceAppidRegistryPath(); base::string16 GetElevationServiceAppidRegistryPath();
base::string16 GetElevationServiceIid(base::StringPiece16 prefix);
base::string16 GetElevationServiceIidRegistryPath();
base::string16 GetElevationServiceTypeLibRegistryPath();
} // namespace installer } // namespace installer
......
...@@ -640,8 +640,13 @@ bool DeleteChromeRegistrationKeys(const InstallerState& installer_state, ...@@ -640,8 +640,13 @@ bool DeleteChromeRegistrationKeys(const InstallerState& installer_state,
GetElevationServiceClsidRegistryPath(); GetElevationServiceClsidRegistryPath();
const base::string16 appid_reg_path = const base::string16 appid_reg_path =
GetElevationServiceAppidRegistryPath(); GetElevationServiceAppidRegistryPath();
for (const auto& reg_path : {clsid_reg_path, appid_reg_path}) const base::string16 iid_reg_path = GetElevationServiceIidRegistryPath();
const base::string16 typelib_reg_path =
GetElevationServiceTypeLibRegistryPath();
for (const auto& reg_path :
{clsid_reg_path, appid_reg_path, iid_reg_path, typelib_reg_path}) {
InstallUtil::DeleteRegistryKey(root, reg_path, WorkItem::kWow64Default); InstallUtil::DeleteRegistryKey(root, reg_path, WorkItem::kWow64Default);
}
LOG_IF(WARNING, !InstallServiceWorkItem::DeleteService( LOG_IF(WARNING, !InstallServiceWorkItem::DeleteService(
install_static::GetElevationServiceName())); install_static::GetElevationServiceName()));
......
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_BETA": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_BETA": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_BETA": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_BETA": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_BETA$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_BETA$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -37,6 +37,12 @@ ...@@ -37,6 +37,12 @@
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_BETA": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_BETA": {
"exists": "forbidden" "exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_BETA": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_BETA": {
"exists": "forbidden"
} }
} }
} }
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_SXS": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_SXS": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_SXS": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_SXS": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_SXS$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_SXS$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -37,6 +37,12 @@ ...@@ -37,6 +37,12 @@
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_SXS": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_SXS": {
"exists": "forbidden" "exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_SXS": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_SXS": {
"exists": "forbidden"
} }
} }
} }
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_DEV": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_DEV": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_DEV": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_DEV": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_DEV$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_DEV$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -37,6 +37,12 @@ ...@@ -37,6 +37,12 @@
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_DEV": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_DEV": {
"exists": "forbidden" "exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_DEV": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_DEV": {
"exists": "forbidden"
} }
} }
} }
...@@ -80,6 +80,46 @@ ...@@ -80,6 +80,46 @@
} }
} }
}, },
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID\\ProxyStubClsid32": {
"exists": "required",
"values": {
"type": "SZ",
"data": "{00020424-0000-0000-C000-000000000046}"
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID\\TypeLib": {
"exists": "required",
"values": {
"type": "SZ",
"data": "$CHROME_ELEVATOR_IID"
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0\\win32": {
"exists": "required",
"values": {
"type": "SZ",
"data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION\\elevation_service.exe\""
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0\\win64": {
"exists": "required",
"values": {
"type": "SZ",
"data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION\\elevation_service.exe\""
}
},
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": { "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": {
"exists": "required", "exists": "required",
"values": { "values": {
......
...@@ -68,6 +68,12 @@ ...@@ -68,6 +68,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -91,6 +91,46 @@ ...@@ -91,6 +91,46 @@
} }
} }
}, },
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID\\ProxyStubClsid32": {
"exists": "required",
"values": {
"type": "SZ",
"data": "{00020424-0000-0000-C000-000000000046}"
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID\\TypeLib": {
"exists": "required",
"values": {
"type": "SZ",
"data": "$CHROME_ELEVATOR_IID"
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0\\win32": {
"exists": "required",
"values": {
"type": "SZ",
"data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$MINI_INSTALLER_FILE_VERSION\\elevation_service.exe\""
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0\\win64": {
"exists": "required",
"values": {
"type": "SZ",
"data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$MINI_INSTALLER_FILE_VERSION\\elevation_service.exe\""
}
},
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": { "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": {
"exists": "required", "exists": "required",
"values": { "values": {
......
...@@ -44,6 +44,12 @@ ...@@ -44,6 +44,12 @@
"HKEY_LOCAL_MACHINE\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": { "HKEY_LOCAL_MACHINE\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": { "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -64,6 +64,12 @@ ...@@ -64,6 +64,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -43,6 +43,12 @@ ...@@ -43,6 +43,12 @@
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": {
"exists": "forbidden" "exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
} }
} }
} }
...@@ -48,6 +48,12 @@ ...@@ -48,6 +48,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_SXS": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID_SXS": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID_SXS": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID_SXS": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_SXS$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME_SXS$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -89,6 +89,46 @@ ...@@ -89,6 +89,46 @@
} }
} }
}, },
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID\\ProxyStubClsid32": {
"exists": "required",
"values": {
"type": "SZ",
"data": "{00020424-0000-0000-C000-000000000046}"
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID\\TypeLib": {
"exists": "required",
"values": {
"type": "SZ",
"data": "$CHROME_ELEVATOR_IID"
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0": {
"exists": "required"
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0\\win32": {
"exists": "required",
"values": {
"type": "SZ",
"data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION\\elevation_service.exe\""
}
},
"HKEY_LOCAL_MACHINE\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID\\1.0\\0\\win64": {
"exists": "required",
"values": {
"type": "SZ",
"data": "\"$PROGRAM_FILES\\$CHROME_DIR\\Application\\$PREVIOUS_VERSION_MINI_INSTALLER_FILE_VERSION\\elevation_service.exe\""
}
},
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": { "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\$CHROME_ELEVATION_SERVICE_NAME": {
"exists": "required", "exists": "required",
"values": { "values": {
......
...@@ -62,6 +62,12 @@ ...@@ -62,6 +62,12 @@
"HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": { "HKEY_CURRENT_USER\\Software\\Classes\\AppID\\$CHROME_ELEVATOR_CLSID": {
"exists": "forbidden" "exists": "forbidden"
}, },
"HKEY_CURRENT_USER\\Software\\Classes\\Interface\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\TypeLib\\$CHROME_ELEVATOR_IID": {
"exists": "forbidden"
},
"HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME$USER_SPECIFIC_REGISTRY_SUFFIX": { "HKEY_CURRENT_USER\\Software\\Classes\\$CHROME_SHORT_NAME$USER_SPECIFIC_REGISTRY_SUFFIX": {
"exists": "forbidden" "exists": "forbidden"
} }
......
...@@ -125,6 +125,10 @@ class VariableExpander: ...@@ -125,6 +125,10 @@ class VariableExpander:
* $CHROME_ELEVATOR_CLSID_BETA: Elevator Service CLSID for Chrome Beta. * $CHROME_ELEVATOR_CLSID_BETA: Elevator Service CLSID for Chrome Beta.
* $CHROME_ELEVATOR_CLSID_DEV: Elevator Service CLSID for Chrome Dev. * $CHROME_ELEVATOR_CLSID_DEV: Elevator Service CLSID for Chrome Dev.
* $CHROME_ELEVATOR_CLSID_SXS: Elevator Service CLSID for Chrome SxS. * $CHROME_ELEVATOR_CLSID_SXS: Elevator Service CLSID for Chrome SxS.
* $CHROME_ELEVATOR_IID: IElevator IID for Chrome.
* $CHROME_ELEVATOR_IID_BETA: IElevator IID for Chrome Beta.
* $CHROME_ELEVATOR_IID_DEV: IElevator IID for Chrome Dev.
* $CHROME_ELEVATOR_IID_SXS: IElevator IID for Chrome SxS.
* $CHROME_ELEVATION_SERVICE_NAME: Elevation Service Name for Chrome. * $CHROME_ELEVATION_SERVICE_NAME: Elevation Service Name for Chrome.
* $CHROME_ELEVATION_SERVICE_NAME_BETA: Elevation Service Name for Chrome * $CHROME_ELEVATION_SERVICE_NAME_BETA: Elevation Service Name for Chrome
Beta. Beta.
...@@ -232,6 +236,13 @@ class VariableExpander: ...@@ -232,6 +236,13 @@ class VariableExpander:
'{DA7FDCA5-2CAA-4637-AA17-0740584DE7DA}'), '{DA7FDCA5-2CAA-4637-AA17-0740584DE7DA}'),
'CHROME_ELEVATOR_CLSID_SXS': ( 'CHROME_ELEVATOR_CLSID_SXS': (
'{704C2872-2049-435E-A469-0A534313C42B}'), '{704C2872-2049-435E-A469-0A534313C42B}'),
'CHROME_ELEVATOR_IID': ('{463ABECF-410D-407F-8AF5-0DF35A005CC8}'),
'CHROME_ELEVATOR_IID_BETA': (
'{A2721D66-376E-4D2F-9F0F-9070E9A42B5F}'),
'CHROME_ELEVATOR_IID_DEV': (
'{BB2AA26B-343A-4072-8B6F-80557B8CE571}'),
'CHROME_ELEVATOR_IID_SXS': (
'{4F7CE041-28E9-484F-9DD0-61A8CACEFEE4}'),
'CHROME_ELEVATION_SERVICE_NAME': ( 'CHROME_ELEVATION_SERVICE_NAME': (
'GoogleChromeElevationService'), 'GoogleChromeElevationService'),
'CHROME_ELEVATION_SERVICE_NAME_BETA': ( 'CHROME_ELEVATION_SERVICE_NAME_BETA': (
...@@ -262,6 +273,7 @@ class VariableExpander: ...@@ -262,6 +273,7 @@ class VariableExpander:
'CHROME_TOAST_ACTIVATOR_CLSID': ( 'CHROME_TOAST_ACTIVATOR_CLSID': (
'{635EFA6F-08D6-4EC9-BD14-8A0FDE975159}'), '{635EFA6F-08D6-4EC9-BD14-8A0FDE975159}'),
'CHROME_ELEVATOR_CLSID': ('{D133B120-6DB4-4D6B-8BFE-83BF8CA1B1B0}'), 'CHROME_ELEVATOR_CLSID': ('{D133B120-6DB4-4D6B-8BFE-83BF8CA1B1B0}'),
'CHROME_ELEVATOR_IID': ('{B88C45B9-8825-4629-B83E-77CC67D9CEED}'),
'CHROME_ELEVATION_SERVICE_NAME': 'ChromiumElevationService', 'CHROME_ELEVATION_SERVICE_NAME': 'ChromiumElevationService',
'CHROME_ELEVATION_SERVICE_DISPLAY_NAME': ( 'CHROME_ELEVATION_SERVICE_DISPLAY_NAME': (
'Chromium Elevation Service'), 'Chromium Elevation Service'),
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
*********************************************************/ *********************************************************/
#define PROXY_DELEGATION
#include <rpcproxy.h> #include <rpcproxy.h>
......
...@@ -52,6 +52,41 @@ typedef interface IElevator IElevator; ...@@ -52,6 +52,41 @@ typedef interface IElevator IElevator;
#endif /* __IElevator_FWD_DEFINED__ */ #endif /* __IElevator_FWD_DEFINED__ */
#ifndef __IElevatorChromium_FWD_DEFINED__
#define __IElevatorChromium_FWD_DEFINED__
typedef interface IElevatorChromium IElevatorChromium;
#endif /* __IElevatorChromium_FWD_DEFINED__ */
#ifndef __IElevatorChrome_FWD_DEFINED__
#define __IElevatorChrome_FWD_DEFINED__
typedef interface IElevatorChrome IElevatorChrome;
#endif /* __IElevatorChrome_FWD_DEFINED__ */
#ifndef __IElevatorChromeBeta_FWD_DEFINED__
#define __IElevatorChromeBeta_FWD_DEFINED__
typedef interface IElevatorChromeBeta IElevatorChromeBeta;
#endif /* __IElevatorChromeBeta_FWD_DEFINED__ */
#ifndef __IElevatorChromeDev_FWD_DEFINED__
#define __IElevatorChromeDev_FWD_DEFINED__
typedef interface IElevatorChromeDev IElevatorChromeDev;
#endif /* __IElevatorChromeDev_FWD_DEFINED__ */
#ifndef __IElevatorChromeCanary_FWD_DEFINED__
#define __IElevatorChromeCanary_FWD_DEFINED__
typedef interface IElevatorChromeCanary IElevatorChromeCanary;
#endif /* __IElevatorChromeCanary_FWD_DEFINED__ */
#ifndef __IElevator_FWD_DEFINED__ #ifndef __IElevator_FWD_DEFINED__
#define __IElevator_FWD_DEFINED__ #define __IElevator_FWD_DEFINED__
typedef interface IElevator IElevator; typedef interface IElevator IElevator;
...@@ -59,6 +94,41 @@ typedef interface IElevator IElevator; ...@@ -59,6 +94,41 @@ typedef interface IElevator IElevator;
#endif /* __IElevator_FWD_DEFINED__ */ #endif /* __IElevator_FWD_DEFINED__ */
#ifndef __IElevatorChromium_FWD_DEFINED__
#define __IElevatorChromium_FWD_DEFINED__
typedef interface IElevatorChromium IElevatorChromium;
#endif /* __IElevatorChromium_FWD_DEFINED__ */
#ifndef __IElevatorChrome_FWD_DEFINED__
#define __IElevatorChrome_FWD_DEFINED__
typedef interface IElevatorChrome IElevatorChrome;
#endif /* __IElevatorChrome_FWD_DEFINED__ */
#ifndef __IElevatorChromeBeta_FWD_DEFINED__
#define __IElevatorChromeBeta_FWD_DEFINED__
typedef interface IElevatorChromeBeta IElevatorChromeBeta;
#endif /* __IElevatorChromeBeta_FWD_DEFINED__ */
#ifndef __IElevatorChromeDev_FWD_DEFINED__
#define __IElevatorChromeDev_FWD_DEFINED__
typedef interface IElevatorChromeDev IElevatorChromeDev;
#endif /* __IElevatorChromeDev_FWD_DEFINED__ */
#ifndef __IElevatorChromeCanary_FWD_DEFINED__
#define __IElevatorChromeCanary_FWD_DEFINED__
typedef interface IElevatorChromeCanary IElevatorChromeCanary;
#endif /* __IElevatorChromeCanary_FWD_DEFINED__ */
/* header files for imported files */ /* header files for imported files */
#include "oaidl.h" #include "oaidl.h"
#include "ocidl.h" #include "ocidl.h"
...@@ -158,6 +228,421 @@ EXTERN_C const IID IID_IElevator; ...@@ -158,6 +228,421 @@ EXTERN_C const IID IID_IElevator;
#endif /* __IElevator_INTERFACE_DEFINED__ */ #endif /* __IElevator_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromium_INTERFACE_DEFINED__
#define __IElevatorChromium_INTERFACE_DEFINED__
/* interface IElevatorChromium */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromium;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("B88C45B9-8825-4629-B83E-77CC67D9CEED")
IElevatorChromium : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromiumVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromium * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromium * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromium * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromium * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromiumVtbl;
interface IElevatorChromium
{
CONST_VTBL struct IElevatorChromiumVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromium_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromium_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromium_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromium_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromium_INTERFACE_DEFINED__ */
#ifndef __IElevatorChrome_INTERFACE_DEFINED__
#define __IElevatorChrome_INTERFACE_DEFINED__
/* interface IElevatorChrome */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChrome;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("463ABECF-410D-407F-8AF5-0DF35A005CC8")
IElevatorChrome : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChrome * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChrome * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChrome * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChrome * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeVtbl;
interface IElevatorChrome
{
CONST_VTBL struct IElevatorChromeVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChrome_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChrome_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChrome_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChrome_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChrome_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromeBeta_INTERFACE_DEFINED__
#define __IElevatorChromeBeta_INTERFACE_DEFINED__
/* interface IElevatorChromeBeta */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromeBeta;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("A2721D66-376E-4D2F-9F0F-9070E9A42B5F")
IElevatorChromeBeta : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeBetaVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromeBeta * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromeBeta * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromeBeta * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromeBeta * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeBetaVtbl;
interface IElevatorChromeBeta
{
CONST_VTBL struct IElevatorChromeBetaVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromeBeta_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromeBeta_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromeBeta_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromeBeta_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromeBeta_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromeDev_INTERFACE_DEFINED__
#define __IElevatorChromeDev_INTERFACE_DEFINED__
/* interface IElevatorChromeDev */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromeDev;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("BB2AA26B-343A-4072-8B6F-80557B8CE571")
IElevatorChromeDev : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeDevVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromeDev * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromeDev * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromeDev * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromeDev * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeDevVtbl;
interface IElevatorChromeDev
{
CONST_VTBL struct IElevatorChromeDevVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromeDev_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromeDev_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromeDev_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromeDev_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromeDev_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromeCanary_INTERFACE_DEFINED__
#define __IElevatorChromeCanary_INTERFACE_DEFINED__
/* interface IElevatorChromeCanary */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromeCanary;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4F7CE041-28E9-484F-9DD0-61A8CACEFEE4")
IElevatorChromeCanary : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeCanaryVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromeCanary * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromeCanary * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromeCanary * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromeCanary * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeCanaryVtbl;
interface IElevatorChromeCanary
{
CONST_VTBL struct IElevatorChromeCanaryVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromeCanary_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromeCanary_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromeCanary_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromeCanary_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromeCanary_INTERFACE_DEFINED__ */
#ifndef __ElevatorLib_LIBRARY_DEFINED__ #ifndef __ElevatorLib_LIBRARY_DEFINED__
#define __ElevatorLib_LIBRARY_DEFINED__ #define __ElevatorLib_LIBRARY_DEFINED__
...@@ -167,6 +652,11 @@ EXTERN_C const IID IID_IElevator; ...@@ -167,6 +652,11 @@ EXTERN_C const IID IID_IElevator;
EXTERN_C const IID LIBID_ElevatorLib; EXTERN_C const IID LIBID_ElevatorLib;
#endif /* __ElevatorLib_LIBRARY_DEFINED__ */ #endif /* __ElevatorLib_LIBRARY_DEFINED__ */
......
...@@ -70,6 +70,21 @@ typedef IID CLSID; ...@@ -70,6 +70,21 @@ typedef IID CLSID;
MIDL_DEFINE_GUID(IID, IID_IElevator,0xA949CB4E,0xC4F9,0x44C4,0xB2,0x13,0x6B,0xF8,0xAA,0x9A,0xC6,0x9C); MIDL_DEFINE_GUID(IID, IID_IElevator,0xA949CB4E,0xC4F9,0x44C4,0xB2,0x13,0x6B,0xF8,0xAA,0x9A,0xC6,0x9C);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromium,0xB88C45B9,0x8825,0x4629,0xB8,0x3E,0x77,0xCC,0x67,0xD9,0xCE,0xED);
MIDL_DEFINE_GUID(IID, IID_IElevatorChrome,0x463ABECF,0x410D,0x407F,0x8A,0xF5,0x0D,0xF3,0x5A,0x00,0x5C,0xC8);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromeBeta,0xA2721D66,0x376E,0x4D2F,0x9F,0x0F,0x90,0x70,0xE9,0xA4,0x2B,0x5F);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromeDev,0xBB2AA26B,0x343A,0x4072,0x8B,0x6F,0x80,0x55,0x7B,0x8C,0xE5,0x71);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromeCanary,0x4F7CE041,0x28E9,0x484F,0x9D,0xD0,0x61,0xA8,0xCA,0xCE,0xFE,0xE4);
MIDL_DEFINE_GUID(IID, LIBID_ElevatorLib,0x0014D784,0x7012,0x4A79,0x8A,0xB6,0xAD,0xDB,0x81,0x93,0xA0,0x6E); MIDL_DEFINE_GUID(IID, LIBID_ElevatorLib,0x0014D784,0x7012,0x4A79,0x8A,0xB6,0xAD,0xDB,0x81,0x93,0xA0,0x6E);
#undef MIDL_DEFINE_GUID #undef MIDL_DEFINE_GUID
......
...@@ -87,6 +87,41 @@ extern const MIDL_SERVER_INFO IElevator_ServerInfo; ...@@ -87,6 +87,41 @@ extern const MIDL_SERVER_INFO IElevator_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevator_ProxyInfo; extern const MIDL_STUBLESS_PROXY_INFO IElevator_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromium_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromium_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChrome_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChrome_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromeBeta_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromeBeta_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromeDev_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromeDev_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromeCanary_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromeCanary_ProxyInfo;
#if !defined(__RPC_WIN64__) #if !defined(__RPC_WIN64__)
#error Invalid build platform for this stub. #error Invalid build platform for this stub.
...@@ -237,6 +272,291 @@ const CInterfaceStubVtbl _IElevatorStubVtbl = ...@@ -237,6 +272,291 @@ const CInterfaceStubVtbl _IElevatorStubVtbl =
CStdStubBuffer_METHODS CStdStubBuffer_METHODS
}; };
/* Object interface: IElevatorChromium, ver. 0.0,
GUID={0xB88C45B9,0x8825,0x4629,{0xB8,0x3E,0x77,0xCC,0x67,0xD9,0xCE,0xED}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromium_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromium_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromium_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromium_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromium_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromiumProxyVtbl =
{
0,
&IID_IElevatorChromium,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromium_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromiumStubVtbl =
{
&IID_IElevatorChromium,
&IElevatorChromium_ServerInfo,
4,
&IElevatorChromium_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChrome, ver. 0.0,
GUID={0x463ABECF,0x410D,0x407F,{0x8A,0xF5,0x0D,0xF3,0x5A,0x00,0x5C,0xC8}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChrome_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChrome_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChrome_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChrome_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChrome_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeProxyVtbl =
{
0,
&IID_IElevatorChrome,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChrome_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeStubVtbl =
{
&IID_IElevatorChrome,
&IElevatorChrome_ServerInfo,
4,
&IElevatorChrome_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChromeBeta, ver. 0.0,
GUID={0xA2721D66,0x376E,0x4D2F,{0x9F,0x0F,0x90,0x70,0xE9,0xA4,0x2B,0x5F}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromeBeta_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromeBeta_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeBeta_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromeBeta_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeBeta_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeBetaProxyVtbl =
{
0,
&IID_IElevatorChromeBeta,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromeBeta_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeBetaStubVtbl =
{
&IID_IElevatorChromeBeta,
&IElevatorChromeBeta_ServerInfo,
4,
&IElevatorChromeBeta_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChromeDev, ver. 0.0,
GUID={0xBB2AA26B,0x343A,0x4072,{0x8B,0x6F,0x80,0x55,0x7B,0x8C,0xE5,0x71}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromeDev_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromeDev_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeDev_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromeDev_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeDev_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeDevProxyVtbl =
{
0,
&IID_IElevatorChromeDev,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromeDev_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeDevStubVtbl =
{
&IID_IElevatorChromeDev,
&IElevatorChromeDev_ServerInfo,
4,
&IElevatorChromeDev_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChromeCanary, ver. 0.0,
GUID={0x4F7CE041,0x28E9,0x484F,{0x9D,0xD0,0x61,0xA8,0xCA,0xCE,0xFE,0xE4}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromeCanary_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromeCanary_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeCanary_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromeCanary_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeCanary_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeCanaryProxyVtbl =
{
0,
&IID_IElevatorChromeCanary,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromeCanary_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeCanaryStubVtbl =
{
&IID_IElevatorChromeCanary,
&IElevatorChromeCanary_ServerInfo,
4,
&IElevatorChromeCanary_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
static const MIDL_STUB_DESC Object_StubDesc = static const MIDL_STUB_DESC Object_StubDesc =
{ {
0, 0,
...@@ -263,19 +583,45 @@ static const MIDL_STUB_DESC Object_StubDesc = ...@@ -263,19 +583,45 @@ static const MIDL_STUB_DESC Object_StubDesc =
const CInterfaceProxyVtbl * const _elevation_service_idl_ProxyVtblList[] = const CInterfaceProxyVtbl * const _elevation_service_idl_ProxyVtblList[] =
{ {
( CInterfaceProxyVtbl *) &_IElevatorChromeCanaryProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorProxyVtbl, ( CInterfaceProxyVtbl *) &_IElevatorProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromeBetaProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromeDevProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromiumProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromeProxyVtbl,
0 0
}; };
const CInterfaceStubVtbl * const _elevation_service_idl_StubVtblList[] = const CInterfaceStubVtbl * const _elevation_service_idl_StubVtblList[] =
{ {
( CInterfaceStubVtbl *) &_IElevatorChromeCanaryStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorStubVtbl, ( CInterfaceStubVtbl *) &_IElevatorStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromeBetaStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromeDevStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromiumStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromeStubVtbl,
0 0
}; };
PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] = PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] =
{ {
"IElevatorChromeCanary",
"IElevator", "IElevator",
"IElevatorChromeBeta",
"IElevatorChromeDev",
"IElevatorChromium",
"IElevatorChrome",
0
};
const IID * const _elevation_service_idl_BaseIIDList[] =
{
&IID_IElevator, /* forced */
0,
&IID_IElevator, /* forced */
&IID_IElevator, /* forced */
&IID_IElevator, /* forced */
&IID_IElevator, /* forced */
0 0
}; };
...@@ -284,14 +630,13 @@ PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] = ...@@ -284,14 +630,13 @@ PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] =
int __stdcall _elevation_service_idl_IID_Lookup( const IID * pIID, int * pIndex ) int __stdcall _elevation_service_idl_IID_Lookup( const IID * pIID, int * pIndex )
{ {
IID_BS_LOOKUP_SETUP
if(!_elevation_service_idl_CHECK_IID(0))
{
*pIndex = 0;
return 1;
}
return 0; IID_BS_LOOKUP_INITIAL_TEST( _elevation_service_idl, 6, 4 )
IID_BS_LOOKUP_NEXT_TEST( _elevation_service_idl, 2 )
IID_BS_LOOKUP_NEXT_TEST( _elevation_service_idl, 1 )
IID_BS_LOOKUP_RETURN_RESULT( _elevation_service_idl, 6, *pIndex )
} }
const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo = const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo =
...@@ -299,9 +644,9 @@ const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo = ...@@ -299,9 +644,9 @@ const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo =
(PCInterfaceProxyVtblList *) & _elevation_service_idl_ProxyVtblList, (PCInterfaceProxyVtblList *) & _elevation_service_idl_ProxyVtblList,
(PCInterfaceStubVtblList *) & _elevation_service_idl_StubVtblList, (PCInterfaceStubVtblList *) & _elevation_service_idl_StubVtblList,
(const PCInterfaceName * ) & _elevation_service_idl_InterfaceNamesList, (const PCInterfaceName * ) & _elevation_service_idl_InterfaceNamesList,
0, /* no delegation */ (const IID ** ) & _elevation_service_idl_BaseIIDList,
& _elevation_service_idl_IID_Lookup, & _elevation_service_idl_IID_Lookup,
1, 6,
2, 2,
0, /* table of [async_uuid] interfaces */ 0, /* table of [async_uuid] interfaces */
0, /* Filler1 */ 0, /* Filler1 */
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
*********************************************************/ *********************************************************/
#define PROXY_DELEGATION
#include <rpcproxy.h> #include <rpcproxy.h>
......
...@@ -52,6 +52,41 @@ typedef interface IElevator IElevator; ...@@ -52,6 +52,41 @@ typedef interface IElevator IElevator;
#endif /* __IElevator_FWD_DEFINED__ */ #endif /* __IElevator_FWD_DEFINED__ */
#ifndef __IElevatorChromium_FWD_DEFINED__
#define __IElevatorChromium_FWD_DEFINED__
typedef interface IElevatorChromium IElevatorChromium;
#endif /* __IElevatorChromium_FWD_DEFINED__ */
#ifndef __IElevatorChrome_FWD_DEFINED__
#define __IElevatorChrome_FWD_DEFINED__
typedef interface IElevatorChrome IElevatorChrome;
#endif /* __IElevatorChrome_FWD_DEFINED__ */
#ifndef __IElevatorChromeBeta_FWD_DEFINED__
#define __IElevatorChromeBeta_FWD_DEFINED__
typedef interface IElevatorChromeBeta IElevatorChromeBeta;
#endif /* __IElevatorChromeBeta_FWD_DEFINED__ */
#ifndef __IElevatorChromeDev_FWD_DEFINED__
#define __IElevatorChromeDev_FWD_DEFINED__
typedef interface IElevatorChromeDev IElevatorChromeDev;
#endif /* __IElevatorChromeDev_FWD_DEFINED__ */
#ifndef __IElevatorChromeCanary_FWD_DEFINED__
#define __IElevatorChromeCanary_FWD_DEFINED__
typedef interface IElevatorChromeCanary IElevatorChromeCanary;
#endif /* __IElevatorChromeCanary_FWD_DEFINED__ */
#ifndef __IElevator_FWD_DEFINED__ #ifndef __IElevator_FWD_DEFINED__
#define __IElevator_FWD_DEFINED__ #define __IElevator_FWD_DEFINED__
typedef interface IElevator IElevator; typedef interface IElevator IElevator;
...@@ -59,6 +94,41 @@ typedef interface IElevator IElevator; ...@@ -59,6 +94,41 @@ typedef interface IElevator IElevator;
#endif /* __IElevator_FWD_DEFINED__ */ #endif /* __IElevator_FWD_DEFINED__ */
#ifndef __IElevatorChromium_FWD_DEFINED__
#define __IElevatorChromium_FWD_DEFINED__
typedef interface IElevatorChromium IElevatorChromium;
#endif /* __IElevatorChromium_FWD_DEFINED__ */
#ifndef __IElevatorChrome_FWD_DEFINED__
#define __IElevatorChrome_FWD_DEFINED__
typedef interface IElevatorChrome IElevatorChrome;
#endif /* __IElevatorChrome_FWD_DEFINED__ */
#ifndef __IElevatorChromeBeta_FWD_DEFINED__
#define __IElevatorChromeBeta_FWD_DEFINED__
typedef interface IElevatorChromeBeta IElevatorChromeBeta;
#endif /* __IElevatorChromeBeta_FWD_DEFINED__ */
#ifndef __IElevatorChromeDev_FWD_DEFINED__
#define __IElevatorChromeDev_FWD_DEFINED__
typedef interface IElevatorChromeDev IElevatorChromeDev;
#endif /* __IElevatorChromeDev_FWD_DEFINED__ */
#ifndef __IElevatorChromeCanary_FWD_DEFINED__
#define __IElevatorChromeCanary_FWD_DEFINED__
typedef interface IElevatorChromeCanary IElevatorChromeCanary;
#endif /* __IElevatorChromeCanary_FWD_DEFINED__ */
/* header files for imported files */ /* header files for imported files */
#include "oaidl.h" #include "oaidl.h"
#include "ocidl.h" #include "ocidl.h"
...@@ -158,6 +228,421 @@ EXTERN_C const IID IID_IElevator; ...@@ -158,6 +228,421 @@ EXTERN_C const IID IID_IElevator;
#endif /* __IElevator_INTERFACE_DEFINED__ */ #endif /* __IElevator_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromium_INTERFACE_DEFINED__
#define __IElevatorChromium_INTERFACE_DEFINED__
/* interface IElevatorChromium */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromium;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("B88C45B9-8825-4629-B83E-77CC67D9CEED")
IElevatorChromium : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromiumVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromium * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromium * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromium * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromium * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromiumVtbl;
interface IElevatorChromium
{
CONST_VTBL struct IElevatorChromiumVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromium_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromium_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromium_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromium_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromium_INTERFACE_DEFINED__ */
#ifndef __IElevatorChrome_INTERFACE_DEFINED__
#define __IElevatorChrome_INTERFACE_DEFINED__
/* interface IElevatorChrome */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChrome;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("463ABECF-410D-407F-8AF5-0DF35A005CC8")
IElevatorChrome : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChrome * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChrome * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChrome * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChrome * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeVtbl;
interface IElevatorChrome
{
CONST_VTBL struct IElevatorChromeVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChrome_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChrome_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChrome_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChrome_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChrome_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromeBeta_INTERFACE_DEFINED__
#define __IElevatorChromeBeta_INTERFACE_DEFINED__
/* interface IElevatorChromeBeta */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromeBeta;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("A2721D66-376E-4D2F-9F0F-9070E9A42B5F")
IElevatorChromeBeta : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeBetaVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromeBeta * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromeBeta * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromeBeta * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromeBeta * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeBetaVtbl;
interface IElevatorChromeBeta
{
CONST_VTBL struct IElevatorChromeBetaVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromeBeta_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromeBeta_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromeBeta_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromeBeta_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromeBeta_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromeDev_INTERFACE_DEFINED__
#define __IElevatorChromeDev_INTERFACE_DEFINED__
/* interface IElevatorChromeDev */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromeDev;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("BB2AA26B-343A-4072-8B6F-80557B8CE571")
IElevatorChromeDev : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeDevVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromeDev * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromeDev * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromeDev * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromeDev * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeDevVtbl;
interface IElevatorChromeDev
{
CONST_VTBL struct IElevatorChromeDevVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromeDev_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromeDev_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromeDev_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromeDev_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromeDev_INTERFACE_DEFINED__ */
#ifndef __IElevatorChromeCanary_INTERFACE_DEFINED__
#define __IElevatorChromeCanary_INTERFACE_DEFINED__
/* interface IElevatorChromeCanary */
/* [unique][helpstring][uuid][oleautomation][object] */
EXTERN_C const IID IID_IElevatorChromeCanary;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4F7CE041-28E9-484F-9DD0-61A8CACEFEE4")
IElevatorChromeCanary : public IElevator
{
public:
};
#else /* C style interface */
typedef struct IElevatorChromeCanaryVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IElevatorChromeCanary * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IElevatorChromeCanary * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IElevatorChromeCanary * This);
HRESULT ( STDMETHODCALLTYPE *RunRecoveryCRXElevated )(
IElevatorChromeCanary * This,
/* [string][in] */ const WCHAR *crx_path,
/* [string][in] */ const WCHAR *browser_appid,
/* [string][in] */ const WCHAR *browser_version,
/* [string][in] */ const WCHAR *session_id,
/* [in] */ DWORD caller_proc_id,
/* [out] */ ULONG_PTR *proc_handle);
END_INTERFACE
} IElevatorChromeCanaryVtbl;
interface IElevatorChromeCanary
{
CONST_VTBL struct IElevatorChromeCanaryVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IElevatorChromeCanary_QueryInterface(This,riid,ppvObject) \
( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IElevatorChromeCanary_AddRef(This) \
( (This)->lpVtbl -> AddRef(This) )
#define IElevatorChromeCanary_Release(This) \
( (This)->lpVtbl -> Release(This) )
#define IElevatorChromeCanary_RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) \
( (This)->lpVtbl -> RunRecoveryCRXElevated(This,crx_path,browser_appid,browser_version,session_id,caller_proc_id,proc_handle) )
#endif /* COBJMACROS */
#endif /* C style interface */
#endif /* __IElevatorChromeCanary_INTERFACE_DEFINED__ */
#ifndef __ElevatorLib_LIBRARY_DEFINED__ #ifndef __ElevatorLib_LIBRARY_DEFINED__
#define __ElevatorLib_LIBRARY_DEFINED__ #define __ElevatorLib_LIBRARY_DEFINED__
...@@ -167,6 +652,11 @@ EXTERN_C const IID IID_IElevator; ...@@ -167,6 +652,11 @@ EXTERN_C const IID IID_IElevator;
EXTERN_C const IID LIBID_ElevatorLib; EXTERN_C const IID LIBID_ElevatorLib;
#endif /* __ElevatorLib_LIBRARY_DEFINED__ */ #endif /* __ElevatorLib_LIBRARY_DEFINED__ */
......
...@@ -70,6 +70,21 @@ typedef IID CLSID; ...@@ -70,6 +70,21 @@ typedef IID CLSID;
MIDL_DEFINE_GUID(IID, IID_IElevator,0xA949CB4E,0xC4F9,0x44C4,0xB2,0x13,0x6B,0xF8,0xAA,0x9A,0xC6,0x9C); MIDL_DEFINE_GUID(IID, IID_IElevator,0xA949CB4E,0xC4F9,0x44C4,0xB2,0x13,0x6B,0xF8,0xAA,0x9A,0xC6,0x9C);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromium,0xB88C45B9,0x8825,0x4629,0xB8,0x3E,0x77,0xCC,0x67,0xD9,0xCE,0xED);
MIDL_DEFINE_GUID(IID, IID_IElevatorChrome,0x463ABECF,0x410D,0x407F,0x8A,0xF5,0x0D,0xF3,0x5A,0x00,0x5C,0xC8);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromeBeta,0xA2721D66,0x376E,0x4D2F,0x9F,0x0F,0x90,0x70,0xE9,0xA4,0x2B,0x5F);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromeDev,0xBB2AA26B,0x343A,0x4072,0x8B,0x6F,0x80,0x55,0x7B,0x8C,0xE5,0x71);
MIDL_DEFINE_GUID(IID, IID_IElevatorChromeCanary,0x4F7CE041,0x28E9,0x484F,0x9D,0xD0,0x61,0xA8,0xCA,0xCE,0xFE,0xE4);
MIDL_DEFINE_GUID(IID, LIBID_ElevatorLib,0x0014D784,0x7012,0x4A79,0x8A,0xB6,0xAD,0xDB,0x81,0x93,0xA0,0x6E); MIDL_DEFINE_GUID(IID, LIBID_ElevatorLib,0x0014D784,0x7012,0x4A79,0x8A,0xB6,0xAD,0xDB,0x81,0x93,0xA0,0x6E);
#undef MIDL_DEFINE_GUID #undef MIDL_DEFINE_GUID
......
...@@ -90,6 +90,41 @@ extern const MIDL_SERVER_INFO IElevator_ServerInfo; ...@@ -90,6 +90,41 @@ extern const MIDL_SERVER_INFO IElevator_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevator_ProxyInfo; extern const MIDL_STUBLESS_PROXY_INFO IElevator_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromium_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromium_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChrome_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChrome_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromeBeta_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromeBeta_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromeDev_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromeDev_ProxyInfo;
extern const MIDL_STUB_DESC Object_StubDesc;
extern const MIDL_SERVER_INFO IElevatorChromeCanary_ServerInfo;
extern const MIDL_STUBLESS_PROXY_INFO IElevatorChromeCanary_ProxyInfo;
#if !defined(__RPC_WIN32__) #if !defined(__RPC_WIN32__)
#error Invalid build platform for this stub. #error Invalid build platform for this stub.
...@@ -247,6 +282,291 @@ const CInterfaceStubVtbl _IElevatorStubVtbl = ...@@ -247,6 +282,291 @@ const CInterfaceStubVtbl _IElevatorStubVtbl =
CStdStubBuffer_METHODS CStdStubBuffer_METHODS
}; };
/* Object interface: IElevatorChromium, ver. 0.0,
GUID={0xB88C45B9,0x8825,0x4629,{0xB8,0x3E,0x77,0xCC,0x67,0xD9,0xCE,0xED}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromium_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromium_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromium_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromium_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromium_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromiumProxyVtbl =
{
0,
&IID_IElevatorChromium,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromium_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromiumStubVtbl =
{
&IID_IElevatorChromium,
&IElevatorChromium_ServerInfo,
4,
&IElevatorChromium_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChrome, ver. 0.0,
GUID={0x463ABECF,0x410D,0x407F,{0x8A,0xF5,0x0D,0xF3,0x5A,0x00,0x5C,0xC8}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChrome_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChrome_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChrome_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChrome_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChrome_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeProxyVtbl =
{
0,
&IID_IElevatorChrome,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChrome_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeStubVtbl =
{
&IID_IElevatorChrome,
&IElevatorChrome_ServerInfo,
4,
&IElevatorChrome_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChromeBeta, ver. 0.0,
GUID={0xA2721D66,0x376E,0x4D2F,{0x9F,0x0F,0x90,0x70,0xE9,0xA4,0x2B,0x5F}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromeBeta_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromeBeta_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeBeta_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromeBeta_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeBeta_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeBetaProxyVtbl =
{
0,
&IID_IElevatorChromeBeta,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromeBeta_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeBetaStubVtbl =
{
&IID_IElevatorChromeBeta,
&IElevatorChromeBeta_ServerInfo,
4,
&IElevatorChromeBeta_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChromeDev, ver. 0.0,
GUID={0xBB2AA26B,0x343A,0x4072,{0x8B,0x6F,0x80,0x55,0x7B,0x8C,0xE5,0x71}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromeDev_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromeDev_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeDev_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromeDev_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeDev_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeDevProxyVtbl =
{
0,
&IID_IElevatorChromeDev,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromeDev_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeDevStubVtbl =
{
&IID_IElevatorChromeDev,
&IElevatorChromeDev_ServerInfo,
4,
&IElevatorChromeDev_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
/* Object interface: IElevatorChromeCanary, ver. 0.0,
GUID={0x4F7CE041,0x28E9,0x484F,{0x9D,0xD0,0x61,0xA8,0xCA,0xCE,0xFE,0xE4}} */
#pragma code_seg(".orpc")
static const unsigned short IElevatorChromeCanary_FormatStringOffsetTable[] =
{
0,
0
};
static const MIDL_STUBLESS_PROXY_INFO IElevatorChromeCanary_ProxyInfo =
{
&Object_StubDesc,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeCanary_FormatStringOffsetTable[-3],
0,
0,
0
};
static const MIDL_SERVER_INFO IElevatorChromeCanary_ServerInfo =
{
&Object_StubDesc,
0,
elevation_service_idl__MIDL_ProcFormatString.Format,
&IElevatorChromeCanary_FormatStringOffsetTable[-3],
0,
0,
0,
0};
CINTERFACE_PROXY_VTABLE(4) _IElevatorChromeCanaryProxyVtbl =
{
0,
&IID_IElevatorChromeCanary,
IUnknown_QueryInterface_Proxy,
IUnknown_AddRef_Proxy,
IUnknown_Release_Proxy ,
0 /* forced delegation IElevator::RunRecoveryCRXElevated */
};
static const PRPC_STUB_FUNCTION IElevatorChromeCanary_table[] =
{
NdrStubCall2
};
CInterfaceStubVtbl _IElevatorChromeCanaryStubVtbl =
{
&IID_IElevatorChromeCanary,
&IElevatorChromeCanary_ServerInfo,
4,
&IElevatorChromeCanary_table[-3],
CStdStubBuffer_DELEGATING_METHODS
};
static const MIDL_STUB_DESC Object_StubDesc = static const MIDL_STUB_DESC Object_StubDesc =
{ {
0, 0,
...@@ -273,19 +593,45 @@ static const MIDL_STUB_DESC Object_StubDesc = ...@@ -273,19 +593,45 @@ static const MIDL_STUB_DESC Object_StubDesc =
const CInterfaceProxyVtbl * const _elevation_service_idl_ProxyVtblList[] = const CInterfaceProxyVtbl * const _elevation_service_idl_ProxyVtblList[] =
{ {
( CInterfaceProxyVtbl *) &_IElevatorChromeCanaryProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorProxyVtbl, ( CInterfaceProxyVtbl *) &_IElevatorProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromeBetaProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromeDevProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromiumProxyVtbl,
( CInterfaceProxyVtbl *) &_IElevatorChromeProxyVtbl,
0 0
}; };
const CInterfaceStubVtbl * const _elevation_service_idl_StubVtblList[] = const CInterfaceStubVtbl * const _elevation_service_idl_StubVtblList[] =
{ {
( CInterfaceStubVtbl *) &_IElevatorChromeCanaryStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorStubVtbl, ( CInterfaceStubVtbl *) &_IElevatorStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromeBetaStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromeDevStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromiumStubVtbl,
( CInterfaceStubVtbl *) &_IElevatorChromeStubVtbl,
0 0
}; };
PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] = PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] =
{ {
"IElevatorChromeCanary",
"IElevator", "IElevator",
"IElevatorChromeBeta",
"IElevatorChromeDev",
"IElevatorChromium",
"IElevatorChrome",
0
};
const IID * const _elevation_service_idl_BaseIIDList[] =
{
&IID_IElevator, /* forced */
0,
&IID_IElevator, /* forced */
&IID_IElevator, /* forced */
&IID_IElevator, /* forced */
&IID_IElevator, /* forced */
0 0
}; };
...@@ -294,14 +640,13 @@ PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] = ...@@ -294,14 +640,13 @@ PCInterfaceName const _elevation_service_idl_InterfaceNamesList[] =
int __stdcall _elevation_service_idl_IID_Lookup( const IID * pIID, int * pIndex ) int __stdcall _elevation_service_idl_IID_Lookup( const IID * pIID, int * pIndex )
{ {
IID_BS_LOOKUP_SETUP
if(!_elevation_service_idl_CHECK_IID(0))
{
*pIndex = 0;
return 1;
}
return 0; IID_BS_LOOKUP_INITIAL_TEST( _elevation_service_idl, 6, 4 )
IID_BS_LOOKUP_NEXT_TEST( _elevation_service_idl, 2 )
IID_BS_LOOKUP_NEXT_TEST( _elevation_service_idl, 1 )
IID_BS_LOOKUP_RETURN_RESULT( _elevation_service_idl, 6, *pIndex )
} }
const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo = const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo =
...@@ -309,9 +654,9 @@ const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo = ...@@ -309,9 +654,9 @@ const ExtendedProxyFileInfo elevation_service_idl_ProxyFileInfo =
(PCInterfaceProxyVtblList *) & _elevation_service_idl_ProxyVtblList, (PCInterfaceProxyVtblList *) & _elevation_service_idl_ProxyVtblList,
(PCInterfaceStubVtblList *) & _elevation_service_idl_StubVtblList, (PCInterfaceStubVtblList *) & _elevation_service_idl_StubVtblList,
(const PCInterfaceName * ) & _elevation_service_idl_InterfaceNamesList, (const PCInterfaceName * ) & _elevation_service_idl_InterfaceNamesList,
0, /* no delegation */ (const IID ** ) & _elevation_service_idl_BaseIIDList,
& _elevation_service_idl_IID_Lookup, & _elevation_service_idl_IID_Lookup,
1, 6,
2, 2,
0, /* table of [async_uuid] interfaces */ 0, /* table of [async_uuid] interfaces */
0, /* Filler1 */ 0, /* Filler1 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment