return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Notify the callback function when an event is triggered.\r
+\r
+ @param[in] Context The opaque parameter to the function.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+HttpIoNotifyDpc (\r
+ IN VOID *Context\r
+ )\r
+{\r
+ *((BOOLEAN *) Context) = TRUE;\r
+}\r
+\r
+/**\r
+ Request HttpIoNotifyDpc as a DPC at TPL_CALLBACK.\r
+\r
+ @param[in] Event The event signaled.\r
+ @param[in] Context The opaque parameter to the function.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+HttpIoNotify (\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
+ )\r
+{\r
+ //\r
+ // Request HttpIoNotifyDpc as a DPC at TPL_CALLBACK\r
+ //\r
+ QueueDpc (TPL_CALLBACK, HttpIoNotifyDpc, Context);\r
+}\r
+\r
/**\r
Create a HTTP_IO to access the HTTP service. It will create and configure\r
a HTTP child handle.\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
TPL_NOTIFY,\r
- HttpBootCommonNotify,\r
+ HttpIoNotify,\r
&HttpIo->IsTxDone,\r
&Event\r
);\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
TPL_NOTIFY,\r
- HttpBootCommonNotify,\r
+ HttpIoNotify,\r
&HttpIo->IsRxDone,\r
&Event\r
);\r
\r
//\r
// Determine the image type by the HTTP Content-Type header field first.\r
- // "application/efi" -> EFI Image\r
+ // "application/efi" -> EFI Image\r
+ // "application/vnd.efi-iso" -> CD/DVD Image\r
+ // "application/vnd.efi-img" -> Virtual Disk Image\r
//\r
Header = HttpFindHeader (HeaderCount, Headers, HTTP_HEADER_CONTENT_TYPE);\r
if (Header != NULL) {\r
if (AsciiStriCmp (Header->FieldValue, HTTP_CONTENT_TYPE_APP_EFI) == 0) {\r
*ImageType = ImageTypeEfi;\r
return EFI_SUCCESS;\r
+ } else if (AsciiStriCmp (Header->FieldValue, HTTP_CONTENT_TYPE_APP_ISO) == 0) {\r
+ *ImageType = ImageTypeVirtualCd;\r
+ return EFI_SUCCESS;\r
+ } else if (AsciiStriCmp (Header->FieldValue, HTTP_CONTENT_TYPE_APP_IMG) == 0) {\r
+ *ImageType = ImageTypeVirtualDisk;\r
+ return EFI_SUCCESS;\r
}\r
}\r
\r