Как узнать использование памяти службой Windows на C++?C++

Программы на C++. Форум разработчиков
Anonymous
Как узнать использование памяти службой Windows на C++?

Сообщение Anonymous »

Мне нужен пример использования памяти службой Windows, использующей C++.
Я искал на этом форуме, в документации Google и Microsoft.
https://learn.microsoft.com/en-us/windo ... s/services
Но на данный момент я не нашел этой информации.
Кто-нибудь знает, как это сделать?
Это мой код для получения PID службы.
Используйте эту команду, чтобы скомпилировать с помощью Visual Studio:

Код: Выделить всё

cl /EHsc TheProgram.cpp Advapi32.lib
Включите эти библиотеки:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
Найдите услуги и распечатайте их на экране с помощью этой функции:

Код: Выделить всё

int FindServices(const std::string &ServiceNameToFind)
{
SC_HANDLE hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_CONNECT);
if (hSCM == NULL)return 0;

DWORD bufferSize = 0;
DWORD requiredBufferSize = 0;
DWORD totalServicesCount = 0;

EnumServicesStatusEx( hSCM,
SC_ENUM_PROCESS_INFO,
SERVICE_WIN32,
SERVICE_STATE_ALL,
nullptr,
bufferSize,
&requiredBufferSize,
&totalServicesCount,
nullptr,
nullptr );

std::vector buffer( requiredBufferSize );
EnumServicesStatusEx( hSCM,
SC_ENUM_PROCESS_INFO,
SERVICE_WIN32,
SERVICE_STATE_ALL,
buffer.data(),
buffer.size(),
&requiredBufferSize,
&totalServicesCount,
nullptr,
nullptr );

int result = 0;

LPENUM_SERVICE_STATUS_PROCESS services = reinterpret_cast( buffer.data() );
for ( unsigned int i = 0; i < totalServicesCount; ++i )
{

ENUM_SERVICE_STATUS_PROCESS service = services[i];

std::string CurrentServiceName(service.lpServiceName);
std::size_t found = CurrentServiceName.find(ServiceNameToFind);
if (found==std::string::npos) continue;

DWORD processID = service.ServiceStatusProcess.dwProcessId;
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78713488/how-to-get-the-memory-usage-of-a-windows-service-in-c[/url]

Вернуться в «C++»