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

Side by Side Diff: remoting/host/win/host_service.cc

Issue 281223002: Removed LOG_GETLASTERROR and LOG_ERRNO macros. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Wed 05/14/2014 11:20:03.21 Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // This file implements the Windows service controlling Me2Me host processes 5 // This file implements the Windows service controlling Me2Me host processes
6 // running within user sessions. 6 // running within user sessions.
7 7
8 #include "remoting/host/win/host_service.h" 8 #include "remoting/host/win/host_service.h"
9 9
10 #include <sddl.h> 10 #include <sddl.h>
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 base::Bind(&HostService::StopDaemonProcess, weak_ptr_)); 217 base::Bind(&HostService::StopDaemonProcess, weak_ptr_));
218 } 218 }
219 219
220 int HostService::RunAsService() { 220 int HostService::RunAsService() {
221 SERVICE_TABLE_ENTRYW dispatch_table[] = { 221 SERVICE_TABLE_ENTRYW dispatch_table[] = {
222 { const_cast<LPWSTR>(kWindowsServiceName), &HostService::ServiceMain }, 222 { const_cast<LPWSTR>(kWindowsServiceName), &HostService::ServiceMain },
223 { NULL, NULL } 223 { NULL, NULL }
224 }; 224 };
225 225
226 if (!StartServiceCtrlDispatcherW(dispatch_table)) { 226 if (!StartServiceCtrlDispatcherW(dispatch_table)) {
227 LOG_GETLASTERROR(ERROR) 227 PLOG(ERROR) << "Failed to connect to the service control manager";
228 << "Failed to connect to the service control manager";
229 return kInitializationFailed; 228 return kInitializationFailed;
230 } 229 }
231 230
232 // Wait until the service thread completely exited to avoid concurrent 231 // Wait until the service thread completely exited to avoid concurrent
233 // teardown of objects registered with base::AtExitManager and object 232 // teardown of objects registered with base::AtExitManager and object
234 // destoyed by the service thread. 233 // destoyed by the service thread.
235 stopped_event_.Wait(); 234 stopped_event_.Wait();
236 235
237 return kSuccessExitCode; 236 return kSuccessExitCode;
238 } 237 }
239 238
240 void HostService::RunAsServiceImpl() { 239 void HostService::RunAsServiceImpl() {
241 base::MessageLoopForUI message_loop; 240 base::MessageLoopForUI message_loop;
242 base::RunLoop run_loop; 241 base::RunLoop run_loop;
243 main_task_runner_ = message_loop.message_loop_proxy(); 242 main_task_runner_ = message_loop.message_loop_proxy();
244 weak_ptr_ = weak_factory_.GetWeakPtr(); 243 weak_ptr_ = weak_factory_.GetWeakPtr();
245 244
246 // Register the service control handler. 245 // Register the service control handler.
247 service_status_handle_ = RegisterServiceCtrlHandlerExW( 246 service_status_handle_ = RegisterServiceCtrlHandlerExW(
248 kWindowsServiceName, &HostService::ServiceControlHandler, this); 247 kWindowsServiceName, &HostService::ServiceControlHandler, this);
249 if (service_status_handle_ == 0) { 248 if (service_status_handle_ == 0) {
250 LOG_GETLASTERROR(ERROR) 249 PLOG(ERROR) << "Failed to register the service control handler";
251 << "Failed to register the service control handler";
252 return; 250 return;
253 } 251 }
254 252
255 // Report running status of the service. 253 // Report running status of the service.
256 SERVICE_STATUS service_status; 254 SERVICE_STATUS service_status;
257 ZeroMemory(&service_status, sizeof(service_status)); 255 ZeroMemory(&service_status, sizeof(service_status));
258 service_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS; 256 service_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
259 service_status.dwCurrentState = SERVICE_RUNNING; 257 service_status.dwCurrentState = SERVICE_RUNNING;
260 service_status.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN | 258 service_status.dwControlsAccepted = SERVICE_ACCEPT_SHUTDOWN |
261 SERVICE_ACCEPT_STOP | 259 SERVICE_ACCEPT_STOP |
262 SERVICE_ACCEPT_SESSIONCHANGE; 260 SERVICE_ACCEPT_SESSIONCHANGE;
263 service_status.dwWin32ExitCode = kSuccessExitCode; 261 service_status.dwWin32ExitCode = kSuccessExitCode;
264 if (!SetServiceStatus(service_status_handle_, &service_status)) { 262 if (!SetServiceStatus(service_status_handle_, &service_status)) {
265 LOG_GETLASTERROR(ERROR) 263 PLOG(ERROR)
266 << "Failed to report service status to the service control manager"; 264 << "Failed to report service status to the service control manager";
267 return; 265 return;
268 } 266 }
269 267
270 // Initialize COM. 268 // Initialize COM.
271 base::win::ScopedCOMInitializer com_initializer; 269 base::win::ScopedCOMInitializer com_initializer;
272 if (!com_initializer.succeeded()) 270 if (!com_initializer.succeeded())
273 return; 271 return;
274 272
275 if (!InitializeComSecurity(base::WideToUTF8(kComProcessSd), 273 if (!InitializeComSecurity(base::WideToUTF8(kComProcessSd),
276 base::WideToUTF8(kComProcessMandatoryLabel), 274 base::WideToUTF8(kComProcessMandatoryLabel),
277 false)) { 275 false)) {
278 return; 276 return;
279 } 277 }
280 278
281 CreateLauncher(scoped_refptr<AutoThreadTaskRunner>( 279 CreateLauncher(scoped_refptr<AutoThreadTaskRunner>(
282 new AutoThreadTaskRunner(main_task_runner_, 280 new AutoThreadTaskRunner(main_task_runner_,
283 run_loop.QuitClosure()))); 281 run_loop.QuitClosure())));
284 282
285 // Run the service. 283 // Run the service.
286 run_loop.Run(); 284 run_loop.Run();
287 weak_factory_.InvalidateWeakPtrs(); 285 weak_factory_.InvalidateWeakPtrs();
288 286
289 // Tell SCM that the service is stopped. 287 // Tell SCM that the service is stopped.
290 service_status.dwCurrentState = SERVICE_STOPPED; 288 service_status.dwCurrentState = SERVICE_STOPPED;
291 service_status.dwControlsAccepted = 0; 289 service_status.dwControlsAccepted = 0;
292 if (!SetServiceStatus(service_status_handle_, &service_status)) { 290 if (!SetServiceStatus(service_status_handle_, &service_status)) {
293 LOG_GETLASTERROR(ERROR) 291 PLOG(ERROR)
294 << "Failed to report service status to the service control manager"; 292 << "Failed to report service status to the service control manager";
295 return; 293 return;
296 } 294 }
297 } 295 }
298 296
299 int HostService::RunInConsole() { 297 int HostService::RunInConsole() {
300 base::MessageLoopForUI message_loop; 298 base::MessageLoopForUI message_loop;
301 base::RunLoop run_loop; 299 base::RunLoop run_loop;
302 main_task_runner_ = message_loop.message_loop_proxy(); 300 main_task_runner_ = message_loop.message_loop_proxy();
303 weak_ptr_ = weak_factory_.GetWeakPtr(); 301 weak_ptr_ = weak_factory_.GetWeakPtr();
304 302
305 int result = kInitializationFailed; 303 int result = kInitializationFailed;
306 304
307 // Initialize COM. 305 // Initialize COM.
308 base::win::ScopedCOMInitializer com_initializer; 306 base::win::ScopedCOMInitializer com_initializer;
309 if (!com_initializer.succeeded()) 307 if (!com_initializer.succeeded())
310 return result; 308 return result;
311 309
312 if (!InitializeComSecurity(base::WideToUTF8(kComProcessSd), 310 if (!InitializeComSecurity(base::WideToUTF8(kComProcessSd),
313 base::WideToUTF8(kComProcessMandatoryLabel), 311 base::WideToUTF8(kComProcessMandatoryLabel),
314 false)) { 312 false)) {
315 return result; 313 return result;
316 } 314 }
317 315
318 // Subscribe to Ctrl-C and other console events. 316 // Subscribe to Ctrl-C and other console events.
319 if (!SetConsoleCtrlHandler(&HostService::ConsoleControlHandler, TRUE)) { 317 if (!SetConsoleCtrlHandler(&HostService::ConsoleControlHandler, TRUE)) {
320 LOG_GETLASTERROR(ERROR) 318 PLOG(ERROR) << "Failed to set console control handler";
321 << "Failed to set console control handler";
322 return result; 319 return result;
323 } 320 }
324 321
325 // Create a window for receiving session change notifications. 322 // Create a window for receiving session change notifications.
326 base::win::MessageWindow window; 323 base::win::MessageWindow window;
327 if (!window.Create(base::Bind(&HostService::HandleMessage, 324 if (!window.Create(base::Bind(&HostService::HandleMessage,
328 base::Unretained(this)))) { 325 base::Unretained(this)))) {
329 LOG_GETLASTERROR(ERROR) 326 PLOG(ERROR) << "Failed to create the session notification window";
330 << "Failed to create the session notification window";
331 goto cleanup; 327 goto cleanup;
332 } 328 }
333 329
334 // Subscribe to session change notifications. 330 // Subscribe to session change notifications.
335 if (WTSRegisterSessionNotification(window.hwnd(), 331 if (WTSRegisterSessionNotification(window.hwnd(),
336 NOTIFY_FOR_ALL_SESSIONS) != FALSE) { 332 NOTIFY_FOR_ALL_SESSIONS) != FALSE) {
337 CreateLauncher(scoped_refptr<AutoThreadTaskRunner>( 333 CreateLauncher(scoped_refptr<AutoThreadTaskRunner>(
338 new AutoThreadTaskRunner(main_task_runner_, 334 new AutoThreadTaskRunner(main_task_runner_,
339 run_loop.QuitClosure()))); 335 run_loop.QuitClosure())));
340 336
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 int DaemonProcessMain() { 434 int DaemonProcessMain() {
439 HostService* service = HostService::GetInstance(); 435 HostService* service = HostService::GetInstance();
440 if (!service->InitWithCommandLine(CommandLine::ForCurrentProcess())) { 436 if (!service->InitWithCommandLine(CommandLine::ForCurrentProcess())) {
441 return kUsageExitCode; 437 return kUsageExitCode;
442 } 438 }
443 439
444 return service->Run(); 440 return service->Run();
445 } 441 }
446 442
447 } // namespace remoting 443 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/win/elevated_controller.cc ('k') | remoting/host/win/launch_process_with_token.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698