2017-02-17 26 views
0

Я регистрация для события создания объекта для класса «SMS_UpdateGroupAssignment» для мониторинга развертываний, фрагмент коды ниже:WMI события создания экземпляр не получили

_dhGCreation = SINGLETON (CWMIEventManager)->subscribeToObjectCreation (L"SMS_UpdateGroupAssignment", this); 

void* CWMIEventManager::subscribeToObjectCreation (CComBSTR wmiClass, IWMIEventHandler* eh) 
{ 

IUnsecuredApartment* pUnsecApp = NULL; 
//IWbemUnsecuredApartment* pUnsecApp = NULL; 

HRESULT hres = CoCreateInstance (CLSID_UnsecuredApartment, 
NULL, 
CLSCTX_LOCAL_SERVER, 
IID_IUnsecuredApartment, 
(void**)&pUnsecApp); 

DWORD dwErr = GetLastError(); 

LOG_DEBUG_2("CoCreateInstance done, GetLastError = %d, HRESULT = %d", dwErr, hres); 
CEventSink* pSink = new CCreationEventSink (eh); 
pSink->AddRef(); 
LOG_DEBUG_0("pSink->AddRef"); 

IUnknown* pStubUnk = NULL; 

LOG_DEBUG_1("pUnsecApp = %d", &pUnsecApp); 
pUnsecApp->CreateObjectStub (pSink, &pStubUnk); 
LOG_DEBUG_0("pUnsecApp->CreateObjectStub"); 

IWbemObjectSink* pStubSink = NULL; 
pStubUnk->QueryInterface (IID_IWbemObjectSink, 
(void **) &pStubSink); 
LOG_DEBUG_0("pStubUnk->QueryInterface"); 

/* 
* The ExecNotificationQueryAsync method will call 
* EventSink::Indicate method when an event occurs 
*/ 
CComBSTR query = L" SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA '"; 
query += wmiClass + "'"; 

CW2A printstr(query); 

     // here smsProv is an instance to root/sms/site_<siteCode> 
hres = smsProv->getWbemSvc()->ExecNotificationQueryAsync (
CComBSTR (L"WQL"), 
query, 
WBEM_FLAG_SEND_STATUS, 
NULL, 
pStubSink); 

/* Check for errors.*/ 
if (FAILED(hres)) 
{ 
pUnsecApp->Release(); 
pStubUnk->Release(); 
pSink->Release(); 
pStubSink->Release(); 
return 0; 
} 

return (void*) pSink; 
} 

Когда эта регистрация происходит, я получаю следующее сообщение об ошибке в SMSProv.log :

Выполнить WQL = выбрать * из SMS_UpdateGroupAssignment ~ $$ < 02-14-2017 13: 59: 55.472-330> Выполнить SQL = выбрать все SMS_UpdateGroupAssignment.AssignmentID, SMS_UpdateGroupAssignment.LocaleID, SMS _UpdateGroupAssignment.AssignedUpdateGroup, SMS_UpdateGroupAssignment.AssignmentAction, SMS_UpdateGroupAssignment.Description, SMS_UpdateGroupAssignment.AssignmentID, SMS_UpdateGroupAssignment.AssignmentName, SMS_UpdateGroupAssignment.AssignmentType, SMS_UpdateGroupAssignment.Assignment_UniqueID, SMS_UpdateGroupAssignment.ContainsExpiredUpdates, SMS_UpdateGroupAssignment.CreationTime, SMS_UpdateGroupAssignment.DesiredConfigType, SMS_UpdateGroupAssignment.DisableMomAlerts, SMS_UpdateGroupAssignment.DPLocality, SMS_UpdateGroupAssignment. AssignmentEnabled, SMS_UpdateGroupAssignment.EnforcementDeadline, SMS_UpdateGroupAssignment.EvaluationSchedule, SMS_UpdateGroupAssignment.ExpirationTime, SMS_UpdateGroupAssignment.LastModificationTime, SMS_UpdateGroupAssignment.LastModifiedBy, SMS_UpdateGroupAssignment.LimitStateMessageVerbosity, SMS_UpdateGroupAssignment.LocaleID, SMS_UpdateGroupAssignment.LogComplianceToWinEvent ... ~ ~ ~ e: \ nts_sccm_release \ sms \ siteserver \ sdk_provider \ extnprov \ extproviderclassobject.cpp (2190) : ОШИБКА НА ИНДИКАТОРЕ - вероятно Отменено ~ ~ ~ $$ < 02-14-2017 13: 59: 55.667-330> ERROR ON INDICATE = (WBEM_E_CALL_CANCELLED) ~ $$ < 02-14-2017 13: 59: 55.669-330> Результаты возвращены: 170 из -1 ~ $$ < 02-14-2017 13: 59: 55.675-330 >

В чем может быть причина этого отказа?

ответ

0

не занимаются мероприятиями. Я пробовал это, и SMSProv.log сгенерировал много записей. Почему? IMHO, вызов базы данных не основан на событиях, поэтому приемник генерирует запрос базы данных каждые 15 мс или около того. Это будет поставлено в очередь, и вам придется подождать, может быть, час, когда sccm вернется к нормальной работе. Конечно, ваше соединение со всеми консолями будет отменено, потому что на сервере было много запросов к базе данных.

Другая идея заключается в том, что провайдер ur wbem перегружен. Im испытывая это также на времени я не знаю точно почему. У scom есть такая же проблема. Возможно, наши пространства имен WMI сломаны ... надеюсь, что нет, это будет desaster ....