MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / GetTriggers

Method GetTriggers

WinSysCore/Service.cpp:41–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39}
40
41std::vector<ServiceTrigger> Service::GetTriggers() const {
42 std::vector<ServiceTrigger> triggers;
43 DWORD needed;
44 ::QueryServiceConfig2(_handle.get(),
45 SERVICE_CONFIG_TRIGGER_INFO, // Trigger(s) to start/stop the service
46 nullptr, 0, &needed);
47 if (::GetLastError() != ERROR_INSUFFICIENT_BUFFER)
48 return triggers;
49
50 auto buffer = std::make_unique<BYTE[]>(needed);
51 if (!::QueryServiceConfig2(_handle.get(), SERVICE_CONFIG_TRIGGER_INFO, buffer.get(), needed, &needed))
52 return triggers;
53
54 auto info = reinterpret_cast<SERVICE_TRIGGER_INFO*>(buffer.get());
55 triggers.reserve(info->cTriggers);
56 for (DWORD i = 0; i < info->cTriggers; i++) {
57 const auto& tinfo = info->pTriggers[i];
58 ServiceTrigger trigger;
59 trigger.Type = static_cast<ServiceTriggerType>(tinfo.dwTriggerType);
60 trigger.TriggerSubType = tinfo.pTriggerSubtype;
61 trigger.Action = static_cast<ServiceTriggerAction>(tinfo.dwAction);
62
63 triggers.push_back(trigger);
64 }
65
66 return triggers;
67}
68
69std::vector<std::wstring>Service::GetRequiredPrivileges() const {
70 std::vector<std::wstring> privileges;

Callers 3

ServiceInfoEx.cppFile · 0.80
ParseTableEntryMethod · 0.80
CompareItemsMethod · 0.80

Calls 2

reserveMethod · 0.80
push_backMethod · 0.80

Tested by

no test coverage detected