Получить размер совместно используемого и совместно используемого рабочего набора для процесса.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получить размер совместно используемого и совместно используемого рабочего набора для процесса.

Сообщение Anonymous »

Я пытаюсь получить размеры общего и общего рабочего набора процесса.
Вот код, который я использую:

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

internal static unsafe WorkingSetInfo? GetWorkingSetInfo(SafeProcessHandle processHandle)
{
Settings.Log.Info("Called method: GetWorkingSetInfo");
uint size = 16;
void* pointer = Alloc(size);
int error;
Settings.Log.Debug("Retrieving info on working set...");
bool result = QueryWorkingSet(processHandle, pointer, size);
while (!result)
{
error = GetLastPInvokeError();
if (error is ERROR_BAD_LENGTH)
{
size *= 2;
pointer = Realloc(pointer, size);
result = QueryWorkingSet(processHandle, pointer, size);
}
else
{
Settings.Log.DebugFormat("Failed to retrieve info on working set: {0} ({1})", GetLastPInvokeErrorMessage(), error);
Free(pointer);
return null;
}
}
PSAPI_WORKING_SET_INFORMATION info = new();
ulong* dataPointer = (ulong*)pointer;
info.NumberOfEntries = new(*dataPointer);
dataPointer += 1;
info.WorkingSetInfo = new nuint[info.NumberOfEntries];
for (var i = 0; i < info.NumberOfEntries.ToUInt32(); i++)
{
info.WorkingSetInfo[i] = new(*dataPointer);
dataPointer += 1;
}
Free(pointer);
uint pageSize = GetMemoryPageSize();
return new(info, pageSize);
}
Этот код работает правильно, но он также неэффективен: всякий раз, когда он запускается, загрузка процессора моим процессом возрастает примерно до 30 % (в среднем 10 %, когда он не запускается).
Есть ли способ его оптимизировать или альтернативный способ получения данных (я использую функцию QueryWorkingSet)?
Я могу использовать Native API, если альтернативы нет.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -a-process
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Определить темный стиль/тему приложения используемого в данный момент рабочего стола в Qt
    Anonymous » » в форуме C++
    0 Ответы
    124 Просмотры
    Последнее сообщение Anonymous
  • Gunicorn: тайм-аут рабочего и выход рабочего во всех контейнерах
    Anonymous » » в форуме Python
    0 Ответы
    78 Просмотры
    Последнее сообщение Anonymous
  • Есть ли веб-сайт по разработке схемы рабочего процесса?
    Гость » » в форуме Php
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость
  • Есть ли веб-сайт по разработке схемы рабочего процесса?
    Гость » » в форуме Javascript
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • Отправка запроса POST с использованием httpClient в пользовательском действии рабочего процесса в Dynamics CRM вызывает
    Anonymous » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous

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