[PATCH 1/4] kernel32/tests: Test deletion of a mapped file
Ben Peddell
klightspeed at netspace.net.au
Wed Jun 27 20:30:21 CDT 2012
Windows NT returns ERROR_ACCESS_DENIED when attempting to delete a
mapped file.
---
dlls/kernel32/tests/file.c | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index c6e9f18..a021e16 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1293,6 +1293,8 @@ static void test_DeleteFileA( void )
BOOL ret;
char temp_path[MAX_PATH], temp_file[MAX_PATH];
HANDLE hfile;
+ HANDLE hmapfile;
+ DWORD written;
ret = DeleteFileA(NULL);
ok(!ret && (GetLastError() == ERROR_INVALID_PARAMETER ||
@@ -1315,10 +1317,38 @@ static void test_DeleteFileA( void )
GetTempFileName(temp_path, "tst", 0, temp_file);
SetLastError(0xdeadbeef);
+ hfile = CreateFile(temp_file, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
+ ok(hfile != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
+
+ // Write some data to it so CreateFileMapping will work
+ SetLastError(0xdeadbeef);
+ ret = WriteFile(hfile, temp_file, sizeof(temp_file), &written, NULL);
+ ok(ret, "WriteFile error %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = CloseHandle(hfile);
+ ok(ret, "CloseHandle error %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
hfile = CreateFile(temp_file, GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
ok(hfile != INVALID_HANDLE_VALUE, "CreateFile error %d\n", GetLastError());
SetLastError(0xdeadbeef);
+ hmapfile = CreateFileMapping(hfile, NULL, PAGE_READONLY, 0, 0, NULL);
+ ok(hmapfile != NULL, "CreateFileMapping: error %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = DeleteFile(temp_file);
+todo_wine
+ ok(!ret, "DeleteFile with mapping should fail\n");
+todo_wine
+ ok(GetLastError() == ERROR_ACCESS_DENIED, "DeleteFile: expected ERROR_ACCESS_DENIED, got %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = CloseHandle(hmapfile);
+ ok(ret, "CloseHandle error %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
ret = DeleteFile(temp_file);
todo_wine
ok(ret, "DeleteFile error %d\n", GetLastError());
--
1.7.3.4
More information about the wine-patches
mailing list