| Index: base/wmi_query.cc
|
| diff --git a/base/wmi_query.cc b/base/wmi_query.cc
|
| deleted file mode 100644
|
| index a124262c6a7cc1f0a28c4dbd72df4e9f15054373..0000000000000000000000000000000000000000
|
| --- a/base/wmi_query.cc
|
| +++ /dev/null
|
| @@ -1,204 +0,0 @@
|
| -// Copyright 2006-2009 Google Inc.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -// ========================================================================
|
| -
|
| -
|
| -#include "omaha/base/wmi_query.h"
|
| -
|
| -#include <atlcomcli.h>
|
| -#include "omaha/base/debug.h"
|
| -#include "omaha/base/logging.h"
|
| -#include "omaha/base/utils.h"
|
| -
|
| -namespace omaha {
|
| -
|
| -WmiQuery::WmiQuery() : at_end_(true) {
|
| -}
|
| -
|
| -WmiQuery::~WmiQuery() {
|
| -}
|
| -
|
| -HRESULT WmiQuery::Connect(const TCHAR* resource) {
|
| - UTIL_LOG(L6, (_T("[WmiQuery::Connect][resource=%s]"), resource));
|
| - ASSERT1(resource && *resource);
|
| -
|
| - CComBSTR object_path;
|
| - HRESULT hr = object_path.Append(resource);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - hr = wbem_.CoCreateInstance(__uuidof(WbemLocator));
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - // Connect to WMI through the IWbemLocator::ConnectServer method. This
|
| - // call can block up to 2 minutes on XP or indefinitely on Windows 2000 if
|
| - // the server is broken.
|
| - hr = wbem_->ConnectServer(object_path, // object path
|
| - NULL, // username
|
| - NULL, // password
|
| - NULL, // locale
|
| - WBEM_FLAG_CONNECT_USE_MAX_WAIT, // security flags
|
| - NULL, // authority
|
| - 0, // context
|
| - &service_); // namespace
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - // Set security levels on the proxy.
|
| - hr = ::CoSetProxyBlanket(service_,
|
| - RPC_C_AUTHN_WINNT,
|
| - RPC_C_AUTHZ_NONE,
|
| - NULL,
|
| - RPC_C_AUTHN_LEVEL_CALL,
|
| - RPC_C_IMP_LEVEL_IMPERSONATE,
|
| - NULL,
|
| - EOAC_NONE);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT WmiQuery::Query(const TCHAR* query) {
|
| - UTIL_LOG(L6, (_T("[WmiQuery::Query][query=%s]"), query));
|
| - ASSERT1(query && *query);
|
| -
|
| - CComBSTR query_language, query_string;
|
| - HRESULT hr = query_language.Append(_T("WQL"));
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| - hr = query_string.Append(query);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - uint32 flags = WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY;
|
| - hr = service_->ExecQuery(query_language,
|
| - query_string,
|
| - flags,
|
| - NULL,
|
| - &enumerator_);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| - at_end_ = false;
|
| - return Next();
|
| -}
|
| -
|
| -HRESULT WmiQuery::Next() {
|
| - UTIL_LOG(L6, (_T("[WmiQuery::Next]")));
|
| -
|
| - ASSERT1(!at_end_);
|
| -
|
| - ULONG ret = 0;
|
| - HRESULT hr = enumerator_->Next(WBEM_INFINITE, 1, &obj_, &ret);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| - at_end_ = ret == 0;
|
| - return S_OK;
|
| -}
|
| -
|
| -bool WmiQuery::AtEnd() {
|
| - return at_end_;
|
| -}
|
| -
|
| -HRESULT WmiQuery::GetValue(const TCHAR* name, CComVariant* value) {
|
| - ASSERT1(name && *name);
|
| - ASSERT1(value);
|
| - ASSERT1(!at_end_ && obj_);
|
| -
|
| - value->Clear();
|
| -
|
| - CComBSTR name_string;
|
| - HRESULT hr = name_string.Append(name);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| - hr = obj_->Get(name_string, 0, value, 0, 0);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT WmiQuery::GetValue(const TCHAR* name, CString* value) {
|
| - ASSERT1(name && *name);
|
| - ASSERT1(value);
|
| -
|
| - CComVariant var;
|
| - HRESULT hr = GetValue(name, &var);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - ASSERT1(V_VT(&var) == VT_BSTR);
|
| - value->SetString(var.bstrVal);
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT WmiQuery::GetValue(const TCHAR* name, bool* value) {
|
| - ASSERT1(name && *name);
|
| - ASSERT1(value);
|
| -
|
| - CComVariant var;
|
| - HRESULT hr = GetValue(name, &var);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - ASSERT1(V_VT(&var) == VT_BOOL);
|
| - *value = var.boolVal != 0;
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT WmiQuery::GetValue(const TCHAR* name, int* value) {
|
| - ASSERT1(name && *name);
|
| - ASSERT1(value);
|
| -
|
| - CComVariant var;
|
| - HRESULT hr = GetValue(name, &var);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - ASSERT1(V_VT(&var) == VT_I4);
|
| - *value = var.lVal;
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT WmiQuery::GetValue(const TCHAR* name, uint32* value) {
|
| - ASSERT1(name && *name);
|
| - ASSERT1(value);
|
| -
|
| - CComVariant var;
|
| - HRESULT hr = GetValue(name, &var);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - ASSERT1(V_VT(&var) == VT_UI4);
|
| - *value = var.ulVal;
|
| - return S_OK;
|
| -}
|
| -
|
| -} // namespace omaha
|
| -
|
|
|