diff options
Diffstat (limited to 'cloud_print/service/win')
-rw-r--r-- | cloud_print/service/win/chrome_launcher.cc | 8 | ||||
-rw-r--r-- | cloud_print/service/win/service_controller.cc | 32 | ||||
-rw-r--r-- | cloud_print/service/win/service_listener.cc | 2 | ||||
-rw-r--r-- | cloud_print/service/win/setup_listener.cc | 2 |
4 files changed, 23 insertions, 21 deletions
diff --git a/cloud_print/service/win/chrome_launcher.cc b/cloud_print/service/win/chrome_launcher.cc index 25da2b8..5dd876d 100644 --- a/cloud_print/service/win/chrome_launcher.cc +++ b/cloud_print/service/win/chrome_launcher.cc @@ -224,7 +224,7 @@ void ChromeLauncher::Run() { DWORD thread_id = 0; LaunchProcess(cmd, &chrome_handle, &thread_id); - HANDLE handles[] = {stop_event_.handle(), chrome_handle}; + HANDLE handles[] = { stop_event_.handle(), chrome_handle.Get() }; DWORD wait_result = WAIT_TIMEOUT; while (wait_result == WAIT_TIMEOUT) { cloud_print::SetGoogleUpdateUsage(kGoogleUpdateId); @@ -232,7 +232,7 @@ void ChromeLauncher::Run() { FALSE, kUsageUpdateTimeoutMs); } if (wait_result == WAIT_OBJECT_0) { - ShutdownChrome(chrome_handle, thread_id); + ShutdownChrome(chrome_handle.Get(), thread_id); break; } else if (wait_result == WAIT_OBJECT_0 + 1) { LOG(ERROR) << "Chrome process exited."; @@ -302,7 +302,7 @@ std::string ChromeLauncher::CreateServiceStateFile( } for (;;) { - DWORD wait_result = ::WaitForSingleObject(chrome_handle, 500); + DWORD wait_result = ::WaitForSingleObject(chrome_handle.Get(), 500); std::string json = ReadAndUpdateServiceState(temp_user_data.path(), proxy_id); if (wait_result == WAIT_OBJECT_0) { @@ -315,7 +315,7 @@ std::string ChromeLauncher::CreateServiceStateFile( } if (!json.empty()) { // Close chrome because Service State is ready. - CloseChrome(chrome_handle, thread_id); + CloseChrome(chrome_handle.Get(), thread_id); return json; } } diff --git a/cloud_print/service/win/service_controller.cc b/cloud_print/service/win/service_controller.cc index 4b5d148..0c269b9 100644 --- a/cloud_print/service/win/service_controller.cc +++ b/cloud_print/service/win/service_controller.cc @@ -71,7 +71,7 @@ HRESULT OpenService(const base::string16& name, DWORD access, if (FAILED(hr)) return hr; - service->Set(::OpenService(scm, name.c_str(), access)); + service->Set(::OpenService(scm.Get(), name.c_str(), access)); if (!service->IsValid()) return cloud_print::GetLastHResult(); @@ -95,10 +95,10 @@ HRESULT ServiceController::StartService() { &service); if (FAILED(hr)) return hr; - if (!::StartService(service, 0, NULL)) + if (!::StartService(service.Get(), 0, NULL)) return cloud_print::GetLastHResult(); SERVICE_STATUS status = {0}; - while (::QueryServiceStatus(service, &status) && + while (::QueryServiceStatus(service.Get(), &status) && status.dwCurrentState == SERVICE_START_PENDING) { Sleep(100); } @@ -112,12 +112,12 @@ HRESULT ServiceController::StopService() { if (FAILED(hr)) return hr; SERVICE_STATUS status = {0}; - if (!::ControlService(service, SERVICE_CONTROL_STOP, &status)) + if (!::ControlService(service.Get(), SERVICE_CONTROL_STOP, &status)) return cloud_print::GetLastHResult(); - while (::QueryServiceStatus(service, &status) && + while (::QueryServiceStatus(service.Get(), &status) && status.dwCurrentState > SERVICE_STOPPED) { Sleep(500); - ::ControlService(service, SERVICE_CONTROL_STOP, &status); + ::ControlService(service.Get(), SERVICE_CONTROL_STOP, &status); } return S_OK; } @@ -197,7 +197,7 @@ HRESULT ServiceController::InstallService(const base::string16& user, cloud_print::LoadLocalString(IDS_SERVICE_DISPLAY_NAME); ServiceHandle service( ::CreateService( - scm, name_.c_str(), display_name.c_str(), SERVICE_ALL_ACCESS, + scm.Get(), name_.c_str(), display_name.c_str(), SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, auto_start ? SERVICE_AUTO_START : SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, command_line.GetCommandLineString().c_str(), @@ -213,7 +213,8 @@ HRESULT ServiceController::InstallService(const base::string16& user, cloud_print::LoadLocalString(IDS_SERVICE_DESCRIPTION); SERVICE_DESCRIPTION description = {0}; description.lpDescription = const_cast<wchar_t*>(description_string.c_str()); - ::ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &description); + ::ChangeServiceConfig2(service.Get(), SERVICE_CONFIG_DESCRIPTION, + &description); return S_OK; } @@ -224,8 +225,8 @@ HRESULT ServiceController::UninstallService() { ServiceHandle service; OpenService(name_, SERVICE_STOP | DELETE, &service); HRESULT hr = S_FALSE; - if (service) { - if (!::DeleteService(service)) { + if (service.IsValid()) { + if (!::DeleteService(service.Get())) { LOG(ERROR) << "Failed to uninstall service"; hr = cloud_print::GetLastHResult(); } @@ -250,8 +251,8 @@ HRESULT ServiceController::UpdateBinaryPath() { return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); command_line_.SetProgram(service_path); - if (!::ChangeServiceConfig(service, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, - SERVICE_NO_CHANGE, + if (!::ChangeServiceConfig(service.Get(), SERVICE_NO_CHANGE, + SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, command_line_.GetCommandLineString().c_str(), NULL, NULL, NULL, NULL, NULL, NULL)) { return cloud_print::GetLastHResult(); @@ -284,20 +285,21 @@ void ServiceController::UpdateState() { state_ = STATE_STOPPED; SERVICE_STATUS status = {0}; - if (::QueryServiceStatus(service, &status) && + if (::QueryServiceStatus(service.Get(), &status) && status.dwCurrentState == SERVICE_RUNNING) { state_ = STATE_RUNNING; } DWORD config_size = 0; - ::QueryServiceConfig(service, NULL, 0, &config_size); + ::QueryServiceConfig(service.Get(), NULL, 0, &config_size); if (!config_size) return; std::vector<uint8> buffer(config_size, 0); QUERY_SERVICE_CONFIG* config = reinterpret_cast<QUERY_SERVICE_CONFIG*>(&buffer[0]); - if (!::QueryServiceConfig(service, config, buffer.size(), &config_size) || + if (!::QueryServiceConfig(service.Get(), config, buffer.size(), + &config_size) || config_size != buffer.size()) { return; } diff --git a/cloud_print/service/win/service_listener.cc b/cloud_print/service/win/service_listener.cc index a022cb3..0aaf0f3 100644 --- a/cloud_print/service/win/service_listener.cc +++ b/cloud_print/service/win/service_listener.cc @@ -91,7 +91,7 @@ void ServiceListener::Connect() { SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION | FILE_FLAG_OVERLAPPED, NULL)); if (handle.IsValid()) { - channel_ = IPC::Channel::CreateClient(IPC::ChannelHandle(handle), + channel_ = IPC::Channel::CreateClient(IPC::ChannelHandle(handle.Get()), this); channel_->Connect(); } else { diff --git a/cloud_print/service/win/setup_listener.cc b/cloud_print/service/win/setup_listener.cc index c0b6d1b..be8cb67 100644 --- a/cloud_print/service/win/setup_listener.cc +++ b/cloud_print/service/win/setup_listener.cc @@ -117,7 +117,7 @@ void SetupListener::Connect(const base::string16& user) { IPC::Channel::kReadBufferSize, IPC::Channel::kReadBufferSize, 5000, &attribs)); if (pipe.IsValid()) { - channel_ = IPC::Channel::CreateServer(IPC::ChannelHandle(pipe), + channel_ = IPC::Channel::CreateServer(IPC::ChannelHandle(pipe.Get()), this); channel_->Connect(); } |