diff --git a/dlls/wtsapi32/wtsapi32.c b/dlls/wtsapi32/wtsapi32.c index 604752aa297..c500b537df2 100644 --- a/dlls/wtsapi32/wtsapi32.c +++ b/dlls/wtsapi32/wtsapi32.c @@ -55,6 +55,24 @@ void WINAPI WTSCloseServer(HANDLE hServer) FIXME("Stub %p\n", hServer); } +/************************************************************ + * WTSConnectSessionA (WTSAPI32.@) + */ +BOOL WINAPI WTSConnectSessionA(ULONG LogonId, ULONG TargetLogonId, PSTR pPassword, BOOL bWait) +{ + FIXME("Stub %d %d (%s) %d\n", LogonId, TargetLogonId, debugstr_a(pPassword), bWait); + return TRUE; +} + +/************************************************************ + * WTSConnectSessionW (WTSAPI32.@) + */ +BOOL WINAPI WTSConnectSessionW(ULONG LogonId, ULONG TargetLogonId, PWSTR pPassword, BOOL bWait) +{ + FIXME("Stub %d %d (%s) %d\n", LogonId, TargetLogonId, debugstr_w(pPassword), bWait); + return TRUE; +} + /************************************************************ * WTSDisconnectSession (WTSAPI32.@) */ @@ -98,6 +116,25 @@ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version return TRUE; } +/************************************************************ + * WTSEnumerateServersA (WTSAPI32.@) + */ +BOOL WINAPI WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA *ppServerInfo, DWORD *pCount) +{ + FIXME("Stub %s 0x%08x 0x%08x %p %p\n", debugstr_a(pDomainName), Reserved, Version, ppServerInfo, pCount); + return FALSE; +} + +/************************************************************ + * WTSEnumerateServersW (WTSAPI32.@) + */ +BOOL WINAPI WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW *ppServerInfo, DWORD *pCount) +{ + FIXME("Stub %s 0x%08x 0x%08x %p %p\n", debugstr_w(pDomainName), Reserved, Version, ppServerInfo, pCount); + return FALSE; +} + + /************************************************************ * WTSEnumerateEnumerateSessionsA (WTSAPI32.@) */ @@ -138,7 +175,6 @@ BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, void WINAPI WTSFreeMemory(PVOID pMemory) { FIXME("Stub %p\n", pMemory); - return; } /************************************************************ @@ -206,15 +242,35 @@ BOOL WINAPI WTSQuerySessionInformationW( } /************************************************************ - * WTSWaitSystemEvent (WTSAPI32.@) + * WTSQueryUserToken (WTSAPI32.@) */ -BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD Mask, DWORD* Flags) +BOOL WINAPI WTSQueryUserToken(ULONG session_id, PHANDLE token) { - /* FIXME: Forward request to winsta.dll::WinStationWaitSystemEvent */ - FIXME("Stub %p 0x%08x %p\n", hServer, Mask, Flags); + FIXME("%u %p\n", session_id, token); return FALSE; } +/************************************************************ + * WTSQueryUserConfigA (WTSAPI32.@) + */ +BOOL WINAPI WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR *ppBuffer, DWORD *pBytesReturned) +{ + FIXME("Stub (%s) (%s) 0x%08x %p %p\n", debugstr_a(pServerName), debugstr_a(pUserName), WTSConfigClass, + ppBuffer, pBytesReturned); + return FALSE; +} + +/************************************************************ + * WTSQueryUserConfigW (WTSAPI32.@) + */ +BOOL WINAPI WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR *ppBuffer, DWORD *pBytesReturned) +{ + FIXME("Stub (%s) (%s) 0x%08x %p %p\n", debugstr_w(pServerName), debugstr_w(pUserName), WTSConfigClass, + ppBuffer, pBytesReturned); + return FALSE; +} + + /************************************************************ * WTSRegisterSessionNotification (WTSAPI32.@) */ @@ -224,6 +280,99 @@ BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags) return FALSE; } +/************************************************************ + * WTSRegisterSessionNotification (WTSAPI32.@) + */ +BOOL WINAPI WTSRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd, DWORD dwFlags) +{ + FIXME("Stub %p %p 0x%08x\n", hServer, hWnd, dwFlags); + return FALSE; +} + + +/************************************************************ + * WTSSendMessageA (WTSAPI32.@) + */ +BOOL WINAPI WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, + DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD *pResponse, BOOL bWait) +{ + FIXME("Stub %p 0x%08x (%s) %d (%s) %d 0x%08x %d %p %d\n", hServer, SessionId, debugstr_a(pTitle), TitleLength, debugstr_a(pMessage), MessageLength, Style, Timeout, pResponse, bWait); + return FALSE; +} + +/************************************************************ + * WTSSendMessageW (WTSAPI32.@) + */ +BOOL WINAPI WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, + DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD *pResponse, BOOL bWait) +{ + FIXME("Stub %p 0x%08x (%s) %d (%s) %d 0x%08x %d %p %d\n", hServer, SessionId, debugstr_w(pTitle), TitleLength, debugstr_w(pMessage), MessageLength, Style, Timeout, pResponse, bWait); + return FALSE; +} + +/************************************************************ + * WTSSetUserConfigA (WTSAPI32.@) + */ +BOOL WINAPI WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength) +{ + FIXME("Stub (%s) (%s) 0x%08x %p %d\n", debugstr_a(pServerName), debugstr_a(pUserName), WTSConfigClass,pBuffer, DataLength); + return FALSE; +} + +/************************************************************ + * WTSSetUserConfigW (WTSAPI32.@) + */ +BOOL WINAPI WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength) +{ + FIXME("Stub (%s) (%s) 0x%08x %p %d\n", debugstr_w(pServerName), debugstr_w(pUserName), WTSConfigClass,pBuffer, DataLength); + return FALSE; +} + +/************************************************************ + * WTSShutdownSystem (WTSAPI32.@) + */ +BOOL WINAPI WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag) +{ + FIXME("Stub %p 0x%08x\n", hServer,ShutdownFlag); + return FALSE; +} + +/************************************************************ + * WTSStartRemoteControlSessionA (WTSAPI32.@) + */ +BOOL WINAPI WTSStartRemoteControlSessionA(LPSTR pTargetServerName, ULONG TargetLogonId, BYTE HotkeyVk, USHORT HotkeyModifiers) +{ + FIXME("Stub (%s) %d %d %d\n", debugstr_a(pTargetServerName), TargetLogonId, HotkeyVk, HotkeyModifiers); + return FALSE; +} + +/************************************************************ + * WTSStartRemoteControlSessionW (WTSAPI32.@) + */ +BOOL WINAPI WTSStartRemoteControlSessionW(LPWSTR pTargetServerName, ULONG TargetLogonId, BYTE HotkeyVk, USHORT HotkeyModifiers) +{ + FIXME("Stub (%s) %d %d %d\n", debugstr_w(pTargetServerName), TargetLogonId, HotkeyVk, HotkeyModifiers); + return FALSE; +} + +/************************************************************ + * WTSStopRemoteControlSession (WTSAPI32.@) + */ +BOOL WINAPI WTSStopRemoteControlSession(ULONG LogonId) +{ + FIXME("Stub %d\n", LogonId); + return FALSE; +} + +/************************************************************ + * WTSTerminateProcess (WTSAPI32.@) + */ +BOOL WINAPI WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode) +{ + FIXME("Stub %p %d %d\n", hServer, ProcessId, ExitCode); + return FALSE; +} + /************************************************************ * WTSUnRegisterSessionNotification (WTSAPI32.@) */ @@ -234,10 +383,94 @@ BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd) } /************************************************************ - * WTSQueryUserToken (WTSAPI32.@) + * WTSUnRegisterSessionNotification (WTSAPI32.@) */ -BOOL WINAPI WTSQueryUserToken(ULONG session_id, PHANDLE token) +BOOL WINAPI WTSUnRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd) { - FIXME("%u %p\n", session_id, token); + FIXME("Stub %p %p\n", hServer, hWnd); + return FALSE; +} + + +/************************************************************ + * WTSVirtualChannelClose (WTSAPI32.@) + */ +BOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle) +{ + FIXME("Stub %p\n", hChannelHandle); + return FALSE; +} + +/************************************************************ + * WTSVirtualChannelOpen (WTSAPI32.@) + */ +HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName) +{ + FIXME("Stub %p %d (%s)\n", hServer, SessionId, debugstr_a(pVirtualName)); + return NULL; +} + +/************************************************************ + * WTSVirtualChannelOpen (WTSAPI32.@) + */ +HANDLE WINAPI WTSVirtualChannelOpenEx(DWORD SessionId, LPSTR pVirtualName, DWORD flags) +{ + FIXME("Stub %d (%s) %d\n", SessionId, debugstr_a(pVirtualName), flags); + return NULL; +} + +/************************************************************ + * WTSVirtualChannelPurgeInput (WTSAPI32.@) + */ +BOOL WINAPI WTSVirtualChannelPurgeInput(HANDLE hChannelHandle) +{ + FIXME("Stub %p\n", hChannelHandle); + return FALSE; +} + +/************************************************************ + * WTSVirtualChannelPurgeOutput (WTSAPI32.@) + */ +BOOL WINAPI WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle) +{ + FIXME("Stub %p\n", hChannelHandle); + return FALSE; +} + + +/************************************************************ + * WTSVirtualChannelQuery (WTSAPI32.@) + */ +BOOL WINAPI WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS WtsVirtualClass, PVOID *ppBuffer, DWORD *pBytesReturned) +{ + FIXME("Stub %p %d %p %p\n", hChannelHandle, WtsVirtualClass, ppBuffer, pBytesReturned); + return FALSE; +} + +/************************************************************ + * WTSVirtualChannelRead (WTSAPI32.@) + */ +BOOL WINAPI WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead) +{ + FIXME("Stub %p %d %p %d %p\n", hChannelHandle, TimeOut, Buffer, BufferSize, pBytesRead); + return FALSE; +} + +/************************************************************ + * WTSVirtualChannelWrite (WTSAPI32.@) + */ +BOOL WINAPI WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten) +{ + FIXME("Stub %p %p %d %p\n", hChannelHandle, Buffer, Length, pBytesWritten); + return FALSE; +} + +/************************************************************ + * WTSWaitSystemEvent (WTSAPI32.@) + */ +BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD Mask, DWORD* Flags) +{ + /* FIXME: Forward request to winsta.dll::WinStationWaitSystemEvent */ + FIXME("Stub %p 0x%08x %p\n", hServer, Mask, Flags); return FALSE; } diff --git a/dlls/wtsapi32/wtsapi32.spec b/dlls/wtsapi32/wtsapi32.spec index f20bbe206b6..d94ef889f29 100644 --- a/dlls/wtsapi32/wtsapi32.spec +++ b/dlls/wtsapi32/wtsapi32.spec @@ -1,35 +1,43 @@ @ stdcall WTSCloseServer(long) +@ stdcall WTSConnectSessionA(long long ptr long) +@ stdcall WTSConnectSessionW(long long ptr long) @ stdcall WTSDisconnectSession(long long long) @ stdcall WTSEnumerateProcessesA(long long long ptr ptr) @ stdcall WTSEnumerateProcessesW(long long long ptr ptr) -@ stub WTSEnumerateServersA -@ stub WTSEnumerateServersW +@ stdcall WTSEnumerateServersA(ptr long long ptr ptr) +@ stdcall WTSEnumerateServersW(ptr long long ptr ptr) @ stdcall WTSEnumerateSessionsA(long long long ptr ptr) @ stdcall WTSEnumerateSessionsW(long long long ptr ptr) @ stdcall WTSFreeMemory(ptr) -@ stdcall WTSLogoffSession(ptr long long) +@ stdcall WTSLogoffSession(long long long) @ stdcall WTSOpenServerA(ptr) @ stdcall WTSOpenServerW(ptr) @ stdcall WTSQuerySessionInformationA(long long long ptr ptr) @ stdcall WTSQuerySessionInformationW(long long long ptr ptr) -@ stub WTSQueryUserConfigA -@ stub WTSQueryUserConfigW +@ stdcall WTSQueryUserConfigA(ptr ptr long ptr ptr) +@ stdcall WTSQueryUserConfigW(ptr ptr long ptr ptr) @ stdcall WTSQueryUserToken(long ptr) @ stdcall WTSRegisterSessionNotification(long long) -@ stub WTSSendMessageA -@ stub WTSSendMessageW +@ stdcall WTSRegisterSessionNotificationEx(long long long) +@ stdcall WTSSendMessageA(long long ptr long ptr long long long ptr long) +@ stdcall WTSSendMessageW(long long ptr long ptr long long long ptr long) @ stub WTSSetSessionInformationA @ stub WTSSetSessionInformationW -@ stub WTSSetUserConfigA -@ stub WTSSetUserConfigW -@ stub WTSShutdownSystem -@ stub WTSTerminateProcess +@ stdcall WTSSetUserConfigA(ptr ptr long ptr long) +@ stdcall WTSSetUserConfigW(ptr ptr long ptr long) +@ stdcall WTSShutdownSystem(long long) +@ stdcall WTSStartRemoteControlSessionA(ptr long long long) +@ stdcall WTSStartRemoteControlSessionW(ptr long long long) +@ stdcall WTSStopRemoteControlSession(long) +@ stdcall WTSTerminateProcess(long long long) @ stdcall WTSUnRegisterSessionNotification(long) -@ stub WTSVirtualChannelClose -@ stub WTSVirtualChannelOpen -@ stub WTSVirtualChannelPurgeInput -@ stub WTSVirtualChannelPurgeOutput -@ stub WTSVirtualChannelQuery -@ stub WTSVirtualChannelRead -@ stub WTSVirtualChannelWrite +@ stdcall WTSUnRegisterSessionNotificationEx(long long) +@ stdcall WTSVirtualChannelClose(long) +@ stdcall WTSVirtualChannelOpen(long long ptr) +@ stdcall WTSVirtualChannelOpenEx(long ptr long) +@ stdcall WTSVirtualChannelPurgeInput(long) +@ stdcall WTSVirtualChannelPurgeOutput(long) +@ stdcall WTSVirtualChannelQuery(long long ptr ptr) +@ stdcall WTSVirtualChannelRead(long long ptr long ptr) +@ stdcall WTSVirtualChannelWrite(long ptr long ptr) @ stdcall WTSWaitSystemEvent(long long ptr) diff --git a/include/wtsapi32.h b/include/wtsapi32.h index e875111f191..f4bab56635e 100644 --- a/include/wtsapi32.h +++ b/include/wtsapi32.h @@ -24,6 +24,12 @@ extern "C" { #endif +typedef enum _WTS_VIRTUAL_CLASS +{ + WTSVirtualClientData, + WTSVirtualFileHandle +} WTS_VIRTUAL_CLASS; + typedef enum tagWTS_INFO_CLASS { WTSInitialProgram, @@ -130,6 +136,9 @@ DECL_WINELIB_TYPE_AW(WTS_SERVER_INFO) DECL_WINELIB_TYPE_AW(PWTS_SERVER_INFO) void WINAPI WTSCloseServer(HANDLE); +BOOL WINAPI WTSConnectSessionA(ULONG, ULONG, PSTR, BOOL); +BOOL WINAPI WTSConnectSessionW(ULONG, ULONG, PWSTR, BOOL); +#define WTSConnectSession WINELIB_NAME_AW(WTSConnectSession) BOOL WINAPI WTSDisconnectSession(HANDLE, DWORD, BOOL); BOOL WINAPI WTSEnumerateProcessesA(HANDLE, DWORD, DWORD, PWTS_PROCESS_INFOA *, DWORD *); BOOL WINAPI WTSEnumerateProcessesW(HANDLE, DWORD, DWORD, PWTS_PROCESS_INFOW *, DWORD *); @@ -140,7 +149,7 @@ BOOL WINAPI WTSEnumerateServersW( LPWSTR, DWORD, DWORD, PWTS_SERVER_INFOW*, DWOR BOOL WINAPI WTSEnumerateSessionsA(HANDLE, DWORD, DWORD, PWTS_SESSION_INFOA *, DWORD *); BOOL WINAPI WTSEnumerateSessionsW(HANDLE, DWORD, DWORD, PWTS_SESSION_INFOW *, DWORD *); #define WTSEnumerateSessions WINELIB_NAME_AW(WTSEnumerateSessions) -void WINAPI WTSFreeMemory(PVOID); +void WINAPI WTSFreeMemory(PVOID); HANDLE WINAPI WTSOpenServerA(LPSTR); HANDLE WINAPI WTSOpenServerW(LPWSTR); #define WTSOpenServer WINELIB_NAME_AW(WTSOpenServer) @@ -153,6 +162,10 @@ BOOL WINAPI WTSQueryUserConfigW(LPWSTR,LPWSTR,WTS_CONFIG_CLASS,LPWSTR*,DWORD*); BOOL WINAPI WTSQueryUserToken(ULONG, PHANDLE); BOOL WINAPI WTSRegisterSessionNotification(HWND, DWORD); BOOL WINAPI WTSRegisterSessionNotificationEx(HANDLE, HWND, DWORD); +BOOL WINAPI WTSStartRemoteControlSessionA(LPSTR, ULONG, BYTE, USHORT); +BOOL WINAPI WTSStartRemoteControlSessionW(LPWSTR, ULONG, BYTE, USHORT); +#define WTSStartRemoteControlSession WINELIB_NAME_AW(WTSStartRemoteControlSession) +BOOL WINAPI WTSStopRemoteControlSession(ULONG); BOOL WINAPI WTSTerminateProcess(HANDLE, DWORD, DWORD); BOOL WINAPI WTSUnRegisterSessionNotification(HWND); BOOL WINAPI WTSUnRegisterSessionNotificationEx(HANDLE, HWND);