ES21 Nadim Abdo Principal Development Manager Microsoft Corporation Gaurav Daga Senior Program Manager Lead Microsoft Corporation.
Download ReportTranscript ES21 Nadim Abdo Principal Development Manager Microsoft Corporation Gaurav Daga Senior Program Manager Lead Microsoft Corporation.
Nadim Abdo Principal Development Manager Microsoft Corporation Gaurav Daga Senior Program Manager Lead Microsoft Corporation ES21
Agenda
Vista and Windows Server 2008 era
Remoting scenarios enabled by RDP
Graphics Virtual Channels (VCs) Mouse & Keyboard VCs Device VCs Partner Virtual Channel Plug-Ins Virtual Channel Multiplexing and Framing Bulk Compression (RDP5+, RDP6.0, RDP6.1) Security Layer (SSL/Kerberos/NTLM) Transport Layer (e.g. TCP, RPC/HTTP, Windows Live Tunnel)
Trends affecting presentation remoting
What is new in Windows 7?
RDP Platform Improvements
Windows 7 Aero Direct2D & Direct 3D 10.1
True Multimon Support RDP Core Performance Improvements Multimedia: Media Foundation Low latency Audio Playback Bi –directional Audio Multimedia: DirectShow
Deep dive into RDP Graphics Architecture
D2D App DX10.1 App DWM DX Runtime RDPD3D.DLL
DWMcore.DLL
TS Dynamic Virtual Channels USER KERNEL Media App TSMF.DLL
GDI App Win32k.sys (USER/GDI) Apps RDP OS RDPDD (Display Driver) RDP Driver Stack Transport: (TCPIP.Sys) To RDP Client
RDP Client Rendering Direct2D Direct 3D: 10.1
Efficient Media Requires: Codecs on Client Content cannot have DRM or licensing GDI RDP Host Rendering WPF Silverlight Flash All other media Direct 3D <10.1
180 160 140 120 100 80 60 40 20 0
Bandwidth Improvement per release
Executive PPT 40% Gain!
XP (RDP 5.2) Vista (RDP 6.0) Windows 7 (RDP 7.0)
1 0 3 2 6 5 4 65% Drop Typing and Scrolling
Bandwidth - Kbps
Scrolling XP (RDP 5.2) Vista (RDP 6.0) Windows 7 (RDP 7.0)
RDP Platform
How to extend RDP API Walkthroughs
API family overview
Intro and usage
Intro and usage
WTSVirtualChannelOpenEx (.., WTS_CHANNEL_OPTION_DYNAMIC) WTSVirtualChannelQuery ReadFile/WriteFile
Client-side usage
HKCU\Software\Microsoft\Terminal Server Client\Default\AddIns pChanMgr->CreateListener(Name, pMyCallback) ::OnNewChannelConnection(pChannel) IWTSVirtualChannel::Write(cbSize, buf) CMyChannel::OnDataReceived(cbSize, buf)
How to make your apps run efficiently in a remote session
Basics
Consider scaling down expensive graphics in remote e.g., Animations Detect if the session is remote: Managed: System.Windows.Forms.SystemInformation.TerminalServerS
ession Win32: GetSystemMetrics(SM_REMOTESESSION) Consider session transitions Leverage RDP Compression GP’s 30-40% bandwidth savings Important to test your app remotely!
GDI
Guidance for offscreen surfaces Layered Windows can be very expensive Do NOT use Screen capture - GetDC(NULL)
Remoting Direct 3D and Direct2D
Use Direct2D – has efficient command remoting Direct3D Apps: Use DX10.1 and DXGI 1.1 (DirectX Graphics Infrastructure) CreateDXGIFactory1(…); pFactory->EnumAdapters1(i, &pAdapter) pAdapter->GetDesc1(&Desc); BOOL IsRemote = Desc.Flags & DXGI_ADAPTER_FLAG_REMOTE; Use the new IsCurrent() API to handle session transitions and discover new adapters Tip: Local optimizations are magnified remotely!
http://blogs.msdn.com/ts http://connect.microsoft.com/tsappcompat http://www.microsoft.com/ts
www.microsoftpdc.com
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.