Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Side by Side Diff: chrome/installer/util/wmi.cc

Issue 1548153002: Switch to standard integer types in chrome/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/installer/util/util_constants.h ('k') | chrome/installer/util/work_item.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/installer/util/wmi.h" 5 #include "chrome/installer/util/wmi.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <stdint.h>
8 9
9 #include "base/basictypes.h"
10 #include "base/win/scoped_bstr.h" 10 #include "base/win/scoped_bstr.h"
11 #include "base/win/scoped_comptr.h" 11 #include "base/win/scoped_comptr.h"
12 #include "base/win/scoped_variant.h" 12 #include "base/win/scoped_variant.h"
13 13
14 #pragma comment(lib, "wbemuuid.lib") 14 #pragma comment(lib, "wbemuuid.lib")
15 15
16 using base::win::ScopedVariant; 16 using base::win::ScopedVariant;
17 17
18 namespace installer { 18 namespace installer {
19 19
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 const std::wstring& parameter_name, VARIANT* parameter) { 78 const std::wstring& parameter_name, VARIANT* parameter) {
79 HRESULT hr = class_method->Put(parameter_name.c_str(), 0, parameter, 0); 79 HRESULT hr = class_method->Put(parameter_name.c_str(), 0, parameter, 0);
80 return SUCCEEDED(hr); 80 return SUCCEEDED(hr);
81 } 81 }
82 82
83 83
84 // The code in Launch() basically calls the Create Method of the Win32_Process 84 // The code in Launch() basically calls the Create Method of the Win32_Process
85 // CIM class is documented here: 85 // CIM class is documented here:
86 // http://msdn2.microsoft.com/en-us/library/aa389388(VS.85).aspx 86 // http://msdn2.microsoft.com/en-us/library/aa389388(VS.85).aspx
87 // NOTE: The documentation for the Create method suggests that the ProcessId 87 // NOTE: The documentation for the Create method suggests that the ProcessId
88 // parameter and return value are of type uint32, but when we call the method 88 // parameter and return value are of type uint32_t, but when we call the method
89 // the values in the returned out_params, are VT_I4, which is int32. 89 // the values in the returned out_params, are VT_I4, which is int32_t.
90 90
91 bool WMIProcess::Launch(const std::wstring& command_line, int* process_id) { 91 bool WMIProcess::Launch(const std::wstring& command_line, int* process_id) {
92 base::win::ScopedComPtr<IWbemServices> wmi_local; 92 base::win::ScopedComPtr<IWbemServices> wmi_local;
93 if (!WMI::CreateLocalConnection(true, wmi_local.Receive())) 93 if (!WMI::CreateLocalConnection(true, wmi_local.Receive()))
94 return false; 94 return false;
95 95
96 const wchar_t class_name[] = L"Win32_Process"; 96 const wchar_t class_name[] = L"Win32_Process";
97 const wchar_t method_name[] = L"Create"; 97 const wchar_t method_name[] = L"Create";
98 base::win::ScopedComPtr<IWbemClassObject> process_create; 98 base::win::ScopedComPtr<IWbemClassObject> process_create;
99 if (!WMI::CreateClassMethodObject(wmi_local.get(), class_name, method_name, 99 if (!WMI::CreateClassMethodObject(wmi_local.get(), class_name, method_name,
100 process_create.Receive())) 100 process_create.Receive()))
101 return false; 101 return false;
102 102
103 ScopedVariant b_command_line(command_line.c_str()); 103 ScopedVariant b_command_line(command_line.c_str());
104 104
105 if (!SetParameter(process_create.get(), L"CommandLine", 105 if (!SetParameter(process_create.get(), L"CommandLine",
106 b_command_line.AsInput())) 106 b_command_line.AsInput()))
107 return false; 107 return false;
108 108
109 base::win::ScopedComPtr<IWbemClassObject> out_params; 109 base::win::ScopedComPtr<IWbemClassObject> out_params;
110 HRESULT hr = wmi_local->ExecMethod( 110 HRESULT hr = wmi_local->ExecMethod(
111 base::win::ScopedBstr(class_name), base::win::ScopedBstr(method_name), 0, 111 base::win::ScopedBstr(class_name), base::win::ScopedBstr(method_name), 0,
112 NULL, process_create.get(), out_params.Receive(), NULL); 112 NULL, process_create.get(), out_params.Receive(), NULL);
113 if (FAILED(hr)) 113 if (FAILED(hr))
114 return false; 114 return false;
115 115
116 // We're only expecting int32 or uint32 values, so no need for ScopedVariant. 116 // We're only expecting int32_t or uint32_t values, so no need for
117 // ScopedVariant.
117 VARIANT ret_value = {{{VT_EMPTY}}}; 118 VARIANT ret_value = {{{VT_EMPTY}}};
118 hr = out_params->Get(L"ReturnValue", 0, &ret_value, NULL, 0); 119 hr = out_params->Get(L"ReturnValue", 0, &ret_value, NULL, 0);
119 if (FAILED(hr) || 0 != V_I4(&ret_value)) 120 if (FAILED(hr) || 0 != V_I4(&ret_value))
120 return false; 121 return false;
121 122
122 VARIANT pid = {{{VT_EMPTY}}}; 123 VARIANT pid = {{{VT_EMPTY}}};
123 hr = out_params->Get(L"ProcessId", 0, &pid, NULL, 0); 124 hr = out_params->Get(L"ProcessId", 0, &pid, NULL, 0);
124 if (FAILED(hr) || 0 == V_I4(&pid)) 125 if (FAILED(hr) || 0 == V_I4(&pid))
125 return false; 126 return false;
126 127
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 if (model.type() == VT_BSTR) 164 if (model.type() == VT_BSTR)
164 model_string += L" "; 165 model_string += L" ";
165 } 166 }
166 if (model.type() == VT_BSTR) 167 if (model.type() == VT_BSTR)
167 model_string += V_BSTR(model.ptr()); 168 model_string += V_BSTR(model.ptr());
168 169
169 return model_string; 170 return model_string;
170 } 171 }
171 172
172 } // namespace installer 173 } // namespace installer
OLDNEW
« no previous file with comments | « chrome/installer/util/util_constants.h ('k') | chrome/installer/util/work_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698