/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT dvcman_load_addin(drdynvcPlugin* drdynvc, IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV* args, rdpSettings* settings) { DVCMAN_ENTRY_POINTS entryPoints; PDVC_PLUGIN_ENTRY pDVCPluginEntry = NULL; WLog_Print(drdynvc->log, WLOG_INFO, "Loading Dynamic Virtual Channel %s", args->argv[0]); pDVCPluginEntry = (PDVC_PLUGIN_ENTRY) freerdp_load_channel_addin_entry( args->argv[0], NULL, NULL, FREERDP_ADDIN_CHANNEL_DYNAMIC); if (pDVCPluginEntry) { entryPoints.iface.RegisterPlugin = dvcman_register_plugin; entryPoints.iface.GetPlugin = dvcman_get_plugin; entryPoints.iface.GetPluginData = dvcman_get_plugin_data; entryPoints.iface.GetRdpSettings = dvcman_get_rdp_settings; entryPoints.dvcman = (DVCMAN*) pChannelMgr; entryPoints.args = args; entryPoints.settings = settings; return pDVCPluginEntry((IDRDYNVC_ENTRY_POINTS*) &entryPoints); } return ERROR_INVALID_FUNCTION; }
int dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV* args, rdpSettings* settings) { DVCMAN_ENTRY_POINTS entryPoints; PDVC_PLUGIN_ENTRY pDVCPluginEntry = NULL; fprintf(stderr, "Loading Dynamic Virtual Channel %s\n", args->argv[0]); pDVCPluginEntry = (PDVC_PLUGIN_ENTRY) freerdp_load_channel_addin_entry(args->argv[0], NULL, NULL, FREERDP_ADDIN_CHANNEL_DYNAMIC); if (pDVCPluginEntry) { entryPoints.iface.RegisterPlugin = dvcman_register_plugin; entryPoints.iface.GetPlugin = dvcman_get_plugin; entryPoints.iface.GetPluginData = dvcman_get_plugin_data; entryPoints.iface.GetRdpSettings = dvcman_get_rdp_settings; entryPoints.dvcman = (DVCMAN*) pChannelMgr; entryPoints.args = args; entryPoints.settings = settings; pDVCPluginEntry((IDRDYNVC_ENTRY_POINTS*) &entryPoints); } return 0; }
static ITSMFDecoder* tsmf_load_decoder_by_name(const char* name, TS_AM_MEDIA_TYPE* media_type) { ITSMFDecoder* decoder; TSMF_DECODER_ENTRY entry; entry = (TSMF_DECODER_ENTRY) freerdp_load_channel_addin_entry("tsmf", (LPSTR) name, "decoder", 0); if (entry == NULL) return NULL; decoder = entry(); if (decoder == NULL) { DEBUG_WARN("failed to call export function in %s", name); return NULL; } if (!decoder->SetFormat(decoder, media_type)) { decoder->Free(decoder); decoder = NULL; } return decoder; }
BOOL devman_load_device_service(DEVMAN* devman, RDPDR_DEVICE* device) { char* ServiceName = NULL; DEVICE_SERVICE_ENTRY_POINTS ep; PDEVICE_SERVICE_ENTRY entry = NULL; if (device->Type == RDPDR_DTYP_FILESYSTEM) ServiceName = DRIVE_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_PRINT) ServiceName = PRINTER_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_SMARTCARD) ServiceName = SMARTCARD_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_SERIAL) ServiceName = SERIAL_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_PARALLEL) ServiceName = PARALLEL_SERVICE_NAME; if (!ServiceName) return FALSE; printf("Loading device service %s (static)\n", ServiceName); entry = (PDEVICE_SERVICE_ENTRY) freerdp_load_channel_addin_entry(ServiceName, NULL, "DeviceServiceEntry", 0); if (entry == NULL) return FALSE; ep.devman = devman; ep.RegisterDevice = devman_register_device; ep.device = device; entry(&ep); return TRUE; }
/** * this is called when processing the command line parameters * called only from main thread */ int freerdp_channels_load_plugin(rdpChannels* channels, rdpSettings* settings, const char* name, void* data) { PVIRTUALCHANNELENTRY entry; entry = freerdp_load_channel_addin_entry(name, NULL, NULL, FREERDP_ADDIN_CHANNEL_STATIC); if (!entry) return 1; return freerdp_channels_client_load(channels, settings, entry, data); }
/** * this is called when processing the command line parameters * called only from main thread */ int freerdp_channels_load_plugin(rdpChannels* channels, rdpSettings* settings, const char* name, void* data) { void* entry; DEBUG_CHANNELS("%s", name); entry = (PVIRTUALCHANNELENTRY) freerdp_load_channel_addin_entry(name, NULL, NULL, FREERDP_ADDIN_CHANNEL_STATIC); if (entry == NULL) { DEBUG_CHANNELS("failed to find export function"); return 1; } return freerdp_channels_client_load(channels, settings, entry, data); }
static ITSMFDecoder* tsmf_load_decoder_by_name(const char *name) { ITSMFDecoder* decoder; TSMF_DECODER_ENTRY entry; entry = (TSMF_DECODER_ENTRY) freerdp_load_channel_addin_entry("tsmf", (LPSTR) name, "decoder", 0); if (!entry) return NULL; decoder = entry(); if (!decoder) { WLog_ERR(TAG, "failed to call export function in %s", name); return NULL; } return decoder; }
int remmina_rdp_load_static_channel_addin(rdpChannels* channels, rdpSettings* settings, char* name, void* data) { void* entry; entry = freerdp_load_channel_addin_entry(name, NULL, NULL, FREERDP_ADDIN_CHANNEL_STATIC); if (entry) { if (freerdp_channels_client_load(channels, settings, entry, data) == 0) { fprintf(stderr, "loading channel %s\n", name); return 0; } } return -1; }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ UINT devman_load_device_service(DEVMAN* devman, RDPDR_DEVICE* device, rdpContext* rdpcontext) { char* ServiceName = NULL; DEVICE_SERVICE_ENTRY_POINTS ep; PDEVICE_SERVICE_ENTRY entry = NULL; if (device->Type == RDPDR_DTYP_FILESYSTEM) ServiceName = DRIVE_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_PRINT) ServiceName = PRINTER_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_SMARTCARD) ServiceName = SMARTCARD_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_SERIAL) ServiceName = SERIAL_SERVICE_NAME; else if (device->Type == RDPDR_DTYP_PARALLEL) ServiceName = PARALLEL_SERVICE_NAME; if (!ServiceName) { WLog_INFO(TAG, "ServiceName %s did not match!", ServiceName); return ERROR_INVALID_NAME; } WLog_INFO(TAG, "Loading device service %s (static)", ServiceName); entry = (PDEVICE_SERVICE_ENTRY) freerdp_load_channel_addin_entry(ServiceName, NULL, "DeviceServiceEntry", 0); if (!entry) { WLog_INFO(TAG, "freerdp_load_channel_addin_entry failed!"); return ERROR_INTERNAL_ERROR; } ep.devman = devman; ep.RegisterDevice = devman_register_device; ep.device = device; ep.rdpcontext = rdpcontext; return entry(&ep); }