Я регистрирую свое приложение, чтобы получать уведомления, когда работа системы приостановлена или возобновлена. документация MSDN
Функция, которую я хотел бы выполнить после того, как приложение получит уведомление (я пробовал как void, так и void CALLBACK, и оба работают одинаково):
void isConnectedStandby()
{
printf( "ConnectedStandby Request");
}
1-й случай - я предоставляю указатель на функцию isConnectedStandby, но система рассматривает функцию как двойной указатель - она вызывает адрес, который находится под этим указателем обратного вызова.
HPOWERNOTIFY RegistrationHandle;
PowerRegisterSuspendResumeNotification(
DEVICE_NOTIFY_CALLBACK,
&isConnectedStandby,
&RegistrationHandle
);
2-й случай - здесь я предоставляю следующее (таким образом выполняется мой код функции):
typedef void (*StatusFunction_t)();
StatusFunction_t StatusFunction = isConnectedStandby;
HPOWERNOTIFY RegistrationHandle;
PowerRegisterSuspendResumeNotification(
DEVICE_NOTIFY_CALLBACK,
&isConnectedStandby,
&RegistrationHandle
);
Система вызывает не только мою функцию, но и все адреса после первого (если я предоставлю массив функций, он будет выполняться одна за другой, чтобы сбой, когда нет доступного действительного кода)
Как правильно использовать эту функцию?