Window stations and desktops
[reactos.git] / reactos / lib / user32 / misc / desktop.c
1 /* $Id: desktop.c,v 1.1 2001/06/12 17:50:27 chorns Exp $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS user32.dll
5 * FILE: lib/user32/misc/desktop.c
6 * PURPOSE: Desktops
7 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * UPDATE HISTORY:
9 * 06-06-2001 CSH Created
10 */
11 #include <windows.h>
12 #include <user32.h>
13 #include <debug.h>
14
15
16 WINBOOL
17 STDCALL
18 CloseDesktop(
19 HDESK hDesktop)
20 {
21 return NtUserCloseDesktop(hDesktop);
22 }
23
24 HDESK
25 STDCALL
26 CreateDesktopA(
27 LPCSTR lpszDesktop,
28 LPCSTR lpszDevice,
29 LPDEVMODE pDevmode,
30 DWORD dwFlags,
31 ACCESS_MASK dwDesiredAccess,
32 LPSECURITY_ATTRIBUTES lpsa)
33 {
34 ANSI_STRING DesktopNameA;
35 UNICODE_STRING DesktopNameU;
36 HDESK hDesktop;
37
38 if (lpszDesktop != NULL) {
39 RtlInitAnsiString(&DesktopNameA, (LPSTR)lpszDesktop);
40 RtlAnsiStringToUnicodeString(&DesktopNameU, &DesktopNameA, TRUE);
41 } else {
42 RtlInitUnicodeString(&DesktopNameU, NULL);
43 }
44
45 hDesktop = CreateDesktopW(
46 DesktopNameU.Buffer,
47 NULL,
48 pDevmode,
49 dwFlags,
50 dwDesiredAccess,
51 lpsa);
52
53 RtlFreeUnicodeString(&DesktopNameU);
54
55 return hDesktop;
56 }
57
58 HDESK
59 STDCALL
60 CreateDesktopW(
61 LPCWSTR lpszDesktop,
62 LPCWSTR lpszDevice,
63 LPDEVMODE pDevmode,
64 DWORD dwFlags,
65 ACCESS_MASK dwDesiredAccess,
66 LPSECURITY_ATTRIBUTES lpsa)
67 {
68 UNICODE_STRING DesktopName;
69 HWINSTA hWinSta;
70 HDESK hDesktop;
71
72 hWinSta = NtUserGetProcessWindowStation();
73
74 RtlInitUnicodeString(&DesktopName, lpszDesktop);
75
76 hDesktop = NtUserCreateDesktop(
77 &DesktopName,
78 dwFlags,
79 dwDesiredAccess,
80 lpsa,
81 hWinSta);
82
83 return hDesktop;
84 }
85
86 WINBOOL
87 STDCALL
88 EnumDesktopWindows(
89 HDESK hDesktop,
90 ENUMWINDOWSPROC lpfn,
91 LPARAM lParam)
92 {
93 return FALSE;
94 }
95
96 WINBOOL
97 STDCALL
98 EnumDesktopsA(
99 HWINSTA hwinsta,
100 DESKTOPENUMPROC lpEnumFunc,
101 LPARAM lParam)
102 {
103 return FALSE;
104 }
105
106 WINBOOL
107 STDCALL
108 EnumDesktopsW(
109 HWINSTA hwinsta,
110 DESKTOPENUMPROC lpEnumFunc,
111 LPARAM lParam)
112 {
113 return FALSE;
114 }
115
116 HDESK
117 STDCALL
118 GetThreadDesktop(
119 DWORD dwThreadId)
120 {
121 return NtUserGetThreadDesktop(dwThreadId, 0);
122 }
123
124 HDESK
125 STDCALL
126 OpenDesktopA(
127 LPSTR lpszDesktop,
128 DWORD dwFlags,
129 WINBOOL fInherit,
130 ACCESS_MASK dwDesiredAccess)
131 {
132 ANSI_STRING DesktopNameA;
133 UNICODE_STRING DesktopNameU;
134 HDESK hDesktop;
135
136 if (lpszDesktop != NULL) {
137 RtlInitAnsiString(&DesktopNameA, lpszDesktop);
138 RtlAnsiStringToUnicodeString(&DesktopNameU, &DesktopNameA, TRUE);
139 } else {
140 RtlInitUnicodeString(&DesktopNameU, NULL);
141 }
142
143 hDesktop = OpenDesktopW(
144 DesktopNameU.Buffer,
145 dwFlags,
146 fInherit,
147 dwDesiredAccess);
148
149 RtlFreeUnicodeString(&DesktopNameU);
150
151 return hDesktop;
152 }
153
154 HDESK
155 STDCALL
156 OpenDesktopW(
157 LPWSTR lpszDesktop,
158 DWORD dwFlags,
159 WINBOOL fInherit,
160 ACCESS_MASK dwDesiredAccess)
161 {
162 UNICODE_STRING DesktopName;
163
164 RtlInitUnicodeString(&DesktopName, lpszDesktop);
165
166 return NtUserOpenDesktop(
167 &DesktopName,
168 dwFlags,
169 dwDesiredAccess);
170 }
171
172 HDESK
173 STDCALL
174 OpenInputDesktop(
175 DWORD dwFlags,
176 WINBOOL fInherit,
177 ACCESS_MASK dwDesiredAccess)
178 {
179 return NtUserOpenInputDesktop(
180 dwFlags,
181 fInherit,
182 dwDesiredAccess);
183 }
184
185 WINBOOL
186 STDCALL
187 PaintDesktop(
188 HDC hdc)
189 {
190 return NtUserPaintDesktop(hdc);
191 }
192
193 WINBOOL
194 STDCALL
195 SetThreadDesktop(
196 HDESK hDesktop)
197 {
198 return NtUserSetThreadDesktop(hDesktop);
199 }
200
201 WINBOOL
202 STDCALL
203 SwitchDesktop(
204 HDESK hDesktop)
205 {
206 return NtUserSwitchDesktop(hDesktop);
207 }
208
209 /* EOF */