TianoCore EDK2 master
Loading...
Searching...
No Matches
FatLiteApi.c
Go to the documentation of this file.
1
10#include "FatLitePeim.h"
11
12PEI_FAT_PRIVATE_DATA *mPrivateData = NULL;
13
29EFIAPI
31 IN EFI_PEI_SERVICES **PeiServices,
32 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
33 IN VOID *Ppi
34 );
35
48 IN OUT PEI_FAT_PRIVATE_DATA *PrivateData,
49 IN BOOLEAN BlockIo2
50 )
51{
52 EFI_STATUS Status;
53 EFI_PEI_PPI_DESCRIPTOR *TempPpiDescriptor;
54 UINTN BlockIoPpiInstance;
57 UINTN NumberBlockDevices;
58 UINTN Index;
61 PEI_FAT_VOLUME Volume;
62 EFI_PEI_SERVICES **PeiServices;
63
65 BlockIo2Ppi = NULL;
66 BlockIoPpi = NULL;
67 //
68 // Clean up caches
69 //
70 for (Index = 0; Index < PEI_FAT_CACHE_SIZE; Index++) {
71 PrivateData->CacheBuffer[Index].Valid = FALSE;
72 }
73
74 PrivateData->BlockDeviceCount = 0;
75
76 //
77 // Find out all Block Io Ppi instances within the system
78 // Assuming all device Block Io Peims are dispatched already
79 //
80 for (BlockIoPpiInstance = 0; BlockIoPpiInstance < PEI_FAT_MAX_BLOCK_IO_PPI; BlockIoPpiInstance++) {
81 if (BlockIo2) {
82 Status = PeiServicesLocatePpi (
83 &gEfiPeiVirtualBlockIo2PpiGuid,
84 BlockIoPpiInstance,
85 &TempPpiDescriptor,
86 (VOID **)&BlockIo2Ppi
87 );
88 } else {
89 Status = PeiServicesLocatePpi (
90 &gEfiPeiVirtualBlockIoPpiGuid,
91 BlockIoPpiInstance,
92 &TempPpiDescriptor,
93 (VOID **)&BlockIoPpi
94 );
95 }
96
97 if (EFI_ERROR (Status)) {
98 //
99 // Done with all Block Io Ppis
100 //
101 break;
102 }
103
104 if (BlockIo2) {
105 Status = BlockIo2Ppi->GetNumberOfBlockDevices (
106 PeiServices,
107 BlockIo2Ppi,
108 &NumberBlockDevices
109 );
110 } else {
111 Status = BlockIoPpi->GetNumberOfBlockDevices (
112 PeiServices,
113 BlockIoPpi,
114 &NumberBlockDevices
115 );
116 }
117
118 if (EFI_ERROR (Status)) {
119 continue;
120 }
121
122 for (Index = 1; Index <= NumberBlockDevices && PrivateData->BlockDeviceCount < PEI_FAT_MAX_BLOCK_DEVICE; Index++) {
123 if (BlockIo2) {
124 Status = BlockIo2Ppi->GetBlockDeviceMediaInfo (
125 PeiServices,
126 BlockIo2Ppi,
127 Index,
128 &Media2
129 );
130 if (EFI_ERROR (Status) || !Media2.MediaPresent) {
131 continue;
132 }
133
134 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo2 = BlockIo2Ppi;
135 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].InterfaceType = Media2.InterfaceType;
136 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = Media2.LastBlock;
137 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = Media2.BlockSize;
138 } else {
139 Status = BlockIoPpi->GetBlockDeviceMediaInfo (
140 PeiServices,
141 BlockIoPpi,
142 Index,
143 &Media
144 );
145 if (EFI_ERROR (Status) || !Media.MediaPresent) {
146 continue;
147 }
148
149 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo = BlockIoPpi;
150 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].DevType = Media.DeviceType;
151 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = Media.LastBlock;
152 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = (UINT32)Media.BlockSize;
153 }
154
155 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].IoAlign = 0;
156 //
157 // Not used here
158 //
159 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].Logical = FALSE;
160 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PartitionChecked = FALSE;
161
162 PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PhysicalDevNo = (UINT8)Index;
163 PrivateData->BlockDeviceCount++;
164 }
165 }
166
167 //
168 // Find out all logical devices
169 //
170 FatFindPartitions (PrivateData);
171
172 //
173 // Build up file system volume array
174 //
175 PrivateData->VolumeCount = 0;
176 for (Index = 0; Index < PrivateData->BlockDeviceCount; Index++) {
177 Volume.BlockDeviceNo = Index;
178 Status = FatGetBpbInfo (PrivateData, &Volume);
179 if (Status == EFI_SUCCESS) {
180 //
181 // Add the detected volume to the volume array
182 //
183 CopyMem (
184 (UINT8 *)&(PrivateData->Volume[PrivateData->VolumeCount]),
185 (UINT8 *)&Volume,
186 sizeof (PEI_FAT_VOLUME)
187 );
188 PrivateData->VolumeCount += 1;
189 if (PrivateData->VolumeCount >= PEI_FAT_MAX_VOLUME) {
190 break;
191 }
192 }
193 }
194
195 return EFI_SUCCESS;
196}
197
213EFIAPI
215 IN EFI_PEI_SERVICES **PeiServices,
216 IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,
217 IN VOID *Ppi
218 )
219{
220 if (CompareGuid (NotifyDescriptor->Guid, &gEfiPeiVirtualBlockIo2PpiGuid)) {
221 UpdateBlocksAndVolumes (mPrivateData, TRUE);
222 } else {
223 UpdateBlocksAndVolumes (mPrivateData, FALSE);
224 }
225
226 return EFI_SUCCESS;
227}
228
244EFIAPI
246 IN EFI_PEI_FILE_HANDLE FileHandle,
247 IN CONST EFI_PEI_SERVICES **PeiServices
248 )
249{
250 EFI_STATUS Status;
251 EFI_PHYSICAL_ADDRESS Address;
252 PEI_FAT_PRIVATE_DATA *PrivateData;
253
254 Status = PeiServicesRegisterForShadow (FileHandle);
255 if (!EFI_ERROR (Status)) {
256 return Status;
257 }
258
259 Status = PeiServicesAllocatePages (
261 (sizeof (PEI_FAT_PRIVATE_DATA) - 1) / PEI_FAT_MEMORY_PAGE_SIZE + 1,
262 &Address
263 );
264 if (EFI_ERROR (Status)) {
265 return EFI_OUT_OF_RESOURCES;
266 }
267
268 PrivateData = (PEI_FAT_PRIVATE_DATA *)(UINTN)Address;
269
270 //
271 // Initialize Private Data (to zero, as is required by subsequent operations)
272 //
273 ZeroMem ((UINT8 *)PrivateData, sizeof (PEI_FAT_PRIVATE_DATA));
274
275 PrivateData->Signature = PEI_FAT_PRIVATE_DATA_SIGNATURE;
276
277 //
278 // Installs Ppi
279 //
280 PrivateData->DeviceRecoveryPpi.GetNumberRecoveryCapsules = GetNumberRecoveryCapsules;
281 PrivateData->DeviceRecoveryPpi.GetRecoveryCapsuleInfo = GetRecoveryCapsuleInfo;
282 PrivateData->DeviceRecoveryPpi.LoadRecoveryCapsule = LoadRecoveryCapsule;
283
284 PrivateData->PpiDescriptor.Flags = (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);
285 PrivateData->PpiDescriptor.Guid = &gEfiPeiDeviceRecoveryModulePpiGuid;
286 PrivateData->PpiDescriptor.Ppi = &PrivateData->DeviceRecoveryPpi;
287
288 Status = PeiServicesInstallPpi (&PrivateData->PpiDescriptor);
289 if (EFI_ERROR (Status)) {
290 return EFI_OUT_OF_RESOURCES;
291 }
292
293 //
294 // Other initializations
295 //
296 PrivateData->BlockDeviceCount = 0;
297
298 UpdateBlocksAndVolumes (PrivateData, TRUE);
299 UpdateBlocksAndVolumes (PrivateData, FALSE);
300
301 //
302 // PrivateData is allocated now, set it to the module variable
303 //
304 mPrivateData = PrivateData;
305
306 //
307 // Installs Block Io Ppi notification function
308 //
309 PrivateData->NotifyDescriptor[0].Flags =
310 (
311 EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK
312 );
313 PrivateData->NotifyDescriptor[0].Guid = &gEfiPeiVirtualBlockIoPpiGuid;
314 PrivateData->NotifyDescriptor[0].Notify = BlockIoNotifyEntry;
315 PrivateData->NotifyDescriptor[1].Flags =
316 (
317 EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK |
318 EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST
319 );
320 PrivateData->NotifyDescriptor[1].Guid = &gEfiPeiVirtualBlockIo2PpiGuid;
321 PrivateData->NotifyDescriptor[1].Notify = BlockIoNotifyEntry;
322 return PeiServicesNotifyPpi (&PrivateData->NotifyDescriptor[0]);
323}
324
349EFIAPI
351 IN EFI_PEI_SERVICES **PeiServices,
353 OUT UINTN *NumberRecoveryCapsules
354 )
355{
356 EFI_STATUS Status;
357 PEI_FAT_PRIVATE_DATA *PrivateData;
358 UINTN Index;
359 UINTN RecoveryCapsuleCount;
360 PEI_FILE_HANDLE Handle;
361
362 PrivateData = PEI_FAT_PRIVATE_DATA_FROM_THIS (This);
363
364 //
365 // Search each volume in the root directory for the Recovery capsule
366 //
367 RecoveryCapsuleCount = 0;
368 for (Index = 0; Index < PrivateData->VolumeCount; Index++) {
369 Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr (PcdRecoveryFileName), &Handle);
370 if (EFI_ERROR (Status)) {
371 continue;
372 }
373
374 RecoveryCapsuleCount++;
375 }
376
377 *NumberRecoveryCapsules = RecoveryCapsuleCount;
378
379 if (*NumberRecoveryCapsules == 0) {
380 return EFI_NOT_FOUND;
381 }
382
383 return EFI_SUCCESS;
384}
385
412EFIAPI
414 IN EFI_PEI_SERVICES **PeiServices,
416 IN UINTN CapsuleInstance,
417 OUT UINTN *Size,
418 OUT EFI_GUID *CapsuleType
419 )
420{
421 EFI_STATUS Status;
422 PEI_FAT_PRIVATE_DATA *PrivateData;
423 UINTN Index;
424 UINTN BlockDeviceNo;
425 UINTN RecoveryCapsuleCount;
426 PEI_FILE_HANDLE Handle;
427 UINTN NumberRecoveryCapsules;
428
429 Handle = NULL;
430
431 Status = GetNumberRecoveryCapsules (PeiServices, This, &NumberRecoveryCapsules);
432
433 if (EFI_ERROR (Status)) {
434 return Status;
435 }
436
437 if ((CapsuleInstance == 0) || (CapsuleInstance > NumberRecoveryCapsules)) {
438 return EFI_NOT_FOUND;
439 }
440
441 PrivateData = PEI_FAT_PRIVATE_DATA_FROM_THIS (This);
442
443 //
444 // Search each volume in the root directory for the Recovery capsule
445 //
446 RecoveryCapsuleCount = 0;
447 for (Index = 0; Index < PrivateData->VolumeCount; Index++) {
448 Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr (PcdRecoveryFileName), &Handle);
449
450 if (EFI_ERROR (Status)) {
451 continue;
452 }
453
454 if (CapsuleInstance - 1 == RecoveryCapsuleCount) {
455 //
456 // Get file size
457 //
458 *Size = (UINTN)(((PEI_FAT_FILE *)Handle)->FileSize);
459
460 //
461 // Find corresponding physical block device
462 //
463 BlockDeviceNo = PrivateData->Volume[Index].BlockDeviceNo;
464 while (BlockDeviceNo < PrivateData->BlockDeviceCount && PrivateData->BlockDevice[BlockDeviceNo].Logical) {
465 BlockDeviceNo = PrivateData->BlockDevice[BlockDeviceNo].ParentDevNo;
466 }
467
468 //
469 // Fill in the Capsule Type GUID according to the block device type
470 //
471 if (BlockDeviceNo < PrivateData->BlockDeviceCount) {
472 if (PrivateData->BlockDevice[BlockDeviceNo].BlockIo2 != NULL) {
473 switch (PrivateData->BlockDevice[BlockDeviceNo].InterfaceType) {
474 case MSG_ATAPI_DP:
475 CopyGuid (CapsuleType, &gRecoveryOnFatIdeDiskGuid);
476 break;
477
478 case MSG_USB_DP:
479 CopyGuid (CapsuleType, &gRecoveryOnFatUsbDiskGuid);
480 break;
481
483 CopyGuid (CapsuleType, &gRecoveryOnFatNvmeDiskGuid);
484 break;
485
486 default:
487 break;
488 }
489 }
490
491 if (PrivateData->BlockDevice[BlockDeviceNo].BlockIo != NULL) {
492 switch (PrivateData->BlockDevice[BlockDeviceNo].DevType) {
493 case LegacyFloppy:
494 CopyGuid (CapsuleType, &gRecoveryOnFatFloppyDiskGuid);
495 break;
496
497 case IdeCDROM:
498 case IdeLS120:
499 CopyGuid (CapsuleType, &gRecoveryOnFatIdeDiskGuid);
500 break;
501
502 case UsbMassStorage:
503 CopyGuid (CapsuleType, &gRecoveryOnFatUsbDiskGuid);
504 break;
505
506 default:
507 break;
508 }
509 }
510 }
511
512 return EFI_SUCCESS;
513 }
514
515 RecoveryCapsuleCount++;
516 }
517
518 return EFI_NOT_FOUND;
519}
520
541EFIAPI
543 IN EFI_PEI_SERVICES **PeiServices,
545 IN UINTN CapsuleInstance,
546 OUT VOID *Buffer
547 )
548{
549 EFI_STATUS Status;
550 PEI_FAT_PRIVATE_DATA *PrivateData;
551 UINTN Index;
552 UINTN RecoveryCapsuleCount;
553 PEI_FILE_HANDLE Handle;
554 UINTN NumberRecoveryCapsules;
555
556 Handle = NULL;
557
558 Status = GetNumberRecoveryCapsules (PeiServices, This, &NumberRecoveryCapsules);
559
560 if (EFI_ERROR (Status)) {
561 return Status;
562 }
563
564 if ((CapsuleInstance == 0) || (CapsuleInstance > NumberRecoveryCapsules)) {
565 return EFI_NOT_FOUND;
566 }
567
568 PrivateData = PEI_FAT_PRIVATE_DATA_FROM_THIS (This);
569
570 //
571 // Search each volume in the root directory for the Recovery capsule
572 //
573 RecoveryCapsuleCount = 0;
574 for (Index = 0; Index < PrivateData->VolumeCount; Index++) {
575 Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr (PcdRecoveryFileName), &Handle);
576 if (EFI_ERROR (Status)) {
577 continue;
578 }
579
580 if (CapsuleInstance - 1 == RecoveryCapsuleCount) {
581 Status = FatReadFile (
582 PrivateData,
583 Handle,
584 (UINTN)(((PEI_FAT_FILE *)Handle)->FileSize),
585 Buffer
586 );
587 return Status;
588 }
589
590 RecoveryCapsuleCount++;
591 }
592
593 return EFI_NOT_FOUND;
594}
595
616 IN PEI_FAT_PRIVATE_DATA *PrivateData,
617 IN UINTN VolumeIndex,
618 IN CHAR16 *FileName,
619 OUT PEI_FILE_HANDLE *Handle
620 )
621{
622 EFI_STATUS Status;
623 PEI_FAT_FILE Parent;
624 PEI_FAT_FILE *File;
625
626 File = &PrivateData->File;
627
628 //
629 // VolumeIndex must be less than PEI_FAT_MAX_VOLUME because PrivateData->VolumeCount
630 // cannot be larger than PEI_FAT_MAX_VOLUME when detecting recovery volume.
631 //
632 ASSERT (VolumeIndex < PEI_FAT_MAX_VOLUME);
633
634 //
635 // Construct root directory file
636 //
637 ZeroMem (&Parent, sizeof (PEI_FAT_FILE));
638 Parent.IsFixedRootDir = (BOOLEAN)((PrivateData->Volume[VolumeIndex].FatType == Fat32) ? FALSE : TRUE);
639 Parent.Attributes = FAT_ATTR_DIRECTORY;
640 Parent.CurrentPos = 0;
641 Parent.CurrentCluster = Parent.IsFixedRootDir ? 0 : PrivateData->Volume[VolumeIndex].RootDirCluster;
642 Parent.StartingCluster = Parent.CurrentCluster;
643 Parent.Volume = &PrivateData->Volume[VolumeIndex];
644
645 Status = FatSetFilePos (PrivateData, &Parent, 0);
646 if (EFI_ERROR (Status)) {
647 return EFI_DEVICE_ERROR;
648 }
649
650 //
651 // Search for recovery capsule in root directory
652 //
653 Status = FatReadNextDirectoryEntry (PrivateData, &Parent, File);
654 while (Status == EFI_SUCCESS) {
655 //
656 // Compare whether the file name is recovery file name.
657 //
658 if (EngStriColl (PrivateData, FileName, File->FileName)) {
659 break;
660 }
661
662 Status = FatReadNextDirectoryEntry (PrivateData, &Parent, File);
663 }
664
665 if (EFI_ERROR (Status)) {
666 return EFI_NOT_FOUND;
667 }
668
669 //
670 // Get the recovery file, set its file position to 0.
671 //
672 if (File->StartingCluster != 0) {
673 Status = FatSetFilePos (PrivateData, File, 0);
674 }
675
676 *Handle = File;
677
678 return EFI_SUCCESS;
679}
UINT64 UINTN
CONST EFI_PEI_SERVICES **EFIAPI GetPeiServicesTablePointer(VOID)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
Definition: MemLibGuid.c:73
GUID *EFIAPI CopyGuid(OUT GUID *DestinationGuid, IN CONST GUID *SourceGuid)
Definition: MemLibGuid.c:39
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define MSG_NVME_NAMESPACE_DP
Definition: DevicePath.h:833
#define MSG_ATAPI_DP
Definition: DevicePath.h:326
#define MSG_USB_DP
Definition: DevicePath.h:418
EFI_STATUS EFIAPI PeiServicesLocatePpi(IN CONST EFI_GUID *Guid, IN UINTN Instance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT VOID **Ppi)
EFI_STATUS EFIAPI PeiServicesNotifyPpi(IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList)
EFI_STATUS EFIAPI PeiServicesAllocatePages(IN EFI_MEMORY_TYPE MemoryType, IN UINTN Pages, OUT EFI_PHYSICAL_ADDRESS *Memory)
EFI_STATUS EFIAPI PeiServicesInstallPpi(IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList)
EFI_STATUS EFIAPI PeiServicesRegisterForShadow(IN EFI_PEI_FILE_HANDLE FileHandle)
EFI_STATUS FatReadNextDirectoryEntry(IN PEI_FAT_PRIVATE_DATA *PrivateData, IN PEI_FAT_FILE *ParentDir, OUT PEI_FAT_FILE *SubFile)
EFI_STATUS FatGetBpbInfo(IN PEI_FAT_PRIVATE_DATA *PrivateData, IN OUT PEI_FAT_VOLUME *Volume)
Definition: FatLiteAccess.c:32
EFI_STATUS FatSetFilePos(IN PEI_FAT_PRIVATE_DATA *PrivateData, IN PEI_FAT_FILE *File, IN UINT32 Pos)
EFI_STATUS FatReadFile(IN PEI_FAT_PRIVATE_DATA *PrivateData, IN PEI_FAT_FILE *File, IN UINTN Size, OUT VOID *Buffer)
EFI_STATUS EFIAPI GetRecoveryCapsuleInfo(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This, IN UINTN CapsuleInstance, OUT UINTN *Size, OUT EFI_GUID *CapsuleType)
Definition: FatLiteApi.c:413
EFI_STATUS FindRecoveryFile(IN PEI_FAT_PRIVATE_DATA *PrivateData, IN UINTN VolumeIndex, IN CHAR16 *FileName, OUT PEI_FILE_HANDLE *Handle)
Definition: FatLiteApi.c:615
EFI_STATUS EFIAPI GetNumberRecoveryCapsules(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This, OUT UINTN *NumberRecoveryCapsules)
Definition: FatLiteApi.c:350
EFI_STATUS EFIAPI BlockIoNotifyEntry(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi)
Definition: FatLiteApi.c:214
EFI_STATUS UpdateBlocksAndVolumes(IN OUT PEI_FAT_PRIVATE_DATA *PrivateData, IN BOOLEAN BlockIo2)
Definition: FatLiteApi.c:47
EFI_STATUS EFIAPI LoadRecoveryCapsule(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This, IN UINTN CapsuleInstance, OUT VOID *Buffer)
Definition: FatLiteApi.c:542
EFI_STATUS EFIAPI FatPeimEntry(IN EFI_PEI_FILE_HANDLE FileHandle, IN CONST EFI_PEI_SERVICES **PeiServices)
Definition: FatLiteApi.c:245
BOOLEAN EngStriColl(IN PEI_FAT_PRIVATE_DATA *PrivateData, IN CHAR16 *Str1, IN CHAR16 *Str2)
Definition: FatLiteLib.c:342
VOID FatFindPartitions(IN PEI_FAT_PRIVATE_DATA *PrivateData)
Definition: Part.c:75
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define TRUE
Definition: Base.h:301
#define FALSE
Definition: Base.h:307
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
@ IdeLS120
The recovery device is an IDE LS-120.
Definition: BlockIo.h:49
@ IdeCDROM
The recovery device is an IDE CD-ROM.
Definition: BlockIo.h:48
@ UsbMassStorage
The recovery device is a USB Mass Storage device.
Definition: BlockIo.h:50
@ LegacyFloppy
The recovery device is a floppy.
Definition: BlockIo.h:47
#define PcdGetPtr(TokenName)
Definition: PcdLib.h:388
VOID * EFI_PEI_FILE_HANDLE
Definition: PiPeiCis.h:26
UINT64 EFI_PHYSICAL_ADDRESS
Definition: UefiBaseType.h:50
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
@ EfiBootServicesCode
EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE GetNumberRecoveryCapsules
Returns the number of DXE capsules residing on the device.
EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule
Loads a DXE capsule from some media into memory.
EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO GetRecoveryCapsuleInfo
Returns the size and type of the requested recovery capsule.
EFI_PEIM_NOTIFY_ENTRY_POINT Notify
Definition: PiPeiCis.h:122
EFI_PEI_GET_DEVICE_MEDIA_INFORMATION2 GetBlockDeviceMediaInfo
Definition: BlockIo2.h:207
EFI_PEI_GET_NUMBER_BLOCK_DEVICES2 GetNumberOfBlockDevices
Definition: BlockIo2.h:202
EFI_PEI_GET_NUMBER_BLOCK_DEVICES GetNumberOfBlockDevices
Definition: BlockIo.h:217
EFI_PEI_GET_DEVICE_MEDIA_INFORMATION GetBlockDeviceMediaInfo
Definition: BlockIo.h:222
EFI_PEI_LBA LastBlock
Definition: BlockIo2.h:64
EFI_PEI_BLOCK_DEVICE_TYPE DeviceType
Definition: BlockIo.h:71
BOOLEAN MediaPresent
Definition: BlockIo.h:76
Definition: Base.h:213