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 ****************************************************************/
15 #include <wine/debug.h>
17 WINE_DEFAULT_DEBUG_CHANNEL(kernel32file
);
19 /* FUNCTIONS ****************************************************************/
32 if (!(FileNameW
= FilenameA2W(lpFileName
, FALSE
)))
35 return DeleteFileW (FileNameW
);
48 FILE_DISPOSITION_INFORMATION FileDispInfo
;
49 OBJECT_ATTRIBUTES ObjectAttributes
;
50 IO_STATUS_BLOCK IoStatusBlock
;
51 UNICODE_STRING NtPathU
;
55 TRACE("DeleteFileW (lpFileName %S)\n",lpFileName
);
57 if (!RtlDosPathNameToNtPathName_U (lpFileName
,
62 SetLastError(ERROR_PATH_NOT_FOUND
);
66 TRACE("NtPathU \'%wZ\'\n", &NtPathU
);
68 InitializeObjectAttributes(&ObjectAttributes
,
74 Status
= NtCreateFile (&FileHandle
,
79 FILE_ATTRIBUTE_NORMAL
,
80 FILE_SHARE_READ
| FILE_SHARE_WRITE
| FILE_SHARE_DELETE
,
82 FILE_NON_DIRECTORY_FILE
,
86 RtlFreeHeap(RtlGetProcessHeap(),
90 if (!NT_SUCCESS(Status
))
92 WARN("Status 0x%08x\n", Status
);
93 SetLastErrorByStatus (Status
);
97 FileDispInfo
.DeleteFile
= TRUE
;
99 Status
= NtSetInformationFile (FileHandle
,
102 sizeof(FILE_DISPOSITION_INFORMATION
),
103 FileDispositionInformation
);
104 if (!NT_SUCCESS(Status
))
106 WARN("Status 0x%08x\n", Status
);
107 NtClose (FileHandle
);
108 SetLastErrorByStatus (Status
);
112 Status
= NtClose (FileHandle
);
113 if (!NT_SUCCESS (Status
))
115 WARN("Status 0x%08x\n", Status
);
116 SetLastErrorByStatus (Status
);