Thanks for all the replies.
Actually the problem was not the permissions, since I had tried the
read+write combination already.
The problem was the variable type of the "root" variable.
Here is the original declaration that I was using that caused the problem:
EFI_FILE_HANDLE root;
Here is the declaration that worked:
EFI_FILE_PROTOCOL root;
Thanks.
Kashif...
On Fri, Oct 26, 2012 at 4:13 AM, duck wilson <duck.54...@gmail.com> wrote:
> Opening the file in create mode is the problem. Change this:
>
>
> status = root->Open (
> root,
> file,
> L"\\EFI\\BOOT\\FILE.TXT",
> EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE |
> EFI_FILE_MODE_CREATE,
> 0
> );
>
> to this:
>
>
> status = root->Open (
> root,
> file,
> L"\\EFI\\BOOT\\FILE.TXT",
> EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE,
> 0
> );
>
>
>
> On Wed, Oct 24, 2012 at 10:59 AM, Kashif Memon <kas...@nvelo.com> wrote:
>
>> Hello,
>>
>> I am trying to delete a file on the system partition from an UEFI
>> app using the Delete function within EFI_FILE_PROTOCOL, but it is returning
>> with a EFI_WARN_DELETE_FAILURE.
>>
>> I can read the file without any problem, but delete doesn't seem to work.
>>
>> Any ideas?
>>
>> Here is the code:
>> // get the handle for EFI Simple File System protocol
>> status = gBS->LocateDevicePath (
>> &gEfiSimpleFileSystemProtocolGuid,
>> &ourDevicePath,
>> &handle
>> );
>> if (status != EFI_SUCCESS) {
>> return (status);
>> }
>>
>> // get the pointer for the volume
>> status = gBS->HandleProtocol (
>> handle,
>> &gEfiSimpleFileSystemProtocolGuid,
>> &volume
>> );
>> if (status != EFI_SUCCESS) {
>> return (status);
>> }
>>
>> // Open the root directory of the volume
>> root = NULL;
>> status = volume->OpenVolume (
>> volume,
>> &root
>> );
>> if ((status != EFI_SUCCESS) || (root == NULL)) {
>> return (status);
>> }
>>
>> // Open file.txt file
>> status = root->Open (
>> root,
>> file,
>> L"\\EFI\\BOOT\\FILE.TXT",
>> EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE |
>> EFI_FILE_MODE_CREATE,
>> 0
>> );
>> if (status != EFI_SUCCESS) {
>> return (status);
>> }
>>
>> // Delete the file
>> status = (*file)->Delete (*file);
>> if (status != EFI_SUCCESS) {
>> Print (L"Deletion failed, status = %d.\n",
>> status);
>> return (status);
>> }
>>
>> Thanks.
>> Kashif...
>>
>>
>> ------------------------------------------------------------------------------
>> Everyone hates slow websites. So do we.
>> Make your web apps faster with AppDynamics
>> Download AppDynamics Lite for free today:
>> http://p.sf.net/sfu/appdyn_sfd2d_oct
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>>
>>
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_sfd2d_oct
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel