21 #define WIN32_NO_STATUS 24 #include "wine/winternl.h" 32 #define GetCurrentProcessToken() ((HANDLE)~(ULONG_PTR)3) 40 FIXME(
"Stub %p\n", hServer);
107 ppProcessInfo, pCount);
109 if (!ppProcessInfo || !pCount)
return FALSE;
112 *ppProcessInfo =
NULL;
183 *ppProcessInfo = processInfo;
193 memcpy(
name, spi->ProcessName.Buffer, spi->ProcessName.Length );
194 name[ spi->ProcessName.Length/
sizeof(
WCHAR) ] = 0;
253 ppSessionInfo, pCount);
255 if (!ppSessionInfo || !pCount)
return FALSE;
258 *ppSessionInfo =
NULL;
270 ppSessionInfo, pCount);
272 if (!ppSessionInfo || !pCount)
return FALSE;
275 *ppSessionInfo =
NULL;
314 FIXME(
"(%p, 0x%x, %d): stub\n", hserver, session_id, bwait);
371 const size_t wcsErrorCode = -1;
374 DWORD bytesReturned = 0;
392 switch (WTSInfoClass)
405 if (
len != wcsErrorCode)
408 ansiBuffer = heap_alloc_zero(
len);
433 FIXME(
"Stub %p 0x%08x %d %p %p\n", hServer,
SessionId, WTSInfoClass,
457 #if (NTDDI_VERSION >= NTDDI_WS08) 467 switch (WTSInfoClass)
536 #if (NTDDI_VERSION >= NTDDI_WS08) 559 FIXME(
"Stub %p 0x%08x %d %p %p\n", hServer,
SessionId, WTSInfoClass,
565 FIXME(
"Stub %p 0x%08x %d %p %p\n", hServer,
SessionId, WTSInfoClass,
590 FIXME(
"%u %p semi-stub!\n", session_id,
token);
609 ppBuffer, pBytesReturned);
619 ppBuffer, pBytesReturned);
649 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);
659 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);
686 FIXME(
"Stub %p 0x%08x\n", hServer,ShutdownFlag);
695 FIXME(
"Stub (%s) %d %d %d\n",
debugstr_a(pTargetServerName), TargetLogonId, HotkeyVk, HotkeyModifiers);
704 FIXME(
"Stub (%s) %d %d %d\n",
debugstr_w(pTargetServerName), TargetLogonId, HotkeyVk, HotkeyModifiers);
750 FIXME(
"Stub %p\n", hChannelHandle);
777 FIXME(
"Stub %p\n", hChannelHandle);
786 FIXME(
"Stub %p\n", hChannelHandle);
796 FIXME(
"Stub %p %d %p %p\n", hChannelHandle, WtsVirtualClass, ppBuffer, pBytesReturned);
BOOL WINAPI WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW *ppServerInfo, DWORD *pCount)
BOOL WINAPI WTSVirtualChannelPurgeInput(HANDLE hChannelHandle)
#define ERROR_INVALID_PARAMETER
BOOL WINAPI WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle)
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
static UCHAR ULONG UCHAR ULONG UCHAR * output
_In_ ULONG _In_ ULONG _In_ ULONG Length
static rfbScreenInfoPtr server
BOOL WINAPI WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR *Buffer, DWORD *BytesReturned)
#define STATUS_INFO_LENGTH_MISMATCH
BOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle)
BOOL WINAPI WTSStartRemoteControlSessionW(LPWSTR pTargetServerName, ULONG TargetLogonId, BYTE HotkeyVk, USHORT HotkeyModifiers)
enum tagWTS_INFO_CLASS WTS_INFO_CLASS
BOOL WINAPI WTSLogoffSession(HANDLE hserver, DWORD session_id, BOOL bwait)
GLuint GLuint GLsizei count
BOOL WINAPI WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag)
BOOL WINAPI WTSEnumerateSessionsExA(HANDLE server, DWORD *level, DWORD filter, WTS_SESSION_INFO_1A *info, DWORD *count)
BOOL WINAPI WTSEnumerateProcessesExA(HANDLE server, DWORD *level, DWORD session_id, char **info, DWORD *count)
BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA *ppProcessInfo, DWORD *pCount)
BOOL WINAPI WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS WtsVirtualClass, PVOID *ppBuffer, DWORD *pBytesReturned)
BOOL WINAPI WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA *ppSessionInfo, DWORD *pCount)
BOOL WINAPI WTSFreeMemoryExA(WTS_TYPE_CLASS type, void *ptr, ULONG nmemb)
#define ERROR_NOT_ENOUGH_MEMORY
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI WTSEnableChildSessions(BOOL enable)
HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName)
BOOL WINAPI WTSStopRemoteControlSession(ULONG LogonId)
enum _WTS_VIRTUAL_CLASS WTS_VIRTUAL_CLASS
static void * heap_alloc(size_t len)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesReturned
#define ERROR_INVALID_USER_BUFFER
BOOL WINAPI WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD *pResponse, BOOL bWait)
GLenum GLuint GLenum GLsizei const GLchar * buf
BOOL WINAPI WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR *ppBuffer, DWORD *pBytesReturned)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
#define DUPLICATE_SAME_ACCESS
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
BOOL WINAPI WTSRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd, DWORD dwFlags)
BOOL WINAPI WTSEnumerateProcessesExW(HANDLE server, DWORD *level, DWORD session_id, WCHAR **info, DWORD *count)
_Reserved_ PVOID Reserved
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
BOOL WINAPI WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten)
BOOL WINAPI WTSQueryUserToken(ULONG session_id, PHANDLE token)
BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW *ppSessionInfo, DWORD *pCount)
enum _WTS_TYPE_CLASS WTS_TYPE_CLASS
#define GetCurrentProcessToken()
#define WTS_CURRENT_SERVER_HANDLE
HANDLE WINAPI WTSVirtualChannelOpenEx(DWORD SessionId, LPSTR pVirtualName, DWORD flags)
BOOL WINAPI GetUserNameW(LPWSTR lpszName, LPDWORD lpSize)
_Must_inspect_result_ _In_ ULONG Flags
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
void WINAPI WTSCloseServer(HANDLE hServer)
BOOL WINAPI WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA *ppServerInfo, DWORD *pCount)
BOOL WINAPI WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR *ppBuffer, DWORD *pBytesReturned)
HANDLE WINAPI WTSOpenServerA(LPSTR pServerName)
IN PVOID IN PVOID IN USHORT Version
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
HANDLE WINAPI WTSOpenServerW(LPWSTR pServerName)
BOOL WINAPI WTSEnumerateSessionsExW(HANDLE server, DWORD *level, DWORD filter, WTS_SESSION_INFO_1W *info, DWORD *count)
#define memcpy(s1, s2, n)
BOOL WINAPI WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait)
BOOL WINAPI WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD *pResponse, BOOL bWait)
#define GetCurrentProcess()
BOOL WINAPI WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags)
void WINAPI WTSFreeMemory(PVOID pMemory)
HANDLE WINAPI WTSOpenServerExW(WCHAR *server_name)
BOOL WINAPI WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
BOOL WINAPI WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR *Buffer, DWORD *BytesReturned)
BOOL WINAPI WTSConnectSessionW(ULONG LogonId, ULONG TargetLogonId, PWSTR pPassword, BOOL bWait)
struct _WTS_PROCESS_INFOW WTS_PROCESS_INFOW
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID LogonId
HANDLE WINAPI WTSOpenServerExA(char *server_name)
#define ERROR_NOT_SUPPORTED
BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD Mask, DWORD *Flags)
BOOL WINAPI WTSUnRegisterSessionNotificationEx(HANDLE hServer, HWND hWnd)
WINE_DEFAULT_DEBUG_CHANNEL(wtsapi)
#define ERROR_CALL_NOT_IMPLEMENTED
BOOL WINAPI WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength)
GLuint GLuint GLsizei GLenum type
BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd)
BOOL WINAPI WTSFreeMemoryExW(WTS_TYPE_CLASS type, void *ptr, ULONG nmemb)
size_t __cdecl wcstombs(_Out_writes_opt_z_(_MaxCount) char *_Dest, _In_z_ const wchar_t *_Source, _In_ size_t _MaxCount)
BOOL WINAPI WTSStartRemoteControlSessionA(LPSTR pTargetServerName, ULONG TargetLogonId, BYTE HotkeyVk, USHORT HotkeyModifiers)
static SERVICE_STATUS status
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
BOOL WINAPI WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead)
BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW *ppProcessInfo, DWORD *pCount)
BOOL WINAPI WTSConnectSessionA(ULONG LogonId, ULONG TargetLogonId, PSTR pPassword, BOOL bWait)
#define HeapFree(x, y, z)
BOOL WINAPI WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength)
BOOL WINAPI DuplicateHandle(IN HANDLE hSourceProcessHandle, IN HANDLE hSourceHandle, IN HANDLE hTargetProcessHandle, OUT LPHANDLE lpTargetHandle, IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwOptions)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
static BOOL heap_free(void *mem)
enum _WTS_CONFIG_CLASS WTS_CONFIG_CLASS
#define ERROR_INSUFFICIENT_BUFFER
GLuint const GLchar * name