windows-nt/Source/XPSP1/NT/base/efiutil/sdk/shell/reset/reset.c
2020-09-26 16:20:57 +08:00

74 lines
1.6 KiB
C

/*++
Copyright (c) 1999 Intel Corporation
Module Name:
reset.c
Abstract:
Revision History
--*/
#include "shell.h"
EFI_STATUS
InitializeReset (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
);
EFI_DRIVER_ENTRY_POINT(InitializeReset)
EFI_STATUS
InitializeReset (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
/*+++
reset [warm]
--*/
{
EFI_RESET_TYPE ResetType;
UINTN DataSize;
CHAR16 *ResetData, *Str;
InstallInternalShellCommand (
ImageHandle, SystemTable, InitializeReset,
L"reset", /* command */
L"reset [/warm] [reset string]", /* command syntax */
L"Cold or Warm reset", /* 1 line descriptor */
NULL /* command help page */
);
InitializeShellApplication (ImageHandle, SystemTable);
ResetType = EfiResetCold;
if (SI->Argc > 1) {
Str = SI->Argv[1];
if (Str[0] == '-' || Str[0] == '/') {
if (Str[1] = 'W' || Str[1] == 'w') {
ResetType = EfiResetWarm;
} else {
Print(L"reset [/warm] [reset string]\n");
return EFI_SUCCESS;
}
}
}
DataSize = 0;
ResetData = NULL;
if (SI->Argc > 2) {
ResetData = SI->Argv[2];
DataSize = StrSize(ResetData);
}
return RT->ResetSystem(ResetType, EFI_SUCCESS, DataSize, ResetData);
}