Dedications |
|
iii | (14) |
Acknowledgments |
|
xvii | (2) |
Introduction |
|
xix | |
Part I Introduction to Windows NT Server 4.0, Terminal Server Edition |
|
3 | (56) |
|
1 Core Component Differences Between Windows NT 4.0 and Windows NT Server 4.0, Terminal Server Edition |
|
|
3 | (18) |
|
Overview of Windows NT Structure |
|
|
4 | (1) |
|
Terminal Server Components |
|
|
4 | (16) |
|
|
4 | (2) |
|
Security Reference Monitor |
|
|
6 | (1) |
|
Window Manager and Graphics Device Interface (GDI) |
|
|
6 | (1) |
|
|
6 | (6) |
|
|
12 | (4) |
|
Copy-on-Write Page Protection |
|
|
16 | (1) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
2 New Component Architecture In Terminal Server |
|
|
21 | (10) |
|
The New Terminal Server Service |
|
|
21 | (1) |
|
Terminal Server Initialization Process |
|
|
21 | (2) |
|
Loading the Console Session |
|
|
22 | (1) |
|
Initializing Idle Sessions |
|
|
22 | (1) |
|
Display Protocol Listening Thread |
|
|
23 | (1) |
|
Session Initialization and User Authentication |
|
|
23 | (3) |
|
Loading the RDP Display Driver |
|
|
24 | (1) |
|
Creating WindowStation Objects |
|
|
24 | (1) |
|
|
24 | (1) |
|
|
24 | (1) |
|
SessionId and Access Tokens |
|
|
25 | (1) |
|
Windows Desktop Initialization |
|
|
25 | (1) |
|
|
26 | (1) |
|
|
26 | (2) |
|
Displaying the Disconnect Menu Option |
|
|
27 | (1) |
|
New DISCONNECT Desktop Object |
|
|
27 | (1) |
|
|
28 | (1) |
|
Locating the Disconnected Session |
|
|
28 | (1) |
|
Reconnecting to a Disconnected Session |
|
|
29 | (1) |
|
|
29 | (1) |
|
|
29 | (1) |
|
|
30 | (1) |
|
3 Inside the Microsoft Remote Desktop Protocol |
|
|
31 | (14) |
|
Remote Desktop Protocol (RDP) Overview |
|
|
31 | (5) |
|
RDP Architecture and Components |
|
|
32 | (1) |
|
RDP User-Mode Protocol Extension (RDPWSX) |
|
|
32 | (1) |
|
Terminal Server Device Driver (TERMDD) |
|
|
33 | (2) |
|
Remote Desktop Protocol Display Driver (RDPDD) |
|
|
35 | (1) |
|
Remote Desktop Protocol WinStation Driver (RDPWD) |
|
|
35 | (1) |
|
TCP/IP Transport Driver (TDTCP) |
|
|
35 | (1) |
|
Establishing Sessions and Transmitting Data |
|
|
36 | (5) |
|
|
36 | (2) |
|
|
38 | (1) |
|
|
39 | (2) |
|
Sending and Receiving RDP Data |
|
|
41 | (1) |
|
How Does RDP Display Images? |
|
|
41 | (3) |
|
Interpreting Windows Drawing Commands |
|
|
41 | (1) |
|
Drawing a Simple Windows Dialog Box |
|
|
42 | (1) |
|
Intelligent Encoding Techniques |
|
|
43 | (1) |
|
|
43 | (1) |
|
Screen-to-Screen Transfers |
|
|
43 | (1) |
|
|
44 | (1) |
|
4 Inside the Remote Desktop Protocol (RDP) Client Architecture |
|
|
45 | (14) |
|
Terminal Server Client Overview |
|
|
45 | (1) |
|
Supported Client Platforms |
|
|
46 | (1) |
|
Terminal Server Client Design Goals |
|
|
46 | (1) |
|
Win32 and Win16 Client Differences |
|
|
46 | (1) |
|
Terminal Server Client Components |
|
|
46 | (2) |
|
Terminal Server Client Architecture |
|
|
48 | (2) |
|
|
48 | (1) |
|
|
48 | (1) |
|
|
48 | (2) |
|
Client Connection Scenario |
|
|
50 | (2) |
|
|
50 | (1) |
|
|
50 | (1) |
|
|
51 | (1) |
|
Sending Mouse and Keyboard Input Packets |
|
|
51 | (1) |
|
Receiving Display Update Packets |
|
|
51 | (1) |
|
Terminal Server Client Encryption |
|
|
52 | (1) |
|
RDP Caching Techniques: Bitmap and Glyph Cache |
|
|
52 | (3) |
|
|
52 | (1) |
|
|
53 | (1) |
|
|
53 | (2) |
|
RDP Caching Techniques: Shadow Screen Cache |
|
|
55 | (1) |
|
Shadow Screen Caching on the Desktop |
|
|
55 | (1) |
|
Shadow Screen Caching in Applications |
|
|
56 | (1) |
|
|
56 | (3) |
Part II Performance Testing and Capacity Planning with Terminal Server |
|
59 | (40) |
|
5 Fundamentals of Terminal Server Performance Testing |
|
|
59 | (12) |
|
Why Test System Performance? |
|
|
59 | (2) |
|
System Reliability and Availability |
|
|
60 | (1) |
|
|
61 | (1) |
|
Making Performance Testing a Success |
|
|
61 | (6) |
|
|
62 | (1) |
|
Defining the Test Environment |
|
|
63 | (1) |
|
User Simulation Methods and Tools |
|
|
63 | (4) |
|
|
67 | (1) |
|
|
68 | (1) |
|
|
69 | (2) |
|
6 Preparing to Test Terminal Server |
|
|
71 | (10) |
|
|
71 | (2) |
|
|
71 | (1) |
|
|
72 | (1) |
|
|
73 | (1) |
|
|
74 | (1) |
|
Data Collection and Analysis |
|
|
74 | (5) |
|
Performance Counters Monitored |
|
|
75 | (1) |
|
Additional Counters Monitored |
|
|
76 | (1) |
|
Analyzing and Presenting Test Results |
|
|
77 | (2) |
|
|
79 | (2) |
|
7 Testing Terminal Server |
|
|
81 | (18) |
|
|
82 | (1) |
|
|
83 | (6) |
|
Test Infrastructure and Environment |
|
|
84 | (2) |
|
Configuration of Test Terminal Server Systems |
|
|
86 | (1) |
|
|
86 | (1) |
|
|
86 | (2) |
|
|
88 | (1) |
|
|
89 | (5) |
|
|
89 | (2) |
|
|
91 | (1) |
|
|
92 | (1) |
|
|
93 | (1) |
|
|
93 | (1) |
|
|
94 | (1) |
|
|
94 | (1) |
|
Terminal Server Planning Recommendations |
|
|
94 | (2) |
|
|
95 | (1) |
|
Key Performance Indicators |
|
|
96 | (1) |
|
|
96 | (3) |
Part III Preparing to Deploy Terminal Server |
|
99 | (66) |
|
8 Terminal Server Configuration and Administration Tools |
|
|
99 | (24) |
|
Terminal Server Connection Configuration |
|
|
99 | (8) |
|
Advanced Connection Settings |
|
|
100 | (4) |
|
Connection Permissions Menu |
|
|
104 | (3) |
|
Terminal Server User Manager |
|
|
107 | (6) |
|
|
107 | (4) |
|
NetWare Logon Configuration |
|
|
111 | (1) |
|
|
112 | (1) |
|
Terminal Server Administration |
|
|
113 | (4) |
|
NetWare User Access for Terminal Server |
|
|
117 | (1) |
|
|
118 | (2) |
|
Terminal Server Client Creator |
|
|
120 | (1) |
|
Terminal Server License Manager |
|
|
120 | (2) |
|
Windows NT Workstation License |
|
|
120 | (1) |
|
Client Access License for the Server |
|
|
120 | (1) |
|
|
121 | (1) |
|
|
122 | (1) |
|
9 Preparing for Deployment |
|
|
123 | (8) |
|
Understanding and Documenting the Existing Environment |
|
|
123 | (7) |
|
|
124 | (2) |
|
|
126 | (1) |
|
|
127 | (1) |
|
|
128 | (2) |
|
|
130 | (1) |
|
|
130 | (1) |
|
10 Planning for Terminal Server Deployment |
|
|
131 | (34) |
|
|
131 | (9) |
|
|
133 | (3) |
|
|
136 | (4) |
|
Designing for Remote Access |
|
|
140 | (2) |
|
|
142 | (4) |
|
|
142 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
144 | (2) |
|
|
146 | (6) |
|
|
146 | (1) |
|
|
146 | (1) |
|
|
147 | (1) |
|
|
147 | (1) |
|
|
147 | (1) |
|
|
148 | (1) |
|
|
149 | (1) |
|
|
149 | (1) |
|
|
150 | (1) |
|
|
151 | (1) |
|
|
151 | (1) |
|
|
152 | (1) |
|
|
152 | (3) |
|
|
152 | (1) |
|
|
152 | (1) |
|
|
152 | (2) |
|
|
154 | (1) |
|
|
154 | (1) |
|
|
154 | (1) |
|
|
154 | (1) |
|
|
155 | (1) |
|
|
155 | (1) |
|
|
155 | (1) |
|
|
156 | (1) |
|
|
156 | (1) |
|
Printing from Terminal Server |
|
|
156 | (2) |
|
|
158 | (3) |
|
|
158 | (1) |
|
Mapping Local Drives and Resources |
|
|
159 | (1) |
|
Using Disconnect Sessions |
|
|
160 | (1) |
|
Modifying Blinking Cursors |
|
|
160 | (1) |
|
|
160 | (1) |
|
Limiting MS-DOS Applications |
|
|
160 | (1) |
|
Learning System Key Sequences |
|
|
160 | (1) |
|
|
161 | (4) |
Part IV Using Applications in a Terminal Server Environment |
|
165 | (26) |
|
11 Application Design, Troubleshooting, and Optimization |
|
|
165 | (18) |
|
|
165 | (1) |
|
How Applications Work in Terminal Server |
|
|
166 | (1) |
|
Why Applications Fail in a Multi-User Environment |
|
|
167 | (7) |
|
|
168 | (1) |
|
|
169 | (4) |
|
|
173 | (1) |
|
Application Design and Optimization Considerations |
|
|
174 | (4) |
|
Disallow Multiple Instances of Some Applications |
|
|
174 | (1) |
|
Use File and Database Locking |
|
|
174 | (1) |
|
|
175 | (1) |
|
Do Not Assume a Computer Name or IP Address Equates to a Single User |
|
|
175 | (1) |
|
Do Not Assume the Windows Shell Is Running |
|
|
175 | (1) |
|
Do Not Assume Persistence of Files in the Temp Directory |
|
|
175 | (1) |
|
|
176 | (1) |
|
Do Not Replace System Files |
|
|
176 | (1) |
|
Negotiate Client/Server Connections Inside the System and on the Network |
|
|
176 | (1) |
|
Support Customization Through User Profiles |
|
|
176 | (1) |
|
Consider Multilingual and International Usage Scenarios |
|
|
177 | (1) |
|
Consider the Peripheral Hardware Environment |
|
|
177 | (1) |
|
|
178 | (2) |
|
Tune Background Task Resource Consumption |
|
|
178 | (1) |
|
|
178 | (1) |
|
Minimize Splash Screen Usage |
|
|
178 | (1) |
|
Minimize the Use of Animation |
|
|
179 | (1) |
|
Minimize Direct Video Access |
|
|
179 | (1) |
|
Move User Input Routines to Foreground Applications |
|
|
179 | (1) |
|
Enable Application Access for All Users |
|
|
179 | (1) |
|
Enumerate System Resources |
|
|
180 | (1) |
|
Use Classes Where Possible |
|
|
180 | (1) |
|
Limitations in DCOM Support |
|
|
180 | (1) |
|
|
181 | (2) |
|
12 Application Compatibility Scripts |
|
|
183 | (8) |
|
|
183 | (1) |
|
What Are the Two Types of ACSs? |
|
|
184 | (1) |
|
|
184 | (1) |
|
|
184 | (1) |
|
How Do ACSs Modify Paths to Point to Home Directories? |
|
|
184 | (3) |
|
Modifying Paths Using ACSs |
|
|
185 | (2) |
|
What Is the Process for Using ACSs? |
|
|
187 | (1) |
|
|
187 | (1) |
|
|
188 | (3) |
Part V The Future of Terminal Server |
|
191 | (32) |
|
13 Future Enhancements to Terminal Server |
|
|
191 | (32) |
|
Terminal Server Changes with Service Pack 4 |
|
|
191 | (6) |
|
Terminal Services Application Programming Interface (API) |
|
|
192 | (2) |
|
|
194 | (1) |
|
Virtual Circuit Enhancement |
|
|
195 | (2) |
|
Terminal Services in Microsoft Windows 2000 |
|
|
197 | (22) |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
200 | (1) |
|
Support for All DCOM Activation Modes |
|
|
201 | (2) |
|
Application Programming Interfaces |
|
|
203 | (1) |
|
|
203 | (1) |
|
Enforced Terminal Server Licensing |
|
|
204 | (1) |
|
Terminal Services Remote Administration Mode |
|
|
205 | (2) |
|
|
207 | (12) |
|
|
219 | (4) |
Part VI Appendixes |
|
223 | (156) |
|
A Error Codes for the Terminal Server Client |
|
|
223 | (6) |
|
Disconnection Error Codes |
|
|
223 | (4) |
|
|
227 | (2) |
|
B New Performance Monitor Objects and Counters |
|
|
229 | (12) |
|
OBJECT: PROCESS (Existing object) |
|
|
229 | (1) |
|
OBJECT: SESSION (New object) |
|
|
229 | (7) |
|
OBJECT: SYSTEM (Existing object) |
|
|
236 | (1) |
|
|
237 | (4) |
|
C Terminal Server Command Utilities |
|
|
241 | (32) |
|
|
241 | (1) |
|
|
241 | (1) |
|
|
242 | (3) |
|
change [logon | port | user] [/?] |
|
|
242 | (3) |
|
|
245 | (2) |
|
|
247 | (1) |
|
|
248 | (1) |
|
|
249 | (1) |
|
|
250 | (1) |
|
|
251 | (4) |
|
|
255 | (2) |
|
|
257 | (1) |
|
|
258 | (1) |
|
|
259 | (1) |
|
|
260 | (2) |
|
|
262 | (1) |
|
|
263 | (1) |
|
|
264 | (1) |
|
|
265 | (8) |
|
D Application Compatibility Flags |
|
|
273 | (2) |
|
E Additional Automation Tools for Scripts in Terminal Server |
|
|
275 | (10) |
|
|
275 | (2) |
|
|
275 | (1) |
|
Detailed Information on Command Line Options |
|
|
276 | (1) |
|
|
276 | (1) |
|
|
277 | (1) |
|
|
277 | (1) |
|
|
277 | (1) |
|
|
278 | (1) |
|
|
278 | (1) |
|
Detailed Information on Command Line Options |
|
|
278 | (1) |
|
|
279 | (1) |
|
|
279 | (1) |
|
Detailed Information on Command Line Options |
|
|
279 | (1) |
|
|
279 | (1) |
|
|
280 | (1) |
|
|
280 | (1) |
|
Detailed Information on Command Line Options |
|
|
280 | (1) |
|
|
280 | (1) |
|
|
281 | (4) |
|
|
281 | (1) |
|
Detailed Information on Command Line Options |
|
|
281 | (1) |
|
|
281 | (3) |
|
|
284 | (1) |
|
F Terminal Server Performance Testing Scripts |
|
|
285 | (16) |
|
|
285 | (3) |
|
|
286 | (1) |
|
LOB Application: Load and Data Entry |
|
|
287 | (1) |
|
LOB Application: Switch and Search |
|
|
287 | (1) |
|
LOB Application: Repeat and Print |
|
|
287 | (1) |
|
|
288 | (5) |
|
|
288 | (1) |
|
Outlook: Sending a Message |
|
|
289 | (1) |
|
|
290 | (1) |
|
|
291 | (1) |
|
Outlook: Reading a Message |
|
|
291 | (2) |
|
|
293 | (8) |
|
|
293 | (1) |
|
|
294 | (1) |
|
Outlook: Sending a Message |
|
|
294 | (1) |
|
|
295 | (1) |
|
|
296 | (1) |
|
|
297 | (1) |
|
Excel: Creating a Spreadsheet and a Graph |
|
|
298 | (1) |
|
Outlook: Reading a Mail Message and Responding |
|
|
299 | (2) |
|
G Windows NT Terminal Server and Windows 2000 Terminal Services Advanced Programming Interfaces (APIs) |
|
|
301 | (60) |
|
Terminal Server API Functions |
|
|
301 | (43) |
|
|
301 | (2) |
|
|
303 | (1) |
|
|
304 | (1) |
|
|
305 | (2) |
|
|
307 | (2) |
|
|
309 | (2) |
|
|
311 | (2) |
|
|
313 | (2) |
|
|
315 | (1) |
|
|
316 | (1) |
|
|
317 | (1) |
|
|
318 | (1) |
|
|
319 | (1) |
|
|
320 | (1) |
|
|
321 | (1) |
|
WTSQuerySessionInformation |
|
|
322 | (3) |
|
|
325 | (2) |
|
|
327 | (2) |
|
|
329 | (2) |
|
|
331 | (2) |
|
|
333 | (1) |
|
|
334 | (1) |
|
|
335 | (1) |
|
WTSVirtualChannelPurgeInput |
|
|
336 | (1) |
|
WTSVirtualChannelPurgeOutput |
|
|
337 | (1) |
|
|
338 | (1) |
|
|
339 | (2) |
|
|
341 | (1) |
|
|
342 | (2) |
|
Terminal Services API Functions |
|
|
344 | (8) |
|
|
344 | (2) |
|
|
346 | (1) |
|
|
347 | (1) |
|
|
348 | (1) |
|
|
349 | (1) |
|
|
350 | (1) |
|
|
351 | (1) |
|
Terminal Services API Enumeration Types |
|
|
352 | (9) |
|
|
352 | (5) |
|
|
357 | (1) |
|
|
358 | (1) |
|
|
359 | (2) |
|
H Sample Application Compatibility Scripts (ACSs) |
|
|
361 | (18) |
|
|
361 | (3) |
|
|
364 | (2) |
|
USRLOGN1.CMD and USRLOGN2.CMD |
|
|
366 | (1) |
|
|
367 | (1) |
|
|
368 | (2) |
|
|
370 | (1) |
|
|
371 | (4) |
|
|
375 | (3) |
|
|
378 | (1) |
Index |
|
379 | |