GetApplicationRestartSettings, fonction (winbase.h)
Récupère les informations de redémarrage inscrites pour le processus spécifié.
Syntaxe
HRESULT GetApplicationRestartSettings(
[in] HANDLE hProcess,
[out, optional] PWSTR pwzCommandline,
[in, out] PDWORD pcchSize,
[out, optional] PDWORD pdwFlags
);
Paramètres
[in] hProcess
Handle du processus. Ce handle doit avoir le droit d’accès PROCESS_VM_READ.
[out, optional] pwzCommandline
Pointeur vers une mémoire tampon qui reçoit la ligne de commande de redémarrage spécifiée par l’application lorsqu’elle a appelé la fonction RegisterApplicationRestart . La taille maximale de la ligne de commande, en caractères, est RESTART_MAX_CMD_LINE. Peut être NULL si pcchSize est égal à zéro.
[in, out] pcchSize
Lors de l’entrée, spécifie la taille de la mémoire tampon pwzCommandLine , en caractères.
Si la mémoire tampon n’est pas assez grande pour recevoir la ligne de commande, la fonction échoue avec HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) et définit ce paramètre sur la taille de mémoire tampon requise, en caractères.
Lors de la sortie, spécifie la taille de la mémoire tampon utilisée.
Pour déterminer la taille de mémoire tampon requise, définissez pwzCommandLine sur NULL et ce paramètre sur zéro. La taille en inclut une pour le caractère de fin null. Notez que la fonction retourne S_OK, et non HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) dans ce cas.
[out, optional] pdwFlags
Pointeur vers une variable qui reçoit les indicateurs spécifiés par l’application quand elle a appelé la fonction RegisterApplicationRestart .
Valeur retournée
Cette fonction retourne S_OK en cas de réussite ou l’un des codes d’erreur suivants.
Code de retour | Description |
---|---|
|
Un ou plusieurs paramètres ne sont pas valides. |
|
L’application ne s’est pas inscrite au redémarrage. |
|
La mémoire tampon pwzCommandLine est trop petite. La fonction retourne la taille de mémoire tampon requise dans pcchSize. Utilisez la taille requise pour réallouer la mémoire tampon. |
Remarques
Ces informations sont disponibles uniquement pour le processus actuel ; vous ne pouvez pas appeler cette fonction après le redémarrage de votre programme pour obtenir la ligne de commande de redémarrage. Pour obtenir la ligne de commande après un redémarrage, accédez au paramètre argv de votre fonction main.
Exemples
L’exemple suivant montre comment obtenir les paramètres de redémarrage spécifiés lorsque vous avez appelé la fonction RegisterApplicationRestart .
#include <windows.h>
#include <stdio.h>
void wmain(int argc, WCHAR* argv[])
{
HRESULT hr = S_OK;
WCHAR wsCommandLine[RESTART_MAX_CMD_LINE + 1];
DWORD cchCmdLine = sizeof(wsCommandLine) / sizeof(WCHAR);
DWORD dwFlags = 0;
LPWSTR pwsCmdLine = NULL;
UNREFERENCED_PARAMETER(argv);
UNREFERENCED_PARAMETER(argc);
wprintf(L"Registering for restart...\n");
hr = RegisterApplicationRestart(L"/restart -f .\\filename.ext", 0);
if (FAILED(hr))
{
wprintf(L"RegisterApplicationRestart failed, 0x%x\n", hr);
goto cleanup;
}
wprintf(L"Get restart command line using static buffer...\n");
hr = GetApplicationRestartSettings(GetCurrentProcess(), wsCommandLine, &cchCmdLine, &dwFlags);
if (FAILED(hr))
{
wprintf(L"GetApplicationRestartSettings failed, 0x%x\n", hr);
goto cleanup;
}
wprintf(L"Command line: %s\n", wsCommandLine);
wprintf(L"\nGet settings using dynamic buffer...\n");
cchCmdLine = 0;
// Returns S_OK instead of ERROR_INSUFFICIENT_BUFFER when pBuffer is NULL and size is 0.
hr = GetApplicationRestartSettings(GetCurrentProcess(), (PWSTR)pwsCmdLine, &cchCmdLine, &dwFlags);
if (SUCCEEDED(hr))
{
pwsCmdLine = (LPWSTR)malloc(cchCmdLine * sizeof(WCHAR));
if (pwsCmdLine)
{
hr = GetApplicationRestartSettings(GetCurrentProcess(), (PWSTR)pwsCmdLine, &cchCmdLine, &dwFlags);
if (FAILED(hr))
{
wprintf(L"GetApplicationRestartSettings failed with 0x%x\n", hr);
goto cleanup;
}
wprintf(L"Command line: %s\n", pwsCmdLine);
}
else
{
wprintf(L"Allocating the command-line buffer failed.\n");
}
}
else
{
if (hr != HRESULT_FROM_WIN32(ERROR_NOT_FOUND)) // Not a restart.
{
wprintf(L"GetApplicationRestartSettings failed with 0x%x\n", hr);
goto cleanup;
}
}
cleanup:
if (pwsCmdLine)
free(pwsCmdLine);
}
Configuration requise
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winbase.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |