+/**\r
+ Probe the media status and return EFI_NO_MEDIA or EFI_MEDIA_CHANGED\r
+ for no media or media change case. Otherwise DefaultStatus is returned.\r
+\r
+ @param DiskIo Pointer to the DiskIo instance.\r
+ @param MediaId Id of the media, changes every time the media is replaced.\r
+ @param DefaultStatus The default status to return when it's not the no media\r
+ or media change case.\r
+\r
+ @retval EFI_NO_MEDIA There is no media.\r
+ @retval EFI_MEDIA_CHANGED The media was changed.\r
+ @retval others The default status to return.\r
+**/\r
+EFI_STATUS\r
+ProbeMediaStatus (\r
+ IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
+ IN UINT32 MediaId,\r
+ IN EFI_STATUS DefaultStatus\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+\r
+ //\r
+ // Read 1 byte from offset 0 but passing NULL as buffer pointer\r
+ //\r
+ Status = DiskIo->ReadDisk (DiskIo, MediaId, 0, 1, NULL);\r
+ if ((Status == EFI_NO_MEDIA) || (Status == EFI_MEDIA_CHANGED)) {\r
+ return Status;\r
+ }\r
+ return DefaultStatus;\r
+}\r