Функция RmRestart (restartmanager.h)
Перезапускает приложения и службы, завершенные функцией RmShutdown и зарегистрированные для перезапуска с помощью функции RegisterApplicationRestart . Эта функция может вызываться только основным установщиком, который вызвал функцию RmStartSession для запуска сеанса Restart Manager.
Синтаксис
DWORD RmRestart(
[in] DWORD dwSessionHandle,
DWORD dwRestartFlags,
[in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);
Параметры
[in] dwSessionHandle
Дескриптор существующего сеанса диспетчера перезапуска.
dwRestartFlags
Зарезервировано. Этот параметр должен иметь значение 0.
[in, optional] fnStatus
Указатель на функцию обратного вызова сообщения о состоянии, которая используется для передачи сведений о состоянии во время выполнения функции RmRestart . Если задано значение NULL, состояние не указано.
Возвращаемое значение
Это самая последняя полученная ошибка. Функция может возвращать один из кодов системных ошибок , определенных в Winerror.h.
Значение | Значение |
---|---|
|
Это значение ошибки возвращается, если функция RmRestart вызывается с допустимым дескриптором сеанса перед вызовом функции RmShutdown . |
|
Не удалось перезапустить одно или несколько приложений. Структуры RM_PROCESS_INFO , возвращаемые функцией RmGetList , содержат обновленные сведения о состоянии. |
|
Функции Диспетчер перезапуска не удалось получить мьютекс записи в реестре в отведенное время. Рекомендуется перезапустить систему, так как дальнейшее использование диспетчера перезапуска, скорее всего, завершится ошибкой. |
|
Это значение ошибки возвращается функцией RmRestart при успешном выполнении запроса на отмену операции. |
|
Один или несколько аргументов неверны. Это значение ошибки возвращается функцией Restart Manager, если указатель NULL или 0 передается в параметре, требующем ненулевое и ненулевое значение. |
|
Операции не удалось выполнить чтение или запись в реестр. |
|
Не удалось завершить операцию диспетчера перезапуска, так как недостаточно памяти. |
|
Сеанс диспетчера перезапуска для предоставленного дескриптора не существует. |
|
Функция выполняется успешно и возвращает . |
Комментарии
После вызова функции RmRestartRM_PROCESS_INFO структуры, возвращаемые функцией RmGetList , содержат обновленные сведения о состоянии.
Диспетчер перезапуска учитывает привилегии, которые разделяют разные сеансы пользователя или терминала. Установщик, работающий как служба с привилегиями LocalSystem, не может завершить работу или перезапустить приложения в другом сеансе пользователя или терминала. Установщики должны реализовывать пользовательские методы для завершения работы и перезапуска приложений, работающих в других сеансах. Одним из способов является запуск нового процесса установщика в другом сеансе для выполнения операций завершения работы и перезапуска.
Когда консольное приложение завершает работу и перезапускается с помощью диспетчера перезапуска, приложение перезапускается в новой консоли.
Установщики всегда должны перезапускать приложения и службы с помощью функции RmRestart , даже если функция RmShutdown возвращает ошибку, указывающую, что не все приложения и службы могут быть завершены.
Функция RmRestart не перезапускает приложения, которые выполняются с повышенными привилегиями. Даже если приложение было завершено с помощью Диспетчера перезапуска.
Функция RmRestart не перезапускает приложения, которые не выполняются от имени текущего пользователя, выполнившего вход. Даже если приложение было завершено с помощью Диспетчера перезапуска. Например, функция RmRestart не перезапускает приложения, запущенные с помощью команды Запуска от имени , которые не выполняются от имени пользователя, выполнившего вход в текущий момент. Эти приложения необходимо перезапустить вручную.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | restartmanager.h |
Библиотека | Rstrtmgr.lib |
DLL | Rstrtmgr.dll |