ntdll: Add support for file I/O on device files.

This commit is contained in:
Alexandre Julliard 2015-05-21 17:27:03 +09:00
parent c4fb1f617d
commit 950c82094b
2 changed files with 7 additions and 6 deletions

View File

@ -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)))

View File

@ -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);