/* Returns the handle of the ACPI object representing the specified ACPI path */
EFI_STATUS SdtFindPathFromNonRoot(IN EFI_ACPI_HANDLE HandleIn, IN UINT8 *AmlPath, OUT EFI_ACPI_HANDLE *HandleOut)
/* Returns the handle of the ACPI object representing the specified ACPI path */
EFI_STATUS SdtFindPathFromNonRoot(IN EFI_ACPI_HANDLE HandleIn, IN UINT8 *AmlPath, OUT EFI_ACPI_HANDLE *HandleOut)
{
  EFI_AML_HANDLE  *AmlHandle;
  VOID            *Buffer;
  EFI_STATUS      Status;
  Buffer    = NULL;
  AmlHandle = (EFI_AML_HANDLE *)HandleIn;
  Status = AmlFindPath (AmlHandle, AmlPath, &Buffer, FALSE);
  if (EFI_ERROR (Status)) {
    return EFI_INVALID_PARAMETER;
  }
  if (Buffer == NULL) {
    *HandleOut = NULL;
    return EFI_SUCCESS;
  }
  return SdtOpenEx (Buffer, (UINTN)AmlHandle->Buffer + AmlHandle->Size - (UINTN)Buffer, HandleOut);
}