76 if (lpwinsta && *lpwinsta)
90 ERR(
"Failed to open WindowStations directory\n");
99 hWindowStationsDir =
NULL;
104 lpwinsta ? &WindowStationName :
NULL,
110 if (lpsa && lpsa->bInheritHandle)
119 if (hWindowStationsDir)
140 ULONG CurrentEntry, EntryCount;
160 if (NameList ==
NULL)
180 EntryCount = *((
DWORD *) NameList);
183 for (CurrentEntry = 0; CurrentEntry < EntryCount && Ret; ++CurrentEntry)
229 else if (
Len <=
sizeof(FixedNameA))
249 if (NameA != FixedNameA)
260 if (NameA != FixedNameA)
373 HANDLE hWindowStationsDir;
387 ERR(
"Failed to open WindowStations directory\n");
420 IN HWINSTA hWindowStation,
WINE_DEFAULT_DEBUG_CHANNEL(winsta)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
NTSTATUS APIENTRY NtUserBuildNameList(HWINSTA hWindowStation, ULONG dwSize, PVOID lpBuffer, PULONG pRequiredSize)
#define WideCharToMultiByte
#define OBJ_CASE_INSENSITIVE
BOOL WINAPI SetWindowStationUser(IN HWINSTA hWindowStation, IN PLUID pluid, IN PSID psid OPTIONAL, IN DWORD size)
BOOL WINAPI EnumWindowStationsW(IN WINSTAENUMPROCW EnumFunc, IN LPARAM Context)
#define DIRECTORY_CREATE_OBJECT
HWINSTA WINAPI OpenWindowStationW(IN LPCWSTR lpszWinSta, IN BOOL fInherit, IN ACCESS_MASK dwDesiredAccess)
NTSTATUS NTAPI NtOpenDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
HWINSTA APIENTRY NtUserCreateWindowStation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK dwDesiredAccess, DWORD Unknown2, DWORD Unknown3, DWORD Unknown4, DWORD Unknown5, DWORD Unknown6)
HWINSTA APIENTRY NtUserOpenWindowStation(IN POBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK dwDesiredAccess)
#define ERROR_NOT_ENOUGH_MEMORY
DWORD_PTR NTAPI NtUserCallOneParam(DWORD_PTR Param, DWORD Routine)
NAMEENUMPROCW WINSTAENUMPROCW
#define STATUS_BUFFER_TOO_SMALL
BOOL(CALLBACK * NAMEENUMPROCW)(LPWSTR, LPARAM)
BOOL CALLBACK EnumNamesCallback(LPWSTR Name, LPARAM Param)
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
BOOL(CALLBACK * NAMEENUMPROCA)(LPSTR, LPARAM)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define RtlEqualLuid(Luid1, Luid2)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
struct tagENUMNAMESASCIICONTEXT ENUMNAMESASCIICONTEXT
static BOOL CALLBACK EnumFunc(_In_ HWND hWnd, _In_ PCWSTR lpszString, _In_ HANDLE hData)
#define DIRECTORY_TRAVERSE
BOOL FASTCALL EnumNamesA(HWINSTA WindowStation, NAMEENUMPROCA EnumFunc, LPARAM Context, BOOL Desktops)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define NT_SUCCESS(StatCode)
HWINSTA WINAPI CreateWindowStationA(IN LPCSTR lpwinsta OPTIONAL, IN DWORD dwReserved, IN ACCESS_MASK dwDesiredAccess, IN LPSECURITY_ATTRIBUTES lpsa OPTIONAL)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
BOOL FASTCALL EnumNamesW(HWINSTA WindowStation, NAMEENUMPROCW EnumFunc, LPARAM Context, BOOL Desktops)
VOID FASTCALL Logon(BOOL IsLogon)
BOOL NTAPI NtUserSetWindowStationUser(IN HWINSTA hWindowStation, IN PLUID pluid, IN PSID psid OPTIONAL, IN DWORD size)
BOOL WINAPI GetWinStationInfo(PVOID pUnknown)
struct tagENUMNAMESASCIICONTEXT * PENUMNAMESASCIICONTEXT
HWINSTA WINAPI CreateWindowStationW(IN LPCWSTR lpwinsta OPTIONAL, IN DWORD dwReserved, IN ACCESS_MASK dwDesiredAccess, IN LPSECURITY_ATTRIBUTES lpsa OPTIONAL)
HWINSTA WINAPI GetProcessWindowStation(void)
struct tagContext Context
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
NAMEENUMPROCA UserEnumFunc
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
NAMEENUMPROCA WINSTAENUMPROCA
BOOL WINAPI EnumWindowStationsA(IN WINSTAENUMPROCA EnumFunc, IN LPARAM Context)
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL
HWINSTA WINAPI OpenWindowStationA(IN LPCSTR lpszWinSta, IN BOOL fInherit, IN ACCESS_MASK dwDesiredAccess)