From 19cef7806c43e34a00e1eb13dbb9444e722249a8 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Mon, 23 Oct 2017 14:36:18 +0200 Subject: [PATCH] [KERNEL32] Fix a FIXME in GetNamedPipeHandleStateW and stub a private function for a left unimplemented function --- dll/win32/kernel32/client/file/npipe.c | 36 +++++++++++++++++++++----- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/dll/win32/kernel32/client/file/npipe.c b/dll/win32/kernel32/client/file/npipe.c index ee341580c25..3ed0c555e30 100644 --- a/dll/win32/kernel32/client/file/npipe.c +++ b/dll/win32/kernel32/client/file/npipe.c @@ -20,6 +20,20 @@ LONG ProcessPipeId; /* FUNCTIONS ******************************************************************/ +static +BOOL +NpGetUserNamep(HANDLE hNamedPipe, + LPWSTR lpUserName, + DWORD nMaxUserNameSize) +{ + /* FIXME - open the thread token, call ImpersonateNamedPipeClient() and + retrieve the user name with GetUserName(), revert the impersonation + and finally restore the thread token */ + UNIMPLEMENTED; + return TRUE; +} + + /* * @implemented */ @@ -935,18 +949,28 @@ GetNamedPipeHandleStateW(HANDLE hNamedPipe, *lpMaxCollectionCount = RemoteInfo.MaximumCollectionCount; } - if(lpCollectDataTimeout != NULL) + if (lpCollectDataTimeout != NULL) { - /* FIXME */ - *lpCollectDataTimeout = 0; + LARGE_INTEGER CollectDataTime; + + /* Convert time and return it */ + RemoteInfo.CollectDataTime.QuadPart *= -1; + CollectDataTime = RtlExtendedLargeIntegerDivide(RemoteInfo.CollectDataTime, 10000, NULL); + /* In case of overflow, just return MAX - 1 */ + if (CollectDataTime.HighPart != 0) + { + *lpCollectDataTimeout = -2; + } + else + { + *lpCollectDataTimeout = CollectDataTime.LowPart; + } } } if (lpUserName != NULL) { - /* FIXME - open the thread token, call ImpersonateNamedPipeClient() and - retrieve the user name with GetUserName(), revert the impersonation - and finally restore the thread token */ + return NpGetUserNamep(hNamedPipe, lpUserName, nMaxUserNameSize); } return TRUE; -- 2.17.1