3.7.4.1.6 RpcWinStationQueryInformation (Opnum 5)
The RpcWinStationQueryInformation method retrieves various types of configuration information on a session. The caller MUST have the WINSTATION_QUERY permission right as well as specific permission rights for some operations as indicated in the following sections. The method checks whether the caller has WINSTATION_QUERY permission and the specific permission required for some operations (section 3.1.1) by setting it as the Access Request mask, and fails if the caller does not have the permission.<162>
BOOLEAN RpcWinStationQueryInformation(
[in] SERVER_HANDLE hServer,
[out] DWORD* pResult,
[in] DWORD LogonId,
[in] DWORD WinStationInformationClass,
[in, out, unique, size_is(WinStationInformationLength)]
PCHAR pWinStationInformation,
[in, range(0, 0x8000)] DWORD WinStationInformationLength,
[out] DWORD* pReturnLength
);
-
hServer: Handle to the server object. This is of type SERVER_HANDLE. hServer MUST be obtained from a previous call to RpcWinStationOpenServer.
-
pResult: Failure error code if the call to RpcWinStationQueryInformation failed. If the call was successful, this parameter MUST be STATUS_SUCCESS (0x00000000).
-
Value Meaning STATUS_SUCCESS
0x00000000Successful completion.
STATUS_INVALID_INFO_CLASS
0xC0000003The class is not recognized.
STATUS_BUFFER_TOO_SMALL
0xC0000023WinStationInformationLength is too small.
STATUS_ACCESS_DENIED
0xC0000022The caller does not have permission for the operation.
-
LogonId: The session ID of the session for which to retrieve information.
-
WinStationInformationClass: The class of data to retrieve. These values come from the enum type WINSTATIONINFOCLASS.
The following classes are supported.
-
Value Meaning WinStationCreateData
0Retrieves general information on the type of terminal server session (protocol) to which the session belongs.
The pWinStationInformation argument points to a WINSTATIONCREATE structure, and WinStationInformationLength MUST be sizeof(WINSTATIONCREATE).<163>
WinStationConfiguration
1Retrieves general configuration data on the terminal server session.
The pWinStationInformation argument points to a WINSTACONFIGWIRE structure followed by a USERCONFIG structure. The WinStationInformationLength MUST be sizeof(WINSTACONFIGWIRE) + sizeof(USERCONFIG). The Size field in the USERCONFIG structure inside WINSTACONFIGWIRE MUST be set to sizeof(USERCONFIG) and the Offset set to sizeof(WINSTACONFIGWIRE). The Size field in the NewFields structure inside WINSTACONFIGWIRE MUST be set to 0, and the offset MUST be set to sizeof(WINSTACONFIGWIRE) + sizeof(USERCONFIG).
WinStationPdParams
2Retrieves transport protocol driver parameters.<164> The structure coming into the function indicates via SDClass the specific protocol driver on which to receive parameter information. The result will be returned in the union in the structure.
The pWinStationInformation argument points to a PDPARAMSWIRE structure followed by a PDPARAMS structure. The WinStationInformationLength MUST be sizeof(PDPARAMSWIRE) + sizeof(PDPARAMS). The Size field in SdClassSpecific field inside PDPARAMSWIRE MUST be set to sizeof(PDPARAMS) and the offset MUST be set to sizeof(PDPARAMSWIRE).
WinStationWd
3Retrieves WinStation protocol driver configuration data for the session.<165>
The pWinStationInformation argument points to a VARDATA_WIRE structure followed by a WDCONFIG structure. The WinStationInformationLength MUST be sizeof(VARDATA_WIRE) + sizeof(WDCONFIG). The Size field in the VARDATA_WIRE structure MUST be set to sizeof(WDCONFIG) and the Offset set to sizeof(VARDATA_WIRE).
WinStationPd
4Retrieves transport protocol driver configuration data for the session.<166>
The pWinStationInformation argument points to a VARDATA_WIRE, followed by a PDPARAMSWIRE structure, followed by a PDCONFIG2 structure and finally ending with a PDPARAMS structure. The WinStationInformationLength MUST be sizeof(VARDATA_WIRE) + sizeof(PDPARAMSWIRE) + size of(PDCONFIG2) + sizeof(PDPARAMS). The Size field in the VARDATA_WIRE structure MUST be set to sizeof(PDCONFIG2) and the Offset set to sizeof(VARDATA_WIRE) + sizeof(PDPARAMSWIRE). The Size field in SdClassSpecific field inside PDPARAMSWIRE MUST be set to sizeof(PDPARAMS) - sizeof(SDCLASS), and the offset MUST be set to Offset + Size of the VARDATA_WIRE structure.
WinStationPrinter
5Not supported.
WinStationClient
6Retrieves data on the terminal server client of the session.
The pWinStationInformation argument points to a VARDATA_WIRE structure followed by a WINSTATIONCLIENT structure. The WinStationInformationLength MUST be sizeof(VARDATA_WIRE) + sizeof(WINSTATIONCLIENT). The Size field in the VARDATA_WIRE structure MUST be set to sizeof(WINSTATIONCLIENT) and the Offset set to sizeof(VARDATA_WIRE).
WinStationModules
7Internal get function to retrieve data on protocol-specific binaries loaded for the given terminal server session. The structure pointed to by pWinStationInformation and the size of the buffer is Terminal Service protocol-specific.
WinStationInformation
8Retrieves information on the session, including connect state, session's name, connect time, disconnect time, time last input was received from the client, logon time, user's username and domain, and the current time.
pWinStationInformation points to a VARDATA_WIRE structure followed by a WINSTATIONINFORMATION structure. The WinStationInformationLength MUST be sizeof(VARDATA_WIRE) + sizeof(WINSTATIONINFORMATION). The Size field in the VARDATA_WIRE structure MUST be set to sizeof(WINSTATIONINFORMATION) and the Offset set to sizeof(VARDATA_WIRE).
WinStationUserToken
14Retrieves the user's token in the session. Caller requires WINSTATION_ALL_ACCESS permission.
The pWinStationInformation argument points to a WINSTATIONUSERTOKEN structure, and WinStationInformationLength MUST be sizeof(WINSTATIONUSERTOKEN).
WinStationVideoData
16Retrieves resolution and color depth of the session.
The pWinStationInformation argument points to a WINSTATIONVIDEODATA structure, and WinStationInformationLength MUST be sizeof(WINSTATIONVIDEODATA).<167>
WinStationCd
18Retrieves connection driver configuration data.
The pWinStationInformation points to a CDCONFIG structure, and WinStationInformationLength MUST be sizeof(CDCONFIG).<168>
WinStationVirtualData
20Query client virtual data.
The pWinStationInformation argument MUST point to 8 bytes and WinStationInformationLength MUST be 8.
WinStationLoadBalanceSessionTarget
24Retrieves the target session ID for a client redirected from another server in a load balancing cluster.
The pWinStationInformation points to a ULONG, and WinStationInformationLength MUST be sizeof(ULONG). If there is no redirection, -1 is returned in pWinStationInformation.<169>
WinStationLoadIndicator
25Retrieves an indicator of the load on the server.
The pWinStationInformation argument points to a WINSTATIONLOADINDICATORDATA structure. WinStationInformationLength MUST be sizeof(WINSTATIONLOADINDICATORDATA).
WinStationShadowInfo
26Retrieves the current shadow state of a session.
The pWinStationInformation argument points to a WINSTATIONSHADOW structure. WinStationInformationLength MUST be sizeof(WINSTATIONSHADOW).<170>
WinStationDigProductId
27Retrieves the client product ID and current product ID of the session.
The pWinStationInformation argument points to a WINSTATIONPRODID structure. WinStationInformationLength MUST be sizeof (WINSTATIONPRODID).<171>
WinStationLockedState
28Retrieves the current locked state of the session, TRUE or FALSE.
The pWinStationInformation argument points to a BOOL variable. WinStationInformationLength MUST be sizeof (BOOL).
WinStationRemoteAddress
29Retrieves the remote IP address of the terminal server client in the session.
The pWinStationInformation argument points to a WINSTATIONREMOTEADDRESS structure. WinStationInformationLength MUST be sizeof (WINSTATIONREMOTEADDRESS).
WinStationIdleTime
30Retrieves the idle time for the session, in seconds.
The pWinStationInformation argument points to a ULONG variable.
WinStationInformationLength MUST be sizeof (ULONG).<172>
WinStationLastReconnectType
31Retrieves the last reconnect type for the session. The value placed in pWinStationInformation will come from the enum RECONNECT_TYPE.
The pWinStationInformation argument points to a ULONG variable.
WinStationInformationLength MUST be sizeof (ULONG).<173>
WinStationDisallowAutoReconnect
32Retrieves the allow (1) or disallow (0) state for auto-reconnect, 1 or 0.
The pWinStationInformation argument points to a BOOLEAN variable.
WinStationInformationLength MUST be sizeof (BOOLEAN).
WinStationReconnectedFromId
37In case of reconnected sessions, this will return the session ID of the temporary session from which it was reconnected, or -1 if no temporary session was created.
The WinStationInformationLength argument points to a ULONG variable.
WinStationInformationLength MUST be sizeof (ULONG).
WinStationEffectsPolicy
38Return policies that differentiate among implementations.
The pWinStationInformation argument points to a ULONG variable.
WinStationInformationLength MUST be sizeof (ULONG).
WinStationType
39Returns the type associated with this WinStation.
The pWinStationInformation argument points to a ULONG variable.
WinStationInformationLength MUST be sizeof (ULONG).
WinStationInformationEx
40Retrieves extended information on the session, including connect state, flags, session's name, connect time, disconnect time, time last input was received from the client, logon time, user's username and domain, and the current time.
pWinStationInformation points to a VARDATA_WIRE structure followed by a WINSTATIONINFORMATIONEX structure.
The WinStationInformationLength MUST be sizeof(VARDATA_WIRE) + sizeof(WINSTATIONINFORMATIONEX). The Size field in the VARDATA_WIRE structure MUST be set to sizeof(WINSTATIONINFORMATIONEX) and the Offset set to sizeof(VARDATA_WIRE).
-
pWinStationInformation: Pointer to buffer allocated by the caller in which to retrieve the data. The data type or structure that pWinStationInformation points to is determined by the value of WinStationInformationClass. See previous sections for what pWinStationInformation SHOULD point to for each class.
-
WinStationInformationLength: Size of the data pointed to by pWinStationInformation, in bytes.
-
pReturnLength: Pointer to a variable to receive the size, in bytes, of the data retrieved. If WinStationInformationLength is too small, pReturnLength indicates the correct number of bytes for the caller to allocate.
-
Return Values: Returns TRUE if the call succeeded, or FALSE if the method failed. On failure, pResult indicates the failure status code.
Return value/code Description 0x01
TRUESuccessful completion.
0x00
FALSEMethod call failed.