Я пытаюсь использовать протокол HTTP в UEFI. Я видел пример на странице 1539 UEFI_Spe c, но когда я пытаюсь сделать HttpProtocol-> Reqest (), я получаю EFI_DEVICE_ERROR. Где может быть проблема? Подбирая код ниже.
//...
//UPD
ConfigData.HttpVersion = HttpVersion11;
ConfigData.TimeOutMillisec = 0; // Indicates default timeout period
ConfigData.LocalAddressIsIPv6 = FALSE;
ZeroMem(&IPv4Node, sizeof(IPv4Node));
IPv4Node.UseDefaultAddress = TRUE; // Obtain IP address from DHCP
ConfigData.AccessPoint.IPv4Node = &IPv4Node;
Status = HttpProtocol->Configure(HttpProtocol, &ConfigData);
RequestData.Method = HttpMethodGet;
RequestData.Url = L"https://dlcdnets.asus.com/pub/ASUS/nb/UX303UA/UX303UAAS303.zip"
RequestHeader.FieldName = "Host";
RequestHeader.FieldValue = "443";
RequestMessage.Data.Request = &RequestData;
RequestMessage.HeaderCount = 1;
RequestMessage.Headers = &RequestHeader;
RequestMessage.BodyLength = 0;
RequestMessage.Body = NULL;
RequestToken.Event = NULL;
Status = gBS->CreateEvent( EVT_NOTIFY_SIGNAL, TPL_CALLBACK, RequestCallback, NULL, &RequestToken.Event);
if (EFI_ERROR(Status))
{
return Status;
}
gST->ConOut->OutputString(gST->ConOut, DebCE);
RequestToken.Status = EFI_SUCCESS;
RequestToken.Message = &RequestMessage;
gRequestCallbackComplete = FALSE;
// Finally, make HTTP request.
Status = HttpProtocol->Request(HttpProtocol, &RequestToken);
if(EFI_ERROR(Status))
{
return Status;
}