Condividi tramite


Funzione RmShutdown (restartmanager.h)

Avvia l'arresto delle applicazioni. Questa funzione può essere chiamata solo dal programma di installazione che ha avviato la sessione di Restart Manager usando la funzione RmStartSession .

Sintassi

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

Parametri

[in] dwSessionHandle

Handle per una sessione di Gestione riavvio esistente.

[in] lActionFlags

Una o più opzioni RM_SHUTDOWN_TYPE che configurano l'arresto dei componenti. I valori seguenti possono essere combinati da un operatore OR per specificare che le applicazioni e i servizi non reattivi devono essere costretti a arrestare se e solo se tutte le applicazioni sono state registrate per il riavvio.

Valore Significato
RmForceShutdown
0x1
Forzare l'arresto di applicazioni e servizi non risponde dopo il periodo di timeout. Un'applicazione che non risponde a una richiesta di arresto è costretta a arrestarsi entro 30 secondi. Un servizio che non risponde a una richiesta di arresto è costretto a arrestarsi dopo 20 secondi.
RmShutdownOnlyRegistered
0x10
Arrestare le applicazioni se e solo se tutte le applicazioni sono state registrate per il riavvio usando la funzione RegisterApplicationRestart . Se non è possibile riavviare processi o servizi, non vengono arrestati processi o servizi.

[in, optional] fnStatus

Puntatore a una funzione RM_WRITE_STATUS_CALLBACK utilizzata per comunicare lo stato dettagliato durante l'esecuzione di questa funzione. Se NULL non viene fornito alcun stato.

Valore restituito

Si tratta dell'errore più recente ricevuto. La funzione può restituire uno dei codici di errore di sistema definiti in Winerror.h.

Valore Significato
ERROR_SUCCESS
0
Tutte le operazioni di arresto, riavvio e callback sono state completate correttamente.
ERROR_FAIL_NOACTION_REBOOT
350
Non sono state eseguite azioni di arresto. Uno o più processi o servizi richiedono un riavvio del sistema da arrestare. Questo codice di errore viene restituito quando Gestione riavvio rileva che è necessario un riavvio del sistema prima di arrestare qualsiasi applicazione.
ERROR_FAIL_SHUTDOWN
351
Non è stato possibile arrestare alcune applicazioni. AppStatus delle strutture RM_PROCESS_INFO restituite dalla funzione RmGetList contengono informazioni sullo stato aggiornate.
ERROR_CANCELLED
1223
Questo valore di errore viene restituito dalla funzione RmShutdown quando la richiesta di annullare un'operazione ha esito positivo.
ERROR_SEM_TIMEOUT
121
Non è stato possibile ottenere un mutex di scrittura del Registro di sistema nel tempo assegnato. È consigliabile riavviare un sistema perché è probabile che l'uso di Gestione riavvio abbia esito negativo.
ERROR_BAD_ARGUMENTS
160
Uno o più argomenti non sono corretti. Questo valore di errore viene restituito dalla funzione Restart Manager se un puntatore NULL o 0 viene passato in un parametro che richiede un valore diverso da null e non zero.
ERROR_WRITE_FAULT
29
Un'operazione non è riuscita a leggere o scrivere nel Registro di sistema.
ERROR_OUTOFMEMORY
14
Impossibile completare un'operazione di Gestione riavvio perché non è disponibile memoria sufficiente.
ERROR_INVALID_HANDLE
6
Non esiste alcuna sessione di Gestione riavvio per l'handle fornito.

Commenti

La funzione RmShutdown chiama RmGetList e aggiorna l'elenco dei processi attualmente usando risorse registrate prima di tentare di arrestare i processi. La funzione RmShutdown tenta quindi di arrestare i processi usando le risorse registrate nell'elenco più recente. La funzione RmShutdown aggiorna il membro AppStatus delle strutture RM_PROCESS_INFO restituite dalla funzione RmGetList con informazioni dettagliate sullo stato.

Gestione riavvio rispetta i privilegi che separano sessioni utente o terminale diverse. Un programma di installazione in esecuzione come servizio con privilegi LocalSystem non può arrestare o riavviare tutte le applicazioni in un'altra sessione utente o terminale. I programmi di installazione devono implementare metodi personalizzati per arrestare e riavviare le applicazioni in esecuzione in altre sessioni. Un metodo consiste nell'avviare un nuovo processo di installazione nell'altra sessione per eseguire operazioni di arresto e riavvio.

I programmi di installazione devono sempre riavviare applicazioni e servizi usando la funzione RmRestart anche quando la funzione RmShutdown restituisce un errore che indica che non tutte le applicazioni e i servizi potrebbero essere arrestati.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione restartmanager.h
Libreria Rstrtmgr.lib
DLL Rstrtmgr.dll

Vedi anche

RegisterApplicationRestart

RmCancelCurrentTask

RmRestart