--- branches/TerminalServices/TSAdminTool/TerminalServices.cs 2012/08/25 16:40:35 241 +++ branches/TerminalServices/TSAdminTool/TerminalServices.cs 2012/08/25 16:49:29 242 @@ -290,6 +290,20 @@ public int HorizontalResolution; // horizontal dimensions, in pixels public int VerticalResolution; // vertical dimensions, in pixels public int ColorDepth; // 1=16, 2=256, 4=64K, 8=16M + /// + /// Returns a WTS_CLIENT_DISPLAY instance initialized to default values + /// + public static WTS_CLIENT_DISPLAY Empty + { + get + { + WTS_CLIENT_DISPLAY t = new WTS_CLIENT_DISPLAY(); + t.HorizontalResolution = 0; + t.VerticalResolution = 0; + t.ColorDepth = 0; + return t; + } + } }; // Selected info for terminal server sessions public struct TS_SESSION_INFO @@ -408,22 +422,14 @@ // In: SessionID = identifier for the session // In: server = server handle for the server that the session resides on. private static void GetTSClientDisplay(int sessionID, IntPtr server, out int horizontalResolution, out int verticalResolution, out int colorDepth) - { - horizontalResolution = 0; - verticalResolution = 0; - colorDepth = 0; - + { + WTS_CLIENT_DISPLAY clientDisplay = WTS_CLIENT_DISPLAY.Empty; + horizontalResolution = clientDisplay.HorizontalResolution; + verticalResolution = clientDisplay.VerticalResolution; + colorDepth = clientDisplay.ColorDepth; System.IntPtr ppBuffer = System.IntPtr.Zero; uint pBytesReturned = 0; - StringBuilder sDisplay = new StringBuilder(); - - WTS_CLIENT_DISPLAY clientDisplay = new WTS_CLIENT_DISPLAY(); - clientDisplay.HorizontalResolution = 0; - clientDisplay.VerticalResolution = 0; - clientDisplay.ColorDepth = 0; - - Type dataType = typeof(WTS_CLIENT_DISPLAY); - + StringBuilder sDisplay = new StringBuilder(); if (WTSQuerySessionInformation( server, sessionID, @@ -431,11 +437,13 @@ out ppBuffer, out pBytesReturned)) { - clientDisplay = (WTS_CLIENT_DISPLAY)Marshal.PtrToStructure(ppBuffer, dataType); - horizontalResolution = (int)(clientDisplay.HorizontalResolution); - verticalResolution = (int)(clientDisplay.VerticalResolution); - colorDepth = (int)(clientDisplay.ColorDepth); + clientDisplay = (WTS_CLIENT_DISPLAY)Marshal.PtrToStructure(ppBuffer, typeof(WTS_CLIENT_DISPLAY)); + horizontalResolution = clientDisplay.HorizontalResolution; + verticalResolution = clientDisplay.VerticalResolution; + colorDepth = clientDisplay.ColorDepth; } + LogDebugVerboseMessage("GetTSClientDisplay::server.ToInt32()={0}", server.ToInt32()); + LogDebugVerboseMessage("GetTSClientDisplay::sessionID={0}", sessionID); LogDebugVerboseMessage("GetTSClientDisplay::horizontalResolution={0}", horizontalResolution); LogDebugVerboseMessage("GetTSClientDisplay::verticalResolution={0}", verticalResolution); LogDebugVerboseMessage("GetTSClientDisplay::colorDepth={0}", colorDepth);