/*++ Copyright (c) 1998 Intel Corporation Module Name: handle.c Abstract: Shell environment handle information management Revision History --*/ #include "shelle.h" UINTN SEnvNoHandles; EFI_HANDLE *SEnvHandles; VOID INTERNAL SEnvInitHandleGlobals ( VOID ) { SEnvNoHandles = 0; SEnvHandles = NULL; } VOID INTERNAL SEnvLoadHandleTable ( VOID ) { /* * For ease of use the shell maps handle #'s to short numbers. * * This is only done on request for various internal commands and * the references are immediately freed when the internal command * completes. */ /* Free any old info */ SEnvFreeHandleTable(); /* Load new info */ SEnvHandles = NULL; LibLocateHandle (AllHandles, NULL, NULL, &SEnvNoHandles, &SEnvHandles); } VOID INTERNAL SEnvFreeHandleTable ( VOID ) { if (SEnvNoHandles) { SEnvFreeHandleProtocolInfo(); FreePool (SEnvHandles); SEnvHandles = NULL; SEnvNoHandles = 0; } } UINTN SEnvHandleNoFromStr( IN CHAR16 *Str ) { UINTN HandleNo; HandleNo = xtoi(Str); HandleNo = HandleNo > SEnvNoHandles ? 0 : HandleNo; return HandleNo; } EFI_HANDLE SEnvHandleFromStr( IN CHAR16 *Str ) { UINTN HandleNo; EFI_HANDLE Handle; HandleNo = xtoi(Str) - 1; Handle = HandleNo > SEnvNoHandles ? NULL : SEnvHandles[HandleNo]; return Handle; }