Revision Summary Date Revision History Revision Class Comments 7/20/2007 0.1 Major MCPP Milestone 5 Initial Availability 9/28/2007 0.2 Minor Made changes to technical and editorial content based on feedback. 10/23/2007 0.3 Minor Made technical and editorial changes based on feedback. 11/30/2007 0.4 Made technical and editorial changes based on feedback. 1/25/2008 1.0 Updated and revised the technical content. 3/14/2008 2.0 IDL and data typing revised. 5/16/2008 2.0.1 Editorial Changed language and formatting in the technical content. 6/20/2008 3.0 Updated and revised the technical content. 7/25/2008 4.0 Updated and revised the
technical content. 8/29/2008 5.0 Major Updated and revised the technical content. 10/24/2008 6.0 Major Updated and revised the technical content. 12/5/2008 7.0 Major Updated and revised the technical content. 1/16/2009 7.1 Clarified the meaning of the technical content. 2/27/2009 8.0 Major Updated and revised the technical content. 4/10/2009 8.1 Minor Clarified the meaning of the technical content. 5/22/2009 8.1.1 Editorial Changed language and formatting in the technical content. 7/2/2009 9.0 Major Updated and revised the technical content. 8/14/2009 9.1 Minor Clarified the meaning of the technical content. 9/25/2009 9.2 Minor Clarified the meaning of the
technical content. 11/6/2009 9.3 Minor Clarified the meaning of the technical content. 12/18/2009 9.4 Minor Clarified the meaning of the technical content. 1/29/2010 9.4.1 Editorial Changed language and formatting in the technical content. 3/12/2010 9.5 Minor Clarified the meaning of the technical content. 4/23/2010 10.0 Major Updated and revised the technical content. 6/4/2010 11.0 Major Updated and revised the technical content. 7/16/2010 12.0 Major Updated and revised the technical content. 8/27/2010 12.0 None No changes to the meaning, language, or formatting of the technical content. 10/8/2010 12.1 Minor Clarified the meaning of the technical content.
or formatting of the technical content. 10/25/2012 18.0 None No changes to the meaning, language, or formatting of the technical content. 1/31/2013 18.0 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 19.0 Major Updated and revised the technical content. 11/14/2013 20.0 Updated and revised the technical content. 2/13/2014 21.0 Major Updated and revised the technical content. 5/15/2014 21.0 None No changes to the meaning, language, or formatting of the technical content. 6/30/2015 22.0 Major Significantly changed the technical content. 10/16/2015 23.0 Major Significantly changed
TermSrv (RCMPublic.idl)<10> { } \PIPE\TermSrv_API_service TermSrv Listener (RCMPublic.idl)<11> { } \PIPE\TermSrv_API_service Legacy (Legacy.idl) { } \PIPE\Ctx_WinStation_API_service TSVIPPublic (TSVIPRpc.idl) \PIPE\TSVIP_Service SessEnvPublicRpc (SessEnvRpc.idl) \PIPE\SessEnvPublicRpc
WTS_NOTIFY_CREATE 0x1 Session creation notification WTS_NOTIFY_CONNECT 0x2 Session connection notification WTS_NOTIFY_DISCONNECT 0x4 Session disconnection notification WTS_NOTIFY_LOGON 0x8 Session logon notification WTS_NOTIFY_LOGOFF 0x10 Session logoff notification WTS_NOTIFY_SHADOW_START 0x20 Session shadow notification WTS_NOTIFY_SHADOW_STOP 0x40 Session shadow stop notification WTS_NOTIFY_TERMINATE 0x80 Session termination notification WTS_NOTIFY_CONSOLE_CONNECT Console session connection notification WTS_NOTIFY_CONSOLE_DISCONNECT 0x200 Console session disconnect notification WTS_NOTIFY_LOCK Session lock notification WTS_NOTIFY_UNLOCK 0x800 Session unlock notification WTS_NOTIFY_ALL 0xffffffff All notifications NOTIFY_HANDLE A handle to a notification object. Used in asynchronous calls such as and . This type is declared as follows: typedef [context_handle] void* NOTIFY_HANDLE;
ClientDirectory: The directory in which the client was installed. ClientLicense: The client's license.<86> ClientModem: The client's modem.<87> ClientBuildNumber: The client's build number. ClientHardwareId: The client-specific hardware identifier. ClientProductId: The client-specific product identifier. OutBufCountHost: The number of output buffers on the host computer. OutBufCountClient: The number of output buffers on the client computer. OutBufLength: The length of the output buffer, in bytes. AudioDriverName: The audio driver's name. ClientTimeZone: The client's time zone.<88> ClientSessionId: The client's session ID.<89> clientDigProductId: The client-specific product ID.<90> PerformanceFlags: Protocol-specific performance flags.<91> It MUST be any bitwise OR combination of the following except TS_PERF_DISABLE_NOTHING. Value Meaning TS_PERF_DISABLE_NOTHING 0x00000000 Disable nothing. TS_PERF_DISABLE_WALLPAPER 0x00000001 Disable wallpaper. TS_PERF_DISABLE_FULLWINDOWDRAG 0x00000002 Disable full window drag animation. TS_PERF_DISABLE_MENUANIMATIONS 0x00000004 Disable menu animations. TS_PERF_DISABLE_THEMING 0x00000008 Disable themes. TS_PERF_ENABLE_ENHANCED_GRAPHICS 0x00000010 Enable enhanced graphics. TS_PERF_DISABLE_CURSOR_SHADOW 0x00000020 Disable cursor shadow. TS_PERF_DISABLE_CURSORSETTINGS 0x00000040 Disable cursor settings. TS_PERF_ENABLE_FONT_SMOOTHING 0x00000080 Enable font smoothing.<92> TS_PERF_ENABLE_DESKTOP_COMPOSITION 0x00000100 Enable desktop composition.<93>
} RECEIVEFLOWCONTROLCLASS; ReceiveFlowControl_None: No receive flow control currently. ReceiveFlowControl_RTS: Receive flow control Request to Send (RTS). ReceiveFlowControl_DTR: Receive flow control Data Terminal Ready (DTR). TRANSMITFLOWCONTROLCLASS The TRANSMITFLOWCONTROLCLASS enumeration specifies if any, means of transit flow control is supported. typedef enum _TRANSMITFLOWCONTROLCLASS { TransmitFlowControl_None, TransmitFlowControl_CTS, TransmitFlowControl_DSR, } TRANSMITFLOWCONTROLCLASS; TransmitFlowControl_None: No transmit flow control currently. TransmitFlowControl_CTS: Transmit flow control Clear to Send (CTS). TransmitFlowControl_DSR: Transmit flow control Data Set Ready (DSR). CONNECTCONFIG The CONNECTCONFIG structure specifies connectivity parameters. typedef struct _CONNECTCONFIG { ASYNCCONNECTCLASS Type; ULONG fEnableBreakDisconnect :1; } CONNECTCONFIG, *PCONNECTCONFIG; Type: Type of asynchronous connection. This is not used. fEnableBreakDisconnect: If TRUE, enable disconnect. ASYNCCONNECTCLASS The ASYNCCONNECTCLASS enumeration is not used. typedef enum _ASYNCCONNECTCLASS { Connect_CTS, Connect_DSR, Connect_RI, Connect_DCD, Connect_FirstChar, Connect_Perm, } ASYNCCONNECTCLASS; NASICONFIG The NASICONFIG structure determines the data type of NASICONFIG.
PdDLL: The driver's image name. PdFlag: Driver flags MUST be any bitwise OR combination of the following values: Value Meaning PD_UNUSED 0x00000001 Unused. PD_RELIABLE 0x00000002 Error-free protocol. PD_FRAME 0x00000004 Frame-oriented protocol. PD_CONNECTION 0x00000008 Connection-oriented protocol. PD_CONSOLE 0x00000010 Directly connected console. PD_LANA 0x00000020 Network class uses LANAs (NetBIOS). PD_TRANSPORT 0x00000040 Transport driver (lowest level). PD_SINGLE_INST 0x00000080 Single instance only (async). PD_NOLOW_WATERMARK 0x00000100 Low water mark to resume transmission. OutBufLength: Optimal output buffers length, in bytes. OutBufCount: Optimal number of output buffers. OutBufDelay: Write delay, in milliseconds. InteractiveDelay: Write delay during active input. PortNumber: Network listen port number. KeepAliveTimeout: Frequency to send keep-alives, in milliseconds. PDNAME The protocol driver name (PDNAME) data type. typedef PDNAME[PDNAME_LENGTH + 1]; typedef PPDNAME; WDCONFIG The WinStation (session) driver configuration.<98> typedef struct _WDCONFIG { WDNAME WdName;
0xffffffff TraceEnable: Type of tracing calls log. It MUST be a bitwise OR combination of one or more of the following values. Value Meaning TT_API1 0x00000001 API level 1. TT_API2 0x00000002 API level 2. TT_API3 0x00000004 API level 3. TT_API4 0x00000008 API level 4. TT_OUT1 0x00000010 Output level 1. TT_OUT2 0x00000020 Output level 2. TT_OUT3 0x00000040 Output level 3. TT_OUT4 0x00000080 Output level 4. TT_IN1 0x00000100 Input level 1. TT_IN2 0x00000200 Input level 2. TT_IN3 0x00000400 Input level 3. TT_IN4 0x00000800 Input level 4. TT_ORAW 0x00001000 Raw output data. TT_IRAW 0x00002000 Raw input data. TT_OCOOK 0x00004000 Cooked output data. TT_ICOOK 0x00008000 Cooked data. TT_SEM Semaphores.
This attribute specifies a home drive for the user. In a network environment, this property is a string containing a drive specification (a drive letter followed by a colon) to which the UNC path specified in the TerminalServicesCtxWFHomeDir property is mapped. To set a home directory in a network environment, the implementer MUST first set this property, and then set the CtxWFHomeDir property. Returned by the RpcGetConfigData method in the WFHomeDirDrive field of the USERCONFIG structure. This attribute specifies the path and file name of the application that the user requires to start automatically when the user logs on to the terminal server. To set an initial application to start when the user logs on, the implementer MUST first set this property, and then set the CtxWorkDirectory property. If the implementer sets only the CtxInitialProgram property, the application starts in the user's session in the default user directory. Returned by the RpcGetConfigData method in the InitialProgram field of the USERCONFIG structure. This attribute specifies the maximum duration (in minutes) of the Terminal Services session. the specified number of minutes has elapsed, the session can be disconnected or terminated. Returned by the RpcGetConfigData method in the MaxConnectionTime field of the USERCONFIG structure. This attribute specifies the maximum amount of time (in minutes) that a disconnected Terminal Services session remains active on the terminal server. After the specified number of minutes has elapsed, the session is terminated. Returned by the RpcGetConfigData method in the MaxDisconnectionTime field of the USERCONFIG structure. This attribute specifies the maximum amount of time (in minutes) that the Terminal Services session can remain idle. After the specified number of minutes has elapsed, the session can be disconnected or terminated. Returned by the RpcGetConfigData method in the MaxIdleTime field of the USERCONFIG structure. This attribute specifies a roaming or mandatory profile path to use when the user logs on to the terminal server. The profile path is in the following network path format: \\servername\profiles folder name\username. Returned by the RpcGetConfigData method in the WFProfilePath field of the USERCONFIG structure.
MYDESKTOP_FARM (1): This desktop type means virtual machine belongs to a collection of virtual machines, where a single virtual machine can be assign to the user. MYDESKTOP_NONFARM (2): Reserved for future use. The plugin property describes the plugin used by the connection broker to process the connection request. The only supported value is "vmresource". For example, if machine LaBigMac.PulpFiction.com is assigned to user VincentVega, the msTSProperty01 attribute of this user object will have the following strings: machine=LaBigMac.PulpFiction.com vmname=LaBigMac.PulpFiction.com vmtye=2 plugin=vmresource
ULONG WaitTime; PVOID StartAddress; CLIENT_ID ClientId; LONG Priority; LONG BasePriority; ULONG ContextSwitches; ULONG ThreadState; ULONG WaitReason; } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; #ifdef __cplusplus } #endif Appendix A.7: allproc.h For ease of implementation, the full header file is provided. #ifndef TS_ALLPROC_ALREADY_SET #define TS_ALLPROC_ALREADY_SET #ifdef __midl cpp_quote( "#define TS_PROCESS_INFO_MAGIC_NT4 0x23495452" ) #else #define TS_PROCESS_INFO_MAGIC_NT4 0x23495452 #endif typedef struct _TS_PROCESS_INFORMATION_NT4 { ULONG MagicNumber; ULONG LogonId; PVOID ProcessSid; ULONG Pad; } TS_PROCESS_INFORMATION_NT4, * PTS_PROCESS_INFORMATION_NT4; // sizes of TS4.0 structures (size has changed in Windows 2000) #ifdef __midl cpp_quote( "#define SIZEOF_TS4_SYSTEM_THREAD_INFORMATION 64" ) cpp_quote( "#define SIZEOF_TS4_SYSTEM_PROCESS_INFORMATION 136" ) #else #define SIZEOF_TS4_SYSTEM_THREAD_INFORMATION 64 #define SIZEOF_TS4_SYSTEM_PROCESS_INFORMATION 136 #endif #ifdef __midl cpp_quote( "#define GAP_LEVEL_BASIC 0" ) #else #define GAP_LEVEL_BASIC 0 #endif typedef struct _TS_UNICODE_STRING { USHORT Length; USHORT MaximumLength;
Protocol syntax refers to data elements (such as packets, structures, enumerations, and methods) as well as interfaces. Protocol revision refers to changes made to a protocol that affect the bits that are sent over the wire. The changes made to this document are listed in the following table. For more information, please contact . Section Tracking number (if applicable) and description Major change (Y or N) Change type DLLNAME 2110 : Revised description. N Content update. DEVICENAME 2110 : Revised description. N Content update. SHADOWCLASS 2110 : Removed enum values. N Content update. CLIENTDATANAME 2110 : Revised description. N Content update. UINT_PTR Clarified that UINT_PTR is an unsigned integer. Y Content update. SESSIONTYPE 2110 : Added enum name to code snippet. N Content update. EXECENVDATAEX_LEVEL1 2110 : Corrected status name _EXECENVDATA_LEVEL to _EXECENVDATAEX_LEVELt. N Content update. TS_UNICODE_STRING 2110 : Updated code snippet for consistency with IDL file in appendix A.7 N Content update. TS_ALL_PROCESSES_INFO_NT6 2110 : Updated code snippet for consistency with IDL file in appendix A.7 N Content update. NT6_TS_UNICODE_STRING 2110 : Updated code snippet for consistency with IDL file in appendix A.7 N Content update. SYSTEM_THREAD_INFORMATION 2110 : struct name. N Content update. CLIENT_ID 2110 : struct name. N Content update. TS_COUNTER_HEADER 2110 : Revised description. Fixed spelling in code snippet. N Content update. USERCONFIG 2110 : Revised description and code snippet. N Content update.
CALLBACKCLASS 2110 : Revised description. N Content update. RECEIVEFLOWCONTROLCLASS 2110 : Revised description. N Content update. NASICONFIG 2110 : Revised description. N Content update. CDCONFIG 2110 : Revised description. N Content update. CDCLASS 2110 : Revised description. N Content update. WINSTATIONCREATE 2110 : Revised description. N Content update. WINSTATIONCONFIG2 2110 : Revised description N Content update. POLICY_TS_MACHINE 2110 : Revised description, mainly formatting changes. N Content update. WINSTATIONSHADOW 2110 : Revised description. N Content update. SHADOWSTATECLASS 2110 : Revised description, removed values from enum. N Content update. WINSTATIONPRODID 2110 : Revised description. N Content update. RCM_REMOTEADDRESS 2110 : Updated code snippet for consistency with IDL file in appendix A : union switch (sin_family) --> union switch (USHORT sin_family) N Content update. CLIENT_STACK_ADDRESS 2110 : Updated code snippet for consistency with IDL file in appendix A : struct _SESSION_CHANGE --> struct _CLIENT_STACK_ADDRESS N Content update. WINSTACONFIGWIRE 2110 : Updated code snippet for consistency with IDL file in appendix A : CHAR ---> char N Content update. TSVIP_SOCKADDR 2110 : Updated code snippet for consistency with IDL file in appendix A : Added missing conditional blocks. N Content update.
TSVIPAddress 2110 : Updated code snippet for consistency with IDL file in appendix A : Added missing conditional blocks. N Content update. WINSTATIONPRODUCTINFO 2110 : Updated code snippet for consistency with IDL file in appendix A : added arrray indexes to CompanyName and ProductID. N Content update. 2.2.2.52 WINSTATIONPRODUCTINFO 2110 : Updated code snippet for consistency with IDL file in appendix A : added arrray indexes to CompanyName and ProductID. N Content update. RpcGetSessionCounters (Opnum 11) 2110 : Updated code snippet for consistency with IDL file in appendix A : TS_COUNTER --> PTS_COUNTER. N Content update. RpcGetSessionIP 0) 2110 : Updated code snippet for consistency with IDL file in appendix A : unsigned Family USHORT Family N Content update.
Index A Abstract data client ( 95, 119, 131) 131 95 119 175 server ( 95, 119, 131) 131 95 119 176 94 16 207 59 62 B 80 C 57 48 94 16 66 66 243 Client abstract data model ( 95, 119, 131) initialization ( 95, 119, 131) legacy 131 131 131 131 131 131 131 local events ( 95, 119, 131) session manager 95 95 95 95 95 95 95 131 131 TermSrv 119 119 119 119 119 119 119 timer events ( 95, 119, 131) timers ( 95, 119, 131) virtual IP 175 175 176 176 176 176 175 43 82 17 61 D Data model - abstract client ( 95, 119, 131) 131 95 119 175 server ( 95, 119, 131) 131 95 119 176 Data types 17 27 189 94 86 E 86 189 189 Events local 131 175 95 119 119 131 176 177 - client ( 95, 119, 131) local - server ( 119, 131, 175) timer 131 175 95 119 119 130 176
115 113 125 117 118 122 123 114 116 124 107 123 124 106 116 106 108 177 125 107 103 102 105 126 102 140 130 103 102 151 112 128 99 127 110 178 104 130 129 111 110 109 159 171 140 169 152 153 141 161 163 173 166 171 164 165 170 152 139 174 143 160 166 142 154 149 147 158 168 155 162 167 156 S 86 22 Security 191 191 Sequencing rules 131 131 95 119 176 server ( 121, 134) 134 98 121 176 Server abstract data model ( 95, 119, 131) initialization ( 98, 121, 134) legacy 131 134 175 134 134 175 134 134 local events ( 119, 131, 175) local session manager 95 98 119 98 98 119 98 message processing ( 121, 134) 128 121 sequencing rules ( 121, 134) TermSrv 119 121 131 121 121 130 121 timer events ( 119, 130, 175) timers ( 98, 121, 134) virtual IP 176 176
177 176 176 177 176 81 27 28 30 29 29 29 37 25 25 26 26 22 76 16 27 42 T 182 182 TermSrv client 119 119 119 119 119 119 119 TermSrv server 119 121 131 121 121 130 121 184 184 58 Timer events client ( 95, 119, 131) 131 95 119 176 server ( 119, 130, 175) 175 119 130 177 Timers client ( 95, 119, 131) 131 95 119 175 server ( 98, 121, 134) 134 98 121 176 243 61 17 38 40 43 44 38 38 41 53 52 78 40 58 57 88 83 84 85 U 45 87 V 82 16 16 Virtual IP client 175 175 176 176 176 176 175 Virtual IP server 176 176 177 176 176 177 176 W 65 83 49 81 67 67 67 19 54 74 76 86