git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2450
6f19259b-4bc3-4df7-8a09-
765794883524
-Copyright (c) 2006, Intel Corporation\r
+Copyright (c) 2006 - 2007, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
BOOL Flag;\r
EFI_STATUS Status;\r
DWORD BytesRead;\r
BOOL Flag;\r
EFI_STATUS Status;\r
DWORD BytesRead;\r
+ EFI_TPL OldTpl;\r
+\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = WinNtBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "WinNtReadBlocks");\r
if (EFI_ERROR (Status)) {\r
\r
Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = WinNtBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "WinNtReadBlocks");\r
if (EFI_ERROR (Status)) {\r
}\r
\r
Flag = Private->WinNtThunk->ReadFile (Private->NtHandle, Buffer, (DWORD) BufferSize, (LPDWORD) &BytesRead, NULL);\r
if (!Flag || (BytesRead != BufferSize)) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: ReadFile failed. (%d)\n", Private->WinNtThunk->GetLastError ()));\r
}\r
\r
Flag = Private->WinNtThunk->ReadFile (Private->NtHandle, Buffer, (DWORD) BufferSize, (LPDWORD) &BytesRead, NULL);\r
if (!Flag || (BytesRead != BufferSize)) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: ReadFile failed. (%d)\n", Private->WinNtThunk->GetLastError ()));\r
- return WinNtBlockIoError (Private);\r
+ Status = WinNtBlockIoError (Private);\r
+ goto Done;\r
}\r
\r
//\r
// If we wrote then media is present.\r
//\r
This->Media->MediaPresent = TRUE;\r
}\r
\r
//\r
// If we wrote then media is present.\r
//\r
This->Media->MediaPresent = TRUE;\r
+ Status = EFI_SUCCESS;\r
+\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
UINTN BytesWritten;\r
BOOL Flag;\r
EFI_STATUS Status;\r
UINTN BytesWritten;\r
BOOL Flag;\r
EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = WinNtBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "WinNtWriteBlocks");\r
if (EFI_ERROR (Status)) {\r
\r
Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = WinNtBlockIoReadWriteCommon (Private, MediaId, Lba, BufferSize, Buffer, "WinNtWriteBlocks");\r
if (EFI_ERROR (Status)) {\r
}\r
\r
Flag = Private->WinNtThunk->WriteFile (Private->NtHandle, Buffer, (DWORD) BufferSize, (LPDWORD) &BytesWritten, NULL);\r
if (!Flag || (BytesWritten != BufferSize)) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: WriteFile failed. (%d)\n", Private->WinNtThunk->GetLastError ()));\r
}\r
\r
Flag = Private->WinNtThunk->WriteFile (Private->NtHandle, Buffer, (DWORD) BufferSize, (LPDWORD) &BytesWritten, NULL);\r
if (!Flag || (BytesWritten != BufferSize)) {\r
DEBUG ((EFI_D_INIT, "ReadBlocks: WriteFile failed. (%d)\n", Private->WinNtThunk->GetLastError ()));\r
- return WinNtBlockIoError (Private);\r
+ Status = WinNtBlockIoError (Private);\r
+ goto Done;\r
//\r
This->Media->MediaPresent = TRUE;\r
This->Media->ReadOnly = FALSE;\r
//\r
This->Media->MediaPresent = TRUE;\r
This->Media->ReadOnly = FALSE;\r
+ Status = EFI_SUCCESS;\r
+\r
+Done:\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ return Status;\r
+\r
--*/\r
{\r
WIN_NT_BLOCK_IO_PRIVATE *Private;\r
--*/\r
{\r
WIN_NT_BLOCK_IO_PRIVATE *Private;\r
+ EFI_TPL OldTpl;\r
+\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
\r
Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
\r
Private = WIN_NT_BLOCK_IO_PRIVATE_DATA_FROM_THIS (This);\r
\r
Private->NtHandle = INVALID_HANDLE_VALUE;\r
}\r
\r
Private->NtHandle = INVALID_HANDLE_VALUE;\r
}\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
return EFI_SUCCESS;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
-Copyright (c) 2006, Intel Corporation \r
+Copyright (c) 2006 - 2007, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
EFI_STATUS Status;\r
WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *Private;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
EFI_STATUS Status;\r
WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *Private;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
\r
if (This == NULL || Root == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || Root == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+\r
Private = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (This);\r
\r
PrivateFile = NULL;\r
Private = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (This);\r
\r
PrivateFile = NULL;\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
NewPrivateFile = NULL;\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
NewPrivateFile = NULL;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle != INVALID_HANDLE_VALUE) {\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle != INVALID_HANDLE_VALUE) {\r
}\r
\r
gBS->FreePool (PrivateFile);\r
}\r
\r
gBS->FreePool (PrivateFile);\r
+\r
+ gBS->RestoreTPL (OldTpl);\r
+ \r
return EFI_SUCCESS;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
{\r
EFI_STATUS Status;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
{\r
EFI_STATUS Status;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = EFI_WARN_DELETE_FAILURE;\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
Status = EFI_WARN_DELETE_FAILURE;\r
gBS->FreePool (PrivateFile->FileName);\r
gBS->FreePool (PrivateFile);\r
\r
gBS->FreePool (PrivateFile->FileName);\r
gBS->FreePool (PrivateFile);\r
\r
+ gBS->RestoreTPL (OldTpl);\r
+\r
UINT64 Pos;\r
UINT64 FileSize;\r
UINTN FileInfoSize;\r
UINT64 Pos;\r
UINT64 FileSize;\r
UINTN FileInfoSize;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle == INVALID_HANDLE_VALUE) {\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle == INVALID_HANDLE_VALUE) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
if (!PrivateFile->IsDirectoryPath) {\r
\r
if (This->GetPosition (This, &Pos) != EFI_SUCCESS) {\r
}\r
\r
if (!PrivateFile->IsDirectoryPath) {\r
\r
if (This->GetPosition (This, &Pos) != EFI_SUCCESS) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
FileInfoSize = SIZE_OF_EFI_FILE_SYSTEM_INFO;\r
}\r
\r
FileInfoSize = SIZE_OF_EFI_FILE_SYSTEM_INFO;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
}\r
\r
if (EFI_ERROR (Status)) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
FileSize = FileInfo->FileSize;\r
}\r
\r
FileSize = FileInfo->FileSize;\r
if (Pos >= FileSize) {\r
*BufferSize = 0;\r
if (Pos == FileSize) {\r
if (Pos >= FileSize) {\r
*BufferSize = 0;\r
if (Pos == FileSize) {\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
- return PrivateFile->WinNtThunk->ReadFile (\r
+ Status = PrivateFile->WinNtThunk->ReadFile (\r
PrivateFile->LHandle,\r
Buffer,\r
*BufferSize,\r
BufferSize,\r
NULL\r
) ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
PrivateFile->LHandle,\r
Buffer,\r
*BufferSize,\r
BufferSize,\r
NULL\r
) ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
//\r
if (!PrivateFile->IsValidFindBuf) {\r
*BufferSize = 0;\r
//\r
if (!PrivateFile->IsValidFindBuf) {\r
*BufferSize = 0;\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
\r
Size = SIZE_OF_EFI_FILE_INFO;\r
}\r
\r
Size = SIZE_OF_EFI_FILE_INFO;\r
\r
*BufferSize = ResultSize;\r
\r
\r
*BufferSize = ResultSize;\r
\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
// TODO: EFI_INVALID_PARAMETER - add return value to function comment\r
{\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || BufferSize == NULL || Buffer == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle == INVALID_HANDLE_VALUE) {\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle == INVALID_HANDLE_VALUE) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->IsDirectoryPath) {\r
}\r
\r
if (PrivateFile->IsDirectoryPath) {\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->IsOpenedByRead) {\r
}\r
\r
if (PrivateFile->IsOpenedByRead) {\r
- return EFI_ACCESS_DENIED;\r
+ Status = EFI_ACCESS_DENIED;\r
+ goto Done;\r
- return PrivateFile->WinNtThunk->WriteFile (\r
+ Status = PrivateFile->WinNtThunk->WriteFile (\r
PrivateFile->LHandle,\r
Buffer,\r
*BufferSize,\r
PrivateFile->LHandle,\r
Buffer,\r
*BufferSize,\r
NULL\r
) ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
\r
NULL\r
) ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
+\r
//\r
// bugbug: need to access windows error reporting\r
//\r
//\r
// bugbug: need to access windows error reporting\r
//\r
UINT32 PosLow;\r
UINT32 PosHigh;\r
CHAR16 *FileName;\r
UINT32 PosLow;\r
UINT32 PosHigh;\r
CHAR16 *FileName;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->IsDirectoryPath) {\r
if (Position != 0) {\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->IsDirectoryPath) {\r
if (Position != 0) {\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Done;\r
}\r
\r
Status = gBS->AllocatePool (\r
}\r
\r
Status = gBS->AllocatePool (\r
);\r
\r
if (EFI_ERROR (Status)) {\r
);\r
\r
if (EFI_ERROR (Status)) {\r
}\r
\r
StrCpy (FileName, PrivateFile->FileName);\r
}\r
\r
StrCpy (FileName, PrivateFile->FileName);\r
Status = (PosLow == 0xFFFFFFFF) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
}\r
\r
Status = (PosLow == 0xFFFFFFFF) ? EFI_DEVICE_ERROR : EFI_SUCCESS;\r
}\r
\r
+Done:\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
INT32 PositionHigh;\r
UINT64 PosHigh64;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
INT32 PositionHigh;\r
UINT64 PosHigh64;\r
\r
if (This == NULL || Position == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || Position == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
PositionHigh = 0;\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
PositionHigh = 0;\r
\r
if (PrivateFile->IsDirectoryPath) {\r
\r
\r
if (PrivateFile->IsDirectoryPath) {\r
\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Done;\r
+ gBS->RestoreTPL (OldTpl);\r
BOOL NtStatus;\r
UINTN Index;\r
WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
BOOL NtStatus;\r
UINTN Index;\r
WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE *PrivateRoot;\r
\r
if (This == NULL || InformationType == NULL || BufferSize == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL || InformationType == NULL || BufferSize == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
PrivateRoot = WIN_NT_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
\r
if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (*BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (*BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
- return EFI_BUFFER_TOO_SMALL;\r
+ Status = EFI_BUFFER_TOO_SMALL;\r
+ goto Done;\r
}\r
\r
FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
}\r
\r
FileSystemInfoBuffer = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
&DriveName\r
);\r
if (EFI_ERROR (Status)) {\r
&DriveName\r
);\r
if (EFI_ERROR (Status)) {\r
}\r
\r
StrCpy (DriveName, PrivateFile->FilePath);\r
}\r
\r
StrCpy (DriveName, PrivateFile->FilePath);\r
NULL\r
);\r
if (!NtStatus) {\r
NULL\r
);\r
if (!NtStatus) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (*BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
*BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
- return EFI_BUFFER_TOO_SMALL;\r
+ Status = EFI_BUFFER_TOO_SMALL;\r
+ goto Done;\r
}\r
\r
StrCpy ((CHAR16 *) Buffer, PrivateRoot->VolumeLabel);\r
}\r
\r
StrCpy ((CHAR16 *) Buffer, PrivateRoot->VolumeLabel);\r
Status = EFI_SUCCESS;\r
}\r
\r
Status = EFI_SUCCESS;\r
}\r
\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
FILETIME NewLastWriteFileTime;\r
WIN32_FIND_DATA FindBuf;\r
EFI_FILE_SYSTEM_INFO *NewFileSystemInfo;\r
FILETIME NewLastWriteFileTime;\r
WIN32_FIND_DATA FindBuf;\r
EFI_FILE_SYSTEM_INFO *NewFileSystemInfo;\r
\r
//\r
// Check for invalid parameters.\r
\r
//\r
// Check for invalid parameters.\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+\r
//\r
// Initialise locals.\r
//\r
//\r
// Initialise locals.\r
//\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) {\r
if (BufferSize < SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel)) {\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ goto Done;\r
}\r
\r
NewFileSystemInfo = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
}\r
\r
NewFileSystemInfo = (EFI_FILE_SYSTEM_INFO *) Buffer;\r
\r
StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
\r
\r
StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
//\r
if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
if (BufferSize < StrSize (PrivateRoot->VolumeLabel)) {\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ goto Done;\r
}\r
\r
StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *) Buffer);\r
\r
}\r
\r
StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *) Buffer);\r
\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
\r
if (!CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
}\r
\r
if (!CompareGuid (InformationType, &gEfiFileInfoGuid)) {\r
- return EFI_UNSUPPORTED;\r
+ Status = EFI_UNSUPPORTED;\r
+ goto Done;\r
}\r
\r
if (BufferSize < SIZE_OF_EFI_FILE_INFO) {\r
}\r
\r
if (BufferSize < SIZE_OF_EFI_FILE_INFO) {\r
- return EFI_BAD_BUFFER_SIZE;\r
+ Status = EFI_BAD_BUFFER_SIZE;\r
+ goto Done;\r
(NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) ||\r
(sizeof (UINTN) == 4 && NewFileInfo->Size > 0xFFFFFFFF)\r
) {\r
(NewFileInfo->Attribute &~(EFI_FILE_VALID_ATTR)) ||\r
(sizeof (UINTN) == 4 && NewFileInfo->Size > 0xFFFFFFFF)\r
) {\r
- return EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
+ goto Done;\r
gBS->FreePool (NewFileName);\r
}\r
\r
gBS->FreePool (NewFileName);\r
}\r
\r
+ gBS->RestoreTPL (OldTpl);\r
{\r
BY_HANDLE_FILE_INFORMATION FileInfo;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
{\r
BY_HANDLE_FILE_INFORMATION FileInfo;\r
WIN_NT_EFI_FILE_PRIVATE *PrivateFile;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ OldTpl = gBS->RaiseTPL (EFI_TPL_CALLBACK);\r
+ \r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle == INVALID_HANDLE_VALUE) {\r
PrivateFile = WIN_NT_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
\r
if (PrivateFile->LHandle == INVALID_HANDLE_VALUE) {\r
- return EFI_DEVICE_ERROR;\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->IsDirectoryPath) {\r
}\r
\r
if (PrivateFile->IsDirectoryPath) {\r
+ Status = EFI_SUCCESS;\r
+ goto Done;\r
}\r
\r
if (PrivateFile->IsOpenedByRead) {\r
}\r
\r
if (PrivateFile->IsOpenedByRead) {\r
- return EFI_ACCESS_DENIED;\r
+ Status = EFI_ACCESS_DENIED;\r
+ goto Done;\r
}\r
\r
PrivateFile->WinNtThunk->GetFileInformationByHandle (PrivateFile->LHandle, &FileInfo);\r
\r
if (FileInfo.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {\r
}\r
\r
PrivateFile->WinNtThunk->GetFileInformationByHandle (PrivateFile->LHandle, &FileInfo);\r
\r
if (FileInfo.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {\r
- return EFI_ACCESS_DENIED;\r
+ Status = EFI_ACCESS_DENIED;\r
+ goto Done;\r
- return PrivateFile->WinNtThunk->FlushFileBuffers (PrivateFile->LHandle) ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
+ Status = PrivateFile->WinNtThunk->FlushFileBuffers (PrivateFile->LHandle) ? EFI_SUCCESS : EFI_DEVICE_ERROR;\r
+Done:\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
//\r
// bugbug: - Use Windows error reporting.\r
//\r
}\r
\r
//\r
// bugbug: - Use Windows error reporting.\r
//\r
}\r
\r