FreeRDP
libfreerdp/core/gateway/rpc.h File Reference
#include <winpr/wtypes.h>
#include <winpr/stream.h>
#include <winpr/collections.h>
#include <winpr/interlocked.h>
#include <freerdp/log.h>
#include <freerdp/utils/ringbuffer.h>
#include "../../crypto/tls.h"
#include "../tcp.h"
#include "../transport.h"
#include "http.h"
#include "../credssp_auth.h"
#include <time.h>
#include <winpr/sspi.h>
#include <freerdp/types.h>
#include <freerdp/settings.h>
#include <freerdp/crypto/crypto.h>
#include <freerdp/api.h>
#include <winpr/print.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  rpcconn_common_hdr_t
 
struct  rpcconn_rts_hdr_t
 
struct  RPC_PDU
 
struct  p_uuid_t
 
struct  ndr_format_t
 
struct  ndr_context_handle
 
struct  p_syntax_id_t
 
struct  p_cont_elem_t
 
struct  p_cont_list_t
 
struct  p_result_t
 
struct  p_result_list_t
 
struct  version_t
 
struct  p_rt_versions_supported_t
 
struct  port_any_t
 
struct  rpcrt_optional_data_t
 
struct  rpcconn_reject_optional_data_t
 
struct  rpcconn_disc_optional_data_t
 
struct  rpc_sec_verification_trailer
 
struct  auth_verifier_co_t
 
struct  rpcconn_alter_context_hdr_t
 
struct  rpcconn_alter_context_response_hdr_t
 
struct  rpcconn_bind_hdr_t
 
struct  rpcconn_bind_ack_hdr_t
 
struct  rpcconn_rpc_auth_3_hdr_t
 
struct  rpcconn_bind_nak_hdr_t
 
struct  rpcconn_cancel_hdr_t
 
struct  RPC_FAULT_CODE
 
struct  rpcconn_fault_hdr_t
 
struct  rpcconn_orphaned_hdr_t
 
struct  rpcconn_request_hdr_t
 
struct  rpcconn_response_hdr_t
 
struct  rpcconn_shutdown_hdr_t
 
union  rpcconn_hdr_t
 
struct  RPC_SECURITY_PROVIDER_INFO
 
struct  RpcClientCall
 
struct  RpcClient
 
struct  RpcChannel
 
struct  RpcPingOriginator
 
struct  RpcInChannel
 
struct  RpcOutChannel
 
struct  RpcVirtualConnection
 
struct  RpcVirtualConnectionCookieEntry
 
struct  rdpRpc
 

Macros

#define RPC_COMMON_FIELDS_LENGTH   sizeof(rpcconn_common_hdr_t)
 
#define RTS_PDU_HEADER_LENGTH   20
 
#define RPC_PDU_FLAG_STUB   0x00000001
 
#define PTYPE_REQUEST   0x00
 
#define PTYPE_PING   0x01
 
#define PTYPE_RESPONSE   0x02
 
#define PTYPE_FAULT   0x03
 
#define PTYPE_WORKING   0x04
 
#define PTYPE_NOCALL   0x05
 
#define PTYPE_REJECT   0x06
 
#define PTYPE_ACK   0x07
 
#define PTYPE_CL_CANCEL   0x08
 
#define PTYPE_FACK   0x09
 
#define PTYPE_CANCEL_ACK   0x0A
 
#define PTYPE_BIND   0x0B
 
#define PTYPE_BIND_ACK   0x0C
 
#define PTYPE_BIND_NAK   0x0D
 
#define PTYPE_ALTER_CONTEXT   0x0E
 
#define PTYPE_ALTER_CONTEXT_RESP   0x0F
 
#define PTYPE_RPC_AUTH_3   0x10
 
#define PTYPE_SHUTDOWN   0x11
 
#define PTYPE_CO_CANCEL   0x12
 
#define PTYPE_ORPHANED   0x13
 
#define PTYPE_RTS   0x14
 
#define PFC_FIRST_FRAG   0x01
 
#define PFC_LAST_FRAG   0x02
 
#define PFC_PENDING_CANCEL   0x04
 
#define PFC_SUPPORT_HEADER_SIGN   0x04
 
#define PFC_RESERVED_1   0x08
 
#define PFC_CONC_MPX   0x10
 
#define PFC_DID_NOT_EXECUTE   0x20
 
#define PFC_MAYBE   0x40
 
#define PFC_OBJECT_UUID   0x80
 
#define RPC_CO_MUST_RECV_FRAG_SIZE   1432
 
#define RPC_CL_MUST_RECV_FRAG_SIZE   1464
 
#define RPC_PDU_HEADER_MAX_LENGTH   32
 
#define ndr_c_int_big_endian   0
 
#define ndr_c_int_little_endian   1
 
#define ndr_c_float_ieee   0
 
#define ndr_c_float_vax   1
 
#define ndr_c_float_cray   2
 
#define ndr_c_float_ibm   3
 
#define ndr_c_char_ascii   0
 
#define ndr_c_char_ebcdic   1
 
#define REASON_NOT_SPECIFIED   0
 
#define TEMPORARY_CONGESTION   1
 
#define LOCAL_LIMIT_EXCEEDED   2
 
#define CALLED_PADDR_UNKNOWN   3
 
#define PROTOCOL_VERSION_NOT_SUPPORTED   4
 
#define DEFAULT_CONTEXT_NOT_SUPPORTED   5
 
#define USER_DATA_NOT_READABLE   6
 
#define NO_PSAP_AVAILABLE   7
 
#define DEFINE_RPC_FAULT_CODE(_code, cat)
 
#define nca_s_comm_failure   0x1C010001
 
#define nca_s_op_rng_error   0x1C010002
 
#define nca_s_unk_if   0x1C010003
 
#define nca_s_wrong_boot_time   0x1C010006
 
#define nca_s_you_crashed   0x1C010009
 
#define nca_s_proto_error   0x1C01000B
 
#define nca_s_out_args_too_big   0x1C010013
 
#define nca_s_server_too_busy   0x1C010014
 
#define nca_s_fault_string_too_long   0x1C010015
 
#define nca_s_unsupported_type   0x1C010017
 
#define nca_s_fault_int_div_by_zero   0x1C000001
 
#define nca_s_fault_addr_error   0x1C000002
 
#define nca_s_fault_fp_div_zero   0x1C000003
 
#define nca_s_fault_fp_underflow   0x1C000004
 
#define nca_s_fault_fp_overflow   0x1C000005
 
#define nca_s_fault_invalid_tag   0x1C000006
 
#define nca_s_fault_invalid_bound   0x1C000007
 
#define nca_s_rpc_version_mismatch   0x1C000008
 
#define nca_s_unspec_reject   0x1C000009
 
#define nca_s_bad_actid   0x1C00000A
 
#define nca_s_who_are_you_failed   0x1C00000B
 
#define nca_s_manager_not_entered   0x1C00000C
 
#define nca_s_fault_cancel   0x1C00000D
 
#define nca_s_fault_ill_inst   0x1C00000E
 
#define nca_s_fault_fp_error   0x1C00000F
 
#define nca_s_fault_int_overflow   0x1C000010
 
#define nca_s_fault_unspec   0x1C000012
 
#define nca_s_fault_remote_comm_failure   0x1C000013
 
#define nca_s_fault_pipe_empty   0x1C000014
 
#define nca_s_fault_pipe_closed   0x1C000015
 
#define nca_s_fault_pipe_order   0x1C000016
 
#define nca_s_fault_pipe_discipline   0x1C000017
 
#define nca_s_fault_pipe_comm_error   0x1C000018
 
#define nca_s_fault_pipe_memory   0x1C000019
 
#define nca_s_fault_context_mismatch   0x1C00001A
 
#define nca_s_fault_remote_no_memory   0x1C00001B
 
#define nca_s_invalid_pres_context_id   0x1C00001C
 
#define nca_s_unsupported_authn_level   0x1C00001D
 
#define nca_s_invalid_checksum   0x1C00001F
 
#define nca_s_invalid_crc   0x1C000020
 
#define nca_s_fault_user_defined   0x1C000021
 
#define nca_s_fault_tx_open_failed   0x1C000022
 
#define nca_s_fault_codeset_conv_error   0x1C000023
 
#define nca_s_fault_object_not_found   0x1C000024
 
#define nca_s_fault_no_client_stub   0x1C000025
 
#define RPC_UUID_FORMAT_STRING    "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
 
#define RPC_UUID_FORMAT_ARGUMENTS(_rpc_uuid)
 

Typedefs

typedef struct RPC_PDUPRPC_PDU
 
typedef UINT16 p_context_id_t
 
typedef UINT16 p_reject_reason_t
 
typedef struct ndr_format_tndr_format_p_t
 
typedef version_t p_rt_version_t
 
typedef UINT16 rpcrt_reason_code_t
 

Enumerations

enum  p_cont_def_result_t { acceptance , user_rejection , provider_rejection }
 
enum  p_provider_reason_t { reason_not_specified , abstract_syntax_not_supported , proposed_transfer_syntaxes_not_supported , local_limit_exceeded }
 
enum  RPC_CLIENT_STATE {
  RPC_CLIENT_STATE_INITIAL , RPC_CLIENT_STATE_ESTABLISHED , RPC_CLIENT_STATE_WAIT_SECURE_BIND_ACK , RPC_CLIENT_STATE_WAIT_UNSECURE_BIND_ACK ,
  RPC_CLIENT_STATE_WAIT_SECURE_ALTER_CONTEXT_RESPONSE , RPC_CLIENT_STATE_CONTEXT_NEGOTIATED , RPC_CLIENT_STATE_WAIT_RESPONSE , RPC_CLIENT_STATE_FINAL
}
 
enum  RPC_CLIENT_CALL_STATE {
  RPC_CLIENT_CALL_STATE_INITIAL , RPC_CLIENT_CALL_STATE_SEND_PDUS , RPC_CLIENT_CALL_STATE_DISPATCHED , RPC_CLIENT_CALL_STATE_RECEIVE_PDU ,
  RPC_CLIENT_CALL_STATE_COMPLETE , RPC_CLIENT_CALL_STATE_FAULT , RPC_CLIENT_CALL_STATE_FINAL
}
 
enum  CLIENT_IN_CHANNEL_STATE {
  CLIENT_IN_CHANNEL_STATE_INITIAL , CLIENT_IN_CHANNEL_STATE_CONNECTED , CLIENT_IN_CHANNEL_STATE_SECURITY , CLIENT_IN_CHANNEL_STATE_NEGOTIATED ,
  CLIENT_IN_CHANNEL_STATE_OPENED , CLIENT_IN_CHANNEL_STATE_OPENED_A4W , CLIENT_IN_CHANNEL_STATE_FINAL
}
 
enum  CLIENT_OUT_CHANNEL_STATE {
  CLIENT_OUT_CHANNEL_STATE_INITIAL , CLIENT_OUT_CHANNEL_STATE_CONNECTED , CLIENT_OUT_CHANNEL_STATE_SECURITY , CLIENT_OUT_CHANNEL_STATE_NEGOTIATED ,
  CLIENT_OUT_CHANNEL_STATE_OPENED , CLIENT_OUT_CHANNEL_STATE_OPENED_A6W , CLIENT_OUT_CHANNEL_STATE_OPENED_A10W , CLIENT_OUT_CHANNEL_STATE_OPENED_B3W ,
  CLIENT_OUT_CHANNEL_STATE_RECYCLED , CLIENT_OUT_CHANNEL_STATE_FINAL
}
 
enum  VIRTUAL_CONNECTION_STATE {
  VIRTUAL_CONNECTION_STATE_INITIAL , VIRTUAL_CONNECTION_STATE_OUT_CHANNEL_WAIT , VIRTUAL_CONNECTION_STATE_WAIT_A3W , VIRTUAL_CONNECTION_STATE_WAIT_C2 ,
  VIRTUAL_CONNECTION_STATE_OPENED , VIRTUAL_CONNECTION_STATE_FINAL
}
 

Functions

FREERDP_LOCAL const char * rpc_vc_state_str (VIRTUAL_CONNECTION_STATE state)
 
FREERDP_LOCAL void rpc_pdu_header_print (wLog *log, const rpcconn_hdr_t *header)
 
FREERDP_LOCAL rpcconn_common_hdr_t rpc_pdu_header_init (const rdpRpc *rpc)
 
FREERDP_LOCAL size_t rpc_offset_align (size_t *offset, size_t alignment)
 
FREERDP_LOCAL size_t rpc_offset_pad (size_t *offset, size_t pad)
 
FREERDP_LOCAL BOOL rpc_get_stub_data_info (rdpRpc *rpc, const rpcconn_hdr_t *header, size_t *offset, size_t *length)
 
FREERDP_LOCAL SSIZE_T rpc_channel_write (RpcChannel *channel, const BYTE *data, size_t length)
 
FREERDP_LOCAL SSIZE_T rpc_channel_read (RpcChannel *channel, wStream *s, size_t length)
 
FREERDP_LOCAL void rpc_channel_free (RpcChannel *channel)
 
FREERDP_LOCAL RpcOutChannelrpc_out_channel_new (rdpRpc *rpc, const GUID *guid)
 
FREERDP_LOCAL int rpc_out_channel_replacement_connect (RpcOutChannel *outChannel, int timeout)
 
FREERDP_LOCAL BOOL rpc_in_channel_transition_to_state (RpcInChannel *inChannel, CLIENT_IN_CHANNEL_STATE state)
 
FREERDP_LOCAL BOOL rpc_out_channel_transition_to_state (RpcOutChannel *outChannel, CLIENT_OUT_CHANNEL_STATE state)
 
FREERDP_LOCAL BOOL rpc_virtual_connection_transition_to_state (rdpRpc *rpc, RpcVirtualConnection *connection, VIRTUAL_CONNECTION_STATE state)
 
FREERDP_LOCAL BOOL rpc_connect (rdpRpc *rpc, UINT32 timeout)
 
FREERDP_LOCAL void rpc_free (rdpRpc *rpc)
 
FREERDP_LOCAL rdpRpc * rpc_new (rdpTransport *transport)
 

Macro Definition Documentation

◆ CALLED_PADDR_UNKNOWN

#define CALLED_PADDR_UNKNOWN   3

◆ DEFAULT_CONTEXT_NOT_SUPPORTED

#define DEFAULT_CONTEXT_NOT_SUPPORTED   5

◆ DEFINE_RPC_FAULT_CODE

#define DEFINE_RPC_FAULT_CODE (   _code,
  cat 
)
Value:
{ \
_code, #_code, cat \
}

◆ LOCAL_LIMIT_EXCEEDED

#define LOCAL_LIMIT_EXCEEDED   2

◆ nca_s_bad_actid

#define nca_s_bad_actid   0x1C00000A

◆ nca_s_comm_failure

#define nca_s_comm_failure   0x1C010001

◆ nca_s_fault_addr_error

#define nca_s_fault_addr_error   0x1C000002

◆ nca_s_fault_cancel

#define nca_s_fault_cancel   0x1C00000D

◆ nca_s_fault_codeset_conv_error

#define nca_s_fault_codeset_conv_error   0x1C000023

◆ nca_s_fault_context_mismatch

#define nca_s_fault_context_mismatch   0x1C00001A

◆ nca_s_fault_fp_div_zero

#define nca_s_fault_fp_div_zero   0x1C000003

◆ nca_s_fault_fp_error

#define nca_s_fault_fp_error   0x1C00000F

◆ nca_s_fault_fp_overflow

#define nca_s_fault_fp_overflow   0x1C000005

◆ nca_s_fault_fp_underflow

#define nca_s_fault_fp_underflow   0x1C000004

◆ nca_s_fault_ill_inst

#define nca_s_fault_ill_inst   0x1C00000E

◆ nca_s_fault_int_div_by_zero

#define nca_s_fault_int_div_by_zero   0x1C000001

◆ nca_s_fault_int_overflow

#define nca_s_fault_int_overflow   0x1C000010

◆ nca_s_fault_invalid_bound

#define nca_s_fault_invalid_bound   0x1C000007

◆ nca_s_fault_invalid_tag

#define nca_s_fault_invalid_tag   0x1C000006

◆ nca_s_fault_no_client_stub

#define nca_s_fault_no_client_stub   0x1C000025

◆ nca_s_fault_object_not_found

#define nca_s_fault_object_not_found   0x1C000024

◆ nca_s_fault_pipe_closed

#define nca_s_fault_pipe_closed   0x1C000015

◆ nca_s_fault_pipe_comm_error

#define nca_s_fault_pipe_comm_error   0x1C000018

◆ nca_s_fault_pipe_discipline

#define nca_s_fault_pipe_discipline   0x1C000017

◆ nca_s_fault_pipe_empty

#define nca_s_fault_pipe_empty   0x1C000014

◆ nca_s_fault_pipe_memory

#define nca_s_fault_pipe_memory   0x1C000019

◆ nca_s_fault_pipe_order

#define nca_s_fault_pipe_order   0x1C000016

◆ nca_s_fault_remote_comm_failure

#define nca_s_fault_remote_comm_failure   0x1C000013

◆ nca_s_fault_remote_no_memory

#define nca_s_fault_remote_no_memory   0x1C00001B

◆ nca_s_fault_string_too_long

#define nca_s_fault_string_too_long   0x1C010015

◆ nca_s_fault_tx_open_failed

#define nca_s_fault_tx_open_failed   0x1C000022

◆ nca_s_fault_unspec

#define nca_s_fault_unspec   0x1C000012

◆ nca_s_fault_user_defined

#define nca_s_fault_user_defined   0x1C000021

◆ nca_s_invalid_checksum

#define nca_s_invalid_checksum   0x1C00001F

◆ nca_s_invalid_crc

#define nca_s_invalid_crc   0x1C000020

◆ nca_s_invalid_pres_context_id

#define nca_s_invalid_pres_context_id   0x1C00001C

◆ nca_s_manager_not_entered

#define nca_s_manager_not_entered   0x1C00000C

◆ nca_s_op_rng_error

#define nca_s_op_rng_error   0x1C010002

◆ nca_s_out_args_too_big

#define nca_s_out_args_too_big   0x1C010013

◆ nca_s_proto_error

#define nca_s_proto_error   0x1C01000B

◆ nca_s_rpc_version_mismatch

#define nca_s_rpc_version_mismatch   0x1C000008

◆ nca_s_server_too_busy

#define nca_s_server_too_busy   0x1C010014

◆ nca_s_unk_if

#define nca_s_unk_if   0x1C010003

◆ nca_s_unspec_reject

#define nca_s_unspec_reject   0x1C000009

◆ nca_s_unsupported_authn_level

#define nca_s_unsupported_authn_level   0x1C00001D

◆ nca_s_unsupported_type

#define nca_s_unsupported_type   0x1C010017

◆ nca_s_who_are_you_failed

#define nca_s_who_are_you_failed   0x1C00000B

◆ nca_s_wrong_boot_time

#define nca_s_wrong_boot_time   0x1C010006

◆ nca_s_you_crashed

#define nca_s_you_crashed   0x1C010009

◆ ndr_c_char_ascii

#define ndr_c_char_ascii   0

◆ ndr_c_char_ebcdic

#define ndr_c_char_ebcdic   1

◆ ndr_c_float_cray

#define ndr_c_float_cray   2

◆ ndr_c_float_ibm

#define ndr_c_float_ibm   3

◆ ndr_c_float_ieee

#define ndr_c_float_ieee   0

◆ ndr_c_float_vax

#define ndr_c_float_vax   1

◆ ndr_c_int_big_endian

#define ndr_c_int_big_endian   0

◆ ndr_c_int_little_endian

#define ndr_c_int_little_endian   1

◆ NO_PSAP_AVAILABLE

#define NO_PSAP_AVAILABLE   7

◆ PFC_CONC_MPX

#define PFC_CONC_MPX   0x10

◆ PFC_DID_NOT_EXECUTE

#define PFC_DID_NOT_EXECUTE   0x20

◆ PFC_FIRST_FRAG

#define PFC_FIRST_FRAG   0x01

◆ PFC_LAST_FRAG

#define PFC_LAST_FRAG   0x02

◆ PFC_MAYBE

#define PFC_MAYBE   0x40

◆ PFC_OBJECT_UUID

#define PFC_OBJECT_UUID   0x80

◆ PFC_PENDING_CANCEL

#define PFC_PENDING_CANCEL   0x04

◆ PFC_RESERVED_1

#define PFC_RESERVED_1   0x08

◆ PFC_SUPPORT_HEADER_SIGN

#define PFC_SUPPORT_HEADER_SIGN   0x04

◆ PROTOCOL_VERSION_NOT_SUPPORTED

#define PROTOCOL_VERSION_NOT_SUPPORTED   4

◆ PTYPE_ACK

#define PTYPE_ACK   0x07

◆ PTYPE_ALTER_CONTEXT

#define PTYPE_ALTER_CONTEXT   0x0E

◆ PTYPE_ALTER_CONTEXT_RESP

#define PTYPE_ALTER_CONTEXT_RESP   0x0F

◆ PTYPE_BIND

#define PTYPE_BIND   0x0B

◆ PTYPE_BIND_ACK

#define PTYPE_BIND_ACK   0x0C

◆ PTYPE_BIND_NAK

#define PTYPE_BIND_NAK   0x0D

◆ PTYPE_CANCEL_ACK

#define PTYPE_CANCEL_ACK   0x0A

◆ PTYPE_CL_CANCEL

#define PTYPE_CL_CANCEL   0x08

◆ PTYPE_CO_CANCEL

#define PTYPE_CO_CANCEL   0x12

◆ PTYPE_FACK

#define PTYPE_FACK   0x09

◆ PTYPE_FAULT

#define PTYPE_FAULT   0x03

◆ PTYPE_NOCALL

#define PTYPE_NOCALL   0x05

◆ PTYPE_ORPHANED

#define PTYPE_ORPHANED   0x13

◆ PTYPE_PING

#define PTYPE_PING   0x01

◆ PTYPE_REJECT

#define PTYPE_REJECT   0x06

◆ PTYPE_REQUEST

#define PTYPE_REQUEST   0x00

CAE Specification DCE 1.1: Remote Procedure Call Document Number: C706 http://pubs.opengroup.org/onlinepubs/9629399/

◆ PTYPE_RESPONSE

#define PTYPE_RESPONSE   0x02

◆ PTYPE_RPC_AUTH_3

#define PTYPE_RPC_AUTH_3   0x10

◆ PTYPE_RTS

#define PTYPE_RTS   0x14

◆ PTYPE_SHUTDOWN

#define PTYPE_SHUTDOWN   0x11

◆ PTYPE_WORKING

#define PTYPE_WORKING   0x04

◆ REASON_NOT_SPECIFIED

#define REASON_NOT_SPECIFIED   0

◆ RPC_CL_MUST_RECV_FRAG_SIZE

#define RPC_CL_MUST_RECV_FRAG_SIZE   1464

◆ RPC_CO_MUST_RECV_FRAG_SIZE

#define RPC_CO_MUST_RECV_FRAG_SIZE   1432

◆ RPC_COMMON_FIELDS_LENGTH

#define RPC_COMMON_FIELDS_LENGTH   sizeof(rpcconn_common_hdr_t)

◆ RPC_PDU_FLAG_STUB

#define RPC_PDU_FLAG_STUB   0x00000001

◆ RPC_PDU_HEADER_MAX_LENGTH

#define RPC_PDU_HEADER_MAX_LENGTH   32

The PDU maximum header length is enough to contain either the RPC common fields or all fields up to the stub data in PDUs that use it (request, response, fault)

◆ RPC_UUID_FORMAT_ARGUMENTS

#define RPC_UUID_FORMAT_ARGUMENTS (   _rpc_uuid)
Value:
_rpc_uuid[0], _rpc_uuid[1], _rpc_uuid[2], _rpc_uuid[3], _rpc_uuid[4], _rpc_uuid[5], \
_rpc_uuid[6], _rpc_uuid[7], _rpc_uuid[8], _rpc_uuid[9], _rpc_uuid[10], _rpc_uuid[11], \
_rpc_uuid[12], _rpc_uuid[13], _rpc_uuid[14], _rpc_uuid[15]

◆ RPC_UUID_FORMAT_STRING

#define RPC_UUID_FORMAT_STRING    "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"

◆ RTS_PDU_HEADER_LENGTH

#define RTS_PDU_HEADER_LENGTH   20

◆ TEMPORARY_CONGESTION

#define TEMPORARY_CONGESTION   1

◆ USER_DATA_NOT_READABLE

#define USER_DATA_NOT_READABLE   6

Typedef Documentation

◆ ndr_format_p_t

typedef struct ndr_format_t * ndr_format_p_t

◆ p_context_id_t

◆ p_reject_reason_t

◆ p_rt_version_t

◆ PRPC_PDU

typedef struct RPC_PDU * PRPC_PDU

◆ rpcrt_reason_code_t

Enumeration Type Documentation

◆ CLIENT_IN_CHANNEL_STATE

Enumerator
CLIENT_IN_CHANNEL_STATE_INITIAL 
CLIENT_IN_CHANNEL_STATE_CONNECTED 
CLIENT_IN_CHANNEL_STATE_SECURITY 
CLIENT_IN_CHANNEL_STATE_NEGOTIATED 
CLIENT_IN_CHANNEL_STATE_OPENED 
CLIENT_IN_CHANNEL_STATE_OPENED_A4W 
CLIENT_IN_CHANNEL_STATE_FINAL 

◆ CLIENT_OUT_CHANNEL_STATE

Enumerator
CLIENT_OUT_CHANNEL_STATE_INITIAL 
CLIENT_OUT_CHANNEL_STATE_CONNECTED 
CLIENT_OUT_CHANNEL_STATE_SECURITY 
CLIENT_OUT_CHANNEL_STATE_NEGOTIATED 
CLIENT_OUT_CHANNEL_STATE_OPENED 
CLIENT_OUT_CHANNEL_STATE_OPENED_A6W 
CLIENT_OUT_CHANNEL_STATE_OPENED_A10W 
CLIENT_OUT_CHANNEL_STATE_OPENED_B3W 
CLIENT_OUT_CHANNEL_STATE_RECYCLED 
CLIENT_OUT_CHANNEL_STATE_FINAL 

◆ p_cont_def_result_t

Enumerator
acceptance 
user_rejection 
provider_rejection 

◆ p_provider_reason_t

Enumerator
reason_not_specified 
abstract_syntax_not_supported 
proposed_transfer_syntaxes_not_supported 
local_limit_exceeded 

◆ RPC_CLIENT_CALL_STATE

Enumerator
RPC_CLIENT_CALL_STATE_INITIAL 
RPC_CLIENT_CALL_STATE_SEND_PDUS 
RPC_CLIENT_CALL_STATE_DISPATCHED 
RPC_CLIENT_CALL_STATE_RECEIVE_PDU 
RPC_CLIENT_CALL_STATE_COMPLETE 
RPC_CLIENT_CALL_STATE_FAULT 
RPC_CLIENT_CALL_STATE_FINAL 

◆ RPC_CLIENT_STATE

Enumerator
RPC_CLIENT_STATE_INITIAL 
RPC_CLIENT_STATE_ESTABLISHED 
RPC_CLIENT_STATE_WAIT_SECURE_BIND_ACK 
RPC_CLIENT_STATE_WAIT_UNSECURE_BIND_ACK 
RPC_CLIENT_STATE_WAIT_SECURE_ALTER_CONTEXT_RESPONSE 
RPC_CLIENT_STATE_CONTEXT_NEGOTIATED 
RPC_CLIENT_STATE_WAIT_RESPONSE 
RPC_CLIENT_STATE_FINAL 

◆ VIRTUAL_CONNECTION_STATE

Enumerator
VIRTUAL_CONNECTION_STATE_INITIAL 
VIRTUAL_CONNECTION_STATE_OUT_CHANNEL_WAIT 
VIRTUAL_CONNECTION_STATE_WAIT_A3W 
VIRTUAL_CONNECTION_STATE_WAIT_C2 
VIRTUAL_CONNECTION_STATE_OPENED 
VIRTUAL_CONNECTION_STATE_FINAL 

Function Documentation

◆ rpc_channel_free()

FREERDP_LOCAL void rpc_channel_free ( RpcChannel channel)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_channel_read()

FREERDP_LOCAL SSIZE_T rpc_channel_read ( RpcChannel channel,
wStream s,
size_t  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_channel_write()

FREERDP_LOCAL SSIZE_T rpc_channel_write ( RpcChannel channel,
const BYTE data,
size_t  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_connect()

FREERDP_LOCAL BOOL rpc_connect ( rdpRpc *  rpc,
UINT32  timeout 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_free()

FREERDP_LOCAL void rpc_free ( rdpRpc *  rpc)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_get_stub_data_info()

FREERDP_LOCAL BOOL rpc_get_stub_data_info ( rdpRpc *  rpc,
const rpcconn_hdr_t header,
size_t *  offset,
size_t *  length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_in_channel_transition_to_state()

FREERDP_LOCAL BOOL rpc_in_channel_transition_to_state ( RpcInChannel inChannel,
CLIENT_IN_CHANNEL_STATE  state 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_new()

FREERDP_LOCAL rdpRpc* rpc_new ( rdpTransport *  transport)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_offset_align()

FREERDP_LOCAL size_t rpc_offset_align ( size_t *  offset,
size_t  alignment 
)
Here is the caller graph for this function:

◆ rpc_offset_pad()

FREERDP_LOCAL size_t rpc_offset_pad ( size_t *  offset,
size_t  pad 
)
Here is the caller graph for this function:

◆ rpc_out_channel_new()

FREERDP_LOCAL RpcOutChannel* rpc_out_channel_new ( rdpRpc *  rpc,
const GUID *  guid 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_out_channel_replacement_connect()

FREERDP_LOCAL int rpc_out_channel_replacement_connect ( RpcOutChannel outChannel,
int  timeout 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_out_channel_transition_to_state()

FREERDP_LOCAL BOOL rpc_out_channel_transition_to_state ( RpcOutChannel outChannel,
CLIENT_OUT_CHANNEL_STATE  state 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rpc_pdu_header_init()

FREERDP_LOCAL rpcconn_common_hdr_t rpc_pdu_header_init ( const rdpRpc *  rpc)
Here is the caller graph for this function:

◆ rpc_pdu_header_print()

FREERDP_LOCAL void rpc_pdu_header_print ( wLog *  log,
const rpcconn_hdr_t header 
)

◆ rpc_vc_state_str()

FREERDP_LOCAL const char* rpc_vc_state_str ( VIRTUAL_CONNECTION_STATE  state)
Here is the caller graph for this function:

◆ rpc_virtual_connection_transition_to_state()

FREERDP_LOCAL BOOL rpc_virtual_connection_transition_to_state ( rdpRpc *  rpc,
RpcVirtualConnection connection,
VIRTUAL_CONNECTION_STATE  state 
)
Here is the call graph for this function:
Here is the caller graph for this function: