/****************************************************************************/ // jetrpc.idl // // RPC IDL covering the network interface between the Jet RPC client // tssdjet.dll (a TS Session Directory provider) and the server (dis.exe - // server component). // // Copyright (C) 2000 Microsoft Corporation /****************************************************************************/ // Copied from tssd.h for use here. #define TSSD_MaxDisconnectedSessions 10 // Length of some strings #define TSSD_UserNameLen 256 #define TSSD_DomainLength 128 #define TSSD_ServAddrLen 128 #define TSSD_AppTypeLen 256 #define TSSD_ClusterNameLen 128 #define TSSD_ServerNameLen 128 #define TSSD_MaxStringSize 256 midl_pragma warning( disable: 2466 2467) // The number uuid was generated by UUIDGEN, and // is unique across time and space. This number should // never change for this service. [ uuid(aa177641-fc9b-41bd-80ff-f964a701596f), version(1.0), pointer_default(unique) ] interface TSSDJetRPC { import "wtypes.idl"; typedef [context_handle] void *HCLIENTINFO; typedef [string, max_is(TSSD_MaxStringSize)] WCHAR *TSSD_UserName; typedef [string, max_is(TSSD_MaxStringSize)] WCHAR *TSSD_Domain; typedef [string, max_is(TSSD_MaxStringSize)] WCHAR *TSSD_ServAddr; typedef [string, max_is(TSSD_MaxStringSize)] WCHAR *TSSD_AppType; typedef [range(0,10)] DWORD NumSessions_t; typedef struct { TSSD_ServAddr ServerAddress; DWORD SessionID; DWORD TSProtocol; TSSD_AppType AppType; DWORD ResolutionWidth; DWORD ResolutionHeight; DWORD ColorDepth; DWORD CreateTimeLow; DWORD CreateTimeHigh; DWORD DisconnectTimeLow; DWORD DisconnectTimeHigh; DWORD State; } TSSD_DiscSessInfo; typedef struct { TSSD_UserName UserName; TSSD_Domain Domain; DWORD SessionID; DWORD TSProtocol; TSSD_AppType AppType; DWORD ResolutionWidth; DWORD ResolutionHeight; DWORD ColorDepth; DWORD CreateTimeLow; DWORD CreateTimeHigh; DWORD DisconnectTimeLow; DWORD DisconnectTimeHigh; char State; } TSSD_RepopInfo; DWORD TSSDRpcServerOnline( [in] handle_t Binding, [in, string, max_is(TSSD_MaxStringSize)] WCHAR *ClusterName, // Max 64 chars incl. null. [out] HCLIENTINFO *hCI, [in] DWORD SrvOnlineFlags, [in, out, string] WCHAR ComputerName[TSSD_ServAddrLen], //max 128 chars, return the server name [in, string, max_is(TSSD_MaxStringSize)] WCHAR *ServerIPAddr); // Max 128 chars incl. null. DWORD TSSDRpcServerOffline( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI); DWORD TSSDRpcGetUserDisconnectedSessions( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, [in, string, max_is(TSSD_MaxStringSize)] WCHAR *UserName, // Max 256 chars incl. null. [in, string, max_is(TSSD_MaxStringSize)] WCHAR *Domain, // Max 128 chars incl. null. [in, out, ref] NumSessions_t *pNumSessions, // Max 10 // Pointer to an array of Disconnected session info structures // Note the comma indicates that the size_is applies to the array. [out, size_is(,*pNumSessions)] TSSD_DiscSessInfo **dsi); DWORD TSSDRpcCreateSession( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, [in, string, max_is(TSSD_MaxStringSize)] WCHAR *UserName, // Max 256 chars incl. null. [in, string, max_is(TSSD_MaxStringSize)] WCHAR *Domain, // Max 128 chars incl. null. [in] DWORD SessionID, [in] DWORD TSProtocol, [in, string, max_is(TSSD_MaxStringSize)] WCHAR *AppType, // Max 256 chars incl. null. [in] DWORD ResolutionWidth, [in] DWORD ResolutionHeight, [in] DWORD ColorDepth, [in] DWORD CreateTimeLow, [in] DWORD CreateTimeHigh); DWORD TSSDRpcDeleteSession( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, DWORD SessionID); DWORD TSSDRpcSetSessionDisconnected( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, DWORD SessionID, DWORD DiscTimeLow, DWORD DiscTimeHigh); DWORD TSSDRpcSetSessionReconnected( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, DWORD SessionID, DWORD TSProtocol, DWORD ResWidth, DWORD ResHeight, DWORD ColorDepth); DWORD TSSDRpcSetServerReconnectPending( [in] handle_t Binding, [in, string, max_is(TSSD_MaxStringSize)] WCHAR *ServerAddress, DWORD AlmostTimeLow, DWORD AlmostTimeHigh); DWORD TSSDRpcRepopulateAllSessions( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, [in] DWORD NumSessions, [in, size_is(NumSessions)] TSSD_RepopInfo rpi[]); DWORD TSSDRpcUpdateConfigurationSetting( [in] handle_t Binding, [in, out] HCLIENTINFO *hCI, [in] DWORD dwSetting, [in] DWORD dwSettingLength, [in, size_is(dwSettingLength)] BYTE pbValue[]); DWORD TSSDRpcPingSD( [in] handle_t Binding); } // RPC used to query infomation in the session directory [ uuid(6af13c8b-0844-4c83-9064-1892ba825527), version(1.0), pointer_default(unique) ] interface TSSDQUERYRPC { import "wtypes.idl"; typedef [string] WCHAR *TSSD_ClusterName; typedef [string] WCHAR *TSSD_ServName; typedef struct { WCHAR ClusterName[TSSD_ClusterNameLen]; DWORD NumberOfServers; char SingleSessionMode; } TSSD_ClusterInfo; typedef struct { WCHAR ServerName[TSSD_ServerNameLen]; WCHAR ServerIPAddress[TSSD_ServAddrLen]; WCHAR ClusterName[TSSD_ClusterNameLen]; DWORD NumberOfSessions; char SingleSessionMode; } TSSD_ServerInfo; typedef struct { WCHAR UserName[TSSD_UserNameLen]; WCHAR DomainName[TSSD_DomainLength]; WCHAR ServerName[TSSD_ServerNameLen]; WCHAR ServerIPAddress[TSSD_ServAddrLen]; DWORD SessionID; DWORD TSProtocol; WCHAR ApplicationType[TSSD_AppTypeLen]; DWORD ResolutionWidth; DWORD ResolutionHeight; DWORD ColorDepth; FILETIME CreateTime; FILETIME DisconnectTime; char SessionState; } TSSD_SessionInfo; DWORD TSSDRpcQuerySessionInfoByUserName( [in] handle_t Binding, [in, string] WCHAR *UserName, [in, string] WCHAR *DomainName, [out] DWORD *pNumberOfSessions, [out, size_is(, *pNumberOfSessions)] TSSD_SessionInfo **ppSessionInfo); DWORD TSSDRpcQuerySessionInfoByServer( [in] handle_t Binding, [in, string] WCHAR *ServerName, [out] DWORD *pNumberOfSessions, [out, size_is(, *pNumberOfSessions)] TSSD_SessionInfo **ppSessionInfo); DWORD TSSDRpcQueryServerByName( [in] handle_t Binding, [in, string] WCHAR *ServerName, [out] DWORD *pNumberOfServers, [out, size_is(, *pNumberOfServers)] TSSD_ServerInfo **ppServerInfo); DWORD TSSDRpcQueryAllServers( [in] handle_t Binding, [out] DWORD *pNumberOfServers, [out, size_is(, *pNumberOfServers)] TSSD_ServerInfo **ppServerInfo); DWORD TSSDRpcQueryServersInCluster( [in] handle_t Binding, [in, string] WCHAR *ClusterName, [out] DWORD *pNumberOfServers, [out, size_is(, *pNumberOfServers)] TSSD_ServerInfo **ppServerInfo); DWORD TSSDRpcQueryAllClusterInfo( [in] handle_t Binding, [out] DWORD *pNumberOfClusters, [out, size_is(,*pNumberOfClusters)] TSSD_ClusterInfo **ppClusterInfo); DWORD TSSDRpcQueryClusterInfo( [in] handle_t Binding, [in, string] WCHAR *ClusterName, [out] DWORD *pNumberOfClusters, [out, size_is(,*pNumberOfClusters)] TSSD_ClusterInfo **ppClusterInfo); }