Module: wine Branch: master Commit: 950c82094b34bec87b38e09fe4657df4eeeb0522 URL: http://source.winehq.org/git/wine.git/?a=commit;h=950c82094b34bec87b38e09fe4...
Author: Alexandre Julliard julliard@winehq.org Date: Thu May 21 17:27:03 2015 +0900
ntdll: Add support for file I/O on device files.
---
dlls/ntdll/file.c | 5 +++-- dlls/ntdll/tests/om.c | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 43e52c6..d081750 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -847,7 +847,7 @@ NTSTATUS WINAPI NtReadFile(HANDLE hFile, HANDLE hEvent, goto done; } } - else if (type == FD_TYPE_SERIAL) + else if (type == FD_TYPE_SERIAL || type == FD_TYPE_DEVICE) { if (async_read && (!offset || offset->QuadPart < 0)) { @@ -872,6 +872,7 @@ NTSTATUS WINAPI NtReadFile(HANDLE hFile, HANDLE hEvent, { case FD_TYPE_FILE: case FD_TYPE_CHAR: + case FD_TYPE_DEVICE: status = length ? STATUS_END_OF_FILE : STATUS_SUCCESS; goto done; case FD_TYPE_SERIAL: @@ -1265,7 +1266,7 @@ NTSTATUS WINAPI NtWriteFile(HANDLE hFile, HANDLE hEvent, goto done; } } - else if (type == FD_TYPE_SERIAL) + else if (type == FD_TYPE_SERIAL || type == FD_TYPE_DEVICE) { if (async_write && (!offset || (offset->QuadPart < 0 && offset->QuadPart != FILE_WRITE_TO_END_OF_FILE))) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c index fa6f2c3..a7ac95f 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -1063,14 +1063,14 @@ static void test_null_device(void)
SetLastError(0xdeadbeef); ret = WriteFile(null, buf, sizeof(buf), &num_bytes, NULL); - todo_wine ok(!ret, "WriteFile unexpectedly succeeded\n"); - todo_wine ok(GetLastError() == ERROR_INVALID_PARAMETER, + ok(!ret, "WriteFile unexpectedly succeeded\n"); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %u\n", GetLastError());
SetLastError(0xdeadbeef); ret = ReadFile(null, buf, sizeof(buf), &num_bytes, NULL); ok(!ret, "ReadFile unexpectedly succeeded\n"); - todo_wine ok(GetLastError() == ERROR_INVALID_PARAMETER, + ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %u\n", GetLastError());
num_bytes = 0xdeadbeef; @@ -1102,7 +1102,7 @@ static void test_null_device(void) ret = GetOverlappedResult(null, &ov, &num_bytes, TRUE); ok(!ret, "GetOverlappedResult unexpectedly succeeded\n"); } - todo_wine ok(GetLastError() == ERROR_HANDLE_EOF, + ok(GetLastError() == ERROR_HANDLE_EOF, "expected ERROR_HANDLE_EOF, got %u\n", GetLastError());
pNtClose(null);