Changeset 99404 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/FatPkg/EnhancedFatDxe/ReadWrite.c
- Timestamp:
- Apr 14, 2023 3:17:44 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 156854
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-145445 /vendor/edk2/current 103735-103757,103769-103776,129194-156846
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/FatPkg/EnhancedFatDxe/ReadWrite.c
r80721 r99404 26 26 EFIAPI 27 27 FatGetPosition ( 28 IN EFI_FILE_PROTOCOL *FHand,29 OUT UINT64 *Position30 ) 31 { 32 FAT_IFILE *IFile;33 FAT_OFILE *OFile;28 IN EFI_FILE_PROTOCOL *FHand, 29 OUT UINT64 *Position 30 ) 31 { 32 FAT_IFILE *IFile; 33 FAT_OFILE *OFile; 34 34 35 35 IFile = IFILE_FROM_FHAND (FHand); … … 67 67 ) 68 68 { 69 FAT_IFILE *IFile;70 FAT_OFILE *OFile;69 FAT_IFILE *IFile; 70 FAT_OFILE *OFile; 71 71 72 72 IFile = IFILE_FROM_FHAND (FHand); … … 92 92 FatResetODirCursor (OFile); 93 93 } 94 94 95 // 95 96 // Set the position … … 98 99 Position = OFile->FileSize; 99 100 } 101 100 102 // 101 103 // Set the position … … 119 121 EFI_STATUS 120 122 FatIFileReadDir ( 121 IN FAT_IFILE 122 IN OUT UINTN 123 OUT VOID*Buffer123 IN FAT_IFILE *IFile, 124 IN OUT UINTN *BufferSize, 125 OUT VOID *Buffer 124 126 ) 125 127 { … … 130 132 UINT32 CurrentPos; 131 133 132 OFile 133 ODir 134 CurrentPos = ((UINT32)IFile->Position) / sizeof (FAT_DIRECTORY_ENTRY);134 OFile = IFile->OFile; 135 ODir = OFile->ODir; 136 CurrentPos = ((UINT32)IFile->Position) / sizeof (FAT_DIRECTORY_ENTRY); 135 137 136 138 // … … 143 145 FatResetODirCursor (OFile); 144 146 } 147 145 148 // 146 149 // We seek the next directory entry's position … … 148 151 do { 149 152 Status = FatGetNextDirEnt (OFile, &DirEnt); 150 if (EFI_ERROR (Status) || DirEnt == NULL) {153 if (EFI_ERROR (Status) || (DirEnt == NULL)) { 151 154 // 152 155 // Something error occurred or reach the end of directory, … … 157 160 } 158 161 } while (ODir->CurrentPos <= CurrentPos); 162 159 163 Status = FatGetDirEntInfo (OFile->Volume, DirEnt, BufferSize, Buffer); 160 164 … … 194 198 EFI_STATUS 195 199 FatIFileAccess ( 196 IN EFI_FILE_PROTOCOL 197 IN IO_MODE 198 IN OUT UINTN 199 IN OUT VOID 200 IN EFI_FILE_IO_TOKEN 200 IN EFI_FILE_PROTOCOL *FHand, 201 IN IO_MODE IoMode, 202 IN OUT UINTN *BufferSize, 203 IN OUT VOID *Buffer, 204 IN EFI_FILE_IO_TOKEN *Token 201 205 ) 202 206 { … … 254 258 return EFI_UNSUPPORTED; 255 259 } 260 256 261 Task = FatCreateTask (IFile, Token); 257 262 if (Task == NULL) { … … 270 275 ASSERT (IoMode == ReadData); 271 276 Status = FatIFileReadDir (IFile, BufferSize, Buffer); 272 OFile = NULL;277 OFile = NULL; 273 278 } else { 274 279 // … … 284 289 // Adjust the actual size read 285 290 // 286 *BufferSize -= (UINTN) 291 *BufferSize -= (UINTN)EndPosition - OFile->FileSize; 287 292 } else { 288 293 // … … 305 310 } 306 311 307 Status = FatAccessOFile (OFile, IoMode, (UINTN)IFile->Position, BufferSize, Buffer, Task);312 Status = FatAccessOFile (OFile, IoMode, (UINTN)IFile->Position, BufferSize, Buffer, Task); 308 313 IFile->Position += *BufferSize; 309 314 } … … 356 361 IN EFI_FILE_PROTOCOL *FHand, 357 362 IN OUT UINTN *BufferSize, 358 OUT VOID*Buffer363 OUT VOID *Buffer 359 364 ) 360 365 { … … 454 459 EFI_STATUS 455 460 FatAccessOFile ( 456 IN FAT_OFILE 457 IN IO_MODE 458 IN UINTN 459 IN OUT UINTN 460 IN OUT UINT8 461 IN FAT_TASK 461 IN FAT_OFILE *OFile, 462 IN IO_MODE IoMode, 463 IN UINTN Position, 464 IN OUT UINTN *DataBufferSize, 465 IN OUT UINT8 *UserBuffer, 466 IN FAT_TASK *Task 462 467 ) 463 468 { … … 467 472 UINTN BufferSize; 468 473 469 BufferSize 470 Volume 474 BufferSize = *DataBufferSize; 475 Volume = OFile->Volume; 471 476 ASSERT_VOLUME_LOCKED (Volume); 472 477 … … 480 485 break; 481 486 } 487 482 488 // 483 489 // Clip length to block run … … 492 498 break; 493 499 } 500 494 501 // 495 502 // Data was successfully accessed … … 499 506 BufferSize -= Len; 500 507 if (IoMode == WriteData) { 501 OFile->Dirty = TRUE; 502 OFile->Archive = TRUE; 503 } 508 OFile->Dirty = TRUE; 509 OFile->Archive = TRUE; 510 } 511 504 512 // 505 513 // Make sure no outbound occurred … … 507 515 ASSERT (Position <= OFile->FileSize); 508 516 } 517 509 518 // 510 519 // Update the number of bytes accessed … … 527 536 EFI_STATUS 528 537 FatExpandOFile ( 529 IN FAT_OFILE 530 IN UINT64 538 IN FAT_OFILE *OFile, 539 IN UINT64 ExpandedSize 531 540 ) 532 541 { … … 534 543 UINTN WritePos; 535 544 536 WritePos 537 Status 545 WritePos = OFile->FileSize; 546 Status = FatGrowEof (OFile, ExpandedSize); 538 547 if (!EFI_ERROR (Status)) { 539 548 Status = FatWriteZeroPool (OFile, WritePos); … … 567 576 UINTN WriteSize; 568 577 569 AppendedSize 570 BufferSize 578 AppendedSize = OFile->FileSize - WritePos; 579 BufferSize = AppendedSize; 571 580 if (AppendedSize > FAT_MAX_ALLOCATE_SIZE) { 572 581 // … … 585 594 586 595 do { 587 WriteSize = AppendedSize > BufferSize ? BufferSize : (UINTN) 596 WriteSize = AppendedSize > BufferSize ? BufferSize : (UINTN)AppendedSize; 588 597 AppendedSize -= WriteSize; 589 Status = FatAccessOFile (OFile, WriteData, WritePos, &WriteSize, ZeroBuffer, NULL);598 Status = FatAccessOFile (OFile, WriteData, WritePos, &WriteSize, ZeroBuffer, NULL); 590 599 if (EFI_ERROR (Status)) { 591 600 break; … … 612 621 EFI_STATUS 613 622 FatTruncateOFile ( 614 IN FAT_OFILE 615 IN UINTN 623 IN FAT_OFILE *OFile, 624 IN UINTN TruncatedSize 616 625 ) 617 626 {
Note:
See TracChangeset
for help on using the changeset viewer.