Module: wine Branch: master Commit: 05ab8b98be81929a742d98ba3f1baf95aeabfe78 URL: http://source.winehq.org/git/wine.git/?a=commit;h=05ab8b98be81929a742d98ba3f...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Feb 2 19:27:26 2017 +0100
ntdll: Add stub implementation of NtQueryInformationThread(ThreadIsIoPending).
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/tests/thread.c | 1 + dlls/kernel32/thread.c | 13 +++++++++++-- dlls/ntdll/thread.c | 9 ++++++++- 3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c index 001128b..334bdf4 100644 --- a/dlls/kernel32/tests/thread.c +++ b/dlls/kernel32/tests/thread.c @@ -1969,6 +1969,7 @@ todo_wine
case ThreadAffinityMask: case ThreadQuerySetWin32StartAddress: + case ThreadIsIoPending: todo_wine ok(status == STATUS_ACCESS_DENIED, "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len); break; diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c index 82ccebe..de46618 100644 --- a/dlls/kernel32/thread.c +++ b/dlls/kernel32/thread.c @@ -918,8 +918,17 @@ LANGID WINAPI GetThreadUILanguage( void ) */ BOOL WINAPI GetThreadIOPendingFlag( HANDLE thread, PBOOL io_pending ) { - FIXME("%p, %p\n", thread, io_pending); - *io_pending = FALSE; + NTSTATUS status; + + TRACE("%p, %p\n", thread, io_pending); + + status = NtQueryInformationThread( thread, ThreadIsIoPending, + io_pending, sizeof(*io_pending), NULL ); + if (status) + { + SetLastError( RtlNtStatusToDosError(status) ); + return FALSE; + } return TRUE; }
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index e3cc11a..c9a5da6 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -1157,6 +1157,14 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, } } return status; + case ThreadIsIoPending: + FIXME( "ThreadIsIoPending info class not supported yet\n" ); + if (length != sizeof(BOOL)) return STATUS_INFO_LENGTH_MISMATCH; + if (!data) return STATUS_ACCESS_DENIED; + + *(BOOL*)data = FALSE; + if (ret_len) *ret_len = sizeof(BOOL); + return STATUS_SUCCESS; case ThreadPriority: case ThreadBasePriority: case ThreadImpersonationToken: @@ -1167,7 +1175,6 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, case ThreadIdealProcessor: case ThreadPriorityBoost: case ThreadSetTlsArrayAddress: - case ThreadIsIoPending: default: FIXME( "info class %d not supported yet\n", class ); return STATUS_NOT_IMPLEMENTED;