// /**
//
// (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
// (C) Copyright 2012-2015 Hewlett-Packard Development Company, L.P.<BR>
// Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>
// This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution. The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php.
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// Module Name:
//
// UefiShellDriver1CommandsLib.uni
//
// Abstract:
//
// String definitions for UEFI Shell 2.0 driver1 profile commands
//
//
// **/

/=#

#langdef   en-US "english"

#string STR_GEN_PROBLEM           #language en-US "%H%s%N: Unknown flag - '%H%s%N'\r\n"
#string STR_GEN_PROBLEM_VAL       #language en-US "%H%s%N: Bad value - '%H%s%N' for flag - '%H%s%N'\r\n"
#string STR_GEN_PARAM_INV         #language en-US "%H%s%N: Invalid argument - '%H%s%N'\r\n"
#string STR_GEN_TOO_FEW           #language en-US "%H%s%N: Too few arguments\r\n"
#string STR_GEN_TOO_MANY          #language en-US "%H%s%N: Too many arguments\r\n"
#string STR_GEN_INV_HANDLE        #language en-US "%H%s%N: Handle - '%H%s%N' not found\r\n"
#string STR_GEN_PARAM_CONFLICT    #language en-US "%H%s%N: Flags conflict with - '%H%s%N' and '%H%s%N'\r\n"
#string STR_GEN_NO_VALUE          #language en-US "%H%s%N: Missing argument for flag - '%H%s%N'\r\n"
#string STR_GEN_HANDLE_NOT        #language en-US "%H%s%N: Handle [%H%02x%N] is not a valid %s\r\n"
#string STR_GEN_HANDLE_REQ        #language en-US "%H%s%N: Handle required with the specified options\r\n"
#string STR_GEN_PROTOCOL_NF       #language en-US "%H%s%N: The protocol '%H%s%N' is required and not found (%g)\r\n"
#string STR_GEN_FIND_FAIL         #language en-US "%H%s%N: File not found - '%H%s%N'\r\n"
#string STR_GEN_FILE_EXIST        #language en-US "%H%s%N: File already exists - '%H%s%N'\r\n"
#string STR_GEN_FILE_OPEN_FAIL    #language en-US "%H%s%N: Cannot open file - '%H%s%N'\r\n"
#string STR_FILE_WRITE_FAIL       #language en-US "%H%s%N: Write file error - '%H%s%N'\r\n"
#string STR_FILE_READ_FAIL        #language en-US "%H%s%N: Read file error - '%H%s%N'\r\n"
#string STR_GEN_OUT_MEM           #language en-US "%H%s%N: Memory allocation was not successful\r\n"
#string STR_GEN_UEFI_FUNC_ERROR   #language en-US "%H%s%N: UEFI function '%H%s%N' returned an incorrect value for: %s (%x)\r\n"
#string STR_GEN_UEFI_FUNC_WARN    #language en-US "%H%s%N: UEFI function '%H%s%N' returned: %r\r\n"
#string STR_GEN_SFO_HEADER        #language en-US "ShellCommand,"%s"\r\n"

#string STR_DRVDIAG_HEADER        #language en-US "%EAvailable Diagnostics%N.\r\n"
#string STR_DRVDIAG_DRIVER_HEADER #language en-US "Driver [%H%02x%N]: "
#string STR_DRVDIAG_DRIVER_NO_HANDLES #language en-US "No controller handles found.\r\n"

#string STR_HANDLE_RESULT         #language en-US "%H%s%N - Handle [%H%02x%N] Result %r.\r\n"
#string STR_3P_RESULT             #language en-US "%H%s%N - (%H%02x%N,%H%02x%N,%H%02x%N) Result %r.\r\n"
#string STR_CONNECT_NONE          #language en-US "%HConnect%N No drivers could be connected.\r\n"

#string STR_DRVCFG_NONE_FOUND     #language en-US "%HDrvCfg%N No configurable devices were found.\r\n"
#string STR_DRVCFG_COMP           #language en-US "%HDrvCfg%N - operation complete.\r\n"
#string STR_DRVCFG_DONE_HII       #language en-US "Handle[%H%02x%N] successfully updated from file.\r\n"
#string STR_DRVCFG_LINE_HII       #language en-US "Handle[%H%02x%N]                        HII Config Access\r\n"
#string STR_DRVCFG_ALL_LANG       #language en-US "Driver[%H%02x%N]  Ctrl[--]  Lang[%H%a%N]    Driver Configuration"
#string STR_DRVCFG_CTRL_LANG      #language en-US "Driver[%H%02x%N]  Ctrl[%H%02x%N]  Lang[%H%a%N]    Driver Configuration"
#string STR_DRVCFG_CHILD_LANG     #language en-US "Driver[%H%02x%N]  Ctrl[%H%02x%N]  Child[%H%02x%N]  Lang[%H%a%N]    Driver Configuration"
#string STR_DRVCFG_RESTART_S      #language en-US "Restart %s\r\n"
#string STR_DRVCFG_STOP           #language en-US "Stop Controller\n"
#string STR_DRVCFG_ENTER_S        #language en-US "\nPress [ENTER] to %s"
#string STR_DRVCFG_NONE           #language en-US "None\n"
#string STR_DRVCFG_CTLR_S         #language en-US "Controller %s\n"
#string STR_DRVCFG_FORCE_D        #language en-US "Force Default Configuration to DefaultType %08x\n"
#string STR_DRVCFG_VALIDATE       #language en-US "Validate Configuration Options\n"
#string STR_DRVCFG_SET            #language en-US "Set Configuration Options\n"
#string STR_DRVCFG_NOT_SUPPORT    #language en-US "Handle [%H%02x%N] does not support configuration.\n"
#string STR_DRVCFG_OPTIONS_SET    #language en-US " - Options set.  Action Required is "
#string STR_DRVCFG_NOT_SET        #language en-US " - Options not set. Status = %r\n"
#string STR_DRVCFG_DEF_FORCED     #language en-US " - Defaults forced.  Action Required is "
#string STR_DRVCFG_FORCE_FAILED   #language en-US " - Force of defaults failed.  Status = %r\n"
#string STR_DRVCFG_OPTIONS_VALID  #language en-US " - Options valid\n"
#string STR_DRVCFG_OPTIONS_INV    #language en-US " - Options not valid. Status = %r\n"
#string STR_DRVCFG_IN_FILE_NF     #language en-US "DevicePath '%B%s%N' from file not found in HII DB. Skipped.\r\n"


#string STR_DEVICES_HEADER_LINES  #language en-US "%N"
"     T   D\r\n"
"     Y C I\r\n"
"     P F A\r\n"
"CTRL E G G #P #D #C  Device Name\r\n"
"==== = = = == == === =========================================================\r\n"
#string STR_DEVICES_ITEM_LINE     #language en-US "%H%4x%N %1c %1c %1c %2d %2d %3d %s\r\n"
#string STR_DEVICES_ITEM_LINE_SFO #language en-US "DevicesInfo,"%x","%c","%c","%c","%d","%d","%d","%s"\r\n"

#string STR_DRIVERS_HEADER_LINES  #language en-US "%N"
"             T   D\r\n"
"             Y C I\r\n"
"             P F A\r\n"
"DRV VERSION  E G G #D  #C  DRIVER NAME                         IMAGE PATH\r\n"
"=== ======== = = = === === =================================== ==========\r\n"
#string STR_DRIVERS_ITEM_LINE     #language en-US "%H%3x%N %08x %1c %1c %1c %3d %3d %-35s %s\r\n"
#string STR_DRIVERS_ITEM_LINE_SFO #language en-US "DriversInfo,"%x","%x","%c","%c","%c","%d","%d","%s","%s"\r\n"

#string STR_DH_OUTPUT_DECODE      #language en-US "%s: %g\r\n"
#string STR_DH_NO_NAME_FOUND      #language en-US "Protocol Name '%s' could not be identified.\r\n"
#string STR_DH_NO_GUID_FOUND      #language en-US "Protocol GUID '%g' could not be identified.\r\n"
#string STR_DH_SFO_OUTPUT         #language en-US "%s, %s, %H%02x%N, %s, &s\r\n"
#string STR_DH_OUTPUT             #language en-US "%H%02x%N: %s\r\n"
#string STR_DH_OUTPUT_ALL_HEADER  #language en-US "Handle dump\r\n"
#string STR_DH_OUTPUT_GUID_HEADER #language en-US "Handle dump by protocol '%g'\r\n"
#string STR_DH_OUTPUT_NAME_HEADER #language en-US "Handle dump by protocol '%s'\r\n"
#string STR_DH_OUTPUT_SINGLE      #language en-US "%H%02x%N: %x\r\n%s"
#string STR_DH_OUTPUT_SFO         #language en-US "%s, %s, %s, %H%02x%N, %s, %s\r\n"
#string STR_DH_OUTPUT_DRIVER1     #language en-US "   Controller Name    : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER2     #language en-US "   Device Path        : %B%s%N\r\n"
                                                  "   Controller Type    : %B%s%N\r\n"
                                                  "   Configuration      : %B%s%N\r\n"
                                                  "   Diagnostics        : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER3     #language en-US "   Managed by         : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER4A    #language en-US "     Drv[%H%02x%N]          : Image(%B%s%N)r\n"
#string STR_DH_OUTPUT_DRIVER4B    #language en-US "     Drv[%H%02x%N]          : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER5     #language en-US "   Parent Controllers : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER5B    #language en-US "     Parent[%H%02x%N]       : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER6     #language en-US "   Child Controllers  : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER6B    #language en-US "     Child[%H%02x%N]        : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER7     #language en-US "   Driver Name        : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER7B    #language en-US "   Driver Image Name  : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER8     #language en-US "   Driver Version     : %B%08x%N\r\n"
                                                  "   Driver Type        : %B%s%N\r\n"
                                                  "   Configuration      : %B%s%N\r\n"
                                                  "   Diagnostics        : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER9     #language en-US "   Managing           : %B%s%N\r\n"
#string STR_DH_OUTPUT_DRIVER9B    #language en-US "     Ctrl[%H%02x%N]         : %B%s%N\r\n"

#string STR_DEV_TREE_OUTPUT       #language en-US "Ctrl[%H%02x%N] %s\r\n"

#string STR_UNLOAD_CONF           #language en-US "%HUnload%N - Handle [%H%02x%N].  [y/n]?\r\n"
#string STR_UNLOAD_VERBOSE        #language en-US ""
"Handle [%H%02x%N] (%08x)\r\n"
"  Image (%08x)\r\n"
"    ParentHandle..: %08x\r\n"
"    SystemTable...: %08x\r\n"
"    DeviceHandle..: %08x\r\n"
"    FilePath......: %s\r\n"
"    PDBFileName...: %a\r\n"
"    ImageBase.....: %08x\r\n"
"    ImageSize.....: %Ld\r\n"
"    CodeType......: %s\r\n"
"    DataType......: %s\r\n"

#string STR_OPENINFO_HEADER_LINE  #language en-US "Handle %H%02x%N (%H%0p%N)\r\n"
#string STR_OPENINFO_LINE         #language en-US "  Drv[%H%02x%N] Ctrl[%H%02x%N] Cnt(%H%02x%N) %H%s Image%N(%s)\r\n"
#string STR_OPENINFO_MIN_LINE     #language en-US "  Drv[%H%02x%N] Ctrl[  ] Cnt(%H%02x%N) %H%s Image%N(%s)\r\n"

#string STR_DRV_DIAG_ITEM_LINE    #language en-US "  Drv[%H%02x%N] Ctrl[%H%02x%N] Child[%H%02x%N]\r\n"

#string STR_GET_HELP_DRVCFG       #language en-US ""
".TH drvcfg 0 "configure a UEFI driver."\r\n"
".SH NAME\r\n"
"Invokes the driver configuration.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DRVCFG [-l XXX] [-c] [-f <Type>|-v|-s] \r\n"
"       [DriverHandle [DeviceHandle [ChildHandle]]] [-i filename] [-o filename]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -c           - Configures all child devices.\r\n"
"  -l           - Configures using the ISO 3066 language specified by XXX.\r\n"
"  -f           - Forces defaults.\r\n"
"  -v           - Validates options.\r\n"
"  -s           - Sets options.\r\n"
"  -i           - Receives configuration updates from an input file.\r\n"
"  -o           - Exports the settings of the specified driver instance to a\r\n"
"                 file.\r\n"
"  Type         - Specifies the type of default configuration options to force on the\r\n"
"                 controller.\r\n"
"                   0         - Standard Defaults.\r\n"
"                   1         - Manufacturing Defaults.\r\n"
"                   2         - Safe Defaults.\r\n"
"                   4000-FFFF - Custom Defaults.\r\n"
"  DriverHandle - Specifies the the handle of the driver to configure.\r\n"
"  DeviceHandle - Specifies the handle of a device that the DriverHandle is managing.\r\n"
"  ChildHandle  - Specifies the handle of a device that is a child of the DeviceHandle. \r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. Default Type:\r\n"
"     0 - Safe Defaults. Places a controller in a safe configuration with\r\n"
"         the greatest probability of functioning correctly in a platform.\r\n"
"     1 - Manufacturing Defaults. Optional type that places the controller in\r\n"
"         a configuration suitable for a manufacturing and test environment.\r\n"
"     2 - Custom Defaults. Optional type that places the controller in a\r\n"
"         custom configuration.\r\n"
"     3 - Performance Defaults. Optional type that places the controller in a\r\n"
"         configuration that maximizes the controller's performance in a \r\n"
"         platform. \r\n"
"     Other Value - Depends on the driver's implementation.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the list of devices that are available for configuration:\r\n"
"    Shell> drvcfg\r\n"
" \r\n"
"  * To display the list of devices and child devices that are available for\r\n"
"    configuration:\r\n"
"    Shell> drvcfg -c\r\n"
" \r\n"
"  * To force defaults on all devices:\r\n"
"    Shell> drvcfg -f 0\r\n"
" \r\n"
"  * To force defaults on all devices that are managed by driver 0x17:\r\n"
"    Shell> drvcfg -f 0 17\r\n"
" \r\n"
"  * To force defaults on device 0x28 that is managed by driver 0x17:\r\n"
"    Shell> drvcfg -f 0 17 28\r\n"
" \r\n"
"  * To force defaults on all child devices of device 0x28 that is managed by\r\n"
"    driver 0x17:\r\n"
"    Shell> drvcfg -f 0 17 28 -c\r\n"
" \r\n"
"  * To force defaults on child device 0x30 of device 0x28 that is managed by\r\n"
"    driver 0x17:\r\n"
"    Shell> drvcfg -f 0 17 28 30\r\n"
" \r\n"
"  * To validate options on all devices:\r\n"
"    Shell> drvcfg -v\r\n"
" \r\n"
"  * To validate options on all devices that are managed by driver 0x17:\r\n"
"    Shell> drvcfg -v 17\r\n"
" \r\n"
"  * To validate options on device 0x28 that is managed by driver 0x17:\r\n"
"    Shell> drvcfg -v 17 28\r\n"
" \r\n"
"  * To validate options on all child devices of device 0x28 that is managed by\r\n"
"    driver 0x17:\r\n"
"    Shell> drvcfg -v 17 28 -c\r\n"
" \r\n"
"  * To validate options on child device 0x30 of device 0x28 that is managed by\r\n"
"    driver 0x17:\r\n"
"    Shell> drvcfg -v 17 28 30\r\n"
" \r\n"
"  * To set options on device 0x28 that is managed by driver 0x17: \r\n"
"    Shell> drvcfg -s 17 28\r\n"
" \r\n"
"  * To set options on child device 0x30 of device 0x28 that is managed by\r\n"
"    driver 0x17:\r\n"
"    Shell> drvcfg -s 17 28 30\r\n"
" \r\n"
"  * To set options on device 0x28 that is managed by driver 0x17 in English:\r\n"
"    Shell> drvcfg -s 17 28 -l eng\r\n"
" \r\n"
"  * To set options on device 0x28 that is managed by driver 0x17 in Spanish:\r\n"
"    Shell> drvcfg -s 17 28 -l spa\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_UNSUPPORTED          The action as requested was unsupported.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_DRIVERS      #language en-US ""
".TH drivers 0 "display a list of drivers"\r\n"
".SH NAME\r\n"
"Displays the UEFI driver list.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DRIVERS [-l XXX] [-sfo] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -l   - Displays drivers using the specified language (e.g. ISO 639-2) \r\n"
"  -sfo - Displays information as described in Standard-Format Output.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays a list of information for drivers that follow the\r\n"
"     UEFI Driver Model in the UEFI environment. The list includes:\r\n"
"       DRV         - The handle number of the UEFI driver.\r\n"
"       VERSION     - The version number of the UEFI driver.\r\n"
"       TYPE        - The driver type:\r\n"
"                       [B] - Bus Driver\r\n"
"                       [D] - Device Driver\r\n"
"       CFG         - Driver supports the Driver Configuration Protocol.\r\n"
"       DIAG        - Driver supports the Driver Diagnostics Protocol.\r\n"
"       #D          - The number of devices that this driver is managing.\r\n"
"       #C          - The number of child devices that this driver has produced.\r\n"
"       DRIVER NAME - The name of the driver from the Component Name Protocol.\r\n"
"       IMAGE PATH  - The file path from which the driver was loaded.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the list:\r\n"
"    Shell> drivers\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_DISCONNECT   #language en-US ""
".TH disconnect 0 "disconnect a driver"\r\n"
".SH NAME\r\n"
"Disconnects one or more drivers from the specified devices. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DISCONNECT DeviceHandle [DriverHandle [ChildHandle]] \r\n"
"DISCONNECT [-r] [-nc] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"NOTES:\r\n"
"  -r           - Disconnects all drivers from all devices, then reconnect\r\n"
"                 consoles.\r\n"
"  -nc          - Do not reconnect the console devices.\r\n"
"  DeviceHandle - Specifies a device handle (a hexadecimal number). If not\r\n"
"                 specified, then disconnect DriverHandle.\r\n"
"  DriverHandle - Specifies a driver handle (a hexadecimal number).\r\n"
"  ChildHandle  - Specifies a child handle of a device (a hexadecimal number).\r\n"
"                 If not specified, then all child handles of DeviceHandle are\r\n"
"                 disconnected.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. If the 'DriverHandle' parameter is not specified, the default is to\r\n"
"     disconnect 'DeviceHandle'.\r\n"
"  2. If the 'ChildHandle' parameter is not specified, the default is to\r\n"
"     disconnect all child handles of the 'DeviceHandle'.\r\n"
"  3. If the '-r' option is specified, all consoles and drivers will be\r\n"
"     disconnected from all devices in the system, then consoles are\r\n"
"     reconnected. If the '-nc' option is also spcified, then console devices\r\n"
"     are not reconnected.\r\n"
"  4. This command does not support output redirection.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To disconnect all drivers from all devices, then reconnect console\r\n"
"    devices:\r\n"
"    Shell> disconnect -r\r\n"
" \r\n"
"  * To disconnect all drivers from all devices, including console devices:\r\n"
"    Shell> disconnect -r -nc\r\n"
" \r\n"
"  * To disconnect all drivers from device 0x28:\r\n"
"    fs0:\> disconnect 28\r\n"
" \r\n"
"  * To disconnect driver 0x17 from device 0x28:\r\n"
"    fs0:\> disconnect 28 17\r\n"
" \r\n"
"  * To disconnect driver 0x17 from controlling the child 0x32 of device 0x28:\r\n"
"    fs0:\> disconnect 28 17 32\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_DH           #language en-US ""
".TH dh 0 "displays list of handles"\r\n"
".SH NAME\r\n"
"Displays the device handles in the UEFI environment. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DH [-l <lang>] [handle | -p <prot_id>] [-d] [-v] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -p     - Dumps all handles of a protocol specified by the GUID.\r\n"
"  -d     - Dumps UEFI Driver Model-related information.\r\n"
"  -l     - Dumps information using the language codes (e.g. ISO 639-2).\r\n"
"  -sfo   - Displays information as described in Standard-Format Output.\r\n"
"  -v     - Dumps verbose information about a specific handle.\r\n"
"  handle - Specifies a handle to dump information about (a hexadecimal number).\r\n"
"           If not present, then all information will be dumped.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. When neither 'handle' nor 'prot_id' is specified, a list of all the\r\n"
"     device handles in the UEFI environment is displayed. \r\n"
"  2. The '-d' option displays UEFI Driver Model related information including\r\n"
"     parent handles, child handles, all drivers installed on the handle, etc.\r\n"
"  3. The '-v' option displays verbose information for the specified handle\r\n"
"     including all the protocols on the handle and their details.\r\n"
"  4. If the '-p' option is specified, all handles containing the specified\r\n"
"     protocol will be displayed. Otherwise, the 'handle' parameter has to be\r\n"
"     specified for display. In this case, the '-d' option will be enabled\r\n"
"     automatically if the '-v' option is not specified.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display all handles and display one screen at a time:\r\n"
"    Shell> dh -b\r\n"
" \r\n"
"  * To display the detailed information on handle 0x30:\r\n"
"    Shell> dh 30\r\n"
" \r\n"
"  * To display all handles with 'diskio' protocol:\r\n"
"    Shell> dh -p diskio\r\n"
" \r\n"
"  * To display all handles with 'Image' protocol and break when the screen is\r\n"
"    full:\r\n"
"    Shell> dh -p Image -b\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_DEVTREE      #language en-US ""
".TH devtree 0 "display device tree"\r\n"
".SH NAME\r\n"
"Displays the UEFI Driver Model compliant device tree.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DEVTREE [-b] [-d] [-l XXX] [DeviceHandle] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b           - Displays one screen at a time.\r\n"
"  -d           - Displays the device tree using device paths.\r\n"
"  -l           - Displays the device tree using the specified language.\r\n"
"  DeviceHandle - Displays the device tree below a certain handle.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command prints a tree of devices that are being managed by drivers\r\n"
"     that follow the UEFI Driver Model. By default, the devices are printed in\r\n"
"     device names that are retrieved from the Component Name Protocol.\r\n"
"  2. If the option -d is specified, the device paths will be printed instead.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the tree of all devices compliant with the UEFI Driver Model:\r\n"
"    Shell> devtree\r\n"
" \r\n"
"  * To display the tree of all devices below device 28 compliant with the UEFI\r\n"
"    Driver Model:\r\n"
"    Shell> devtree 28\r\n"
" \r\n"
"  * To display the tree of all devices compliant with the UEFI Driver Model\r\n"
"    one screen at a time:\r\n"
"    Shell> devtree -b\r\n"
" \r\n"

#string STR_GET_HELP_DEVICES      #language en-US ""
".TH devices 0 "display a list of devices"\r\n"
".SH NAME\r\n"
"Displays the list of devices managed by UEFI drivers. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DEVICES [-b] [-l XXX] [-sfo] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b     - Display one screen at a time\r\n"
"  -l XXX - Display devices using the specified ISO 639-2 language\r\n"
"  -sfo   - Displays information as described in Standard-Format Output.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. The command prints a list of devices that are being managed by drivers\r\n"
"     that follow the UEFI Driver Model.\r\n"
"  2. Display Format:\r\n"
"       CTRL         - The handle number of the UEFI device\r\n"
"       TYPE         - The device type:\r\n"
"                        [R] - Root Controller\r\n"
"                        [B] - Bus Controller\r\n" 
"                        [D] - Device Controller\r\n"
"       CFG          - A managing driver supports the Driver Configuration\r\n"
"                      Protocol.  Yes if 'Y' or 'X'; No if 'N' or '-'.\r\n"
"       DIAG         - A managing driver supports the Driver Diagnostics\r\n"
"                      Protocol.  Yes if 'Y' or 'X'; No if 'N' or '-'.\r\n"
"       #P           - The number of parent controllers for this device\r\n"
"       #D           - The number of drivers managing the device\r\n"
"       #C           - The number of child controllers produced by this device\r\n"
"       DEVICE NAME  - The name of the device from the Component Name Protocol\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display all devices compliant with the UEFI Driver Model:\r\n"
"    Shell> devices\r\n"
" \r\n"

#string STR_GET_HELP_CONNECT      #language en-US ""
".TH connect 0 "connect a driver"\r\n"
".SH NAME\r\n"
"Binds a driver to a specific device and starts the driver. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"CONNECT [[DeviceHandle] [DriverHandle] | [-c] | [-r]] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -c           - Connects console devices\r\n"
"  -r           - Connects recursively\r\n"
"  DeviceHandle - Specifies a device handle in hexadecimal format.\r\n"
"  DriverHandle - Specifies a driver handle in hexadecimal format.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. If no 'DeviceHandle' parameter is specified, all device handles in the\r\n"
"     current system will be the default.\r\n"
"  2. If no 'DriverHandle' parameter is specified, all matched drivers will be\r\n"
"     bound to the specified device.\r\n"
"  3. If 'DriverHandle' parameter is provided, the specified driver will have\r\n"
"     highest priority on connecting the device(s).\r\n"
"  4. If the '-c' option is specified, only console devices described in the\r\n"
"     UEFI Shell environment variables and related devices will be connected.\r\n"
"  5. If the '-r' option is specified, the command will recursively scan all\r\n"
"     handles and check to see if any loaded or embedded driver can match the\r\n"
"     specified device. If so, the driver will be bound to the device.\r\n"
"     Additionally, if more device handles are created during the binding, \r\n"
"     these handles will also be checked to see if a matching driver can bind\r\n"
"     to these devices as well. The process is repeated until no more drivers\r\n"
"     are able to connect to any devices. However, without the option, the\r\n"
"     newly created device handles will not be further bound to any\r\n"
"     drivers.\r\n"
"  6. If only a single handle is specified and the handle has an\r\n"
"     EFI_DRIVER_BINDING_PROTOCOL on it, then the handle is assumed to be a\r\n"
"     driver handle. Otherwise, it is assumed to be a device handle.\r\n"
"  7. If no parameters are specified, then the command will attempt to bind\r\n" 
"     all proper drivers to all devices without recursion. Each connection\r\n"
"     status will be displayed.\r\n"
"  8. Output redirection is not supported for 'connect -r' usage.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To connect all drivers to all devices recursively:\r\n"
"    Shell> connect -r\r\n"
" \r\n"
"  * To display all connections:\r\n"
"    Shell> connect\r\n"
" \r\n"
"  * To connect drivers with 0x17 as highest priority to all the devices they\r\n"
"    can manage:\r\n"
"    Shell> connect 17\r\n"
" \r\n"
"  * To connect all possible drivers to device 0x19:\r\n"
"    Shell> connect 19\r\n"
" \r\n"
"  * To connect drivers with 0x17 as highest priority to device 0x19 they can\r\n"
"    manage:\r\n"
"    Shell> connect 19 17\r\n"
" \r\n"
"  * To connect console devices described in the UEFI Shell environment\r\n"
"    variables:\r\n"
"    Shell> connect -c\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_OPENINFO     #language en-US ""
".TH openinfo 0 "display info about a handle."\r\n"
".SH NAME\r\n"
"Displays the protocols and agents associated with a handle. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"OPENINFO Handle [-b] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b     - Displays one screen at a time.\r\n"
"  Handle - Displays open protocol information for the specified handle.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command is used to display the open protocols on a given handle.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To show open protocols on handle 0x23:\r\n"
"    Shell> openinfo 23\r\n"
" \r\n"

#string STR_GET_HELP_DRVDIAG      #language en-US ""
".TH drvdiag 0 "diagnose a driver"\r\n"
".SH NAME\r\n"
"Invokes the Driver Diagnostics Protocol. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DRVDIAG [-c] [-l XXX] [-s|-e|-m] [DriverHandle [DeviceHandle [ChildHandle]]] \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -c           - Diagnoses all child devices.\r\n"
"  -l           - Diagnoses using the ISO 639-2 language specified by XXX.\r\n"
"  -s           - Runs diagnostics in standard mode.\r\n"
"  -e           - Runs diagnostics in extended mode.\r\n"
"  -m           - Runs diagnostics in manufacturing mode.\r\n"
"  DriverHandle - Specifies the handle of the driver to diagnose.\r\n"
"  DeviceHandle - Specifies the handle of a device that DriverHandle is managing.\r\n"
"  ChildHandle  - Specifies the handle of a device that is a child of DeviceHandle.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command invokes the Driver Diagnostics Protocol.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the list of devices that are available for diagnostics:\r\n"
"    Shell> drvdiag\r\n"
" \r\n"
"  * To display the list of devices and child devices that are available for\r\n"
"    diagnostics:\r\n"
"    Shell> drvdiag -c\r\n"
" \r\n"
"  * To run diagnostics in standard mode on all devices:\r\n"
"    Shell> drvdiag -s\r\n"
" \r\n"
"  * To run diagnostics in standard mode on all devices in English:\r\n"
"    Shell> drvdiag -s -l eng\r\n"
" \r\n"
"  * To run diagnostics in standard mode on all devices in Spanish:\r\n"
"    Shell> drvdiag -s -l spa\r\n"
" \r\n"
"  * To run diagnostics in standard mode on all devices and child devices:\r\n"
"    Shell> drvdiag -s -c\r\n"
" \r\n"
"  * To run diagnostics in extended mode on all devices:\r\n"
"    Shell> drvdiag -e\r\n"
" \r\n"
"  * To run diagnostics in manufacturing mode on all devices:\r\n"
"    Shell> drvdiag -m\r\n"
" \r\n"
"  * To run diagnostics in standard mode on all devices managed by driver 0x17:\r\n"
"    Shell> drvdiag -s 17\r\n"
" \r\n"
"  * To run diagnostics in standard mode on device 0x28 managed by  driver 0x17:\r\n"
"    Shell> drvdiag -s 17 28\r\n"
" \r\n"
"  * To run diagnostics in standard mode on all child devices of device 0x28\r\n"
"    managed by driver 0x17:\r\n"
"    Shell> drvdiag -s 17 28 -c\r\n"
" \r\n"
"  * To run diagnostics in standard mode on child device 0x30 of device 0x28\r\n"
"    managed by driver 0x17:\r\n"
"    Shell> drvdiag -s 17 28 30\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_RECONNECT    #language en-US ""
".TH reconnect 0 "reconnect drivers"\r\n"
".SH NAME\r\n"
"Reconnects drivers to the specific device. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"RECONNECT DeviceHandle [DriverHandle [ChildHandle]]\r\n"
"RECONNECT -r \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -r           - Reconnects drivers to all devices.\r\n"
"  DeviceHandle - Specifies a device handle (a hexadecimal number).\r\n"
"  DriverHandle - Specifies a driver handle (a hexadecimal number). If not specified, all\r\n"
"                 drivers on the specified device will be reconnected. \r\n"
"  ChildHandle  - Specifies the child handle of device (a hexadecimal number). If not\r\n"
"                 specified, then all child handles of the specified device are\r\n"
"                reconnected.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command reconnects drivers to the specific device. It will first\r\n"
"     disconnect the specified driver from the specified device and then connect\r\n"
"     the driver to the device recursively.\r\n"
"  2. If the -r option is used, then all drivers will be reconnected to all\r\n"
"     devices. Any drivers that are bound to any devices will be disconnected\r\n"
"     first and then connected recursively.\r\n"
"  3. See the connect and disconnect commands for more details. \r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To reconnect all drivers to all devices:\r\n"
"    Shell> reconnect -r\r\n"
" \r\n"
"  * To reconnect all drivers to device 0x28:\r\n"
"    fs0:\> reconnect 28\r\n"
" \r\n"
"  * To disconnect 0x17 from 0x28 then reconnect drivers with 0x17 as highest\r\n"
"    priority to device 0x28:\r\n"
"    fs0:\> reconnect 28 17\r\n"
" \r\n"
"  * To disconnect 0x17 from 0x28 destroying child 0x32 then reconnect drivers\r\n"
"    with 0x17 as highest priority to device 0x28\r\n"
"    fs0:\> reconnect 28 17 32\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_UNLOAD       #language en-US ""
".TH unload 0 "unload a driver"\r\n"
".SH NAME\r\n"
"Unloads a driver image that was already loaded. \r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"UNLOAD [-n] [-v|-verbose] Handle \r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -n           - Skips all prompts during unloading, so that it can be used\r\n"
"                 in a script file.\r\n"
"  -v, -verbose - Dumps verbose status information before the image is unloaded.\r\n"
"  Handle       - Specifies the handle of driver to unload, always taken as hexadecimal number.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. The '-n' option can be used to skip all prompts during unloading.\r\n"
"  2. If the '-v' option is specified, verbose image information will be\r\n"
"     displayed before the image is unloaded.\r\n"
"  3. Only drivers that support unloading can be successfully unloaded.\r\n"
"  4. Use the 'LOAD' command to load a driver.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To find the handle for the UEFI driver image to unload:\r\n"
"    Shell> dh -b\r\n"
" \r\n"
"  * To unload the UEFI driver image with handle 27:\r\n"
"    Shell> unload 27\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

















