다음을 통해 공유


RmShutdown 함수(restartmanager.h)

애플리케이션의 종료를 시작합니다. 이 함수는 RmStartSession 함수를 사용하여 다시 시작 관리자 세션을 시작한 설치 관리자에서만 호출할 수 있습니다.

구문

DWORD RmShutdown(
  [in]           DWORD                    dwSessionHandle,
  [in]           ULONG                    lActionFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

매개 변수

[in] dwSessionHandle

기존 다시 시작 관리자 세션에 대한 핸들입니다.

[in] lActionFlags

구성 요소의 종료를 구성하는 하나 이상의 RM_SHUTDOWN_TYPE 옵션입니다. OR 연산자가 다음 값을 결합하여 모든 애플리케이션이 다시 시작되도록 등록된 경우에만 응답하지 않는 애플리케이션 및 서비스를 강제로 종료하도록 지정할 수 있습니다.

의미
RmForceShutdown
0x1
시간 제한 기간 후에 응답하지 않는 애플리케이션 및 서비스를 강제로 종료합니다. 종료 요청에 응답하지 않는 애플리케이션은 30초 이내에 강제로 종료됩니다. 종료 요청에 응답하지 않는 서비스는 20초 후에 강제로 종료됩니다.
RmShutdownOnlyRegistered
0x10
RegisterApplicationRestart 함수를 사용하여 모든 애플리케이션이 다시 시작하기 위해 등록된 경우에만 애플리케이션을 종료합니다. 프로세스 또는 서비스를 다시 시작할 수 없는 경우 프로세스 또는 서비스가 종료되지 않습니다.

[in, optional] fnStatus

이 함수가 실행되는 동안 자세한 상태 전달하는 데 사용되는 RM_WRITE_STATUS_CALLBACK 함수에 대한 포인터입니다. NULL인 경우 상태 제공되지 않습니다.

반환 값

가장 최근에 받은 오류입니다. 함수는 Winerror.h에 정의된 시스템 오류 코드 중 하나를 반환할 수 있습니다.

의미
ERROR_SUCCESS
0
모든 종료, 다시 시작 및 콜백 작업이 성공적으로 완료되었습니다.
ERROR_FAIL_NOACTION_REBOOT
350
종료 작업이 수행되지 않았습니다. 하나 이상의 프로세스 또는 서비스를 종료하려면 시스템을 다시 시작해야 합니다. 이 오류 코드는 다시 시작 관리자가 애플리케이션을 종료하기 전에 시스템을 다시 시작해야 한다는 것을 감지하면 반환됩니다.
ERROR_FAIL_SHUTDOWN
351
일부 애플리케이션을 종료할 수 없습니다. RmGetList 함수에서 반환된 RM_PROCESS_INFO 구조체의 AppStatus에는 업데이트된 상태 정보가 포함됩니다.
ERROR_CANCELLED
1223
이 오류 값은 작업 취소 요청이 성공하면 RmShutdown 함수에서 반환됩니다.
ERROR_SEM_TIMEOUT
121
Restart Manager 함수는 할당된 시간에 레지스트리 쓰기 뮤텍스를 가져올 수 없습니다. 다시 시작 관리자의 추가 사용이 실패할 가능성이 있으므로 시스템을 다시 시작하는 것이 좋습니다.
ERROR_BAD_ARGUMENTS
160
하나 이상의 인수가 올바르지 않습니다. NULL 포인터 또는 0이 null이 아닌 값이 필요한 매개 변수에 전달된 경우 이 오류 값은 Restart Manager 함수에서 반환됩니다.
ERROR_WRITE_FAULT
29
작업이 레지스트리를 읽거나 쓸 수 없습니다.
ERROR_OUTOFMEMORY
14
메모리가 부족하여 다시 시작 관리자 작업을 완료할 수 없습니다.
ERROR_INVALID_HANDLE
6
제공된 핸들에 대한 Restart Manager 세션이 없습니다.

설명

RmShutdown 함수는 RmGetList를 호출하고 프로세스를 종료하기 전에 등록된 리소스를 사용하여 현재 프로세스 목록을 업데이트합니다. 그런 다음 RmShutdown 함수는 최신 목록에서 등록된 리소스를 사용하여 프로세스를 종료하려고 시도합니다. RmShutdown 함수는 RmGetList 함수에서 반환하는 RM_PROCESS_INFO 구조체의 AppStatus 멤버를 자세한 상태 정보로 업데이트합니다.

Restart Manager는 서로 다른 사용자 또는 터미널 세션을 구분하는 권한을 존중합니다. LocalSystem 권한으로 서비스로 실행되는 설치 관리자는 다른 사용자 또는 터미널 세션에서 애플리케이션을 종료하거나 다시 시작할 수 없습니다. 설치 관리자는 다른 세션에서 실행 중인 애플리케이션을 종료하고 다시 시작하는 사용자 지정 메서드를 구현해야 합니다. 한 가지 방법은 종료 및 다시 시작 작업을 수행하기 위해 다른 세션에서 새 설치 관리자 프로세스를 시작하는 것입니다.

RmShutdown 함수가 모든 애플리케이션 및 서비스를 종료할 수 없음을 나타내는 오류를 반환하는 경우에도 설치 관리자는 항상 RmRestart 함수를 사용하여 애플리케이션 및 서비스를 다시 시작해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 restartmanager.h
라이브러리 Rstrtmgr.lib
DLL Rstrtmgr.dll

추가 정보

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart