Поздний ответ, но я обнаружил, что вместо этого проще вызывать эту другую функцию (так как CallNtPowerInformation(GetPowerRequestList, ...)
вернул неподдерживаемую ошибку):
PowerInformationWithPrivileges(GetPowerRequestList, 0, 0, bufout, 16384);
Кажется, что сигнатура функции одинакова, ивам, возможно, придется определить его и GetProcAddress
из powrprof.dll
самостоятельно, в зависимости от того, какие библиотеки у вас есть.
Формат вывода - двоичный двоичный объект.Если бы мне пришлось угадывать, это список int64 (даже в 32-битных приложениях), первая запись - это # записи (назовите это x), следующие x записей - это смещения в BLOB для реальных записей, которые сами по себе являются своего родаBLOB / структура переменной длины, вероятно, коррелирующие с каждым PowerRequest
и / или типом запроса.Не полная информация, но это должно заставить других людей начать, если они серьезно относятся к попыткам сделать эту работу.
Вам нужен администратор для вызова этой функции (вам также нужен администратор для вызова powercfg /requests
, так что это неНе слишком удивительно, хотя, возможно, недостаток зависит от вашего варианта использования.