3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/kernel32/file/delete.c
6 * PURPOSE: Deleting files
7 * PROGRAMMER: Ariadne (ariadne@xs4all.nl)
12 /* INCLUDES ****************************************************************/
17 #include "../include/debug.h"
20 /* FUNCTIONS ****************************************************************/
33 if (!(FileNameW
= FilenameA2W(lpFileName
, FALSE
)))
36 return DeleteFileW (FileNameW
);
49 FILE_DISPOSITION_INFORMATION FileDispInfo
;
50 OBJECT_ATTRIBUTES ObjectAttributes
;
51 IO_STATUS_BLOCK IoStatusBlock
;
52 UNICODE_STRING NtPathU
;
56 DPRINT("DeleteFileW (lpFileName %S)\n",lpFileName
);
58 if (!RtlDosPathNameToNtPathName_U (lpFileName
,
63 SetLastError(ERROR_PATH_NOT_FOUND
);
67 DPRINT("NtPathU \'%wZ\'\n", &NtPathU
);
69 InitializeObjectAttributes(&ObjectAttributes
,
75 Status
= NtCreateFile (&FileHandle
,
80 FILE_ATTRIBUTE_NORMAL
,
81 FILE_SHARE_READ
| FILE_SHARE_WRITE
| FILE_SHARE_DELETE
,
83 FILE_NON_DIRECTORY_FILE
,
87 RtlFreeHeap(RtlGetProcessHeap(),
91 if (!NT_SUCCESS(Status
))
94 SetLastErrorByStatus (Status
);
98 FileDispInfo
.DeleteFile
= TRUE
;
100 Status
= NtSetInformationFile (FileHandle
,
103 sizeof(FILE_DISPOSITION_INFORMATION
),
104 FileDispositionInformation
);
105 if (!NT_SUCCESS(Status
))
108 NtClose (FileHandle
);
109 SetLastErrorByStatus (Status
);
113 Status
= NtClose (FileHandle
);
114 if (!NT_SUCCESS (Status
))
117 SetLastErrorByStatus (Status
);