void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm, void** fds, int* fds_count) { wait_obj_get_fds(vcm->send_event, fds, fds_count); if (vcm->drdynvc_channel) { wait_obj_get_fds(vcm->drdynvc_channel->receive_event, fds, fds_count); } }
boolean WTSVirtualChannelQuery( /* __in */ void* hChannelHandle, /* __in */ WTS_VIRTUAL_CLASS WtsVirtualClass, /* __out */ void** ppBuffer, /* __out */ uint32* pBytesReturned) { void* fds[10]; int fds_count = 0; boolean result = false; rdpPeerChannel* channel = (rdpPeerChannel*) hChannelHandle; switch (WtsVirtualClass) { case WTSVirtualFileHandle: wait_obj_get_fds(channel->receive_event, fds, &fds_count); *ppBuffer = xmalloc(sizeof(void*)); memcpy(*ppBuffer, &fds[0], sizeof(void*)); *pBytesReturned = sizeof(void*); result = true; break; default: break; } return result; }
boolean WTSVirtualChannelQuery( /* __in */ void* hChannelHandle, /* __in */ WTS_VIRTUAL_CLASS WtsVirtualClass, /* __out */ void** ppBuffer, /* __out */ uint32* pBytesReturned) { boolean bval; void* fds[10]; int fds_count = 0; boolean result = false; rdpPeerChannel* channel = (rdpPeerChannel*) hChannelHandle; switch (WtsVirtualClass) { case WTSVirtualFileHandle: wait_obj_get_fds(channel->receive_event, fds, &fds_count); *ppBuffer = xmalloc(sizeof(void*)); memcpy(*ppBuffer, &fds[0], sizeof(void*)); *pBytesReturned = sizeof(void*); result = true; break; case WTSVirtualChannelReady: if (channel->channel_type == RDP_PEER_CHANNEL_TYPE_SVC) { bval = true; result = true; } else { switch (channel->dvc_open_state) { case DVC_OPEN_STATE_NONE: bval = false; result = true; break; case DVC_OPEN_STATE_SUCCEEDED: bval = true; result = true; break; default: bval = false; result = false; break; } } *ppBuffer = xmalloc(sizeof(boolean)); memcpy(*ppBuffer, &bval, sizeof(boolean)); *pBytesReturned = sizeof(boolean); break; default: break; } return result; }
void WTSVirtualChannelManagerGetFileDescriptor(WTSVirtualChannelManager* vcm, void** fds, int* fds_count) { wait_obj_get_fds(vcm->send_event, fds, fds_count); }
void transport_get_fds(rdpTransport* transport, void** rfds, int* rcount) { rfds[*rcount] = (void*)(long)(transport->tcp->sockfd); (*rcount)++; wait_obj_get_fds(transport->recv_event, rfds, rcount); }
/** * called only from main thread */ boolean freerdp_channels_get_fds(rdpChannels* chan_man, freerdp* instance, void** read_fds, int* read_count, void** write_fds, int* write_count) { wait_obj_get_fds(chan_man->signal, read_fds, read_count); return true; }
/** * called only from main thread */ int freerdp_chanman_get_fds(rdpChanMan* chan_man, rdpInst* inst, void** read_fds, int* read_count, void** write_fds, int* write_count) { wait_obj_get_fds(chan_man->signal, read_fds, read_count); return 0; }