Требования UEFI для поддержки флэш-памяти USB
Корпорация Майкрософт предоставляет несколько решений для флэш-памяти на основе USB для использования в инженерных и производственных средах. Чтобы устройство использовалось с этими инструментами, среда UEFI на устройстве должна соответствовать требованиям, указанным в этом разделе.
Эти требования, связанные с вспышкой, расширяют требования UEFI, перечисленные в требованиях UEFI, которые применяются ко всем выпускам Windows.
Обязательные протоколы UEFI
Протокол | Сведения о требованиях |
---|---|
Протокол функции USB | Для прошивки по USB 3.0 прошивка должна реализовывать версию протокола ФУНКЦИИ USB UEFI 0x00010002 или более позднюю, включая поддержку функции EFI_USBFN_IO_PROTOCOL.ConfigureEnableEndpointsEx. Дополнительные сведения см. в протоколе функции USB UEFI . |
BlockIO | Решения USB для прошивки, предоставляемые корпорацией Майкрософт, выбирают первый возвращаемый указатель на устройство хранения данных ввода-вывода, имеющее ненулевой размер, для прошивки. Устройство может быть несъемным или съемным накопителем. |
Десинхронное событие UEFI (необязательно)
Компоненты UEFI, которые пытаются считывать или записывать на диск во время мигания, должны реализовать поддержку события десинхронного события UEFI (EFI_EVENT_GROUP_FIRMWARE_DESYNC), как описано в следующей таблице.
Требование | Описание |
---|---|
Поддержка служб загрузки UEFI | Встроенное ПО UEFI должно поддерживать службы "События", "Таймер" и "Приоритет задач", как определено в разделе 6.1 спецификации UEFI 2.3.1. |
GUID группы событий | Корпорация Майкрософт определяет EFI_EVENT_GROUP_FIRMWARE_DESYNC со следующим ИДЕНТИФИКАТОРом GUID: {24FA5E72-1A82-49A2-970B-3230372662A5} |
События встроенного ПО UEFI | Определите все компоненты встроенного ПО UEFI, требующие обновления или синхронизации состояния в хранилище регулярно. В каждом из этих компонентов создайте событие, связанное с EFI_EVENT_GROUP_FIRMWARE_DESYNC и notifyFunction(), которое приводит к остановке обновления или синхронизации компонента обратно в хранилище. Событие NotifyFunction() должно выполнять любые операции очистки, необходимые для перехода компонента в десинхронизированный режим. После этой очистки компонент не должен обновлять или синхронизировать его хранилище с флэш-памятью до следующей перезагрузки устройства. Если событие NotifyFunction завершается ошибкой(), уведомлениеFunction() не должно возвращать EFI_SUCCESS. |
В следующем примере кода показано, как встроенное ПО может создать событие GUID группы событий:
gBS->CreateEventEx (
EVT_NOTIFY_SIGNAL,
TPL_CALLBACK,
FIRMWARE_NOTIFICATION_FUNCTION, // To be defined by SoC Vendor
&FIRMWARE_NOTIFICATION_FUNCTION_CONTEXT, // To be defined by SoC Vendor
&EFI_EVENT_GROUP_FIRMWARE_DESYNC,
&Event // Event returned by CreateEventEx
);