Поделиться через


Функция 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.

Значение Значение
ERROR_REQUEST_OUT_OF_SEQUENCE
776
Это значение ошибки возвращается, если функция RmRestart вызывается с допустимым дескриптором сеанса перед вызовом функции RmShutdown .
ERROR_FAIL_RESTART
352
Не удалось перезапустить одно или несколько приложений. Структуры RM_PROCESS_INFO , возвращаемые функцией RmGetList , содержат обновленные сведения о состоянии.
ERROR_SEM_TIMEOUT
121
Функции Диспетчер перезапуска не удалось получить мьютекс записи в реестре в отведенное время. Рекомендуется перезапустить систему, так как дальнейшее использование диспетчера перезапуска, скорее всего, завершится ошибкой.
ERROR_CANCELLED
1223
Это значение ошибки возвращается функцией RmRestart при успешном выполнении запроса на отмену операции.
ERROR_BAD_ARGUMENTS
160
Один или несколько аргументов неверны. Это значение ошибки возвращается функцией Restart Manager, если указатель NULL или 0 передается в параметре, требующем ненулевое и ненулевое значение.
ERROR_WRITE_FAULT
29
Операции не удалось выполнить чтение или запись в реестр.
ERROR_OUTOFMEMORY
14
Не удалось завершить операцию диспетчера перезапуска, так как недостаточно памяти.
ERROR_INVALID_HANDLE
6
Сеанс диспетчера перезапуска для предоставленного дескриптора не существует.
ERROR_SUCCESS
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

См. также раздел

RegisterApplicationRestart

RmCancelCurrentTask

RmShutdown