Метод сканирования состоит в том, что для заданного UEFI-протокола, последовательно вы­пол­няются функции Locate Handle (получить список описателей, поддерживающих данный про­токол) и Handle Protocol (получить указатель на интерфейсный блок, обеспечивающий под­держку заданного протокола заданным устройством). Анализируемый протокол задается 128-битным GUID-идентификатором.

Метод Locate Handle

  • Утилита ScanGOP_LocateHandle детектирует поддержку GOP-протокола. Метод сканирования — с помощью функции Locate Handle (получить список описателей, поддерживающих данный протокол).
  • Утилита ScanUGA_LocateHandle детектирует поддержку UGADraw-протокола. Метод сканирования — с помощью функции Locate Handle.
  • Утилита ScanCSM_LocateHandle детектирует наличие CSM методом Locate Handle. CMS — это Compatibility Support Module, обслуживающий поддержку Legacy BIOS.

В качестве примера приведем результат выполнения программы ScanGOP_LocateHandle. Мы видим, что функция Locate Handle возвращает данные, из которых следует, что найдено одно устройство, поддерживающее протокол (Total handles supported = 1), но дамп содержит нули, Handle=0. Попытка использовать Handle=0 для операции Handle Protocol, дает ошибку, статус которой EFI_INVALID_PARAMETER.

Analysing GUID = 9042A9DE-23DC-4A38-96-FB-7A-DE-D0-80-51-6A
Total handles supported = 1
Handles buffer dump:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

Index=0
Aborted with error.
Operation = Handle protocol
Status = EFI_INVALID_PARAMETER


22.01.2018