diff --git a/channels/client/tables.h b/channels/client/tables.h index fdd4531d8..813d2398a 100644 --- a/channels/client/tables.h +++ b/channels/client/tables.h @@ -33,35 +33,35 @@ typedef UINT(VCAPITYPE* static_entry_fn_t)(); typedef struct { const char* name; - static_entry_fn_t entry; + WINPR_ATTR_NODISCARD static_entry_fn_t entry; } STATIC_ENTRY; typedef BOOL(VCAPITYPE* static_entry_vc_fn_t)(PCHANNEL_ENTRY_POINTS); typedef struct { const char* name; - static_entry_vc_fn_t entry; + WINPR_ATTR_NODISCARD static_entry_vc_fn_t entry; } STATIC_ENTRY_VC; typedef BOOL(VCAPITYPE* static_entry_vcex_fn_t)(PCHANNEL_ENTRY_POINTS_EX, PVOID); typedef struct { const char* name; - static_entry_vcex_fn_t entry; + WINPR_ATTR_NODISCARD static_entry_vcex_fn_t entry; } STATIC_ENTRY_VCEX; typedef UINT(VCAPITYPE* static_entry_dvc_fn_t)(IDRDYNVC_ENTRY_POINTS*); typedef struct { const char* name; - static_entry_dvc_fn_t entry; + WINPR_ATTR_NODISCARD static_entry_dvc_fn_t entry; } STATIC_ENTRY_DVC; typedef UINT(VCAPITYPE* static_entry_dse_fn_t)(PDEVICE_SERVICE_ENTRY_POINTS); typedef struct { const char* name; - static_entry_dse_fn_t entry; + WINPR_ATTR_NODISCARD static_entry_dse_fn_t entry; } STATIC_ENTRY_DSE; typedef union @@ -75,11 +75,11 @@ typedef union typedef union { - static_entry_fn_t cse; - static_entry_vc_fn_t csevc; - static_entry_vcex_fn_t csevcex; - static_entry_dvc_fn_t csedvc; - static_entry_dse_fn_t csedse; + WINPR_ATTR_NODISCARD static_entry_fn_t cse; + WINPR_ATTR_NODISCARD static_entry_vc_fn_t csevc; + WINPR_ATTR_NODISCARD static_entry_vcex_fn_t csevcex; + WINPR_ATTR_NODISCARD static_entry_dvc_fn_t csedvc; + WINPR_ATTR_NODISCARD static_entry_dse_fn_t csedse; } static_entry_fn_u; typedef struct @@ -93,7 +93,7 @@ typedef struct { const char* name; const char* type; - static_subsystem_entry_fn_t entry; + WINPR_ATTR_NODISCARD static_subsystem_entry_fn_t entry; } STATIC_SUBSYSTEM_ENTRY; typedef struct diff --git a/channels/drdynvc/client/drdynvc_main.c b/channels/drdynvc/client/drdynvc_main.c index c14d66dff..1b15ef2d7 100644 --- a/channels/drdynvc/client/drdynvc_main.c +++ b/channels/drdynvc/client/drdynvc_main.c @@ -514,9 +514,7 @@ static UINT dvcman_channel_close(DVCMAN_CHANNEL* channel, BOOL perRequest, BOOL IWTSVirtualChannelCallback* cb = channel->channel_callback; channel->channel_callback = NULL; if (cb) - { - IFCALL(cb->OnClose, cb); - } + error = IFCALLRESULT(CHANNEL_RC_OK, cb->OnClose, cb); } if (channel->dvcman && channel->dvcman->drdynvc) diff --git a/channels/rdpdr/client/devman.c b/channels/rdpdr/client/devman.c index 8c99c198c..b38554956 100644 --- a/channels/rdpdr/client/devman.c +++ b/channels/rdpdr/client/devman.c @@ -48,7 +48,8 @@ static void devman_device_free(void* obj) if (!device) return; - IFCALL(device->Free, device); + if (device->Free) + device->Free(device); } DEVMAN* devman_new(rdpdrPlugin* rdpdr) diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c index 09aa83641..ccbbfe4c9 100644 --- a/channels/rdpdr/client/rdpdr_main.c +++ b/channels/rdpdr/client/rdpdr_main.c @@ -1536,13 +1536,12 @@ static UINT dummy_irp_response(rdpdrPlugin* rdpdr, wStream* s) */ static UINT rdpdr_process_irp(rdpdrPlugin* rdpdr, wStream* s) { - IRP* irp = NULL; UINT error = CHANNEL_RC_OK; WINPR_ASSERT(rdpdr); WINPR_ASSERT(s); - irp = irp_new(rdpdr->devman, rdpdr->pool, s, rdpdr->log, &error); + IRP* irp = irp_new(rdpdr->devman, rdpdr->pool, s, rdpdr->log, &error); if (!irp) { @@ -1557,16 +1556,14 @@ static UINT rdpdr_process_irp(rdpdrPlugin* rdpdr, wStream* s) } if (irp->device->IRPRequest) - IFCALLRET(irp->device->IRPRequest, error, irp->device, irp); - else - irp->Discard(irp); + error = irp->device->IRPRequest(irp->device, irp); if (error != CHANNEL_RC_OK) { WLog_Print(rdpdr->log, WLOG_ERROR, "device->IRPRequest failed with error %" PRIu32 "", error); - irp->Discard(irp); } + irp->Discard(irp); return error; } diff --git a/channels/rdpear/common/rdpear-common/ndr.h b/channels/rdpear/common/rdpear-common/ndr.h index f1ab443e7..dcc1ecabc 100644 --- a/channels/rdpear/common/rdpear-common/ndr.h +++ b/channels/rdpear/common/rdpear-common/ndr.h @@ -76,8 +76,8 @@ extern "C" { NdrTypeArity arity; size_t itemSize; - NDR_READER_FN readFn; - NDR_WRITER_FN writeFn; + WINPR_ATTR_NODISCARD NDR_READER_FN readFn; + WINPR_ATTR_NODISCARD NDR_WRITER_FN writeFn; NDR_DESTROY_FN destroyFn; NDR_DUMP_FN dumpFn; } NdrMessageDescr; diff --git a/channels/rdpecam/client/camera.h b/channels/rdpecam/client/camera.h index ef7375874..ce0be4e40 100644 --- a/channels/rdpecam/client/camera.h +++ b/channels/rdpecam/client/camera.h @@ -169,9 +169,8 @@ struct s_ICamHal * @param hchannel the generic freerdp channel * @return the number of found cameras */ - UINT(*Enumerate) - (ICamHal* ihal, ICamHalEnumCallback callback, CameraPlugin* ecam, - GENERIC_CHANNEL_CALLBACK* hchannel); + WINPR_ATTR_NODISCARD UINT (*Enumerate)(ICamHal* ihal, ICamHalEnumCallback callback, + CameraPlugin* ecam, GENERIC_CHANNEL_CALLBACK* hchannel); /** * callback to activate a given camera device @@ -181,7 +180,8 @@ struct s_ICamHal * @return if the operation was successful * @since 3.18.0 */ - BOOL (*Activate)(ICamHal* ihal, const char* deviceId, CAM_ERROR_CODE* errorCode); + WINPR_ATTR_NODISCARD BOOL (*Activate)(ICamHal* ihal, const char* deviceId, + CAM_ERROR_CODE* errorCode); /** * callback to deactivate a given camera device @@ -191,7 +191,8 @@ struct s_ICamHal * @return if the operation was successful * @since 3.18.0 */ - BOOL (*Deactivate)(ICamHal* ihal, const char* deviceId, CAM_ERROR_CODE* errorCode); + WINPR_ATTR_NODISCARD BOOL (*Deactivate)(ICamHal* ihal, const char* deviceId, + CAM_ERROR_CODE* errorCode); /** * callback that returns the list of compatible media types given a set of supported formats @@ -204,10 +205,10 @@ struct s_ICamHal * @param nMediaTypes output number of media descriptors * @return number of matched supported formats */ - INT16(*GetMediaTypeDescriptions) - (ICamHal* ihal, const char* deviceId, size_t streamIndex, - const CAM_MEDIA_FORMAT_INFO* supportedFormats, size_t nSupportedFormats, - CAM_MEDIA_TYPE_DESCRIPTION* mediaTypes, size_t* nMediaTypes); + WINPR_ATTR_NODISCARD INT16 (*GetMediaTypeDescriptions)( + ICamHal* ihal, const char* deviceId, size_t streamIndex, + const CAM_MEDIA_FORMAT_INFO* supportedFormats, size_t nSupportedFormats, + CAM_MEDIA_TYPE_DESCRIPTION* mediaTypes, size_t* nMediaTypes); /** * callback to start a stream @@ -218,9 +219,10 @@ struct s_ICamHal * @param callback * @return \b CAM_ERROR_CODE_None on success, a CAM_Error otherwise */ - CAM_ERROR_CODE(*StartStream) - (ICamHal* ihal, CameraDevice* dev, size_t streamIndex, - const CAM_MEDIA_TYPE_DESCRIPTION* mediaType, ICamHalSampleCapturedCallback callback); + WINPR_ATTR_NODISCARD CAM_ERROR_CODE (*StartStream)(ICamHal* ihal, CameraDevice* dev, + size_t streamIndex, + const CAM_MEDIA_TYPE_DESCRIPTION* mediaType, + ICamHalSampleCapturedCallback callback); /** * callback to stop a stream @@ -239,12 +241,12 @@ struct s_ICamHal CAM_ERROR_CODE (*Free)(ICamHal* ihal); }; -typedef UINT (*PREGISTERCAMERAHAL)(IWTSPlugin* plugin, ICamHal* hal); +typedef WINPR_ATTR_NODISCARD UINT (*PREGISTERCAMERAHAL)(IWTSPlugin* plugin, ICamHal* hal); typedef struct { IWTSPlugin* plugin; - PREGISTERCAMERAHAL pRegisterCameraHal; + WINPR_ATTR_NODISCARD PREGISTERCAMERAHAL pRegisterCameraHal; CameraPlugin* ecam; const ADDIN_ARGV* args; @@ -253,7 +255,8 @@ typedef struct typedef FREERDP_CAMERA_HAL_ENTRY_POINTS* PFREERDP_CAMERA_HAL_ENTRY_POINTS; /* entry point called by addin manager */ -typedef UINT(VCAPITYPE* PFREERDP_CAMERA_HAL_ENTRY)(PFREERDP_CAMERA_HAL_ENTRY_POINTS pEntryPoints); +typedef WINPR_ATTR_NODISCARD +UINT(VCAPITYPE* PFREERDP_CAMERA_HAL_ENTRY)(PFREERDP_CAMERA_HAL_ENTRY_POINTS pEntryPoints); /* common functions */ UINT ecam_channel_send_generic_msg(CameraPlugin* ecam, GENERIC_CHANNEL_CALLBACK* hchannel, diff --git a/channels/rdpecam/client/camera_device_enum_main.c b/channels/rdpecam/client/camera_device_enum_main.c index 240a160e4..d153f12bb 100644 --- a/channels/rdpecam/client/camera_device_enum_main.c +++ b/channels/rdpecam/client/camera_device_enum_main.c @@ -169,9 +169,7 @@ static UINT ecam_ihal_device_added_callback(CameraPlugin* ecam, GENERIC_CHANNEL_ */ static UINT ecam_enumerate_devices(CameraPlugin* ecam, GENERIC_CHANNEL_CALLBACK* hchannel) { - ecam->ihal->Enumerate(ecam->ihal, ecam_ihal_device_added_callback, ecam, hchannel); - - return CHANNEL_RC_OK; + return ecam->ihal->Enumerate(ecam->ihal, ecam_ihal_device_added_callback, ecam, hchannel); } /** @@ -403,11 +401,12 @@ static UINT ecam_plugin_terminated(IWTSPlugin* pPlugin) HashTable_Free(ecam->devices); + UINT rc = CHANNEL_RC_OK; if (ecam->ihal) - ecam->ihal->Free(ecam->ihal); + rc = ecam->ihal->Free(ecam->ihal); free(ecam); - return CHANNEL_RC_OK; + return rc; } /** diff --git a/channels/rdpgfx/client/rdpgfx_main.c b/channels/rdpgfx/client/rdpgfx_main.c index 74690e822..b51d82a4a 100644 --- a/channels/rdpgfx/client/rdpgfx_main.c +++ b/channels/rdpgfx/client/rdpgfx_main.c @@ -73,8 +73,10 @@ static void free_surfaces(RdpgfxClientContext* context, wHashTable* SurfaceTable HashTable_Foreach(SurfaceTable, delete_surface, context); } -static void evict_cache_slots(RdpgfxClientContext* context, UINT16 MaxCacheSlots, void** CacheSlots) +static UINT evict_cache_slots(RdpgfxClientContext* context, UINT16 MaxCacheSlots, void** CacheSlots) { + UINT error = CHANNEL_RC_OK; + WINPR_ASSERT(CacheSlots); for (UINT16 index = 0; index < MaxCacheSlots; index++) { @@ -85,12 +87,15 @@ static void evict_cache_slots(RdpgfxClientContext* context, UINT16 MaxCacheSlots if (context && context->EvictCacheEntry) { - context->EvictCacheEntry(context, &pdu); + const UINT rc = context->EvictCacheEntry(context, &pdu); + if (rc != CHANNEL_RC_OK) + error = rc; } CacheSlots[index] = NULL; } } + return error; } /** @@ -861,7 +866,6 @@ fail: static UINT rdpgfx_load_cache_import_reply(RDPGFX_PLUGIN* gfx, const RDPGFX_CACHE_IMPORT_REPLY_PDU* reply) { - int count = 0; UINT error = CHANNEL_RC_OK; rdpPersistentCache* persistent = NULL; WINPR_ASSERT(gfx); @@ -896,7 +900,7 @@ static UINT rdpgfx_load_cache_import_reply(RDPGFX_PLUGIN* gfx, goto fail; } - count = persistent_cache_get_count(persistent); + int count = persistent_cache_get_count(persistent); count = (count < reply->importedEntriesCount) ? count : reply->importedEntriesCount; @@ -913,7 +917,11 @@ static UINT rdpgfx_load_cache_import_reply(RDPGFX_PLUGIN* gfx, const UINT16 cacheSlot = reply->cacheSlots[idx]; if (context && context->ImportCacheEntry) - context->ImportCacheEntry(context, cacheSlot, &entry); + { + error = context->ImportCacheEntry(context, cacheSlot, &entry); + if (error != CHANNEL_RC_OK) + break; + } } persistent_cache_free(persistent); @@ -1011,7 +1019,10 @@ static UINT rdpgfx_recv_create_surface_pdu(GENERIC_CHANNEL_CALLBACK* callback, w * manually. */ RDPGFX_DELETE_SURFACE_PDU deletePdu = { pdu.surfaceId }; - IFCALL(context->DeleteSurface, context, &deletePdu); + const UINT drc = IFCALLRESULT(CHANNEL_RC_OK, context->DeleteSurface, context, &deletePdu); + if (drc != CHANNEL_RC_OK) + WLog_Print(gfx->log, WLOG_WARN, + "context->DeleteSurface failed with error %" PRIu32 ", ignoring", error); IFCALLRET(context->CreateSurface, error, context, &pdu); @@ -2116,7 +2127,13 @@ static UINT rdpgfx_on_close(IWTSVirtualChannelCallback* pChannelCallback) } free_surfaces(context, gfx->SurfaceTable); - evict_cache_slots(context, gfx->MaxCacheSlots, gfx->CacheSlots); + error = evict_cache_slots(context, gfx->MaxCacheSlots, gfx->CacheSlots); + if (error) + { + // print error, but don't consider this a hard failure + WLog_Print(gfx->log, WLOG_ERROR, "evict_cache_slots failed with error %" PRIu32 "", + error); + } free(callback); gfx->UnacknowledgedFrames = 0; @@ -2124,7 +2141,13 @@ static UINT rdpgfx_on_close(IWTSVirtualChannelCallback* pChannelCallback) if (context) { - IFCALL(context->OnClose, context); + error = IFCALLRESULT(CHANNEL_RC_OK, context->OnClose, context); + if (error) + { + // print error, but don't consider this a hard failure + WLog_Print(gfx->log, WLOG_ERROR, "context->OnClose failed with error %" PRIu32 "", + error); + } } } diff --git a/channels/serial/client/serial_main.c b/channels/serial/client/serial_main.c index cef571464..1110b2068 100644 --- a/channels/serial/client/serial_main.c +++ b/channels/serial/client/serial_main.c @@ -710,7 +710,9 @@ error_handle: (void)CloseHandle(irpThread); irp->IoStatus = STATUS_NO_MEMORY; WINPR_ASSERT(irp->Complete); - irp->Complete(irp); + const UINT rc = irp->Complete(irp); + if (rc != CHANNEL_RC_OK) + WLog_Print(serial->log, WLOG_WARN, "irp->Complete failed with %" PRIu32, rc); free(data); } diff --git a/channels/tsmf/client/alsa/tsmf_alsa.c b/channels/tsmf/client/alsa/tsmf_alsa.c index 125acc291..a2623f0ee 100644 --- a/channels/tsmf/client/alsa/tsmf_alsa.c +++ b/channels/tsmf/client/alsa/tsmf_alsa.c @@ -198,7 +198,7 @@ static UINT64 tsmf_alsa_get_latency(ITSMFAudioDevice* audio) return latency; } -static BOOL tsmf_alsa_flush(ITSMFAudioDevice* audio) +static BOOL tsmf_alsa_flush(WINPR_ATTR_UNUSED ITSMFAudioDevice* audio) { return TRUE; } diff --git a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c index ce7346778..12da2601b 100644 --- a/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c +++ b/channels/tsmf/client/ffmpeg/tsmf_ffmpeg.c @@ -462,7 +462,7 @@ static BOOL tsmf_ffmpeg_decode_video(ITSMFDecoder* decoder, const BYTE* data, UI } static BOOL tsmf_ffmpeg_decode_audio(ITSMFDecoder* decoder, const BYTE* data, UINT32 data_size, - UINT32 extensions) + WINPR_ATTR_UNUSED UINT32 extensions) { TSMFFFmpegDecoder* mdecoder = (TSMFFFmpegDecoder*)decoder; int len = 0; @@ -686,7 +686,9 @@ static void tsmf_ffmpeg_free(ITSMFDecoder* decoder) } static INIT_ONCE g_Initialized = INIT_ONCE_STATIC_INIT; -static BOOL CALLBACK InitializeAvCodecs(PINIT_ONCE once, PVOID param, PVOID* context) +static BOOL CALLBACK InitializeAvCodecs(WINPR_ATTR_UNUSED PINIT_ONCE once, + WINPR_ATTR_UNUSED PVOID param, + WINPR_ATTR_UNUSED PVOID* context) { #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 10, 100) avcodec_register_all(); diff --git a/channels/tsmf/client/oss/tsmf_oss.c b/channels/tsmf/client/oss/tsmf_oss.c index 9cc2119d8..874a02fdf 100644 --- a/channels/tsmf/client/oss/tsmf_oss.c +++ b/channels/tsmf/client/oss/tsmf_oss.c @@ -194,7 +194,7 @@ static UINT64 tsmf_oss_get_latency(ITSMFAudioDevice* audio) return latency; } -static BOOL tsmf_oss_flush(ITSMFAudioDevice* audio) +static BOOL tsmf_oss_flush(WINPR_ATTR_UNUSED ITSMFAudioDevice* audio) { return TRUE; } diff --git a/channels/tsmf/client/pulse/tsmf_pulse.c b/channels/tsmf/client/pulse/tsmf_pulse.c index ed8e80778..6858d83ef 100644 --- a/channels/tsmf/client/pulse/tsmf_pulse.c +++ b/channels/tsmf/client/pulse/tsmf_pulse.c @@ -18,6 +18,7 @@ */ #include +#include #include #include @@ -155,7 +156,8 @@ static BOOL tsmf_pulse_open(ITSMFAudioDevice* audio, const char* device) return TRUE; } -static void tsmf_pulse_stream_success_callback(pa_stream* stream, int success, void* userdata) +static void tsmf_pulse_stream_success_callback(WINPR_ATTR_UNUSED pa_stream* stream, + WINPR_ATTR_UNUSED int success, void* userdata) { TSMFPulseAudioDevice* pulse = (TSMFPulseAudioDevice*)userdata; pa_threaded_mainloop_signal(pulse->mainloop, 0); @@ -200,7 +202,8 @@ static void tsmf_pulse_stream_state_callback(pa_stream* stream, void* userdata) } } -static void tsmf_pulse_stream_request_callback(pa_stream* stream, size_t length, void* userdata) +static void tsmf_pulse_stream_request_callback(WINPR_ATTR_UNUSED pa_stream* stream, + WINPR_ATTR_UNUSED size_t length, void* userdata) { TSMFPulseAudioDevice* pulse = (TSMFPulseAudioDevice*)userdata; DEBUG_TSMF("%" PRIdz "", length); @@ -234,7 +237,7 @@ static BOOL tsmf_pulse_open_stream(TSMFPulseAudioDevice* pulse) DEBUG_TSMF(""); pa_threaded_mainloop_lock(pulse->mainloop); - pulse->stream = pa_stream_new(pulse->context, freerdp_ApplicationDetailsString(), + pulse->stream = pa_stream_new(pulse->context, freerdp_getApplicationDetailsString(), &pulse->sample_spec, NULL); if (!pulse->stream) @@ -293,7 +296,7 @@ static BOOL tsmf_pulse_open_stream(TSMFPulseAudioDevice* pulse) } static BOOL tsmf_pulse_set_format(ITSMFAudioDevice* audio, UINT32 sample_rate, UINT32 channels, - UINT32 bits_per_sample) + WINPR_ATTR_UNUSED UINT32 bits_per_sample) { TSMFPulseAudioDevice* pulse = (TSMFPulseAudioDevice*)audio; DEBUG_TSMF("sample_rate %" PRIu32 " channels %" PRIu32 " bits_per_sample %" PRIu32 "", diff --git a/channels/tsmf/client/tsmf_audio.h b/channels/tsmf/client/tsmf_audio.h index a3a5be0a2..a5496c6d8 100644 --- a/channels/tsmf/client/tsmf_audio.h +++ b/channels/tsmf/client/tsmf_audio.h @@ -27,18 +27,19 @@ typedef struct s_ITSMFAudioDevice ITSMFAudioDevice; struct s_ITSMFAudioDevice { /* Open the audio device. */ - BOOL (*Open)(ITSMFAudioDevice* audio, const char* device); + WINPR_ATTR_NODISCARD BOOL (*Open)(ITSMFAudioDevice* audio, const char* device); /* Set the audio data format. */ - BOOL(*SetFormat) - (ITSMFAudioDevice* audio, UINT32 sample_rate, UINT32 channels, UINT32 bits_per_sample); + WINPR_ATTR_NODISCARD BOOL (*SetFormat)(ITSMFAudioDevice* audio, UINT32 sample_rate, + UINT32 channels, UINT32 bits_per_sample); /* Play audio data. */ - BOOL (*Play)(ITSMFAudioDevice* audio, const BYTE* data, UINT32 data_size); + WINPR_ATTR_NODISCARD BOOL (*Play)(ITSMFAudioDevice* audio, const BYTE* data, UINT32 data_size); /* Get the latency of the last written sample, in 100ns */ - UINT64 (*GetLatency)(ITSMFAudioDevice* audio); + WINPR_ATTR_NODISCARD UINT64 (*GetLatency)(ITSMFAudioDevice* audio); /* Change the playback volume level */ - BOOL (*ChangeVolume)(ITSMFAudioDevice* audio, UINT32 newVolume, UINT32 muted); + WINPR_ATTR_NODISCARD BOOL (*ChangeVolume)(ITSMFAudioDevice* audio, UINT32 newVolume, + UINT32 muted); /* Flush queued audio data */ - BOOL (*Flush)(ITSMFAudioDevice* audio); + WINPR_ATTR_NODISCARD BOOL (*Flush)(ITSMFAudioDevice* audio); /* Free the audio device */ void (*Free)(ITSMFAudioDevice* audio); }; diff --git a/channels/tsmf/client/tsmf_main.c b/channels/tsmf/client/tsmf_main.c index dbfa404ca..033184556 100644 --- a/channels/tsmf/client/tsmf_main.c +++ b/channels/tsmf/client/tsmf_main.c @@ -432,7 +432,9 @@ static UINT tsmf_on_close(IWTSVirtualChannelCallback* pChannelCallback) * @return 0 on success, otherwise a Win32 error code */ static UINT tsmf_on_new_channel_connection(IWTSListenerCallback* pListenerCallback, - IWTSVirtualChannel* pChannel, BYTE* Data, BOOL* pbAccept, + IWTSVirtualChannel* pChannel, + WINPR_ATTR_UNUSED BYTE* Data, + WINPR_ATTR_UNUSED BOOL* pbAccept, IWTSVirtualChannelCallback** ppCallback) { TSMF_CHANNEL_CALLBACK* callback = NULL; diff --git a/channels/urbdrc/client/data_transfer.c b/channels/urbdrc/client/data_transfer.c index c4042107d..794d3d441 100644 --- a/channels/urbdrc/client/data_transfer.c +++ b/channels/urbdrc/client/data_transfer.c @@ -450,9 +450,13 @@ static UINT urbdrc_process_query_device_text(IUDEVICE* pdev, GENERIC_CHANNEL_CAL DeviceDescription, bufferSize); } -static void func_select_all_interface_for_msconfig(IUDEVICE* pdev, +static void func_select_all_interface_for_msconfig(URBDRC_PLUGIN* urbdrc, IUDEVICE* pdev, MSUSB_CONFIG_DESCRIPTOR* MsConfig) { + WINPR_ASSERT(urbdrc); + WINPR_ASSERT(pdev); + WINPR_ASSERT(MsConfig); + MSUSB_INTERFACE_DESCRIPTOR** MsInterfaces = MsConfig->MsInterfaces; UINT32 NumInterfaces = MsConfig->NumInterfaces; @@ -460,7 +464,12 @@ static void func_select_all_interface_for_msconfig(IUDEVICE* pdev, { const BYTE InterfaceNumber = MsInterfaces[inum]->InterfaceNumber; const BYTE AlternateSetting = MsInterfaces[inum]->AlternateSetting; - pdev->select_interface(pdev, InterfaceNumber, AlternateSetting); + const int rc = pdev->select_interface(pdev, InterfaceNumber, AlternateSetting); + if (rc < 0) + { + WLog_Print(urbdrc->log, WLOG_WARN, "select_interface %" PRIu8 " [%" PRIu8 "] failed", + InterfaceNumber, AlternateSetting); + } } } @@ -545,9 +554,16 @@ static UINT urb_select_configuration(IUDEVICE* pdev, GENERIC_CHANNEL_CALLBACK* c return ERROR_INVALID_DATA; /* select config */ - pdev->select_configuration(pdev, MsConfig->bConfigurationValue); + const int lrc = pdev->select_configuration(pdev, MsConfig->bConfigurationValue); + if (lrc != 0) + { + msusb_msconfig_free(MsConfig); + MsConfig = NULL; + return ERROR_INTERNAL_ERROR; + } + /* select all interface */ - func_select_all_interface_for_msconfig(pdev, MsConfig); + func_select_all_interface_for_msconfig(urbdrc, pdev, MsConfig); /* complete configuration setup */ if (!pdev->complete_msconfig_setup(pdev, MsConfig)) { @@ -657,7 +673,14 @@ static UINT urb_select_interface(IUDEVICE* pdev, GENERIC_CHANNEL_CALLBACK* callb return ERROR_INVALID_DATA; } - pdev->select_interface(pdev, MsInterface->InterfaceNumber, MsInterface->AlternateSetting); + const int lerr = + pdev->select_interface(pdev, MsInterface->InterfaceNumber, MsInterface->AlternateSetting); + if (lerr != 0) + { + msusb_msinterface_free(MsInterface); + return ERROR_INTERNAL_ERROR; + } + /* replace device's MsInterface */ MSUSB_CONFIG_DESCRIPTOR* MsConfig = pdev->get_MsConfig(pdev); const uint8_t InterfaceNumber = MsInterface->InterfaceNumber; @@ -1982,7 +2005,11 @@ UINT urbdrc_process_udev_data_transfer(GENERIC_CHANNEL_CALLBACK* callback, URBDR } /* USB kernel driver detach!! */ - pdev->detach_kernel_driver(pdev); + if (!pdev->detach_kernel_driver(pdev)) + { + error = ERROR_SUCCESS; + goto fail; + } switch (FunctionId) { diff --git a/channels/urbdrc/client/libusb/libusb_udevice.c b/channels/urbdrc/client/libusb/libusb_udevice.c index 878438282..d465ff9be 100644 --- a/channels/urbdrc/client/libusb/libusb_udevice.c +++ b/channels/urbdrc/client/libusb/libusb_udevice.c @@ -1169,7 +1169,11 @@ static void libusb_udev_mark_channel_closed(IUDEVICE* idev) pdev->status |= URBDRC_DEVICE_CHANNEL_CLOSED; pdev->iface.cancel_all_transfer_request(&pdev->iface); - urbdrc->udevman->unregister_udevice(urbdrc->udevman, busNr, devNr); + if (!urbdrc->udevman->unregister_udevice(urbdrc->udevman, busNr, devNr)) + { + WLog_Print(pdev->urbdrc->log, WLOG_WARN, "unregister_udevice failed for %d, %d", busNr, + devNr); + } } } @@ -1192,9 +1196,15 @@ static void libusb_udev_channel_closed(IUDEVICE* idev) pdev->status |= URBDRC_DEVICE_CHANNEL_CLOSED; if (channel) - channel->Write(channel, 0, NULL, NULL); + { + const UINT rc = channel->Write(channel, 0, NULL, NULL); + if (rc != CHANNEL_RC_OK) + WLog_Print(urbdrc->log, WLOG_WARN, "channel->Write failed with %" PRIu32, rc); + } - urbdrc->udevman->unregister_udevice(urbdrc->udevman, busNr, devNr); + if (!urbdrc->udevman->unregister_udevice(urbdrc->udevman, busNr, devNr)) + WLog_Print(urbdrc->log, WLOG_WARN, "unregister_udevice failed for %d, %d", busNr, + devNr); } } @@ -1562,7 +1572,8 @@ static void udev_free(IUDEVICE* idev) Sleep(100); /* release all interface and attach kernel driver */ - udev->iface.attach_kernel_driver(idev); + if (!udev->iface.attach_kernel_driver(idev)) + WLog_Print(udev->urbdrc->log, WLOG_WARN, "attach_kernel_driver failed for device"); ArrayList_Free(udev->request_queue); /* free the config descriptor that send from windows */ msusb_msconfig_free(udev->MsConfig); diff --git a/channels/urbdrc/client/urbdrc_main.c b/channels/urbdrc/client/urbdrc_main.c index f10962b8f..4716fb19e 100644 --- a/channels/urbdrc/client/urbdrc_main.c +++ b/channels/urbdrc/client/urbdrc_main.c @@ -350,7 +350,9 @@ static UINT urdbrc_send_usb_device_add(GENERIC_CHANNEL_CALLBACK* callback, IUDEV size_t nrCompatIds = 3; /* USB kernel driver detach!! */ - pdev->detach_kernel_driver(pdev); + if (!pdev->detach_kernel_driver(pdev)) + return ERROR_INTERNAL_ERROR; + { const UINT16 idVendor = (UINT16)pdev->query_device_descriptor(pdev, ID_VENDOR); const UINT16 idProduct = (UINT16)pdev->query_device_descriptor(pdev, ID_PRODUCT); @@ -505,7 +507,8 @@ static UINT urbdrc_device_control_channel(GENERIC_CHANNEL_CALLBACK* callback, case INIT_CHANNEL_IN: /* Control channel was established */ error = ERROR_SUCCESS; - udevman->initialize(udevman, channelId); + if (!udevman->initialize(udevman, channelId)) + goto fail; if (!urbdrc_announce_devices(udevman)) goto fail; diff --git a/channels/urbdrc/client/urbdrc_main.h b/channels/urbdrc/client/urbdrc_main.h index 4eead9f2b..8629c8a34 100644 --- a/channels/urbdrc/client/urbdrc_main.h +++ b/channels/urbdrc/client/urbdrc_main.h @@ -45,12 +45,12 @@ typedef struct S_IUDEVICE IUDEVICE; typedef struct S_IUDEVMAN IUDEVMAN; -#define BASIC_DEV_STATE_DEFINED(_arg, _type) \ - _type (*get_##_arg)(IUDEVICE * pdev); \ +#define BASIC_DEV_STATE_DEFINED(_arg, _type) \ + WINPR_ATTR_NODISCARD _type (*get_##_arg)(IUDEVICE * pdev); \ void (*set_##_arg)(IUDEVICE * pdev, _type _arg) -#define BASIC_DEVMAN_STATE_DEFINED(_arg, _type) \ - _type (*get_##_arg)(IUDEVMAN * udevman); \ +#define BASIC_DEVMAN_STATE_DEFINED(_arg, _type) \ + WINPR_ATTR_NODISCARD _type (*get_##_arg)(IUDEVMAN * udevman); \ void (*set_##_arg)(IUDEVMAN * udevman, _type _arg) typedef struct @@ -72,7 +72,7 @@ typedef BOOL (*PREGISTERURBDRCSERVICE)(IWTSPlugin* plugin, IUDEVMAN* udevman); typedef struct { IWTSPlugin* plugin; - PREGISTERURBDRCSERVICE pRegisterUDEVMAN; + WINPR_ATTR_NODISCARD PREGISTERURBDRCSERVICE pRegisterUDEVMAN; const ADDIN_ARGV* args; } FREERDP_URBDRC_SERVICE_ENTRY_POINTS; typedef FREERDP_URBDRC_SERVICE_ENTRY_POINTS* PFREERDP_URBDRC_SERVICE_ENTRY_POINTS; @@ -97,64 +97,67 @@ typedef void (*t_isoch_transfer_cb)(IUDEVICE* idev, GENERIC_CHANNEL_CALLBACK* ca struct S_IUDEVICE { /* Transfer */ - int (*isoch_transfer)(IUDEVICE* idev, GENERIC_CHANNEL_CALLBACK* callback, UINT32 MessageId, - UINT32 RequestId, UINT32 EndpointAddress, UINT32 TransferFlags, - UINT32 StartFrame, UINT32 ErrorCount, BOOL NoAck, - const BYTE* packetDescriptorData, UINT32 NumberOfPackets, - UINT32 BufferSize, const BYTE* Buffer, t_isoch_transfer_cb cb, - UINT32 Timeout); + WINPR_ATTR_NODISCARD int (*isoch_transfer)( + IUDEVICE* idev, GENERIC_CHANNEL_CALLBACK* callback, UINT32 MessageId, UINT32 RequestId, + UINT32 EndpointAddress, UINT32 TransferFlags, UINT32 StartFrame, UINT32 ErrorCount, + BOOL NoAck, const BYTE* packetDescriptorData, UINT32 NumberOfPackets, UINT32 BufferSize, + const BYTE* Buffer, t_isoch_transfer_cb cb, UINT32 Timeout); - BOOL(*control_transfer) - (IUDEVICE* idev, UINT32 RequestId, UINT32 EndpointAddress, UINT32 TransferFlags, - BYTE bmRequestType, BYTE Request, UINT16 Value, UINT16 Index, UINT32* UrbdStatus, - UINT32* BufferSize, BYTE* Buffer, UINT32 Timeout); + WINPR_ATTR_NODISCARD BOOL (*control_transfer)(IUDEVICE* idev, UINT32 RequestId, + UINT32 EndpointAddress, UINT32 TransferFlags, + BYTE bmRequestType, BYTE Request, UINT16 Value, + UINT16 Index, UINT32* UrbdStatus, + UINT32* BufferSize, BYTE* Buffer, UINT32 Timeout); - int (*bulk_or_interrupt_transfer)(IUDEVICE* idev, GENERIC_CHANNEL_CALLBACK* callback, - UINT32 MessageId, UINT32 RequestId, UINT32 EndpointAddress, - UINT32 TransferFlags, BOOL NoAck, UINT32 BufferSize, - const BYTE* data, t_isoch_transfer_cb cb, UINT32 Timeout); + WINPR_ATTR_NODISCARD int (*bulk_or_interrupt_transfer)( + IUDEVICE* idev, GENERIC_CHANNEL_CALLBACK* callback, UINT32 MessageId, UINT32 RequestId, + UINT32 EndpointAddress, UINT32 TransferFlags, BOOL NoAck, UINT32 BufferSize, + const BYTE* data, t_isoch_transfer_cb cb, UINT32 Timeout); - int (*select_configuration)(IUDEVICE* idev, UINT32 bConfigurationValue); + WINPR_ATTR_NODISCARD int (*select_configuration)(IUDEVICE* idev, UINT32 bConfigurationValue); - int (*select_interface)(IUDEVICE* idev, BYTE InterfaceNumber, BYTE AlternateSetting); + WINPR_ATTR_NODISCARD int (*select_interface)(IUDEVICE* idev, BYTE InterfaceNumber, + BYTE AlternateSetting); - int (*control_pipe_request)(IUDEVICE* idev, UINT32 RequestId, UINT32 EndpointAddress, - UINT32* UsbdStatus, int command); + WINPR_ATTR_NODISCARD int (*control_pipe_request)(IUDEVICE* idev, UINT32 RequestId, + UINT32 EndpointAddress, UINT32* UsbdStatus, + int command); - UINT32(*control_query_device_text) - (IUDEVICE* idev, UINT32 TextType, UINT16 LocaleId, UINT8* BufferSize, BYTE* Buffer); + WINPR_ATTR_NODISCARD UINT32 (*control_query_device_text)(IUDEVICE* idev, UINT32 TextType, + UINT16 LocaleId, UINT8* BufferSize, + BYTE* Buffer); - int (*os_feature_descriptor_request)(IUDEVICE* idev, UINT32 RequestId, BYTE Recipient, - BYTE InterfaceNumber, BYTE Ms_PageIndex, - UINT16 Ms_featureDescIndex, UINT32* UsbdStatus, - UINT32* BufferSize, BYTE* Buffer, UINT32 Timeout); + WINPR_ATTR_NODISCARD int (*os_feature_descriptor_request)( + IUDEVICE* idev, UINT32 RequestId, BYTE Recipient, BYTE InterfaceNumber, BYTE Ms_PageIndex, + UINT16 Ms_featureDescIndex, UINT32* UsbdStatus, UINT32* BufferSize, BYTE* Buffer, + UINT32 Timeout); void (*cancel_all_transfer_request)(IUDEVICE* idev); - int (*cancel_transfer_request)(IUDEVICE* idev, UINT32 RequestId); + WINPR_ATTR_NODISCARD int (*cancel_transfer_request)(IUDEVICE* idev, UINT32 RequestId); - int (*query_device_descriptor)(IUDEVICE* idev, int offset); + WINPR_ATTR_NODISCARD int (*query_device_descriptor)(IUDEVICE* idev, int offset); - BOOL (*detach_kernel_driver)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD BOOL (*detach_kernel_driver)(IUDEVICE* idev); - BOOL (*attach_kernel_driver)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD BOOL (*attach_kernel_driver)(IUDEVICE* idev); - int (*query_device_port_status)(IUDEVICE* idev, UINT32* UsbdStatus, UINT32* BufferSize, - BYTE* Buffer); + WINPR_ATTR_NODISCARD int (*query_device_port_status)(IUDEVICE* idev, UINT32* UsbdStatus, + UINT32* BufferSize, BYTE* Buffer); - MSUSB_CONFIG_DESCRIPTOR* (*complete_msconfig_setup)(IUDEVICE* idev, - MSUSB_CONFIG_DESCRIPTOR* MsConfig); + WINPR_ATTR_NODISCARD MSUSB_CONFIG_DESCRIPTOR* (*complete_msconfig_setup)( + IUDEVICE* idev, MSUSB_CONFIG_DESCRIPTOR* MsConfig); /* Basic state */ - int (*isCompositeDevice)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD int (*isCompositeDevice)(IUDEVICE* idev); - int (*isExist)(IUDEVICE* idev); - int (*isAlreadySend)(IUDEVICE* idev); - int (*isChannelClosed)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD int (*isExist)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD int (*isAlreadySend)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD int (*isChannelClosed)(IUDEVICE* idev); void (*setAlreadySend)(IUDEVICE* idev); void (*setChannelClosed)(IUDEVICE* idev); void (*markChannelClosed)(IUDEVICE* idev); - char* (*getPath)(IUDEVICE* idev); + WINPR_ATTR_NODISCARD char* (*getPath)(IUDEVICE* idev); void (*free)(IUDEVICE* idev); @@ -179,16 +182,18 @@ struct S_IUDEVMAN /* Manage devices */ void (*rewind)(IUDEVMAN* idevman); - BOOL (*has_next)(IUDEVMAN* idevman); - BOOL (*unregister_udevice)(IUDEVMAN* idevman, BYTE bus_number, BYTE dev_number); - size_t (*register_udevice)(IUDEVMAN* idevman, BYTE bus_number, BYTE dev_number, UINT16 idVendor, - UINT16 idProduct, UINT32 flag); - IUDEVICE* (*get_next)(IUDEVMAN* idevman); - IUDEVICE* (*get_udevice_by_UsbDevice)(IUDEVMAN* idevman, UINT32 UsbDevice); - IUDEVICE* (*get_udevice_by_ChannelID)(IUDEVMAN* idevman, UINT32 channelID); + WINPR_ATTR_NODISCARD BOOL (*has_next)(IUDEVMAN* idevman); + WINPR_ATTR_NODISCARD BOOL (*unregister_udevice)(IUDEVMAN* idevman, BYTE bus_number, + BYTE dev_number); + WINPR_ATTR_NODISCARD size_t (*register_udevice)(IUDEVMAN* idevman, BYTE bus_number, + BYTE dev_number, UINT16 idVendor, + UINT16 idProduct, UINT32 flag); + WINPR_ATTR_NODISCARD IUDEVICE* (*get_next)(IUDEVMAN* idevman); + WINPR_ATTR_NODISCARD IUDEVICE* (*get_udevice_by_UsbDevice)(IUDEVMAN* idevman, UINT32 UsbDevice); + WINPR_ATTR_NODISCARD IUDEVICE* (*get_udevice_by_ChannelID)(IUDEVMAN* idevman, UINT32 channelID); /* Extension */ - int (*isAutoAdd)(IUDEVMAN* idevman); + WINPR_ATTR_NODISCARD int (*isAutoAdd)(IUDEVMAN* idevman); /* Basic state */ BASIC_DEVMAN_STATE_DEFINED(device_num, UINT32); @@ -197,8 +202,8 @@ struct S_IUDEVMAN /* control semaphore or mutex lock */ void (*loading_lock)(IUDEVMAN* idevman); void (*loading_unlock)(IUDEVMAN* idevman); - BOOL (*initialize)(IUDEVMAN* idevman, UINT32 channelId); - UINT (*listener_created_callback)(IUDEVMAN* idevman); + WINPR_ATTR_NODISCARD BOOL (*initialize)(IUDEVMAN* idevman, UINT32 channelId); + WINPR_ATTR_NODISCARD UINT (*listener_created_callback)(IUDEVMAN* idevman); IWTSPlugin* plugin; UINT32 controlChannelId; diff --git a/channels/video/client/video_main.c b/channels/video/client/video_main.c index 3612aa01c..7811f916d 100644 --- a/channels/video/client/video_main.c +++ b/channels/video/client/video_main.c @@ -716,8 +716,9 @@ static void video_timer(VideoClientContext* video, UINT64 now) memcpy(presentation->surface->data, frame->surfaceData, 1ull * frame->scanline * frame->h); WINPR_ASSERT(video->showSurface); - video->showSurface(video, presentation->surface, presentation->ScaledWidth, - presentation->ScaledHeight); + if (!video->showSurface(video, presentation->surface, presentation->ScaledWidth, + presentation->ScaledHeight)) + WLog_WARN(TAG, "showSurface failed"); VideoFrame_free(&frame); } @@ -872,8 +873,9 @@ static UINT video_VideoData(VideoClientContext* context, const TSMM_VIDEO_DATA* return CHANNEL_RC_OK; WINPR_ASSERT(context->showSurface); - context->showSurface(context, presentation->surface, presentation->ScaledWidth, - presentation->ScaledHeight); + if (!context->showSurface(context, presentation->surface, presentation->ScaledWidth, + presentation->ScaledHeight)) + return CHANNEL_RC_NOT_INITIALIZED; priv->publishedFrames++; diff --git a/client/X11/xf_event.c b/client/X11/xf_event.c index 6e2f51398..9cc554cbc 100644 --- a/client/X11/xf_event.c +++ b/client/X11/xf_event.c @@ -700,7 +700,10 @@ static BOOL xf_event_FocusIn(xfContext* xfc, const XFocusInEvent* event, BOOL ap if (!app) xf_keyboard_release_all_keypress(xfc); else - xf_rail_send_activate(xfc, event->window, TRUE); + { + if (!xf_rail_send_activate(xfc, event->window, TRUE)) + return FALSE; + } xf_pointer_update_scale(xfc); @@ -731,7 +734,7 @@ static BOOL xf_event_FocusOut(xfContext* xfc, const XFocusOutEvent* event, BOOL xf_keyboard_release_all_keypress(xfc); if (app) - xf_rail_send_activate(xfc, event->window, FALSE); + return xf_rail_send_activate(xfc, event->window, FALSE); return TRUE; } diff --git a/client/X11/xf_gfx.c b/client/X11/xf_gfx.c index b6de7eb86..ffec6818f 100644 --- a/client/X11/xf_gfx.c +++ b/client/X11/xf_gfx.c @@ -162,7 +162,9 @@ static UINT xf_UpdateSurfaces(RdpgfxClientContext* context) xfc = (xfContext*)gdi->context; EnterCriticalSection(&context->mux); - context->GetSurfaceIds(context, &pSurfaceIds, &count); + status = context->GetSurfaceIds(context, &pSurfaceIds, &count); + if (status != CHANNEL_RC_OK) + goto fail; for (UINT32 index = 0; index < count; index++) { @@ -187,6 +189,7 @@ static UINT xf_UpdateSurfaces(RdpgfxClientContext* context) break; } +fail: free(pSurfaceIds); LeaveCriticalSection(&context->mux); return status; @@ -422,7 +425,12 @@ static UINT xf_DeleteSurface(RdpgfxClientContext* context, if (surface) { if (surface->gdi.windowMapped) - IFCALL(context->UnmapWindowForSurface, context, surface->gdi.windowId); + { + const UINT rc = IFCALLRESULT(CHANNEL_RC_OK, context->UnmapWindowForSurface, context, + surface->gdi.windowId); + if (rc != CHANNEL_RC_OK) + return rc; + } #ifdef WITH_GFX_H264 h264_context_free(surface->gdi.h264); diff --git a/client/X11/xf_rail.c b/client/X11/xf_rail.c index ecc81ca33..05d043387 100644 --- a/client/X11/xf_rail.c +++ b/client/X11/xf_rail.c @@ -104,7 +104,7 @@ typedef struct const RECTANGLE_16* rect; } rail_paint_fn_arg_t; -void xf_rail_enable_remoteapp_mode(xfContext* xfc) +BOOL xf_rail_enable_remoteapp_mode(xfContext* xfc) { WINPR_ASSERT(xfc); if (!xfc->remote_app) @@ -121,9 +121,10 @@ void xf_rail_enable_remoteapp_mode(xfContext* xfc) gdi->suppressOutput = old; } + return TRUE; } -void xf_rail_disable_remoteapp_mode(xfContext* xfc) +BOOL xf_rail_disable_remoteapp_mode(xfContext* xfc) { WINPR_ASSERT(xfc); if (xfc->remote_app) @@ -142,15 +143,16 @@ void xf_rail_disable_remoteapp_mode(xfContext* xfc) gdi->suppressOutput = old; } + return TRUE; } -void xf_rail_send_activate(xfContext* xfc, Window xwindow, BOOL enabled) +BOOL xf_rail_send_activate(xfContext* xfc, Window xwindow, BOOL enabled) { RAIL_ACTIVATE_ORDER activate = { 0 }; xfAppWindow* appWindow = xf_AppWindowFromX11Window(xfc, xwindow); if (!appWindow) - return; + return FALSE; if (enabled) xf_SetWindowStyle(xfc, appWindow, appWindow->dwStyle, appWindow->dwExStyle); @@ -158,8 +160,9 @@ void xf_rail_send_activate(xfContext* xfc, Window xwindow, BOOL enabled) WINPR_ASSERT(appWindow->windowId <= UINT32_MAX); activate.windowId = (UINT32)appWindow->windowId; activate.enabled = enabled; - xfc->rail->ClientActivate(xfc->rail, &activate); + const UINT rc = xfc->rail->ClientActivate(xfc->rail, &activate); xf_rail_return_window(appWindow); + return rc == CHANNEL_RC_OK; } BOOL xf_rail_send_client_system_command(xfContext* xfc, UINT64 windowId, UINT16 command) @@ -181,14 +184,14 @@ BOOL xf_rail_send_client_system_command(xfContext* xfc, UINT64 windowId, UINT16 * send an update to the RDP server informing it of the new window position * and size. */ -void xf_rail_adjust_position(xfContext* xfc, xfAppWindow* appWindow) +BOOL xf_rail_adjust_position(xfContext* xfc, xfAppWindow* appWindow) { RAIL_WINDOW_MOVE_ORDER windowMove = { 0 }; WINPR_ASSERT(xfc); WINPR_ASSERT(appWindow); if (!appWindow->is_mapped || appWindow->local_move.state != LMS_NOT_ACTIVE) - return; + return FALSE; /* If current window position disagrees with RDP window position, send update to RDP server */ if (appWindow->x != appWindow->windowOffsetX || appWindow->y != appWindow->windowOffsetY || @@ -210,11 +213,13 @@ void xf_rail_adjust_position(xfContext* xfc, xfAppWindow* appWindow) windowMove.right = WINPR_ASSERTING_INT_CAST(INT16, appWindow->x + appWindow->width + right); windowMove.bottom = WINPR_ASSERTING_INT_CAST(INT16, appWindow->y + appWindow->height + bottom); - xfc->rail->ClientWindowMove(xfc->rail, &windowMove); + const UINT rc = xfc->rail->ClientWindowMove(xfc->rail, &windowMove); + return rc == CHANNEL_RC_OK; } + return TRUE; } -void xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow) +BOOL xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow) { int x = 0; int y = 0; @@ -253,7 +258,9 @@ void xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow) windowMove.right = WINPR_ASSERTING_INT_CAST(INT16, appWindow->x + w); /* In the update to RDP the position is one past the window */ windowMove.bottom = WINPR_ASSERTING_INT_CAST(INT16, appWindow->y + h); - xfc->rail->ClientWindowMove(xfc->rail, &windowMove); + const UINT rc = xfc->rail->ClientWindowMove(xfc->rail, &windowMove); + if (rc != CHANNEL_RC_OK) + return FALSE; } /* @@ -266,7 +273,8 @@ void xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow) if ((appWindow->local_move.direction != NET_WM_MOVERESIZE_MOVE_KEYBOARD) && (appWindow->local_move.direction != NET_WM_MOVERESIZE_SIZE_KEYBOARD)) { - freerdp_client_send_button_event(&xfc->common, FALSE, PTR_FLAGS_BUTTON1, x, y); + if (!freerdp_client_send_button_event(&xfc->common, FALSE, PTR_FLAGS_BUTTON1, x, y)) + return FALSE; } /* @@ -279,6 +287,7 @@ void xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow) appWindow->windowWidth = WINPR_ASSERTING_INT_CAST(uint32_t, appWindow->width); appWindow->windowHeight = WINPR_ASSERTING_INT_CAST(uint32_t, appWindow->height); appWindow->local_move.state = LMS_TERMINATING; + return TRUE; } BOOL xf_rail_paint_surface(xfContext* xfc, UINT64 windowId, const RECTANGLE_16* rect) diff --git a/client/X11/xf_rail.h b/client/X11/xf_rail.h index a91714851..d87bb0cca 100644 --- a/client/X11/xf_rail.h +++ b/client/X11/xf_rail.h @@ -116,11 +116,11 @@ BOOL xf_rail_paint(xfContext* xfc, const RECTANGLE_16* rect); BOOL xf_rail_paint_surface(xfContext* xfc, UINT64 windowId, const RECTANGLE_16* rect); BOOL xf_rail_send_client_system_command(xfContext* xfc, UINT64 windowId, UINT16 command); -void xf_rail_send_activate(xfContext* xfc, Window xwindow, BOOL enabled); -void xf_rail_adjust_position(xfContext* xfc, xfAppWindow* appWindow); -void xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow); -void xf_rail_enable_remoteapp_mode(xfContext* xfc); -void xf_rail_disable_remoteapp_mode(xfContext* xfc); +BOOL xf_rail_send_activate(xfContext* xfc, Window xwindow, BOOL enabled); +BOOL xf_rail_adjust_position(xfContext* xfc, xfAppWindow* appWindow); +BOOL xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow); +BOOL xf_rail_enable_remoteapp_mode(xfContext* xfc); +BOOL xf_rail_disable_remoteapp_mode(xfContext* xfc); xfAppWindow* xf_rail_add_window(xfContext* xfc, UINT64 id, INT32 x, INT32 y, UINT32 width, UINT32 height, UINT32 surfaceId); diff --git a/client/common/client.c b/client/common/client.c index e4f99a7f0..d1410698a 100644 --- a/client/common/client.c +++ b/client/common/client.c @@ -126,7 +126,9 @@ rdpContext* freerdp_client_context_new(const RDP_CLIENT_ENTRY_POINTS* pEntryPoin if (!pEntryPoints) return NULL; - IFCALL(pEntryPoints->GlobalInit); + if (!IFCALLRESULT(TRUE, pEntryPoints->GlobalInit)) + return NULL; + instance = freerdp_new(); if (!instance) @@ -1465,9 +1467,8 @@ BOOL freerdp_client_encomsp_set_control(EncomspClientContext* encomsp, BOOL cont if (control) pdu.Flags |= ENCOMSP_REQUEST_INTERACT; - encomsp->ChangeParticipantControlLevel(encomsp, &pdu); - - return TRUE; + const UINT rc = encomsp->ChangeParticipantControlLevel(encomsp, &pdu); + return rc == CHANNEL_RC_OK; } static UINT @@ -1887,17 +1888,25 @@ static BOOL freerdp_handle_touch_up(rdpClientContext* cctx, const FreeRDP_TouchC ? CONTACT_DATA_PRESSURE_PRESENT : 0; // Ensure contact position is unchanged from "engaged" to "out of range" state - rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, - RDPINPUT_CONTACT_FLAG_UPDATE | RDPINPUT_CONTACT_FLAG_INRANGE | - RDPINPUT_CONTACT_FLAG_INCONTACT, - contactFlags, contact->pressure); - rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, flags, - contactFlags, contact->pressure); + const UINT rc1 = + rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, + RDPINPUT_CONTACT_FLAG_UPDATE | RDPINPUT_CONTACT_FLAG_INRANGE | + RDPINPUT_CONTACT_FLAG_INCONTACT, + contactFlags, contact->pressure); + if (rc1 != CHANNEL_RC_OK) + return FALSE; + + const UINT rc2 = rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, + &contactId, flags, contactFlags, contact->pressure); + if (rc2 != CHANNEL_RC_OK) + return FALSE; } else { WINPR_ASSERT(rdpei->TouchEnd); - rdpei->TouchEnd(rdpei, contact->id, contact->x, contact->y, &contactId); + const UINT rc = rdpei->TouchEnd(rdpei, contact->id, contact->x, contact->y, &contactId); + if (rc != CHANNEL_RC_OK) + return FALSE; } return TRUE; #else @@ -1928,13 +1937,17 @@ static BOOL freerdp_handle_touch_down(rdpClientContext* cctx, const FreeRDP_Touc const UINT32 contactFlags = ((contact->flags & FREERDP_TOUCH_HAS_PRESSURE) != 0) ? CONTACT_DATA_PRESSURE_PRESENT : 0; - rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, flags, - contactFlags, contact->pressure); + const UINT rc = rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, + flags, contactFlags, contact->pressure); + if (rc != CHANNEL_RC_OK) + return FALSE; } else { WINPR_ASSERT(rdpei->TouchBegin); - rdpei->TouchBegin(rdpei, contact->id, contact->x, contact->y, &contactId); + const UINT rc = rdpei->TouchBegin(rdpei, contact->id, contact->x, contact->y, &contactId); + if (rc != CHANNEL_RC_OK) + return FALSE; } return TRUE; @@ -1976,13 +1989,17 @@ static BOOL freerdp_handle_touch_motion(rdpClientContext* cctx, const FreeRDP_To const UINT32 contactFlags = ((contact->flags & FREERDP_TOUCH_HAS_PRESSURE) != 0) ? CONTACT_DATA_PRESSURE_PRESENT : 0; - rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, flags, - contactFlags, contact->pressure); + const UINT rc = rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, + flags, contactFlags, contact->pressure); + if (rc != CHANNEL_RC_OK) + return FALSE; } else { WINPR_ASSERT(rdpei->TouchUpdate); - rdpei->TouchUpdate(rdpei, contact->id, contact->x, contact->y, &contactId); + const UINT rc = rdpei->TouchUpdate(rdpei, contact->id, contact->x, contact->y, &contactId); + if (rc != CHANNEL_RC_OK) + return FALSE; } return TRUE; @@ -2012,13 +2029,17 @@ static BOOL freerdp_handle_touch_cancel(rdpClientContext* cctx, const FreeRDP_To const UINT32 contactFlags = ((contact->flags & FREERDP_TOUCH_HAS_PRESSURE) != 0) ? CONTACT_DATA_PRESSURE_PRESENT : 0; - rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, flags, - contactFlags, contact->pressure); + const UINT rc = rdpei->TouchRawEvent(rdpei, contact->id, contact->x, contact->y, &contactId, + flags, contactFlags, contact->pressure); + if (rc != CHANNEL_RC_OK) + return FALSE; } else { WINPR_ASSERT(rdpei->TouchUpdate); - rdpei->TouchEnd(rdpei, contact->id, contact->x, contact->y, &contactId); + const UINT rc = rdpei->TouchEnd(rdpei, contact->id, contact->x, contact->y, &contactId); + if (rc != CHANNEL_RC_OK) + return FALSE; } return TRUE; @@ -2344,7 +2365,10 @@ BOOL freerdp_client_pen_cancel_all(rdpClientContext* cctx) { WLog_DBG(TAG, "unhover pen %" PRId32, pen->deviceid); pen->hovering = FALSE; - rdpei->PenHoverCancel(rdpei, pen->deviceid, 0, pen->last_x, pen->last_y); + const UINT rc = + rdpei->PenHoverCancel(rdpei, pen->deviceid, 0, pen->last_x, pen->last_y); + if (rc != CHANNEL_RC_OK) + return FALSE; } } return TRUE; diff --git a/client/common/client_cliprdr_file.c b/client/common/client_cliprdr_file.c index 841ed1c77..e0da0812e 100644 --- a/client/common/client_cliprdr_file.c +++ b/client/common/client_cliprdr_file.c @@ -268,8 +268,12 @@ static void clip_data_entry_free(void* data) unlock_clipboard_data.common.msgType = CB_UNLOCK_CLIPDATA; unlock_clipboard_data.clipDataId = clip_data_entry->clip_data_id; - file_context->context->ClientUnlockClipboardData(file_context->context, - &unlock_clipboard_data); + const UINT rc = file_context->context->ClientUnlockClipboardData(file_context->context, + &unlock_clipboard_data); + if (rc != CHANNEL_RC_OK) + WLog_Print(file_context->log, WLOG_DEBUG, + "ClientUnlockClipboardData failed with %" PRIu32, rc); + clip_data_entry->has_clip_data_id = FALSE; WLog_Print(file_context->log, WLOG_DEBUG, "Destroyed ClipDataEntry with id %u", diff --git a/client/common/cmdline.c b/client/common/cmdline.c index f4d4e28cd..81acc27ae 100644 --- a/client/common/cmdline.c +++ b/client/common/cmdline.c @@ -975,7 +975,7 @@ typedef struct const char* optname; FreeRDP_Settings_Keys_String id; CmdLineSubOptionType opttype; - CmdLineSubOptionCb cb; + WINPR_ATTR_NODISCARD CmdLineSubOptionCb cb; } CmdLineSubOptions; static BOOL parseSubOptions(rdpSettings* settings, const CmdLineSubOptions* opts, size_t count, diff --git a/client/iOS/FreeRDP/ios_freerdp.h b/client/iOS/FreeRDP/ios_freerdp.h index 6aa60fc9b..1d454f610 100644 --- a/client/iOS/FreeRDP/ios_freerdp.h +++ b/client/iOS/FreeRDP/ios_freerdp.h @@ -39,7 +39,7 @@ typedef struct mf_context CLIPRDR_FORMAT *serverFormats; CliprdrClientContext *cliprdr; UINT32 clipboardCapabilities; - pServerCutText ServerCutText; + WINPR_ATTR_NODISCARD pServerCutText ServerCutText; } mfContext; struct mf_info diff --git a/include/freerdp/altsec.h b/include/freerdp/altsec.h index 348662cc1..74da26412 100644 --- a/include/freerdp/altsec.h +++ b/include/freerdp/altsec.h @@ -185,20 +185,20 @@ extern "C" rdpContext* context; /* 0 */ UINT32 paddingA[16 - 1]; /* 1 */ - pCreateOffscreenBitmap CreateOffscreenBitmap; /* 16 */ - pSwitchSurface SwitchSurface; /* 17 */ - pCreateNineGridBitmap CreateNineGridBitmap; /* 18 */ - pFrameMarker FrameMarker; /* 19 */ - pStreamBitmapFirst StreamBitmapFirst; /* 20 */ - pStreamBitmapNext StreamBitmapNext; /* 21 */ - pDrawGdiPlusFirst DrawGdiPlusFirst; /* 22 */ - pDrawGdiPlusNext DrawGdiPlusNext; /* 23 */ - pDrawGdiPlusEnd DrawGdiPlusEnd; /* 24 */ - pDrawGdiPlusCacheFirst DrawGdiPlusCacheFirst; /* 25 */ - pDrawGdiPlusCacheNext DrawGdiPlusCacheNext; /* 26 */ - pDrawGdiPlusCacheEnd DrawGdiPlusCacheEnd; /* 27 */ - /* Statistics callback */ - pDrawOrderInfo DrawOrderInfo; /* 28 */ + WINPR_ATTR_NODISCARD pCreateOffscreenBitmap CreateOffscreenBitmap; /* 16 */ + WINPR_ATTR_NODISCARD pSwitchSurface SwitchSurface; /* 17 */ + WINPR_ATTR_NODISCARD pCreateNineGridBitmap CreateNineGridBitmap; /* 18 */ + WINPR_ATTR_NODISCARD pFrameMarker FrameMarker; /* 19 */ + WINPR_ATTR_NODISCARD pStreamBitmapFirst StreamBitmapFirst; /* 20 */ + WINPR_ATTR_NODISCARD pStreamBitmapNext StreamBitmapNext; /* 21 */ + WINPR_ATTR_NODISCARD pDrawGdiPlusFirst DrawGdiPlusFirst; /* 22 */ + WINPR_ATTR_NODISCARD pDrawGdiPlusNext DrawGdiPlusNext; /* 23 */ + WINPR_ATTR_NODISCARD pDrawGdiPlusEnd DrawGdiPlusEnd; /* 24 */ + WINPR_ATTR_NODISCARD pDrawGdiPlusCacheFirst DrawGdiPlusCacheFirst; /* 25 */ + WINPR_ATTR_NODISCARD pDrawGdiPlusCacheNext DrawGdiPlusCacheNext; /* 26 */ + WINPR_ATTR_NODISCARD pDrawGdiPlusCacheEnd DrawGdiPlusCacheEnd; /* 27 */ + /* Statistics callback */ + WINPR_ATTR_NODISCARD pDrawOrderInfo DrawOrderInfo; /* 28 */ UINT32 paddingB[32 - 29]; /* 29 */ }; typedef struct rdp_altsec_update rdpAltSecUpdate; diff --git a/include/freerdp/autodetect.h b/include/freerdp/autodetect.h index b8551488d..4260c9424 100644 --- a/include/freerdp/autodetect.h +++ b/include/freerdp/autodetect.h @@ -120,19 +120,23 @@ extern "C" ALIGN64 wLog* log; /* 11 */ UINT64 paddingA[16 - 12]; /* 12 */ - ALIGN64 pRTTMeasureRequest RTTMeasureRequest; /* 16 */ - ALIGN64 pRTTMeasureResponse RTTMeasureResponse; /* 17 */ - ALIGN64 pBandwidthMeasureStart BandwidthMeasureStart; /* 18 */ - ALIGN64 pBandwidthMeasurePayload BandwidthMeasurePayload; /* 19 */ - ALIGN64 pBandwidthMeasureStop BandwidthMeasureStop; /* 20 */ - ALIGN64 pBandwidthMeasureResults BandwidthMeasureResults; /* 21 */ - ALIGN64 pNetworkCharacteristicsResult NetworkCharacteristicsResult; /* 22 */ - ALIGN64 pClientBandwidthMeasureResult ClientBandwidthMeasureResult; /* 23 */ - ALIGN64 pNetworkCharacteristicsSync NetworkCharacteristicsSync; /* 24 */ - ALIGN64 pRxTxReceived RequestReceived; /* 25 */ - ALIGN64 pRxTxReceived ResponseReceived; /* 26 */ - ALIGN64 pOnConnectTimeAutoDetect OnConnectTimeAutoDetectBegin; /* 27 */ - ALIGN64 pOnConnectTimeAutoDetect OnConnectTimeAutoDetectProgress; /* 28 */ + ALIGN64 WINPR_ATTR_NODISCARD pRTTMeasureRequest RTTMeasureRequest; /* 16 */ + ALIGN64 WINPR_ATTR_NODISCARD pRTTMeasureResponse RTTMeasureResponse; /* 17 */ + ALIGN64 WINPR_ATTR_NODISCARD pBandwidthMeasureStart BandwidthMeasureStart; /* 18 */ + ALIGN64 WINPR_ATTR_NODISCARD pBandwidthMeasurePayload BandwidthMeasurePayload; /* 19 */ + ALIGN64 WINPR_ATTR_NODISCARD pBandwidthMeasureStop BandwidthMeasureStop; /* 20 */ + ALIGN64 WINPR_ATTR_NODISCARD pBandwidthMeasureResults BandwidthMeasureResults; /* 21 */ + ALIGN64 WINPR_ATTR_NODISCARD pNetworkCharacteristicsResult + NetworkCharacteristicsResult; /* 22 */ + ALIGN64 WINPR_ATTR_NODISCARD pClientBandwidthMeasureResult + ClientBandwidthMeasureResult; /* 23 */ + ALIGN64 WINPR_ATTR_NODISCARD pNetworkCharacteristicsSync + NetworkCharacteristicsSync; /* 24 */ + ALIGN64 WINPR_ATTR_NODISCARD pRxTxReceived RequestReceived; /* 25 */ + ALIGN64 WINPR_ATTR_NODISCARD pRxTxReceived ResponseReceived; /* 26 */ + ALIGN64 WINPR_ATTR_NODISCARD pOnConnectTimeAutoDetect OnConnectTimeAutoDetectBegin; /* 27 */ + ALIGN64 WINPR_ATTR_NODISCARD pOnConnectTimeAutoDetect + OnConnectTimeAutoDetectProgress; /* 28 */ UINT64 paddingB[32 - 29]; /* 29 */ }; FREERDP_API rdpAutoDetect* autodetect_get(rdpContext* context); diff --git a/include/freerdp/channels/rdpdr.h b/include/freerdp/channels/rdpdr.h index 2e947f3f2..979455c7d 100644 --- a/include/freerdp/channels/rdpdr.h +++ b/include/freerdp/channels/rdpdr.h @@ -325,7 +325,7 @@ typedef struct S_IRP IRP; typedef struct S_DEVMAN DEVMAN; typedef UINT (*pcCustomComponentRequest)(DEVICE* device, UINT16 component, UINT16 packetId, - wStream* s); + wStream* s); typedef UINT (*pcIRPRequest)(DEVICE* device, IRP* irp); typedef UINT (*pcInitDevice)(DEVICE* device); typedef UINT (*pcFreeDevice)(DEVICE* device); @@ -338,9 +338,9 @@ struct S_DEVICE const char* name; wStream* data; - pcCustomComponentRequest CustomComponentRequest; - pcIRPRequest IRPRequest; - pcInitDevice Init; + WINPR_ATTR_NODISCARD pcCustomComponentRequest CustomComponentRequest; + WINPR_ATTR_NODISCARD pcIRPRequest IRPRequest; + WINPR_ATTR_NODISCARD pcInitDevice Init; pcFreeDevice Free; }; @@ -361,7 +361,7 @@ struct S_IRP NTSTATUS IoStatus; wStream* output; - pcIRPResponse Complete; + WINPR_ATTR_NODISCARD pcIRPResponse Complete; pcIRPResponse Discard; HANDLE thread; @@ -381,7 +381,7 @@ typedef struct { DEVMAN* devman; - pcRegisterDevice RegisterDevice; + WINPR_ATTR_NODISCARD pcRegisterDevice RegisterDevice; RDPDR_DEVICE* device; rdpContext* rdpcontext; } DEVICE_SERVICE_ENTRY_POINTS; diff --git a/include/freerdp/client.h b/include/freerdp/client.h index c0338cae0..467e5ff2c 100644 --- a/include/freerdp/client.h +++ b/include/freerdp/client.h @@ -72,14 +72,14 @@ extern "C" rdpSettings* settings; - pRdpGlobalInit GlobalInit; + WINPR_ATTR_NODISCARD pRdpGlobalInit GlobalInit; pRdpGlobalUninit GlobalUninit; DWORD ContextSize; - pRdpClientNew ClientNew; + WINPR_ATTR_NODISCARD pRdpClientNew ClientNew; pRdpClientFree ClientFree; - pRdpClientStart ClientStart; + WINPR_ATTR_NODISCARD pRdpClientStart ClientStart; pRdpClientStop ClientStop; }; diff --git a/include/freerdp/client/ainput.h b/include/freerdp/client/ainput.h index c43267747..48dade32b 100644 --- a/include/freerdp/client/ainput.h +++ b/include/freerdp/client/ainput.h @@ -38,7 +38,7 @@ extern "C" void* handle; void* custom; - pcAInputSendInputEvent AInputSendInputEvent; + WINPR_ATTR_NODISCARD pcAInputSendInputEvent AInputSendInputEvent; }; #ifdef __cplusplus diff --git a/include/freerdp/client/audin.h b/include/freerdp/client/audin.h index 21b6c09f1..b497cf85d 100644 --- a/include/freerdp/client/audin.h +++ b/include/freerdp/client/audin.h @@ -43,25 +43,27 @@ extern "C" typedef struct s_IAudinDevice IAudinDevice; struct s_IAudinDevice { - UINT (*Open)(IAudinDevice* devplugin, AudinReceive receive, void* userData); - BOOL (*FormatSupported)(IAudinDevice* devplugin, const AUDIO_FORMAT* format); - UINT(*SetFormat) - (IAudinDevice* devplugin, const AUDIO_FORMAT* format, UINT32 FramesPerPacket); - UINT (*Close)(IAudinDevice* devplugin); - UINT (*Free)(IAudinDevice* devplugin); + WINPR_ATTR_NODISCARD UINT (*Open)(IAudinDevice* devplugin, AudinReceive receive, + void* userData); + WINPR_ATTR_NODISCARD BOOL (*FormatSupported)(IAudinDevice* devplugin, + const AUDIO_FORMAT* format); + WINPR_ATTR_NODISCARD UINT (*SetFormat)(IAudinDevice* devplugin, const AUDIO_FORMAT* format, + UINT32 FramesPerPacket); + WINPR_ATTR_NODISCARD UINT (*Close)(IAudinDevice* devplugin); + WINPR_ATTR_NODISCARD UINT (*Free)(IAudinDevice* devplugin); }; #define AUDIN_DEVICE_EXPORT_FUNC_NAME "freerdp_audin_client_subsystem_entry" -typedef UINT (*PREGISTERAUDINDEVICE)(IWTSPlugin* plugin, IAudinDevice* device); + typedef UINT (*PREGISTERAUDINDEVICE)(IWTSPlugin* plugin, IAudinDevice* device); -typedef struct -{ - IWTSPlugin* plugin; - PREGISTERAUDINDEVICE pRegisterAudinDevice; - const ADDIN_ARGV* args; - rdpContext* rdpcontext; -} FREERDP_AUDIN_DEVICE_ENTRY_POINTS; + typedef struct + { + IWTSPlugin* plugin; + WINPR_ATTR_NODISCARD PREGISTERAUDINDEVICE pRegisterAudinDevice; + const ADDIN_ARGV* args; + rdpContext* rdpcontext; + } FREERDP_AUDIN_DEVICE_ENTRY_POINTS; typedef FREERDP_AUDIN_DEVICE_ENTRY_POINTS* PFREERDP_AUDIN_DEVICE_ENTRY_POINTS; typedef UINT(VCAPITYPE* PFREERDP_AUDIN_DEVICE_ENTRY)( diff --git a/include/freerdp/client/cliprdr.h b/include/freerdp/client/cliprdr.h index 5d1073bf2..4f121c078 100644 --- a/include/freerdp/client/cliprdr.h +++ b/include/freerdp/client/cliprdr.h @@ -85,26 +85,26 @@ extern "C" void* handle; void* custom; - pcCliprdrServerCapabilities ServerCapabilities; - pcCliprdrClientCapabilities ClientCapabilities; - pcCliprdrMonitorReady MonitorReady; - pcCliprdrTempDirectory TempDirectory; - pcCliprdrClientFormatList ClientFormatList; - pcCliprdrServerFormatList ServerFormatList; - pcCliprdrClientFormatListResponse ClientFormatListResponse; - pcCliprdrServerFormatListResponse ServerFormatListResponse; - pcCliprdrClientLockClipboardData ClientLockClipboardData; - pcCliprdrServerLockClipboardData ServerLockClipboardData; - pcCliprdrClientUnlockClipboardData ClientUnlockClipboardData; - pcCliprdrServerUnlockClipboardData ServerUnlockClipboardData; - pcCliprdrClientFormatDataRequest ClientFormatDataRequest; - pcCliprdrServerFormatDataRequest ServerFormatDataRequest; - pcCliprdrClientFormatDataResponse ClientFormatDataResponse; - pcCliprdrServerFormatDataResponse ServerFormatDataResponse; - pcCliprdrClientFileContentsRequest ClientFileContentsRequest; - pcCliprdrServerFileContentsRequest ServerFileContentsRequest; - pcCliprdrClientFileContentsResponse ClientFileContentsResponse; - pcCliprdrServerFileContentsResponse ServerFileContentsResponse; + WINPR_ATTR_NODISCARD pcCliprdrServerCapabilities ServerCapabilities; + WINPR_ATTR_NODISCARD pcCliprdrClientCapabilities ClientCapabilities; + WINPR_ATTR_NODISCARD pcCliprdrMonitorReady MonitorReady; + WINPR_ATTR_NODISCARD pcCliprdrTempDirectory TempDirectory; + WINPR_ATTR_NODISCARD pcCliprdrClientFormatList ClientFormatList; + WINPR_ATTR_NODISCARD pcCliprdrServerFormatList ServerFormatList; + WINPR_ATTR_NODISCARD pcCliprdrClientFormatListResponse ClientFormatListResponse; + WINPR_ATTR_NODISCARD pcCliprdrServerFormatListResponse ServerFormatListResponse; + WINPR_ATTR_NODISCARD pcCliprdrClientLockClipboardData ClientLockClipboardData; + WINPR_ATTR_NODISCARD pcCliprdrServerLockClipboardData ServerLockClipboardData; + WINPR_ATTR_NODISCARD pcCliprdrClientUnlockClipboardData ClientUnlockClipboardData; + WINPR_ATTR_NODISCARD pcCliprdrServerUnlockClipboardData ServerUnlockClipboardData; + WINPR_ATTR_NODISCARD pcCliprdrClientFormatDataRequest ClientFormatDataRequest; + WINPR_ATTR_NODISCARD pcCliprdrServerFormatDataRequest ServerFormatDataRequest; + WINPR_ATTR_NODISCARD pcCliprdrClientFormatDataResponse ClientFormatDataResponse; + WINPR_ATTR_NODISCARD pcCliprdrServerFormatDataResponse ServerFormatDataResponse; + WINPR_ATTR_NODISCARD pcCliprdrClientFileContentsRequest ClientFileContentsRequest; + WINPR_ATTR_NODISCARD pcCliprdrServerFileContentsRequest ServerFileContentsRequest; + WINPR_ATTR_NODISCARD pcCliprdrClientFileContentsResponse ClientFileContentsResponse; + WINPR_ATTR_NODISCARD pcCliprdrServerFileContentsResponse ServerFileContentsResponse; UINT32 lastRequestedFormatId; rdpContext* rdpcontext; diff --git a/include/freerdp/client/disp.h b/include/freerdp/client/disp.h index 26eff2713..e19869261 100644 --- a/include/freerdp/client/disp.h +++ b/include/freerdp/client/disp.h @@ -41,8 +41,8 @@ extern "C" void* handle; void* custom; - pcDispCaps DisplayControlCaps; - pcDispSendMonitorLayout SendMonitorLayout; + WINPR_ATTR_NODISCARD pcDispCaps DisplayControlCaps; + WINPR_ATTR_NODISCARD pcDispSendMonitorLayout SendMonitorLayout; }; #ifdef __cplusplus diff --git a/include/freerdp/client/drdynvc.h b/include/freerdp/client/drdynvc.h index 897f9dd7a..859da546e 100644 --- a/include/freerdp/client/drdynvc.h +++ b/include/freerdp/client/drdynvc.h @@ -22,6 +22,8 @@ #ifndef FREERDP_CHANNEL_DRDYNVC_CLIENT_DRDYNVC_H #define FREERDP_CHANNEL_DRDYNVC_CLIENT_DRDYNVC_H +#include + #ifdef __cplusplus extern "C" { @@ -48,11 +50,11 @@ extern "C" void* handle; void* custom; - pcDrdynvcGetVersion GetVersion; - pcDrdynvcOnChannelConnected OnChannelConnected; - pcDrdynvcOnChannelDisconnected OnChannelDisconnected; - pcDrdynvcOnChannelAttached OnChannelAttached; - pcDrdynvcOnChannelDetached OnChannelDetached; + WINPR_ATTR_NODISCARD pcDrdynvcGetVersion GetVersion; + WINPR_ATTR_NODISCARD pcDrdynvcOnChannelConnected OnChannelConnected; + WINPR_ATTR_NODISCARD pcDrdynvcOnChannelDisconnected OnChannelDisconnected; + WINPR_ATTR_NODISCARD pcDrdynvcOnChannelAttached OnChannelAttached; + WINPR_ATTR_NODISCARD pcDrdynvcOnChannelDetached OnChannelDetached; }; #ifdef __cplusplus diff --git a/include/freerdp/client/encomsp.h b/include/freerdp/client/encomsp.h index 005c8b33a..6f68af3cb 100644 --- a/include/freerdp/client/encomsp.h +++ b/include/freerdp/client/encomsp.h @@ -66,17 +66,17 @@ extern "C" void* handle; void* custom; - pcEncomspFilterUpdated FilterUpdated; - pcEncomspApplicationCreated ApplicationCreated; - pcEncomspApplicationRemoved ApplicationRemoved; - pcEncomspWindowCreated WindowCreated; - pcEncomspWindowRemoved WindowRemoved; - pcEncomspShowWindow ShowWindow; - pcEncomspParticipantCreated ParticipantCreated; - pcEncomspParticipantRemoved ParticipantRemoved; - pcEncomspChangeParticipantControlLevel ChangeParticipantControlLevel; - pcEncomspGraphicsStreamPaused GraphicsStreamPaused; - pcEncomspGraphicsStreamResumed GraphicsStreamResumed; + WINPR_ATTR_NODISCARD pcEncomspFilterUpdated FilterUpdated; + WINPR_ATTR_NODISCARD pcEncomspApplicationCreated ApplicationCreated; + WINPR_ATTR_NODISCARD pcEncomspApplicationRemoved ApplicationRemoved; + WINPR_ATTR_NODISCARD pcEncomspWindowCreated WindowCreated; + WINPR_ATTR_NODISCARD pcEncomspWindowRemoved WindowRemoved; + WINPR_ATTR_NODISCARD pcEncomspShowWindow ShowWindow; + WINPR_ATTR_NODISCARD pcEncomspParticipantCreated ParticipantCreated; + WINPR_ATTR_NODISCARD pcEncomspParticipantRemoved ParticipantRemoved; + WINPR_ATTR_NODISCARD pcEncomspChangeParticipantControlLevel ChangeParticipantControlLevel; + WINPR_ATTR_NODISCARD pcEncomspGraphicsStreamPaused GraphicsStreamPaused; + WINPR_ATTR_NODISCARD pcEncomspGraphicsStreamResumed GraphicsStreamResumed; UINT32 participantId; }; diff --git a/include/freerdp/client/geometry.h b/include/freerdp/client/geometry.h index f1c4e7bed..e08cec1c3 100644 --- a/include/freerdp/client/geometry.h +++ b/include/freerdp/client/geometry.h @@ -51,8 +51,8 @@ extern "C" FREERDP_RGNDATA geometry; void* custom; - pcMappedGeometryUpdate MappedGeometryUpdate; - pcMappedGeometryClear MappedGeometryClear; + WINPR_ATTR_NODISCARD pcMappedGeometryUpdate MappedGeometryUpdate; + WINPR_ATTR_NODISCARD pcMappedGeometryClear MappedGeometryClear; }; /** @brief the geometry context for client channel */ @@ -62,7 +62,7 @@ extern "C" void* handle; void* custom; - pcMappedGeometryAdded MappedGeometryAdded; + WINPR_ATTR_NODISCARD pcMappedGeometryAdded MappedGeometryAdded; UINT32 remoteVersion; }; diff --git a/include/freerdp/client/location.h b/include/freerdp/client/location.h index 0135029d7..9ac2536c1 100644 --- a/include/freerdp/client/location.h +++ b/include/freerdp/client/location.h @@ -58,7 +58,7 @@ extern "C" * * \return \b CHANNEL_RC_OK for success, an appropriate error otherwise. */ - pcLocationStart LocationStart; + WINPR_ATTR_NODISCARD pcLocationStart LocationStart; /**! \brief stop location services on client * @@ -66,7 +66,7 @@ extern "C" * * \return \b CHANNEL_RC_OK for success, an appropriate error otherwise. */ - pcLocationStop LocationStop; + WINPR_ATTR_NODISCARD pcLocationStop LocationStop; /**! \brief Send a location update. * @@ -97,7 +97,7 @@ extern "C" * * return \b CHANNEL_RC_OK for success, an appropriate error otherwise. */ - pcLocationSend LocationSend; + WINPR_ATTR_NODISCARD pcLocationSend LocationSend; }; #ifdef __cplusplus diff --git a/include/freerdp/client/printer.h b/include/freerdp/client/printer.h index fd4434594..e14886e35 100644 --- a/include/freerdp/client/printer.h +++ b/include/freerdp/client/printer.h @@ -44,9 +44,9 @@ extern "C" struct rdp_printer_driver { - pcEnumPrinters EnumPrinters; + WINPR_ATTR_NODISCARD pcEnumPrinters EnumPrinters; pcReleaseEnumPrinters ReleaseEnumPrinters; - pcGetPrinter GetPrinter; + WINPR_ATTR_NODISCARD pcGetPrinter GetPrinter; pcReferencePrinterDriver AddRef; pcReferencePrinterDriver ReleaseRef; @@ -64,8 +64,8 @@ extern "C" size_t references; rdpPrinterDriver* backend; - pcCreatePrintJob CreatePrintJob; - pcFindPrintJob FindPrintJob; + WINPR_ATTR_NODISCARD pcCreatePrintJob CreatePrintJob; + WINPR_ATTR_NODISCARD pcFindPrintJob FindPrintJob; pcReferencePrinter AddRef; pcReferencePrinter ReleaseRef; }; @@ -78,7 +78,7 @@ extern "C" UINT32 id; rdpPrinter* printer; - pcWritePrintJob Write; + WINPR_ATTR_NODISCARD pcWritePrintJob Write; pcClosePrintJob Close; }; diff --git a/include/freerdp/client/rail.h b/include/freerdp/client/rail.h index 18582b992..b06cf83fe 100644 --- a/include/freerdp/client/rail.h +++ b/include/freerdp/client/rail.h @@ -101,37 +101,37 @@ extern "C" void* handle; void* custom; - pcRailClientExecute ClientExecute; - pcRailClientActivate ClientActivate; - pcRailClientSystemParam ClientSystemParam; - pcRailServerSystemParam ServerSystemParam; - pcRailClientSystemCommand ClientSystemCommand; - pcRailClientHandshake ClientHandshake; - pcRailServerHandshake ServerHandshake; - pcRailServerHandshakeEx ServerHandshakeEx; - pcRailClientNotifyEvent ClientNotifyEvent; - pcRailClientWindowMove ClientWindowMove; - pcRailServerLocalMoveSize ServerLocalMoveSize; - pcRailServerMinMaxInfo ServerMinMaxInfo; - pcRailClientInformation ClientInformation; - pcRailClientSystemMenu ClientSystemMenu; - pcRailServerTaskBarInfo ServerTaskBarInfo; - pcRailClientLanguageBarInfo ClientLanguageBarInfo; - pcRailServerLanguageBarInfo ServerLanguageBarInfo; - pcRailClientLanguageIMEInfo ClientLanguageIMEInfo; - pcRailServerExecuteResult ServerExecuteResult; - pcRailClientGetAppIdRequest ClientGetAppIdRequest; - pcRailServerGetAppIdResponse ServerGetAppIdResponse; - pcRailServerZOrderSync ServerZOrderSync; - pcRailClientCloak ClientCloak; - pcRailServerCloak ServerCloak; - pcRailServerPowerDisplayRequest ServerPowerDisplayRequest; - pcRailClientSnapArrange ClientSnapArrange; - pcRailServerGetAppidResponseExtended ServerGetAppidResponseExtended; - pcRailClientCompartmentInfo ClientCompartmentInfo; - pcRailOnOpen OnOpen; - pcRailClientTextScale ClientTextScale; - pcRailClientCaretBlinkRate ClientCaretBlinkRate; + WINPR_ATTR_NODISCARD pcRailClientExecute ClientExecute; + WINPR_ATTR_NODISCARD pcRailClientActivate ClientActivate; + WINPR_ATTR_NODISCARD pcRailClientSystemParam ClientSystemParam; + WINPR_ATTR_NODISCARD pcRailServerSystemParam ServerSystemParam; + WINPR_ATTR_NODISCARD pcRailClientSystemCommand ClientSystemCommand; + WINPR_ATTR_NODISCARD pcRailClientHandshake ClientHandshake; + WINPR_ATTR_NODISCARD pcRailServerHandshake ServerHandshake; + WINPR_ATTR_NODISCARD pcRailServerHandshakeEx ServerHandshakeEx; + WINPR_ATTR_NODISCARD pcRailClientNotifyEvent ClientNotifyEvent; + WINPR_ATTR_NODISCARD pcRailClientWindowMove ClientWindowMove; + WINPR_ATTR_NODISCARD pcRailServerLocalMoveSize ServerLocalMoveSize; + WINPR_ATTR_NODISCARD pcRailServerMinMaxInfo ServerMinMaxInfo; + WINPR_ATTR_NODISCARD pcRailClientInformation ClientInformation; + WINPR_ATTR_NODISCARD pcRailClientSystemMenu ClientSystemMenu; + WINPR_ATTR_NODISCARD pcRailServerTaskBarInfo ServerTaskBarInfo; + WINPR_ATTR_NODISCARD pcRailClientLanguageBarInfo ClientLanguageBarInfo; + WINPR_ATTR_NODISCARD pcRailServerLanguageBarInfo ServerLanguageBarInfo; + WINPR_ATTR_NODISCARD pcRailClientLanguageIMEInfo ClientLanguageIMEInfo; + WINPR_ATTR_NODISCARD pcRailServerExecuteResult ServerExecuteResult; + WINPR_ATTR_NODISCARD pcRailClientGetAppIdRequest ClientGetAppIdRequest; + WINPR_ATTR_NODISCARD pcRailServerGetAppIdResponse ServerGetAppIdResponse; + WINPR_ATTR_NODISCARD pcRailServerZOrderSync ServerZOrderSync; + WINPR_ATTR_NODISCARD pcRailClientCloak ClientCloak; + WINPR_ATTR_NODISCARD pcRailServerCloak ServerCloak; + WINPR_ATTR_NODISCARD pcRailServerPowerDisplayRequest ServerPowerDisplayRequest; + WINPR_ATTR_NODISCARD pcRailClientSnapArrange ClientSnapArrange; + WINPR_ATTR_NODISCARD pcRailServerGetAppidResponseExtended ServerGetAppidResponseExtended; + WINPR_ATTR_NODISCARD pcRailClientCompartmentInfo ClientCompartmentInfo; + WINPR_ATTR_NODISCARD pcRailOnOpen OnOpen; + WINPR_ATTR_NODISCARD pcRailClientTextScale ClientTextScale; + WINPR_ATTR_NODISCARD pcRailClientCaretBlinkRate ClientCaretBlinkRate; }; FREERDP_API UINT client_rail_server_start_cmd(RailClientContext* context); diff --git a/include/freerdp/client/rdpdr.h b/include/freerdp/client/rdpdr.h index 391c351f1..c90680c31 100644 --- a/include/freerdp/client/rdpdr.h +++ b/include/freerdp/client/rdpdr.h @@ -86,9 +86,9 @@ extern "C" void* handle; void* custom; - pcRdpdrRegisterDevice RdpdrRegisterDevice; - pcRdpdrUnregisterDevice RdpdrUnregisterDevice; - pcRdpdrHotplugDevice RdpdrHotplugDevice; + WINPR_ATTR_NODISCARD pcRdpdrRegisterDevice RdpdrRegisterDevice; + WINPR_ATTR_NODISCARD pcRdpdrUnregisterDevice RdpdrUnregisterDevice; + WINPR_ATTR_NODISCARD pcRdpdrHotplugDevice RdpdrHotplugDevice; }; #ifdef __cplusplus diff --git a/include/freerdp/client/rdpei.h b/include/freerdp/client/rdpei.h index 50624f421..b49e4ac92 100644 --- a/include/freerdp/client/rdpei.h +++ b/include/freerdp/client/rdpei.h @@ -71,34 +71,34 @@ extern "C" void* handle; void* custom; - pcRdpeiGetVersion GetVersion; - pcRdpeiGetFeatures GetFeatures; + WINPR_ATTR_NODISCARD pcRdpeiGetVersion GetVersion; + WINPR_ATTR_NODISCARD pcRdpeiGetFeatures GetFeatures; - pcRdpeiAddContact AddContact; + WINPR_ATTR_NODISCARD pcRdpeiAddContact AddContact; - pcRdpeiTouchEvent TouchBegin; - pcRdpeiTouchEvent TouchUpdate; - pcRdpeiTouchEvent TouchEnd; + WINPR_ATTR_NODISCARD pcRdpeiTouchEvent TouchBegin; + WINPR_ATTR_NODISCARD pcRdpeiTouchEvent TouchUpdate; + WINPR_ATTR_NODISCARD pcRdpeiTouchEvent TouchEnd; - pcRdpeiAddPen AddPen; + WINPR_ATTR_NODISCARD pcRdpeiAddPen AddPen; - pcRdpeiPen PenBegin; - pcRdpeiPen PenUpdate; - pcRdpeiPen PenEnd; - pcRdpeiPen PenHoverBegin; - pcRdpeiPen PenHoverUpdate; - pcRdpeiPen PenHoverCancel; + WINPR_ATTR_NODISCARD pcRdpeiPen PenBegin; + WINPR_ATTR_NODISCARD pcRdpeiPen PenUpdate; + WINPR_ATTR_NODISCARD pcRdpeiPen PenEnd; + WINPR_ATTR_NODISCARD pcRdpeiPen PenHoverBegin; + WINPR_ATTR_NODISCARD pcRdpeiPen PenHoverUpdate; + WINPR_ATTR_NODISCARD pcRdpeiPen PenHoverCancel; - pcRdpeiSuspendTouch SuspendTouch; - pcRdpeiResumeTouch ResumeTouch; + WINPR_ATTR_NODISCARD pcRdpeiSuspendTouch SuspendTouch; + WINPR_ATTR_NODISCARD pcRdpeiResumeTouch ResumeTouch; - pcRdpeiTouchEvent TouchCancel; - pcRdpeiTouchRawEvent TouchRawEvent; - pcRdpeiTouchRawEventVA TouchRawEventVA; + WINPR_ATTR_NODISCARD pcRdpeiTouchEvent TouchCancel; + WINPR_ATTR_NODISCARD pcRdpeiTouchRawEvent TouchRawEvent; + WINPR_ATTR_NODISCARD pcRdpeiTouchRawEventVA TouchRawEventVA; - pcRdpeiPen PenCancel; - pcRdpeiPenRawEvent PenRawEvent; - pcRdpeiPenRawEventVA PenRawEventVA; + WINPR_ATTR_NODISCARD pcRdpeiPen PenCancel; + WINPR_ATTR_NODISCARD pcRdpeiPenRawEvent PenRawEvent; + WINPR_ATTR_NODISCARD pcRdpeiPenRawEventVA PenRawEventVA; UINT32 clientFeaturesMask; }; diff --git a/include/freerdp/client/rdpgfx.h b/include/freerdp/client/rdpgfx.h index fa0afb56b..0ea7e5f16 100644 --- a/include/freerdp/client/rdpgfx.h +++ b/include/freerdp/client/rdpgfx.h @@ -125,52 +125,52 @@ extern "C" void* custom; /* Implementations require locking */ - pcRdpgfxResetGraphics ResetGraphics; - pcRdpgfxStartFrame StartFrame; - pcRdpgfxEndFrame EndFrame; - pcRdpgfxSurfaceCommand SurfaceCommand; - pcRdpgfxDeleteEncodingContext DeleteEncodingContext; - pcRdpgfxCreateSurface CreateSurface; - pcRdpgfxDeleteSurface DeleteSurface; - pcRdpgfxSolidFill SolidFill; - pcRdpgfxSurfaceToSurface SurfaceToSurface; - pcRdpgfxSurfaceToCache SurfaceToCache; - pcRdpgfxCacheToSurface CacheToSurface; - pcRdpgfxCacheImportOffer CacheImportOffer; - pcRdpgfxCacheImportReply CacheImportReply; - pcRdpgfxImportCacheEntry ImportCacheEntry; - pcRdpgfxExportCacheEntry ExportCacheEntry; - pcRdpgfxEvictCacheEntry EvictCacheEntry; - pcRdpgfxMapSurfaceToOutput MapSurfaceToOutput; - pcRdpgfxMapSurfaceToScaledOutput MapSurfaceToScaledOutput; - pcRdpgfxMapSurfaceToWindow MapSurfaceToWindow; - pcRdpgfxMapSurfaceToScaledWindow MapSurfaceToScaledWindow; + WINPR_ATTR_NODISCARD pcRdpgfxResetGraphics ResetGraphics; + WINPR_ATTR_NODISCARD pcRdpgfxStartFrame StartFrame; + WINPR_ATTR_NODISCARD pcRdpgfxEndFrame EndFrame; + WINPR_ATTR_NODISCARD pcRdpgfxSurfaceCommand SurfaceCommand; + WINPR_ATTR_NODISCARD pcRdpgfxDeleteEncodingContext DeleteEncodingContext; + WINPR_ATTR_NODISCARD pcRdpgfxCreateSurface CreateSurface; + WINPR_ATTR_NODISCARD pcRdpgfxDeleteSurface DeleteSurface; + WINPR_ATTR_NODISCARD pcRdpgfxSolidFill SolidFill; + WINPR_ATTR_NODISCARD pcRdpgfxSurfaceToSurface SurfaceToSurface; + WINPR_ATTR_NODISCARD pcRdpgfxSurfaceToCache SurfaceToCache; + WINPR_ATTR_NODISCARD pcRdpgfxCacheToSurface CacheToSurface; + WINPR_ATTR_NODISCARD pcRdpgfxCacheImportOffer CacheImportOffer; + WINPR_ATTR_NODISCARD pcRdpgfxCacheImportReply CacheImportReply; + WINPR_ATTR_NODISCARD pcRdpgfxImportCacheEntry ImportCacheEntry; + WINPR_ATTR_NODISCARD pcRdpgfxExportCacheEntry ExportCacheEntry; + WINPR_ATTR_NODISCARD pcRdpgfxEvictCacheEntry EvictCacheEntry; + WINPR_ATTR_NODISCARD pcRdpgfxMapSurfaceToOutput MapSurfaceToOutput; + WINPR_ATTR_NODISCARD pcRdpgfxMapSurfaceToScaledOutput MapSurfaceToScaledOutput; + WINPR_ATTR_NODISCARD pcRdpgfxMapSurfaceToWindow MapSurfaceToWindow; + WINPR_ATTR_NODISCARD pcRdpgfxMapSurfaceToScaledWindow MapSurfaceToScaledWindow; - pcRdpgfxGetSurfaceIds GetSurfaceIds; - pcRdpgfxSetSurfaceData SetSurfaceData; - pcRdpgfxGetSurfaceData GetSurfaceData; - pcRdpgfxSetCacheSlotData SetCacheSlotData; - pcRdpgfxGetCacheSlotData GetCacheSlotData; + WINPR_ATTR_NODISCARD pcRdpgfxGetSurfaceIds GetSurfaceIds; + WINPR_ATTR_NODISCARD pcRdpgfxSetSurfaceData SetSurfaceData; + WINPR_ATTR_NODISCARD pcRdpgfxGetSurfaceData GetSurfaceData; + WINPR_ATTR_NODISCARD pcRdpgfxSetCacheSlotData SetCacheSlotData; + WINPR_ATTR_NODISCARD pcRdpgfxGetCacheSlotData GetCacheSlotData; /* Proxy callbacks */ - pcRdpgfxOnOpen OnOpen; - pcRdpgfxOnClose OnClose; - pcRdpgfxCapsAdvertise CapsAdvertise; - pcRdpgfxCapsConfirm CapsConfirm; - pcRdpgfxFrameAcknowledge FrameAcknowledge; - pcRdpgfxQoeFrameAcknowledge QoeFrameAcknowledge; + WINPR_ATTR_NODISCARD pcRdpgfxOnOpen OnOpen; + WINPR_ATTR_NODISCARD pcRdpgfxOnClose OnClose; + WINPR_ATTR_NODISCARD pcRdpgfxCapsAdvertise CapsAdvertise; + WINPR_ATTR_NODISCARD pcRdpgfxCapsConfirm CapsConfirm; + WINPR_ATTR_NODISCARD pcRdpgfxFrameAcknowledge FrameAcknowledge; + WINPR_ATTR_NODISCARD pcRdpgfxQoeFrameAcknowledge QoeFrameAcknowledge; /* No locking required */ - pcRdpgfxUpdateSurfaces UpdateSurfaces; - pcRdpgfxUpdateSurfaceArea UpdateSurfaceArea; - pcRdpgfxUpdateWindowFromSurface UpdateWindowFromSurface; + WINPR_ATTR_NODISCARD pcRdpgfxUpdateSurfaces UpdateSurfaces; + WINPR_ATTR_NODISCARD pcRdpgfxUpdateSurfaceArea UpdateSurfaceArea; + WINPR_ATTR_NODISCARD pcRdpgfxUpdateWindowFromSurface UpdateWindowFromSurface; /* These callbacks allow creating/destroying a window directly * mapped to a surface. * NOTE: The surface is already locked. */ - pcRdpgfxMapWindowForSurface MapWindowForSurface; - pcRdpgfxUnmapWindowForSurface UnmapWindowForSurface; + WINPR_ATTR_NODISCARD pcRdpgfxMapWindowForSurface MapWindowForSurface; + WINPR_ATTR_NODISCARD pcRdpgfxUnmapWindowForSurface UnmapWindowForSurface; CRITICAL_SECTION mux; rdpCodecs* codecs; diff --git a/include/freerdp/client/rdpsnd.h b/include/freerdp/client/rdpsnd.h index 437f256b7..9697a8859 100644 --- a/include/freerdp/client/rdpsnd.h +++ b/include/freerdp/client/rdpsnd.h @@ -55,17 +55,17 @@ extern "C" { rdpsndPlugin* rdpsnd; - pcFormatSupported FormatSupported; - pcOpen Open; - pcGetVolume GetVolume; - pcSetVolume SetVolume; - pcPlay Play; + WINPR_ATTR_NODISCARD pcFormatSupported FormatSupported; + WINPR_ATTR_NODISCARD pcOpen Open; + WINPR_ATTR_NODISCARD pcGetVolume GetVolume; + WINPR_ATTR_NODISCARD pcSetVolume SetVolume; + WINPR_ATTR_NODISCARD pcPlay Play; pcStart Start; /* Deprecated, unused. */ pcClose Close; pcFree Free; - pcDefaultFormat DefaultFormat; - pcServerFormatAnnounce ServerFormatAnnounce; - pcPlayEx PlayEx; + WINPR_ATTR_NODISCARD pcDefaultFormat DefaultFormat; + WINPR_ATTR_NODISCARD pcServerFormatAnnounce ServerFormatAnnounce; + WINPR_ATTR_NODISCARD pcPlayEx PlayEx; }; #define RDPSND_DEVICE_EXPORT_FUNC_NAME "freerdp_rdpsnd_client_subsystem_entry" diff --git a/include/freerdp/client/tsmf.h b/include/freerdp/client/tsmf.h index e9cff3cd5..bcb541187 100644 --- a/include/freerdp/client/tsmf.h +++ b/include/freerdp/client/tsmf.h @@ -69,7 +69,7 @@ extern "C" void* handle; void* custom; - pcTsmfFrameEvent FrameEvent; + WINPR_ATTR_NODISCARD pcTsmfFrameEvent FrameEvent; }; #ifdef __cplusplus diff --git a/include/freerdp/client/video.h b/include/freerdp/client/video.h index e520e98ee..840664465 100644 --- a/include/freerdp/client/video.h +++ b/include/freerdp/client/video.h @@ -58,8 +58,8 @@ extern "C" pcVideoSetGeometry setGeometry; pcVideoTimer timer; - pcVideoCreateSurface createSurface; - pcVideoShowSurface showSurface; + WINPR_ATTR_NODISCARD pcVideoCreateSurface createSurface; + WINPR_ATTR_NODISCARD pcVideoShowSurface showSurface; pcVideoDeleteSurface deleteSurface; }; diff --git a/include/freerdp/dvc.h b/include/freerdp/dvc.h index c43a641ff..32f9736d0 100644 --- a/include/freerdp/dvc.h +++ b/include/freerdp/dvc.h @@ -73,7 +73,8 @@ extern "C" struct s_IWTSListener { /* Retrieves the listener-specific configuration. */ - UINT (*GetConfiguration)(IWTSListener* pListener, void** ppPropertyBag); + WINPR_ATTR_NODISCARD UINT (*GetConfiguration)(IWTSListener* pListener, + void** ppPropertyBag); void* pInterface; }; @@ -81,45 +82,47 @@ extern "C" struct s_IWTSVirtualChannel { /* Starts a write request on the channel. */ - UINT(*Write) - (IWTSVirtualChannel* pChannel, ULONG cbSize, const BYTE* pBuffer, void* pReserved); + WINPR_ATTR_NODISCARD UINT (*Write)(IWTSVirtualChannel* pChannel, ULONG cbSize, + const BYTE* pBuffer, void* pReserved); /* Closes the channel. */ - UINT (*Close)(IWTSVirtualChannel* pChannel); + WINPR_ATTR_NODISCARD UINT (*Close)(IWTSVirtualChannel* pChannel); }; struct s_IWTSVirtualChannelManager { /* Returns an instance of a listener object that listens on a specific endpoint, or creates a static channel. */ - UINT(*CreateListener) - (IWTSVirtualChannelManager* pChannelMgr, const char* pszChannelName, ULONG ulFlags, - IWTSListenerCallback* pListenerCallback, IWTSListener** ppListener); + WINPR_ATTR_NODISCARD UINT (*CreateListener)(IWTSVirtualChannelManager* pChannelMgr, + const char* pszChannelName, ULONG ulFlags, + IWTSListenerCallback* pListenerCallback, + IWTSListener** ppListener); /* Find the channel or ID to send data to a specific endpoint. */ - UINT32 (*GetChannelId)(IWTSVirtualChannel* channel); - IWTSVirtualChannel* (*FindChannelById)(IWTSVirtualChannelManager* pChannelMgr, - UINT32 ChannelId); - const char* (*GetChannelName)(IWTSVirtualChannel* channel); + WINPR_ATTR_NODISCARD UINT32 (*GetChannelId)(IWTSVirtualChannel* channel); + WINPR_ATTR_NODISCARD IWTSVirtualChannel* (*FindChannelById)( + IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId); + WINPR_ATTR_NODISCARD const char* (*GetChannelName)(IWTSVirtualChannel* channel); UINT (*DestroyListener)(IWTSVirtualChannelManager* pChannelMgr, IWTSListener* ppListener); }; struct s_IWTSPlugin { /* Used for the first call that is made from the client to the plug-in. */ - UINT (*Initialize)(IWTSPlugin* pPlugin, IWTSVirtualChannelManager* pChannelMgr); + WINPR_ATTR_NODISCARD UINT (*Initialize)(IWTSPlugin* pPlugin, + IWTSVirtualChannelManager* pChannelMgr); /* Notifies the plug-in that the Remote Desktop Connection (RDC) client has successfully connected to the Remote Desktop Session Host (RD Session Host) server. */ - UINT (*Connected)(IWTSPlugin* pPlugin); + WINPR_ATTR_NODISCARD UINT (*Connected)(IWTSPlugin* pPlugin); /* Notifies the plug-in that the Remote Desktop Connection (RDC) client has disconnected from the RD Session Host server. */ - UINT (*Disconnected)(IWTSPlugin* pPlugin, DWORD dwDisconnectCode); + WINPR_ATTR_NODISCARD UINT (*Disconnected)(IWTSPlugin* pPlugin, DWORD dwDisconnectCode); /* Notifies the plug-in that the Remote Desktop Connection (RDC) client has terminated. */ - UINT (*Terminated)(IWTSPlugin* pPlugin); + WINPR_ATTR_NODISCARD UINT (*Terminated)(IWTSPlugin* pPlugin); - UINT (*Attached)(IWTSPlugin* pPlugin); + WINPR_ATTR_NODISCARD UINT (*Attached)(IWTSPlugin* pPlugin); - UINT (*Detached)(IWTSPlugin* pPlugin); + WINPR_ATTR_NODISCARD UINT (*Detached)(IWTSPlugin* pPlugin); /* Extended */ @@ -130,24 +133,25 @@ extern "C" { /* Accepts or denies a connection request for an incoming connection to the associated listener. */ - UINT(*OnNewChannelConnection) - (IWTSListenerCallback* pListenerCallback, IWTSVirtualChannel* pChannel, BYTE* Data, - BOOL* pbAccept, IWTSVirtualChannelCallback** ppCallback); + WINPR_ATTR_NODISCARD + UINT (*OnNewChannelConnection)(IWTSListenerCallback* pListenerCallback, + IWTSVirtualChannel* pChannel, BYTE* Data, BOOL* pbAccept, + IWTSVirtualChannelCallback** ppCallback); void* pInterface; }; struct s_IWTSVirtualChannelCallback { - UINT(*OnDataReceived) - (IWTSVirtualChannelCallback* pChannelCallback, - wStream* data); /**< Notifies the user about data that is being received. */ - UINT(*OnOpen) - (IWTSVirtualChannelCallback* - pChannelCallback); /**< Notifies the user that the channel has been opened. */ - UINT(*OnClose) - (IWTSVirtualChannelCallback* - pChannelCallback); /**< Notifies the user that the channel has been closed. */ + WINPR_ATTR_NODISCARD UINT (*OnDataReceived)( + IWTSVirtualChannelCallback* pChannelCallback, + wStream* data); /**< Notifies the user about data that is being received. */ + WINPR_ATTR_NODISCARD UINT (*OnOpen)( + IWTSVirtualChannelCallback* + pChannelCallback); /**< Notifies the user that the channel has been opened. */ + WINPR_ATTR_NODISCARD UINT (*OnClose)( + IWTSVirtualChannelCallback* + pChannelCallback); /**< Notifies the user that the channel has been closed. */ void* pInterface; }; @@ -159,15 +163,15 @@ extern "C" typedef struct S_IDRDYNVC_ENTRY_POINTS IDRDYNVC_ENTRY_POINTS; struct S_IDRDYNVC_ENTRY_POINTS { - UINT(*RegisterPlugin) - (IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name, IWTSPlugin* pPlugin); + WINPR_ATTR_NODISCARD UINT (*RegisterPlugin)(IDRDYNVC_ENTRY_POINTS* pEntryPoints, + const char* name, IWTSPlugin* pPlugin); IWTSPlugin* (*GetPlugin)(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name); const ADDIN_ARGV* (*GetPluginData)(IDRDYNVC_ENTRY_POINTS* pEntryPoints); - rdpSettings* (*GetRdpSettings)(IDRDYNVC_ENTRY_POINTS* pEntryPoints); - rdpContext* (*GetRdpContext)(IDRDYNVC_ENTRY_POINTS* pEntryPoints); + WINPR_ATTR_NODISCARD rdpSettings* (*GetRdpSettings)(IDRDYNVC_ENTRY_POINTS* pEntryPoints); + WINPR_ATTR_NODISCARD rdpContext* (*GetRdpContext)(IDRDYNVC_ENTRY_POINTS* pEntryPoints); }; - typedef UINT(VCAPITYPE* PDVC_PLUGIN_ENTRY)(IDRDYNVC_ENTRY_POINTS*); + typedef WINPR_ATTR_NODISCARD UINT(VCAPITYPE* PDVC_PLUGIN_ENTRY)(IDRDYNVC_ENTRY_POINTS*); void* get_callback_by_name(const char* name, void** context); void add_callback_by_name(const char* name, void* fkt, void* context); diff --git a/include/freerdp/extension.h b/include/freerdp/extension.h index 1f9d4cb51..f6976fd7d 100644 --- a/include/freerdp/extension.h +++ b/include/freerdp/extension.h @@ -35,29 +35,32 @@ extern "C" struct rdp_ext_plugin { void* ext; - int (*init)(rdpExtPlugin* plugin, freerdp* instance); - int (*uninit)(rdpExtPlugin* plugin, freerdp* instance); + WINPR_ATTR_NODISCARD int (*init)(rdpExtPlugin* plugin, freerdp* instance); + WINPR_ATTR_NODISCARD int (*uninit)(rdpExtPlugin* plugin, freerdp* instance); }; - typedef UINT32(FREERDP_CC* PFREERDP_EXTENSION_HOOK)(rdpExtPlugin* plugin, freerdp* instance); + typedef WINPR_ATTR_NODISCARD UINT32(FREERDP_CC* PFREERDP_EXTENSION_HOOK)(rdpExtPlugin* plugin, + freerdp* instance); - typedef UINT32(FREERDP_CC* PREGISTEREXTENSION)(rdpExtPlugin* plugin); - typedef UINT32(FREERDP_CC* PREGISTERPRECONNECTHOOK)(rdpExtPlugin* plugin, - PFREERDP_EXTENSION_HOOK hook); - typedef UINT32(FREERDP_CC* PREGISTERPOSTCONNECTHOOK)(rdpExtPlugin* plugin, - PFREERDP_EXTENSION_HOOK hook); + typedef WINPR_ATTR_NODISCARD UINT32(FREERDP_CC* PREGISTEREXTENSION)(rdpExtPlugin* plugin); + typedef WINPR_ATTR_NODISCARD + UINT32(FREERDP_CC* PREGISTERPRECONNECTHOOK)(rdpExtPlugin* plugin, PFREERDP_EXTENSION_HOOK hook); + typedef WINPR_ATTR_NODISCARD + UINT32(FREERDP_CC* PREGISTERPOSTCONNECTHOOK)(rdpExtPlugin* plugin, + PFREERDP_EXTENSION_HOOK hook); typedef struct { void* ext; /* Reference to internal instance */ - PREGISTEREXTENSION pRegisterExtension; - PREGISTERPRECONNECTHOOK pRegisterPreConnectHook; - PREGISTERPOSTCONNECTHOOK pRegisterPostConnectHook; + WINPR_ATTR_NODISCARD PREGISTEREXTENSION pRegisterExtension; + WINPR_ATTR_NODISCARD PREGISTERPRECONNECTHOOK pRegisterPreConnectHook; + WINPR_ATTR_NODISCARD PREGISTERPOSTCONNECTHOOK pRegisterPostConnectHook; void* data; } FREERDP_EXTENSION_ENTRY_POINTS; typedef FREERDP_EXTENSION_ENTRY_POINTS* PFREERDP_EXTENSION_ENTRY_POINTS; - typedef int(FREERDP_CC* PFREERDP_EXTENSION_ENTRY)(PFREERDP_EXTENSION_ENTRY_POINTS pEntryPoints); + typedef WINPR_ATTR_NODISCARD int(FREERDP_CC* PFREERDP_EXTENSION_ENTRY)( + PFREERDP_EXTENSION_ENTRY_POINTS pEntryPoints); #ifdef __cplusplus } diff --git a/include/freerdp/freerdp.h b/include/freerdp/freerdp.h index 9e7f70819..7cb59e601 100644 --- a/include/freerdp/freerdp.h +++ b/include/freerdp/freerdp.h @@ -477,7 +477,7 @@ owned by rdpRdp */ additional information after that. */ - ALIGN64 pContextNew + ALIGN64 WINPR_ATTR_NODISCARD pContextNew ContextNew; /**< (offset 33) Callback for context allocation Can be set before calling freerdp_context_new() to have it executed after @@ -492,36 +492,37 @@ owned by rdpRdp */ ALIGN64 UINT ConnectionCallbackState; /* 47 */ - ALIGN64 pConnectCallback + ALIGN64 WINPR_ATTR_NODISCARD pConnectCallback PreConnect; /**< (offset 48) Callback for pre-connect operations. Can be set before calling freerdp_connect() to have it executed before the actual connection happens. Must be set to NULL if not needed. */ - ALIGN64 pConnectCallback + ALIGN64 WINPR_ATTR_NODISCARD pConnectCallback PostConnect; /**< (offset 49) Callback for post-connect operations. Can be set before calling freerdp_connect() to have it executed after the actual connection has succeeded. Must be set to NULL if not needed. */ - ALIGN64 pAuthenticate Authenticate; /**< (offset 50) + ALIGN64 WINPR_ATTR_NODISCARD pAuthenticate Authenticate; /**< (offset 50) Callback for authentication. It is used to get the username/password when it was not provided at connection time. */ #if defined(WITH_FREERDP_DEPRECATED) WINPR_DEPRECATED_VAR("Use VerifyCertificateEx or VerifyX509Certificate instead", - ALIGN64 pVerifyCertificate VerifyCertificate;) /**< (offset 51) */ + ALIGN64 WINPR_ATTR_NODISCARD pVerifyCertificate + VerifyCertificate;) /**< (offset 51) */ WINPR_DEPRECATED_VAR("Use VerifyChangedCertificateEx or VerifyX509Certificate instead", - ALIGN64 pVerifyChangedCertificate + ALIGN64 WINPR_ATTR_NODISCARD pVerifyChangedCertificate VerifyChangedCertificate;) /**< (offset 52) */ #else ALIGN64 UINT64 reserved[2]; #endif - ALIGN64 pVerifyX509Certificate + ALIGN64 WINPR_ATTR_NODISCARD pVerifyX509Certificate VerifyX509Certificate; /**< (offset 53) Callback for X509 certificate verification (PEM format) */ - ALIGN64 pLogonErrorInfo + ALIGN64 WINPR_ATTR_NODISCARD pLogonErrorInfo LogonErrorInfo; /**< (offset 54) Callback for logon error info, important for logon system messages with RemoteApp */ @@ -534,22 +535,22 @@ owned by rdpRdp */ channels. */ - ALIGN64 pAuthenticate GatewayAuthenticate; /**< (offset 56) + ALIGN64 WINPR_ATTR_NODISCARD pAuthenticate GatewayAuthenticate; /**< (offset 56) Callback for gateway authentication. It is used to get the username/password when it was not provided at connection time. */ - ALIGN64 pPresentGatewayMessage PresentGatewayMessage; /**< (offset 57) + ALIGN64 WINPR_ATTR_NODISCARD pPresentGatewayMessage PresentGatewayMessage; /**< (offset 57) Callback for gateway consent messages. It is used to present consent messages to the user. */ - ALIGN64 pConnectCallback Redirect; /**< (offset 58) + ALIGN64 WINPR_ATTR_NODISCARD pConnectCallback Redirect; /**< (offset 58) Callback for redirect operations. Can be set after rdp_client_disconnect_and_clear and applying redirection settings but before rdp_client_connect() to have it executed after the actual connection has succeeded. Must be set to NULL if not needed. */ - ALIGN64 pConnectCallback + ALIGN64 WINPR_ATTR_NODISCARD pConnectCallback LoadChannels; /**< (offset 59) * callback for loading channel configuration. Might be called multiple * times when redirection occurs. */ @@ -563,46 +564,47 @@ owned by rdpRdp */ */ UINT64 paddingD[64 - 61]; /* 61 */ - ALIGN64 pSendChannelData + ALIGN64 WINPR_ATTR_NODISCARD pSendChannelData SendChannelData; /* (offset 64) Callback for sending data to a channel. By default, it is set by freerdp_new() to freerdp_send_channel_data(), which eventually calls freerdp_channel_send() */ - ALIGN64 pReceiveChannelData + ALIGN64 WINPR_ATTR_NODISCARD pReceiveChannelData ReceiveChannelData; /* (offset 65) Callback for receiving data from a channel. This is called by freerdp_channel_process() (if not NULL). Clients will typically use a function that calls freerdp_channels_data() to perform the needed tasks. */ - ALIGN64 pVerifyCertificateEx + ALIGN64 WINPR_ATTR_NODISCARD pVerifyCertificateEx VerifyCertificateEx; /**< (offset 66) Callback for certificate validation. Used to verify that an unknown certificate is trusted. */ - ALIGN64 pVerifyChangedCertificateEx + ALIGN64 WINPR_ATTR_NODISCARD pVerifyChangedCertificateEx VerifyChangedCertificateEx; /**< (offset 67) Callback for changed certificate validation. Used when a certificate differs from stored fingerprint. */ - ALIGN64 pSendChannelPacket - SendChannelPacket; /* (offset 68) - * Callback for sending RAW data to a channel. In contrast to - * SendChannelData data fragmentation is up to the user and this - * function sends data as is with the provided flags. - */ - ALIGN64 pAuthenticateEx AuthenticateEx; /**< (offset 69) + ALIGN64 WINPR_ATTR_NODISCARD pSendChannelPacket + SendChannelPacket; /* (offset 68) + * Callback for sending RAW data to a channel. In contrast to + * SendChannelData data fragmentation is up to the user and this + * function sends data as is with the provided flags. + */ + ALIGN64 WINPR_ATTR_NODISCARD pAuthenticateEx AuthenticateEx; /**< (offset 69) Callback for authentication. It is used to get the username/password. The reason argument tells why it was called. */ - ALIGN64 pChooseSmartcard - ChooseSmartcard; /* (offset 70) - Callback for choosing a smartcard for logon. - Used when multiple smartcards are available. Returns an index into a list - of SmartcardCertInfo pointers */ - ALIGN64 pGetAccessToken GetAccessToken; /* (offset 71) + ALIGN64 WINPR_ATTR_NODISCARD pChooseSmartcard + ChooseSmartcard; /* (offset 70) + Callback for choosing a smartcard for logon. + Used when multiple smartcards are available. Returns an index into a list + of SmartcardCertInfo pointers */ + ALIGN64 WINPR_ATTR_NODISCARD pGetAccessToken GetAccessToken; /* (offset 71) Callback for obtaining an access token for \b AccessTokenType authentication */ - ALIGN64 pRetryDialog RetryDialog; /* (offset 72) Callback for displaying a dialog in case of - something needs a retry */ + ALIGN64 WINPR_ATTR_NODISCARD pRetryDialog + RetryDialog; /* (offset 72) Callback for displaying a dialog in case of + something needs a retry */ UINT64 paddingE[80 - 73]; /* 73 */ }; diff --git a/include/freerdp/graphics.h b/include/freerdp/graphics.h index 7dc4e8dda..4de82c5f0 100644 --- a/include/freerdp/graphics.h +++ b/include/freerdp/graphics.h @@ -47,11 +47,11 @@ extern "C" struct rdp_bitmap { size_t size; /* 0 */ - pBitmap_New New; /* 1 */ - pBitmap_Free Free; /* 2 */ - pBitmap_Paint Paint; /* 3 */ - pBitmap_Decompress Decompress; /* 4 */ - pBitmap_SetSurface SetSurface; /* 5 */ + WINPR_ATTR_NODISCARD pBitmap_New New; /* 1 */ + pBitmap_Free Free; /* 2 */ + WINPR_ATTR_NODISCARD pBitmap_Paint Paint; /* 3 */ + WINPR_ATTR_NODISCARD pBitmap_Decompress Decompress; /* 4 */ + WINPR_ATTR_NODISCARD pBitmap_SetSurface SetSurface; /* 5 */ UINT32 paddingA[16 - 6]; /* 6 */ UINT32 left; /* 16 */ @@ -89,12 +89,12 @@ extern "C" struct rdp_pointer { size_t size; /* 0 */ - pPointer_New New; /* 1 */ + WINPR_ATTR_NODISCARD pPointer_New New; /* 1 */ pPointer_Free Free; /* 2 */ - pPointer_Set Set; /* 3 */ - pPointer_SetNull SetNull; /* 4*/ - pPointer_SetDefault SetDefault; /* 5 */ - pPointer_SetPosition SetPosition; /* 6 */ + WINPR_ATTR_NODISCARD pPointer_Set Set; /* 3 */ + WINPR_ATTR_NODISCARD pPointer_SetNull SetNull; /* 4*/ + WINPR_ATTR_NODISCARD pPointer_SetDefault SetDefault; /* 5 */ + WINPR_ATTR_NODISCARD pPointer_SetPosition SetPosition; /* 6 */ UINT32 paddingA[16 - 7]; /* 7 */ UINT32 xPos; /* 16 */ @@ -127,12 +127,12 @@ extern "C" struct rdp_glyph { size_t size; /* 0 */ - pGlyph_New New; /* 1 */ + WINPR_ATTR_NODISCARD pGlyph_New New; /* 1 */ pGlyph_Free Free; /* 2 */ - pGlyph_Draw Draw; /* 3 */ - pGlyph_BeginDraw BeginDraw; /* 4 */ - pGlyph_EndDraw EndDraw; /* 5 */ - pGlyph_SetBounds SetBounds; /* 6 */ + WINPR_ATTR_NODISCARD pGlyph_Draw Draw; /* 3 */ + WINPR_ATTR_NODISCARD pGlyph_BeginDraw BeginDraw; /* 4 */ + WINPR_ATTR_NODISCARD pGlyph_EndDraw EndDraw; /* 5 */ + WINPR_ATTR_NODISCARD pGlyph_SetBounds SetBounds; /* 6 */ UINT32 paddingA[16 - 7]; /* 7 */ INT32 x; /* 16 */ diff --git a/include/freerdp/heartbeat.h b/include/freerdp/heartbeat.h index 61512e667..07dabbf0d 100644 --- a/include/freerdp/heartbeat.h +++ b/include/freerdp/heartbeat.h @@ -34,7 +34,7 @@ extern "C" struct rdp_heartbeat { - pServerHeartbeat ServerHeartbeat; + WINPR_ATTR_NODISCARD pServerHeartbeat ServerHeartbeat; }; FREERDP_API BOOL freerdp_heartbeat_send_heartbeat_pdu(freerdp_peer* peer, BYTE period, diff --git a/include/freerdp/input.h b/include/freerdp/input.h index d3a9bb2a0..80207d162 100644 --- a/include/freerdp/input.h +++ b/include/freerdp/input.h @@ -90,15 +90,15 @@ extern "C" void* param1; /* 1 */ UINT32 paddingA[16 - 2]; /* 2 */ - pSynchronizeEvent SynchronizeEvent; /* 16 */ - pKeyboardEvent KeyboardEvent; /* 17 */ - pUnicodeKeyboardEvent UnicodeKeyboardEvent; /* 18 */ - pMouseEvent MouseEvent; /* 19 */ - pExtendedMouseEvent ExtendedMouseEvent; /* 20 */ - pFocusInEvent FocusInEvent; /*21 */ - pKeyboardPauseEvent KeyboardPauseEvent; /* 22 */ - pRelMouseEvent RelMouseEvent; /* 23 */ - pQoEEvent QoEEvent; /* 24 */ + WINPR_ATTR_NODISCARD pSynchronizeEvent SynchronizeEvent; /* 16 */ + WINPR_ATTR_NODISCARD pKeyboardEvent KeyboardEvent; /* 17 */ + WINPR_ATTR_NODISCARD pUnicodeKeyboardEvent UnicodeKeyboardEvent; /* 18 */ + WINPR_ATTR_NODISCARD pMouseEvent MouseEvent; /* 19 */ + WINPR_ATTR_NODISCARD pExtendedMouseEvent ExtendedMouseEvent; /* 20 */ + WINPR_ATTR_NODISCARD pFocusInEvent FocusInEvent; /*21 */ + WINPR_ATTR_NODISCARD pKeyboardPauseEvent KeyboardPauseEvent; /* 22 */ + WINPR_ATTR_NODISCARD pRelMouseEvent RelMouseEvent; /* 23 */ + WINPR_ATTR_NODISCARD pQoEEvent QoEEvent; /* 24 */ UINT32 paddingB[32 - 25]; /* 25 */ }; diff --git a/include/freerdp/listener.h b/include/freerdp/listener.h index 28d6002cf..dc49348b2 100644 --- a/include/freerdp/listener.h +++ b/include/freerdp/listener.h @@ -56,22 +56,22 @@ extern "C" void* param3; void* param4; - psListenerOpen Open; - psListenerOpenLocal OpenLocal; + WINPR_ATTR_NODISCARD psListenerOpen Open; + WINPR_ATTR_NODISCARD psListenerOpenLocal OpenLocal; #if defined(WITH_FREERDP_DEPRECATED) WINPR_DEPRECATED_VAR("Use rdp_freerdp_listener::GetEventHandles instead", - psListenerGetFileDescriptor GetFileDescriptor;) + WINPR_ATTR_NODISCARD psListenerGetFileDescriptor GetFileDescriptor;) #else void* reserved; #endif - psListenerGetEventHandles GetEventHandles; - psListenerCheckFileDescriptor CheckFileDescriptor; + WINPR_ATTR_NODISCARD psListenerGetEventHandles GetEventHandles; + WINPR_ATTR_NODISCARD psListenerCheckFileDescriptor CheckFileDescriptor; psListenerClose Close; - psPeerAccepted PeerAccepted; - psListenerOpenFromSocket OpenFromSocket; + WINPR_ATTR_NODISCARD psPeerAccepted PeerAccepted; + WINPR_ATTR_NODISCARD psListenerOpenFromSocket OpenFromSocket; - psListenerCheckFileDescriptor CheckPeerAcceptRestrictions; + WINPR_ATTR_NODISCARD psListenerCheckFileDescriptor CheckPeerAcceptRestrictions; }; FREERDP_API void freerdp_listener_free(freerdp_listener* instance); diff --git a/include/freerdp/peer.h b/include/freerdp/peer.h index d59bef528..19cd074cf 100644 --- a/include/freerdp/peer.h +++ b/include/freerdp/peer.h @@ -140,38 +140,39 @@ extern "C" ALIGN64 void* ContextExtra; ALIGN64 size_t ContextSize; - ALIGN64 psPeerContextNew ContextNew; + ALIGN64 WINPR_ATTR_NODISCARD psPeerContextNew ContextNew; ALIGN64 psPeerContextFree ContextFree; - ALIGN64 psPeerInitialize Initialize; + ALIGN64 WINPR_ATTR_NODISCARD psPeerInitialize Initialize; #if defined(WITH_FREERDP_DEPRECATED) WINPR_DEPRECATED_VAR("Use freerdp_peer::GetEventHandle instead", - ALIGN64 psPeerGetFileDescriptor GetFileDescriptor;) + ALIGN64 WINPR_ATTR_NODISCARD psPeerGetFileDescriptor + GetFileDescriptor;) #else UINT64 reserved; #endif - ALIGN64 psPeerGetEventHandle GetEventHandle; - ALIGN64 psPeerGetReceiveEventHandle GetReceiveEventHandle; - ALIGN64 psPeerCheckFileDescriptor CheckFileDescriptor; + ALIGN64 WINPR_ATTR_NODISCARD psPeerGetEventHandle GetEventHandle; + ALIGN64 WINPR_ATTR_NODISCARD psPeerGetReceiveEventHandle GetReceiveEventHandle; + ALIGN64 WINPR_ATTR_NODISCARD psPeerCheckFileDescriptor CheckFileDescriptor; ALIGN64 psPeerClose Close; ALIGN64 psPeerDisconnect Disconnect; - ALIGN64 psPeerCapabilities Capabilities; - ALIGN64 psPeerPostConnect PostConnect; - ALIGN64 psPeerActivate Activate; - ALIGN64 psPeerLogon Logon; + ALIGN64 WINPR_ATTR_NODISCARD psPeerCapabilities Capabilities; + ALIGN64 WINPR_ATTR_NODISCARD psPeerPostConnect PostConnect; + ALIGN64 WINPR_ATTR_NODISCARD psPeerActivate Activate; + ALIGN64 WINPR_ATTR_NODISCARD psPeerLogon Logon; - ALIGN64 psPeerSendServerRedirection SendServerRedirection; + ALIGN64 WINPR_ATTR_NODISCARD psPeerSendServerRedirection SendServerRedirection; - ALIGN64 psPeerSendChannelData SendChannelData; - ALIGN64 psPeerReceiveChannelData ReceiveChannelData; + ALIGN64 WINPR_ATTR_NODISCARD psPeerSendChannelData SendChannelData; + ALIGN64 WINPR_ATTR_NODISCARD psPeerReceiveChannelData ReceiveChannelData; - ALIGN64 psPeerVirtualChannelOpen VirtualChannelOpen; - ALIGN64 psPeerVirtualChannelClose VirtualChannelClose; - ALIGN64 psPeerVirtualChannelRead VirtualChannelRead; - ALIGN64 psPeerVirtualChannelWrite VirtualChannelWrite; - ALIGN64 psPeerVirtualChannelGetData VirtualChannelGetData; - ALIGN64 psPeerVirtualChannelSetData VirtualChannelSetData; + ALIGN64 WINPR_ATTR_NODISCARD psPeerVirtualChannelOpen VirtualChannelOpen; + ALIGN64 WINPR_ATTR_NODISCARD psPeerVirtualChannelClose VirtualChannelClose; + ALIGN64 WINPR_ATTR_NODISCARD psPeerVirtualChannelRead VirtualChannelRead; + ALIGN64 WINPR_ATTR_NODISCARD psPeerVirtualChannelWrite VirtualChannelWrite; + ALIGN64 WINPR_ATTR_NODISCARD psPeerVirtualChannelGetData VirtualChannelGetData; + ALIGN64 WINPR_ATTR_NODISCARD psPeerVirtualChannelSetData VirtualChannelSetData; ALIGN64 int pId; ALIGN64 UINT32 ack_frame_id; @@ -181,21 +182,21 @@ extern "C" ALIGN64 BOOL authenticated; ALIGN64 SEC_WINNT_AUTH_IDENTITY identity; - ALIGN64 psPeerIsWriteBlocked IsWriteBlocked; - ALIGN64 psPeerDrainOutputBuffer DrainOutputBuffer; - ALIGN64 psPeerHasMoreToRead HasMoreToRead; - ALIGN64 psPeerGetEventHandles GetEventHandles; - ALIGN64 psPeerAdjustMonitorsLayout AdjustMonitorsLayout; - ALIGN64 psPeerClientCapabilities ClientCapabilities; + ALIGN64 WINPR_ATTR_NODISCARD psPeerIsWriteBlocked IsWriteBlocked; + ALIGN64 WINPR_ATTR_NODISCARD psPeerDrainOutputBuffer DrainOutputBuffer; + ALIGN64 WINPR_ATTR_NODISCARD psPeerHasMoreToRead HasMoreToRead; + ALIGN64 WINPR_ATTR_NODISCARD psPeerGetEventHandles GetEventHandles; + ALIGN64 WINPR_ATTR_NODISCARD psPeerAdjustMonitorsLayout AdjustMonitorsLayout; + ALIGN64 WINPR_ATTR_NODISCARD psPeerClientCapabilities ClientCapabilities; #if defined(WITH_FREERDP_DEPRECATED) WINPR_DEPRECATED_VAR("Use freerdp_peer::SspiNtlmHashCallback instead", - ALIGN64 psPeerComputeNtlmHash ComputeNtlmHash;) + ALIGN64 WINPR_ATTR_NODISCARD psPeerComputeNtlmHash ComputeNtlmHash;) #else UINT64 reserved2; #endif - ALIGN64 psPeerLicenseCallback LicenseCallback; + ALIGN64 WINPR_ATTR_NODISCARD psPeerLicenseCallback LicenseCallback; - ALIGN64 psPeerSendChannelPacket SendChannelPacket; + ALIGN64 WINPR_ATTR_NODISCARD psPeerSendChannelPacket SendChannelPacket; /** * @brief SetState Function pointer allowing to manually set the state of the @@ -207,15 +208,15 @@ extern "C" * * \note Must be called after \b Initialize as that also modifies the state. */ - ALIGN64 psPeerSetState SetState; - ALIGN64 psPeerReachedState ReachedState; - ALIGN64 psSspiNtlmHashCallback SspiNtlmHashCallback; + ALIGN64 WINPR_ATTR_NODISCARD psPeerSetState SetState; + ALIGN64 WINPR_ATTR_NODISCARD psPeerReachedState ReachedState; + ALIGN64 WINPR_ATTR_NODISCARD psSspiNtlmHashCallback SspiNtlmHashCallback; /** * @brief RemoteCredentials Function pointer that will be called when remote * credentials guard are used by the peer and we receive the logonCreds (kerberos) * and supplementary creds (NTLM). */ - ALIGN64 psPeerRemoteCredentials RemoteCredentials; + ALIGN64 WINPR_ATTR_NODISCARD psPeerRemoteCredentials RemoteCredentials; }; FREERDP_API void freerdp_peer_context_free(freerdp_peer* client); diff --git a/include/freerdp/pointer.h b/include/freerdp/pointer.h index 351c02134..4968dbebd 100644 --- a/include/freerdp/pointer.h +++ b/include/freerdp/pointer.h @@ -101,12 +101,12 @@ extern "C" rdpContext* context; /* 0 */ UINT32 paddingA[16 - 1]; /* 1 */ - pPointerPosition PointerPosition; /* 16 */ - pPointerSystem PointerSystem; /* 17 */ - pPointerColor PointerColor; /* 18 */ - pPointerNew PointerNew; /* 19 */ - pPointerCached PointerCached; /* 20 */ - pPointerLarge PointerLarge; /* 21 */ + WINPR_ATTR_NODISCARD pPointerPosition PointerPosition; /* 16 */ + WINPR_ATTR_NODISCARD pPointerSystem PointerSystem; /* 17 */ + WINPR_ATTR_NODISCARD pPointerColor PointerColor; /* 18 */ + WINPR_ATTR_NODISCARD pPointerNew PointerNew; /* 19 */ + WINPR_ATTR_NODISCARD pPointerCached PointerCached; /* 20 */ + WINPR_ATTR_NODISCARD pPointerLarge PointerLarge; /* 21 */ UINT32 paddingB[32 - 22]; /* 22 */ }; typedef struct rdp_pointer_update rdpPointerUpdate; diff --git a/include/freerdp/primary.h b/include/freerdp/primary.h index 77f3b399c..b3aebff82 100644 --- a/include/freerdp/primary.h +++ b/include/freerdp/primary.h @@ -423,9 +423,9 @@ typedef BOOL (*pMultiDstBlt)(rdpContext* context, const MULTI_DSTBLT_ORDER* mult typedef BOOL (*pMultiPatBlt)(rdpContext* context, const MULTI_PATBLT_ORDER* multi_patblt); typedef BOOL (*pMultiScrBlt)(rdpContext* context, const MULTI_SCRBLT_ORDER* multi_scrblt); typedef BOOL (*pMultiOpaqueRect)(rdpContext* context, - const MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect); + const MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect); typedef BOOL (*pMultiDrawNineGrid)(rdpContext* context, - const MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid); + const MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid); typedef BOOL (*pLineTo)(rdpContext* context, const LINE_TO_ORDER* line_to); typedef BOOL (*pPolyline)(rdpContext* context, const POLYLINE_ORDER* polyline); typedef BOOL (*pMemBlt)(rdpContext* context, MEMBLT_ORDER* memblt); @@ -439,37 +439,37 @@ typedef BOOL (*pPolygonCB)(rdpContext* context, POLYGON_CB_ORDER* polygon_cb); typedef BOOL (*pEllipseSC)(rdpContext* context, const ELLIPSE_SC_ORDER* ellipse_sc); typedef BOOL (*pEllipseCB)(rdpContext* context, const ELLIPSE_CB_ORDER* ellipse_cb); typedef BOOL (*pOrderInfo)(rdpContext* context, const ORDER_INFO* order_info, - const char* order_name); + const char* order_name); struct rdp_primary_update { rdpContext* context; /* 0 */ UINT32 paddingA[16 - 1]; /* 1 */ - pDstBlt DstBlt; /* 16 */ - pPatBlt PatBlt; /* 17 */ - pScrBlt ScrBlt; /* 18 */ - pOpaqueRect OpaqueRect; /* 19 */ - pDrawNineGrid DrawNineGrid; /* 20 */ - pMultiDstBlt MultiDstBlt; /* 21 */ - pMultiPatBlt MultiPatBlt; /* 22 */ - pMultiScrBlt MultiScrBlt; /* 23 */ - pMultiOpaqueRect MultiOpaqueRect; /* 24 */ - pMultiDrawNineGrid MultiDrawNineGrid; /* 25 */ - pLineTo LineTo; /* 26 */ - pPolyline Polyline; /* 27 */ - pMemBlt MemBlt; /* 28 */ - pMem3Blt Mem3Blt; /* 29 */ - pSaveBitmap SaveBitmap; /* 30 */ - pGlyphIndex GlyphIndex; /* 31 */ - pFastIndex FastIndex; /* 32 */ - pFastGlyph FastGlyph; /* 33 */ - pPolygonSC PolygonSC; /* 34 */ - pPolygonCB PolygonCB; /* 35 */ - pEllipseSC EllipseSC; /* 36 */ - pEllipseCB EllipseCB; /* 37 */ - /* Statistics callback */ - pOrderInfo OrderInfo; /* 38 */ + WINPR_ATTR_NODISCARD pDstBlt DstBlt; /* 16 */ + WINPR_ATTR_NODISCARD pPatBlt PatBlt; /* 17 */ + WINPR_ATTR_NODISCARD pScrBlt ScrBlt; /* 18 */ + WINPR_ATTR_NODISCARD pOpaqueRect OpaqueRect; /* 19 */ + WINPR_ATTR_NODISCARD pDrawNineGrid DrawNineGrid; /* 20 */ + WINPR_ATTR_NODISCARD pMultiDstBlt MultiDstBlt; /* 21 */ + WINPR_ATTR_NODISCARD pMultiPatBlt MultiPatBlt; /* 22 */ + WINPR_ATTR_NODISCARD pMultiScrBlt MultiScrBlt; /* 23 */ + WINPR_ATTR_NODISCARD pMultiOpaqueRect MultiOpaqueRect; /* 24 */ + WINPR_ATTR_NODISCARD pMultiDrawNineGrid MultiDrawNineGrid; /* 25 */ + WINPR_ATTR_NODISCARD pLineTo LineTo; /* 26 */ + WINPR_ATTR_NODISCARD pPolyline Polyline; /* 27 */ + WINPR_ATTR_NODISCARD pMemBlt MemBlt; /* 28 */ + WINPR_ATTR_NODISCARD pMem3Blt Mem3Blt; /* 29 */ + WINPR_ATTR_NODISCARD pSaveBitmap SaveBitmap; /* 30 */ + WINPR_ATTR_NODISCARD pGlyphIndex GlyphIndex; /* 31 */ + WINPR_ATTR_NODISCARD pFastIndex FastIndex; /* 32 */ + WINPR_ATTR_NODISCARD pFastGlyph FastGlyph; /* 33 */ + WINPR_ATTR_NODISCARD pPolygonSC PolygonSC; /* 34 */ + WINPR_ATTR_NODISCARD pPolygonCB PolygonCB; /* 35 */ + WINPR_ATTR_NODISCARD pEllipseSC EllipseSC; /* 36 */ + WINPR_ATTR_NODISCARD pEllipseCB EllipseCB; /* 37 */ + /* Statistics callback */ + WINPR_ATTR_NODISCARD pOrderInfo OrderInfo; /* 38 */ UINT32 paddingB[48 - 39]; /* 39 */ }; typedef struct rdp_primary_update rdpPrimaryUpdate; diff --git a/include/freerdp/primitives.h b/include/freerdp/primitives.h index 5b02d23d4..361e5feac 100644 --- a/include/freerdp/primitives.h +++ b/include/freerdp/primitives.h @@ -254,44 +254,44 @@ typedef fn_orC_32u_t __orC_32u_t; typedef struct { /* Memory-to-memory copy routines */ - fn_copy_t copy; /* memcpy/memmove, basically */ - fn_copy_8u_t copy_8u; /* more strongly typed */ - fn_copy_8u_AC4r_t copy_8u_AC4r; /* pixel copy function */ - /* Memory setting routines */ - fn_set_8u_t set_8u; /* memset, basically */ - fn_set_32s_t set_32s; - fn_set_32u_t set_32u; - fn_zero_t zero; /* bzero or faster */ - /* Arithmetic functions */ - fn_add_16s_t add_16s; + WINPR_ATTR_NODISCARD fn_copy_t copy; /* memcpy/memmove, basically */ + WINPR_ATTR_NODISCARD fn_copy_8u_t copy_8u; /* more strongly typed */ + WINPR_ATTR_NODISCARD fn_copy_8u_AC4r_t copy_8u_AC4r; /* pixel copy function */ + /* Memory setting routines */ + WINPR_ATTR_NODISCARD fn_set_8u_t set_8u; /* memset, basically */ + WINPR_ATTR_NODISCARD fn_set_32s_t set_32s; + WINPR_ATTR_NODISCARD fn_set_32u_t set_32u; + WINPR_ATTR_NODISCARD fn_zero_t zero; /* bzero or faster */ + /* Arithmetic functions */ + WINPR_ATTR_NODISCARD fn_add_16s_t add_16s; /* And/or */ - fn_andC_32u_t andC_32u; - fn_orC_32u_t orC_32u; + WINPR_ATTR_NODISCARD fn_andC_32u_t andC_32u; + WINPR_ATTR_NODISCARD fn_orC_32u_t orC_32u; /* Shifts */ - fn_lShiftC_16s_t lShiftC_16s; - fn_lShiftC_16u_t lShiftC_16u; - fn_rShiftC_16s_t rShiftC_16s; - fn_rShiftC_16u_t rShiftC_16u; - fn_shiftC_16s_t shiftC_16s; - fn_shiftC_16u_t shiftC_16u; + WINPR_ATTR_NODISCARD fn_lShiftC_16s_t lShiftC_16s; + WINPR_ATTR_NODISCARD fn_lShiftC_16u_t lShiftC_16u; + WINPR_ATTR_NODISCARD fn_rShiftC_16s_t rShiftC_16s; + WINPR_ATTR_NODISCARD fn_rShiftC_16u_t rShiftC_16u; + WINPR_ATTR_NODISCARD fn_shiftC_16s_t shiftC_16s; + WINPR_ATTR_NODISCARD fn_shiftC_16u_t shiftC_16u; /* Alpha Composition */ - fn_alphaComp_argb_t alphaComp_argb; + WINPR_ATTR_NODISCARD fn_alphaComp_argb_t alphaComp_argb; /* Sign */ - fn_sign_16s_t sign_16s; + WINPR_ATTR_NODISCARD fn_sign_16s_t sign_16s; /* Color conversions */ - fn_yCbCrToRGB_16s8u_P3AC4R_t yCbCrToRGB_16s8u_P3AC4R; - fn_yCbCrToRGB_16s16s_P3P3_t yCbCrToRGB_16s16s_P3P3; - fn_RGBToYCbCr_16s16s_P3P3_t RGBToYCbCr_16s16s_P3P3; - fn_RGBToRGB_16s8u_P3AC4R_t RGBToRGB_16s8u_P3AC4R; - fn_YCoCgToRGB_8u_AC4R_t YCoCgToRGB_8u_AC4R; - fn_YUV420ToRGB_8u_P3AC4R_t YUV420ToRGB_8u_P3AC4R; - fn_RGBToYUV420_8u_P3AC4R_t RGBToYUV420_8u_P3AC4R; - fn_RGBToYUV444_8u_P3AC4R_t RGBToYUV444_8u_P3AC4R; - fn_YUV420CombineToYUV444_t YUV420CombineToYUV444; - fn_YUV444SplitToYUV420_t YUV444SplitToYUV420; - fn_YUV444ToRGB_8u_P3AC4R_t YUV444ToRGB_8u_P3AC4R; - fn_RGBToAVC444YUV_t RGBToAVC444YUV; - fn_RGBToAVC444YUV_t RGBToAVC444YUVv2; + WINPR_ATTR_NODISCARD fn_yCbCrToRGB_16s8u_P3AC4R_t yCbCrToRGB_16s8u_P3AC4R; + WINPR_ATTR_NODISCARD fn_yCbCrToRGB_16s16s_P3P3_t yCbCrToRGB_16s16s_P3P3; + WINPR_ATTR_NODISCARD fn_RGBToYCbCr_16s16s_P3P3_t RGBToYCbCr_16s16s_P3P3; + WINPR_ATTR_NODISCARD fn_RGBToRGB_16s8u_P3AC4R_t RGBToRGB_16s8u_P3AC4R; + WINPR_ATTR_NODISCARD fn_YCoCgToRGB_8u_AC4R_t YCoCgToRGB_8u_AC4R; + WINPR_ATTR_NODISCARD fn_YUV420ToRGB_8u_P3AC4R_t YUV420ToRGB_8u_P3AC4R; + WINPR_ATTR_NODISCARD fn_RGBToYUV420_8u_P3AC4R_t RGBToYUV420_8u_P3AC4R; + WINPR_ATTR_NODISCARD fn_RGBToYUV444_8u_P3AC4R_t RGBToYUV444_8u_P3AC4R; + WINPR_ATTR_NODISCARD fn_YUV420CombineToYUV444_t YUV420CombineToYUV444; + WINPR_ATTR_NODISCARD fn_YUV444SplitToYUV420_t YUV444SplitToYUV420; + WINPR_ATTR_NODISCARD fn_YUV444ToRGB_8u_P3AC4R_t YUV444ToRGB_8u_P3AC4R; + WINPR_ATTR_NODISCARD fn_RGBToAVC444YUV_t RGBToAVC444YUV; + WINPR_ATTR_NODISCARD fn_RGBToAVC444YUV_t RGBToAVC444YUVv2; /* flags */ DWORD flags; primitives_uninit_t uninit; @@ -299,9 +299,9 @@ typedef struct /** \brief Do vecotor addition, store result in both input buffers * pSrcDst1 = pSrcDst2 = pSrcDst1 + pSrcDst2 */ - fn_add_16s_inplace_t add_16s_inplace; /** @since version 3.6.0 */ - fn_lShiftC_16s_inplace_t lShiftC_16s_inplace; /** @since version 3.6.0 */ - fn_copy_no_overlap_t copy_no_overlap; /** @since version 3.6.0 */ + WINPR_ATTR_NODISCARD fn_add_16s_inplace_t add_16s_inplace; /** @since version 3.6.0 */ + WINPR_ATTR_NODISCARD fn_lShiftC_16s_inplace_t lShiftC_16s_inplace; /** @since version 3.6.0 */ + WINPR_ATTR_NODISCARD fn_copy_no_overlap_t copy_no_overlap; /** @since version 3.6.0 */ } primitives_t; typedef enum diff --git a/include/freerdp/secondary.h b/include/freerdp/secondary.h index 76ff13d61..b1b358330 100644 --- a/include/freerdp/secondary.h +++ b/include/freerdp/secondary.h @@ -164,28 +164,28 @@ typedef BOOL (*pCacheBitmap)(rdpContext* context, const CACHE_BITMAP_ORDER* cach typedef BOOL (*pCacheBitmapV2)(rdpContext* context, CACHE_BITMAP_V2_ORDER* cache_bitmap_v2_order); typedef BOOL (*pCacheBitmapV3)(rdpContext* context, CACHE_BITMAP_V3_ORDER* cache_bitmap_v3_order); typedef BOOL (*pCacheColorTable)(rdpContext* context, - const CACHE_COLOR_TABLE_ORDER* cache_color_table_order); + const CACHE_COLOR_TABLE_ORDER* cache_color_table_order); typedef BOOL (*pCacheGlyph)(rdpContext* context, const CACHE_GLYPH_ORDER* cache_glyph_order); typedef BOOL (*pCacheGlyphV2)(rdpContext* context, - const CACHE_GLYPH_V2_ORDER* cache_glyph_v2_order); + const CACHE_GLYPH_V2_ORDER* cache_glyph_v2_order); typedef BOOL (*pCacheBrush)(rdpContext* context, const CACHE_BRUSH_ORDER* cache_brush_order); typedef BOOL (*pCacheOrderInfo)(rdpContext* context, INT16 orderLength, UINT16 extraFlags, - UINT8 orderType, const char* orderName); + UINT8 orderType, const char* orderName); struct rdp_secondary_update { rdpContext* context; /* 0 */ UINT32 paddingA[16 - 1]; /* 1 */ - pCacheBitmap CacheBitmap; /* 16 */ - pCacheBitmapV2 CacheBitmapV2; /* 17 */ - pCacheBitmapV3 CacheBitmapV3; /* 18 */ - pCacheColorTable CacheColorTable; /* 19 */ - pCacheGlyph CacheGlyph; /* 20 */ - pCacheGlyphV2 CacheGlyphV2; /* 21 */ - pCacheBrush CacheBrush; /* 22 */ - /* Statistics callback */ - pCacheOrderInfo CacheOrderInfo; /* 23 */ + WINPR_ATTR_NODISCARD pCacheBitmap CacheBitmap; /* 16 */ + WINPR_ATTR_NODISCARD pCacheBitmapV2 CacheBitmapV2; /* 17 */ + WINPR_ATTR_NODISCARD pCacheBitmapV3 CacheBitmapV3; /* 18 */ + WINPR_ATTR_NODISCARD pCacheColorTable CacheColorTable; /* 19 */ + WINPR_ATTR_NODISCARD pCacheGlyph CacheGlyph; /* 20 */ + WINPR_ATTR_NODISCARD pCacheGlyphV2 CacheGlyphV2; /* 21 */ + WINPR_ATTR_NODISCARD pCacheBrush CacheBrush; /* 22 */ + /* Statistics callback */ + WINPR_ATTR_NODISCARD pCacheOrderInfo CacheOrderInfo; /* 23 */ UINT32 paddingE[32 - 24]; /* 24 */ }; typedef struct rdp_secondary_update rdpSecondaryUpdate; diff --git a/include/freerdp/server/ainput.h b/include/freerdp/server/ainput.h index c3f7a9ad2..7777858b1 100644 --- a/include/freerdp/server/ainput.h +++ b/include/freerdp/server/ainput.h @@ -65,7 +65,7 @@ extern "C" /** * Open the ainput channel. */ - psAInputServerOpen Open; + WINPR_ATTR_NODISCARD psAInputServerOpen Open; /** * Optional: Set thread handling. @@ -74,42 +74,42 @@ extern "C" * * Defaults to externalThread=FALSE */ - psAInputServerInitialize Initialize; + WINPR_ATTR_NODISCARD psAInputServerInitialize Initialize; /** * @brief Poll When externalThread=TRUE call periodically from your main loop. * if externalThread=FALSE do not call. */ - psAInputServerPoll Poll; + WINPR_ATTR_NODISCARD psAInputServerPoll Poll; /** * @brief Poll When externalThread=TRUE call to get a handle to wait for events. * Will return FALSE until the handle is available. */ - psAInputServerChannelHandle ChannelHandle; + WINPR_ATTR_NODISCARD psAInputServerChannelHandle ChannelHandle; /** * Close the ainput channel. */ - psAInputServerClose Close; + WINPR_ATTR_NODISCARD psAInputServerClose Close; /** * Status of the ainput channel. */ - psAInputServerIsOpen IsOpen; + WINPR_ATTR_NODISCARD psAInputServerIsOpen IsOpen; /*** Callbacks registered by the server. ***/ /** * Receive ainput mouse event PDU. */ - psAInputServerMouseEvent MouseEvent; + WINPR_ATTR_NODISCARD psAInputServerMouseEvent MouseEvent; rdpContext* rdpcontext; /** * Callback, when the channel got its id assigned. */ - psAInputChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psAInputChannelIdAssigned ChannelIdAssigned; }; FREERDP_API void ainput_server_context_free(ainput_server_context* context); diff --git a/include/freerdp/server/audin.h b/include/freerdp/server/audin.h index dcbfb03ae..d202101f6 100644 --- a/include/freerdp/server/audin.h +++ b/include/freerdp/server/audin.h @@ -76,17 +76,17 @@ extern "C" /** * Open the audio input channel. */ - psAudinServerChannelOpen Open; + WINPR_ATTR_NODISCARD psAudinServerChannelOpen Open; /** * Check, whether the audio input channel thread was created */ - psAudinServerChannelIsOpen IsOpen; + WINPR_ATTR_NODISCARD psAudinServerChannelIsOpen IsOpen; /** * Close the audio input channel. */ - psAudinServerChannelClose Close; + WINPR_ATTR_NODISCARD psAudinServerChannelClose Close; /** * For the following server to client PDUs, @@ -96,59 +96,59 @@ extern "C" /** * Send a Version PDU. */ - psAudinServerVersion SendVersion; + WINPR_ATTR_NODISCARD psAudinServerVersion SendVersion; /** * Send a Sound Formats PDU. */ - psAudinServerFormats SendFormats; + WINPR_ATTR_NODISCARD psAudinServerFormats SendFormats; /** * Send an Open PDU. */ - psAudinServerOpen SendOpen; + WINPR_ATTR_NODISCARD psAudinServerOpen SendOpen; /** * Send a Format Change PDU. */ - psAudinServerFormatChange SendFormatChange; + WINPR_ATTR_NODISCARD psAudinServerFormatChange SendFormatChange; /*** Callbacks registered by the server. ***/ /** * Callback, when the channel got its id assigned. */ - psAudinServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psAudinServerChannelIdAssigned ChannelIdAssigned; /* * Callback for the Version PDU. */ - psAudinServerVersion ReceiveVersion; + WINPR_ATTR_NODISCARD psAudinServerVersion ReceiveVersion; /* * Callback for the Sound Formats PDU. */ - psAudinServerFormats ReceiveFormats; + WINPR_ATTR_NODISCARD psAudinServerFormats ReceiveFormats; /* * Callback for the Open Reply PDU. */ - psAudinServerOpenReply OpenReply; + WINPR_ATTR_NODISCARD psAudinServerOpenReply OpenReply; /* * Callback for the Incoming Data PDU. */ - psAudinServerIncomingData IncomingData; + WINPR_ATTR_NODISCARD psAudinServerIncomingData IncomingData; /* * Callback for the Data PDU. */ - psAudinServerData Data; + WINPR_ATTR_NODISCARD psAudinServerData Data; /* * Callback for the Format Change PDU. */ - psAudinServerFormatChange ReceiveFormatChange; + WINPR_ATTR_NODISCARD psAudinServerFormatChange ReceiveFormatChange; rdpContext* rdpcontext; }; diff --git a/include/freerdp/server/cliprdr.h b/include/freerdp/server/cliprdr.h index 94b33ddb1..e2c745e0c 100644 --- a/include/freerdp/server/cliprdr.h +++ b/include/freerdp/server/cliprdr.h @@ -100,33 +100,33 @@ extern "C" BOOL fileClipNoFilePaths; BOOL canLockClipData; - psCliprdrOpen Open; + WINPR_ATTR_NODISCARD psCliprdrOpen Open; psCliprdrClose Close; - psCliprdrStart Start; + WINPR_ATTR_NODISCARD psCliprdrStart Start; psCliprdrStop Stop; - psCliprdrGetEventHandle GetEventHandle; - psCliprdrCheckEventHandle CheckEventHandle; + WINPR_ATTR_NODISCARD psCliprdrGetEventHandle GetEventHandle; + WINPR_ATTR_NODISCARD psCliprdrCheckEventHandle CheckEventHandle; - psCliprdrServerCapabilities ServerCapabilities; - psCliprdrClientCapabilities ClientCapabilities; - psCliprdrMonitorReady MonitorReady; - psCliprdrTempDirectory TempDirectory; - psCliprdrClientFormatList ClientFormatList; - psCliprdrServerFormatList ServerFormatList; - psCliprdrClientFormatListResponse ClientFormatListResponse; - psCliprdrServerFormatListResponse ServerFormatListResponse; - psCliprdrClientLockClipboardData ClientLockClipboardData; - psCliprdrServerLockClipboardData ServerLockClipboardData; - psCliprdrClientUnlockClipboardData ClientUnlockClipboardData; - psCliprdrServerUnlockClipboardData ServerUnlockClipboardData; - psCliprdrClientFormatDataRequest ClientFormatDataRequest; - psCliprdrServerFormatDataRequest ServerFormatDataRequest; - psCliprdrClientFormatDataResponse ClientFormatDataResponse; - psCliprdrServerFormatDataResponse ServerFormatDataResponse; - psCliprdrClientFileContentsRequest ClientFileContentsRequest; - psCliprdrServerFileContentsRequest ServerFileContentsRequest; - psCliprdrClientFileContentsResponse ClientFileContentsResponse; - psCliprdrServerFileContentsResponse ServerFileContentsResponse; + WINPR_ATTR_NODISCARD psCliprdrServerCapabilities ServerCapabilities; + WINPR_ATTR_NODISCARD psCliprdrClientCapabilities ClientCapabilities; + WINPR_ATTR_NODISCARD psCliprdrMonitorReady MonitorReady; + WINPR_ATTR_NODISCARD psCliprdrTempDirectory TempDirectory; + WINPR_ATTR_NODISCARD psCliprdrClientFormatList ClientFormatList; + WINPR_ATTR_NODISCARD psCliprdrServerFormatList ServerFormatList; + WINPR_ATTR_NODISCARD psCliprdrClientFormatListResponse ClientFormatListResponse; + WINPR_ATTR_NODISCARD psCliprdrServerFormatListResponse ServerFormatListResponse; + WINPR_ATTR_NODISCARD psCliprdrClientLockClipboardData ClientLockClipboardData; + WINPR_ATTR_NODISCARD psCliprdrServerLockClipboardData ServerLockClipboardData; + WINPR_ATTR_NODISCARD psCliprdrClientUnlockClipboardData ClientUnlockClipboardData; + WINPR_ATTR_NODISCARD psCliprdrServerUnlockClipboardData ServerUnlockClipboardData; + WINPR_ATTR_NODISCARD psCliprdrClientFormatDataRequest ClientFormatDataRequest; + WINPR_ATTR_NODISCARD psCliprdrServerFormatDataRequest ServerFormatDataRequest; + WINPR_ATTR_NODISCARD psCliprdrClientFormatDataResponse ClientFormatDataResponse; + WINPR_ATTR_NODISCARD psCliprdrServerFormatDataResponse ServerFormatDataResponse; + WINPR_ATTR_NODISCARD psCliprdrClientFileContentsRequest ClientFileContentsRequest; + WINPR_ATTR_NODISCARD psCliprdrServerFileContentsRequest ServerFileContentsRequest; + WINPR_ATTR_NODISCARD psCliprdrClientFileContentsResponse ClientFileContentsResponse; + WINPR_ATTR_NODISCARD psCliprdrServerFileContentsResponse ServerFileContentsResponse; rdpContext* rdpcontext; BOOL autoInitializationSequence; diff --git a/include/freerdp/server/disp.h b/include/freerdp/server/disp.h index e53f2bcef..240c0ef36 100644 --- a/include/freerdp/server/disp.h +++ b/include/freerdp/server/disp.h @@ -51,11 +51,11 @@ extern "C" UINT32 MaxMonitorAreaFactorA; UINT32 MaxMonitorAreaFactorB; - psDispOpen Open; - psDispClose Close; + WINPR_ATTR_NODISCARD psDispOpen Open; + WINPR_ATTR_NODISCARD psDispClose Close; - psDispMonitorLayout DispMonitorLayout; - psDispCaps DisplayControlCaps; + WINPR_ATTR_NODISCARD psDispMonitorLayout DispMonitorLayout; + WINPR_ATTR_NODISCARD psDispCaps DisplayControlCaps; DispServerPrivate* priv; rdpContext* rdpcontext; @@ -63,7 +63,7 @@ extern "C" /** * Callback, when the channel got its id assigned. */ - psDispChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psDispChannelIdAssigned ChannelIdAssigned; }; FREERDP_API void disp_server_context_free(DispServerContext* context); diff --git a/include/freerdp/server/drdynvc.h b/include/freerdp/server/drdynvc.h index b81ca06bc..422a3061c 100644 --- a/include/freerdp/server/drdynvc.h +++ b/include/freerdp/server/drdynvc.h @@ -45,7 +45,7 @@ extern "C" { HANDLE vcm; - psDrdynvcStart Start; + WINPR_ATTR_NODISCARD psDrdynvcStart Start; psDrdynvcStop Stop; DrdynvcServerPrivate* priv; diff --git a/include/freerdp/server/echo.h b/include/freerdp/server/echo.h index ffc637770..4b49ad387 100644 --- a/include/freerdp/server/echo.h +++ b/include/freerdp/server/echo.h @@ -62,25 +62,25 @@ extern "C" /** * Open the echo channel. */ - psEchoServerOpen Open; + WINPR_ATTR_NODISCARD psEchoServerOpen Open; /** * Close the echo channel. */ - psEchoServerClose Close; + WINPR_ATTR_NODISCARD psEchoServerClose Close; /** * Send echo request PDU. */ - psEchoServerRequest Request; + WINPR_ATTR_NODISCARD psEchoServerRequest Request; /*** Callbacks registered by the server. ***/ /** * Indicate whether the channel is opened successfully. */ - psEchoServerOpenResult OpenResult; + WINPR_ATTR_NODISCARD psEchoServerOpenResult OpenResult; /** * Receive echo response PDU. */ - psEchoServerResponse Response; + WINPR_ATTR_NODISCARD psEchoServerResponse Response; rdpContext* rdpcontext; diff --git a/include/freerdp/server/encomsp.h b/include/freerdp/server/encomsp.h index ab263e453..d0492381f 100644 --- a/include/freerdp/server/encomsp.h +++ b/include/freerdp/server/encomsp.h @@ -72,20 +72,20 @@ extern "C" HANDLE vcm; void* custom; - psEncomspStart Start; + WINPR_ATTR_NODISCARD psEncomspStart Start; psEncomspStop Stop; - psEncomspFilterUpdated FilterUpdated; - psEncomspApplicationCreated ApplicationCreated; - psEncomspApplicationRemoved ApplicationRemoved; - psEncomspWindowCreated WindowCreated; - psEncomspWindowRemoved WindowRemoved; - psEncomspShowWindow ShowWindow; - psEncomspParticipantCreated ParticipantCreated; - psEncomspParticipantRemoved ParticipantRemoved; - psEncomspChangeParticipantControlLevel ChangeParticipantControlLevel; - psEncomspGraphicsStreamPaused GraphicsStreamPaused; - psEncomspGraphicsStreamResumed GraphicsStreamResumed; + WINPR_ATTR_NODISCARD psEncomspFilterUpdated FilterUpdated; + WINPR_ATTR_NODISCARD psEncomspApplicationCreated ApplicationCreated; + WINPR_ATTR_NODISCARD psEncomspApplicationRemoved ApplicationRemoved; + WINPR_ATTR_NODISCARD psEncomspWindowCreated WindowCreated; + WINPR_ATTR_NODISCARD psEncomspWindowRemoved WindowRemoved; + WINPR_ATTR_NODISCARD psEncomspShowWindow ShowWindow; + WINPR_ATTR_NODISCARD psEncomspParticipantCreated ParticipantCreated; + WINPR_ATTR_NODISCARD psEncomspParticipantRemoved ParticipantRemoved; + WINPR_ATTR_NODISCARD psEncomspChangeParticipantControlLevel ChangeParticipantControlLevel; + WINPR_ATTR_NODISCARD psEncomspGraphicsStreamPaused GraphicsStreamPaused; + WINPR_ATTR_NODISCARD psEncomspGraphicsStreamResumed GraphicsStreamResumed; EncomspServerPrivate* priv; diff --git a/include/freerdp/server/gfxredir.h b/include/freerdp/server/gfxredir.h index b8f7a9605..be49e8dc1 100644 --- a/include/freerdp/server/gfxredir.h +++ b/include/freerdp/server/gfxredir.h @@ -67,24 +67,26 @@ extern "C" void* custom; HANDLE vcm; - psGfxRedirOpen Open; - psGfxRedirClose Close; + WINPR_ATTR_NODISCARD psGfxRedirOpen Open; + WINPR_ATTR_NODISCARD psGfxRedirClose Close; - psGfxRedirError Error; + WINPR_ATTR_NODISCARD psGfxRedirError Error; - psGfxRedirGraphicsRedirectionLegacyCaps GraphicsRedirectionLegacyCaps; + WINPR_ATTR_NODISCARD psGfxRedirGraphicsRedirectionLegacyCaps GraphicsRedirectionLegacyCaps; - psGfxRedirGraphicsRedirectionCapsAdvertise GraphicsRedirectionCapsAdvertise; - psGfxRedirGraphicsRedirectionCapsConfirm GraphicsRedirectionCapsConfirm; + WINPR_ATTR_NODISCARD psGfxRedirGraphicsRedirectionCapsAdvertise + GraphicsRedirectionCapsAdvertise; + WINPR_ATTR_NODISCARD psGfxRedirGraphicsRedirectionCapsConfirm + GraphicsRedirectionCapsConfirm; - psGfxRedirOpenPool OpenPool; - psGfxRedirClosePool ClosePool; + WINPR_ATTR_NODISCARD psGfxRedirOpenPool OpenPool; + WINPR_ATTR_NODISCARD psGfxRedirClosePool ClosePool; - psGfxRedirCreateBuffer CreateBuffer; - psGfxRedirDestroyBuffer DestroyBuffer; + WINPR_ATTR_NODISCARD psGfxRedirCreateBuffer CreateBuffer; + WINPR_ATTR_NODISCARD psGfxRedirDestroyBuffer DestroyBuffer; - psGfxRedirPresentBuffer PresentBuffer; - psGfxRedirPresentBufferAck PresentBufferAck; + WINPR_ATTR_NODISCARD psGfxRedirPresentBuffer PresentBuffer; + WINPR_ATTR_NODISCARD psGfxRedirPresentBufferAck PresentBufferAck; GfxRedirServerPrivate* priv; rdpContext* rdpcontext; diff --git a/include/freerdp/server/location.h b/include/freerdp/server/location.h index ed2baa323..cbda6de08 100644 --- a/include/freerdp/server/location.h +++ b/include/freerdp/server/location.h @@ -68,64 +68,64 @@ extern "C" * * Defaults to externalThread=FALSE */ - psLocationServerInitialize Initialize; + WINPR_ATTR_NODISCARD psLocationServerInitialize Initialize; /** * Open the location channel. */ - psLocationServerOpen Open; + WINPR_ATTR_NODISCARD psLocationServerOpen Open; /** * Close the location channel. */ - psLocationServerClose Close; + WINPR_ATTR_NODISCARD psLocationServerClose Close; /** * Poll * When externalThread=TRUE, call Poll() periodically from your main loop. * If externalThread=FALSE do not call. */ - psLocationServerPoll Poll; + WINPR_ATTR_NODISCARD psLocationServerPoll Poll; /** * Retrieve the channel handle for use in conjunction with Poll(). * If externalThread=FALSE do not call. */ - psLocationServerChannelHandle ChannelHandle; + WINPR_ATTR_NODISCARD psLocationServerChannelHandle ChannelHandle; /* All PDUs sent by the server don't require the header to be set */ /* * Send a ServerReady PDU. */ - psLocationServerServerReady ServerReady; + WINPR_ATTR_NODISCARD psLocationServerServerReady ServerReady; /*** Callbacks registered by the server. ***/ /** * Callback, when the channel got its id assigned. */ - psLocationServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psLocationServerChannelIdAssigned ChannelIdAssigned; /** * Callback for the ClientReady PDU. */ - psLocationServerClientReady ClientReady; + WINPR_ATTR_NODISCARD psLocationServerClientReady ClientReady; /** * Callback for the BaseLocation3D PDU. */ - psLocationServerBaseLocation3D BaseLocation3D; + WINPR_ATTR_NODISCARD psLocationServerBaseLocation3D BaseLocation3D; /** * Callback for the Location2DDelta PDU. */ - psLocationServerLocation2DDelta Location2DDelta; + WINPR_ATTR_NODISCARD psLocationServerLocation2DDelta Location2DDelta; /** * Callback for the Location3DDelta PDU. */ - psLocationServerLocation3DDelta Location3DDelta; + WINPR_ATTR_NODISCARD psLocationServerLocation3DDelta Location3DDelta; rdpContext* rdpcontext; }; diff --git a/include/freerdp/server/proxy/proxy_context.h b/include/freerdp/server/proxy/proxy_context.h index b958e7cf9..22f10f32c 100644 --- a/include/freerdp/server/proxy/proxy_context.h +++ b/include/freerdp/server/proxy/proxy_context.h @@ -63,8 +63,8 @@ extern "C" UINT32 front_channel_id; UINT32 back_channel_id; pf_utils_channel_mode channelMode; - proxyChannelDataFn onFrontData; - proxyChannelDataFn onBackData; + WINPR_ATTR_NODISCARD proxyChannelDataFn onFrontData; + WINPR_ATTR_NODISCARD proxyChannelDataFn onBackData; proxyChannelContextDtor contextDtor; void* context; }; @@ -120,7 +120,8 @@ extern "C" pReceiveChannelData client_receive_channel_data_original; wQueue* cached_server_channel_data; - BOOL (*sendChannelData)(pClientContext* pc, const proxyChannelDataEventInfo* ev); + WINPR_ATTR_NODISCARD BOOL (*sendChannelData)(pClientContext* pc, + const proxyChannelDataEventInfo* ev); /* X509 specific */ char* remote_hostname; diff --git a/include/freerdp/server/proxy/proxy_modules_api.h b/include/freerdp/server/proxy/proxy_modules_api.h index 1887f9091..011ab931c 100644 --- a/include/freerdp/server/proxy/proxy_modules_api.h +++ b/include/freerdp/server/proxy/proxy_modules_api.h @@ -65,52 +65,54 @@ extern "C" UINT64 reserved1[32 - 2]; /* 2-32 */ - BOOL (*PluginUnload)(proxyPlugin* plugin); /* 33 */ + WINPR_ATTR_NODISCARD BOOL (*PluginUnload)(proxyPlugin* plugin); /* 33 */ UINT64 reserved2[66 - 34]; /* 34 - 65 */ /* proxy hooks. a module can set these function pointers to register hooks */ - proxyHookFn ClientInitConnect; /* 66 custom=rdpContext* */ - proxyHookFn ClientUninitConnect; /* 67 custom=rdpContext* */ - proxyHookFn ClientPreConnect; /* 68 custom=rdpContext* */ - proxyHookFn ClientPostConnect; /* 69 custom=rdpContext* */ - proxyHookFn ClientPostDisconnect; /* 70 custom=rdpContext* */ - proxyHookFn ClientX509Certificate; /* 71 custom=rdpContext* */ - proxyHookFn ClientLoginFailure; /* 72 custom=rdpContext* */ - proxyHookFn ClientEndPaint; /* 73 custom=rdpContext* */ - proxyHookFn ClientRedirect; /* 74 custom=rdpContext* */ - proxyHookFn ClientLoadChannels; /* 75 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientInitConnect; /* 66 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientUninitConnect; /* 67 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientPreConnect; /* 68 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientPostConnect; /* 69 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientPostDisconnect; /* 70 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientX509Certificate; /* 71 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientLoginFailure; /* 72 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientEndPaint; /* 73 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientRedirect; /* 74 custom=rdpContext* */ + WINPR_ATTR_NODISCARD proxyHookFn ClientLoadChannels; /* 75 custom=rdpContext* */ UINT64 reserved3[96 - 76]; /* 76-95 */ - proxyHookFn ServerPostConnect; /* 96 custom=freerdp_peer* */ - proxyHookFn ServerPeerActivate; /* 97 custom=freerdp_peer* */ - proxyHookFn ServerChannelsInit; /* 98 custom=freerdp_peer* */ - proxyHookFn ServerChannelsFree; /* 99 custom=freerdp_peer* */ - proxyHookFn ServerSessionEnd; /* 100 custom=freerdp_peer* */ - proxyHookFn ServerSessionInitialize; /* 101 custom=freerdp_peer* */ - proxyHookFn ServerSessionStarted; /* 102 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerPostConnect; /* 96 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerPeerActivate; /* 97 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerChannelsInit; /* 98 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerChannelsFree; /* 99 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerSessionEnd; /* 100 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerSessionInitialize; /* 101 custom=freerdp_peer* */ + WINPR_ATTR_NODISCARD proxyHookFn ServerSessionStarted; /* 102 custom=freerdp_peer* */ UINT64 reserved4[128 - 103]; /* 103 - 127 */ /* proxy filters. a module can set these function pointers to register filters */ - proxyFilterFn KeyboardEvent; /* 128 */ - proxyFilterFn MouseEvent; /* 129 */ - proxyFilterFn ClientChannelData; /* 130 passthrough channels data */ - proxyFilterFn ServerChannelData; /* 131 passthrough channels data */ - proxyFilterFn DynamicChannelCreate; /* 132 passthrough drdynvc channel create data */ - proxyFilterFn ServerFetchTargetAddr; /* 133 */ - proxyFilterFn ServerPeerLogon; /* 134 */ - proxyFilterFn ChannelCreate; /* 135 passthrough drdynvc channel create data */ - proxyFilterFn UnicodeEvent; /* 136 */ - proxyFilterFn MouseExEvent; /* 137 */ + WINPR_ATTR_NODISCARD proxyFilterFn KeyboardEvent; /* 128 */ + WINPR_ATTR_NODISCARD proxyFilterFn MouseEvent; /* 129 */ + WINPR_ATTR_NODISCARD proxyFilterFn ClientChannelData; /* 130 passthrough channels data */ + WINPR_ATTR_NODISCARD proxyFilterFn ServerChannelData; /* 131 passthrough channels data */ + WINPR_ATTR_NODISCARD proxyFilterFn + DynamicChannelCreate; /* 132 passthrough drdynvc channel create data */ + WINPR_ATTR_NODISCARD proxyFilterFn ServerFetchTargetAddr; /* 133 */ + WINPR_ATTR_NODISCARD proxyFilterFn ServerPeerLogon; /* 134 */ + WINPR_ATTR_NODISCARD proxyFilterFn + ChannelCreate; /* 135 passthrough drdynvc channel create data */ + WINPR_ATTR_NODISCARD proxyFilterFn UnicodeEvent; /* 136 */ + WINPR_ATTR_NODISCARD proxyFilterFn MouseExEvent; /* 137 */ /* proxy dynamic channel filters: * * - a function that returns the list of channels to intercept * - a function to call with the data received */ - proxyFilterFn DynChannelToIntercept; /* 138 */ - proxyFilterFn DynChannelIntercept; /* 139 */ - proxyFilterFn StaticChannelToIntercept; /* 140 */ + WINPR_ATTR_NODISCARD proxyFilterFn DynChannelToIntercept; /* 138 */ + WINPR_ATTR_NODISCARD proxyFilterFn DynChannelIntercept; /* 139 */ + WINPR_ATTR_NODISCARD proxyFilterFn StaticChannelToIntercept; /* 140 */ UINT64 reserved5[160 - 141]; /* 141-159 */ /* Runtime data fields */ @@ -134,13 +136,16 @@ extern "C" struct proxy_plugins_manager { /* 0 used for registering a fresh new proxy plugin. */ - BOOL (*RegisterPlugin)(struct proxy_plugins_manager* mgr, const proxyPlugin* plugin); + WINPR_ATTR_NODISCARD BOOL (*RegisterPlugin)(struct proxy_plugins_manager* mgr, + const proxyPlugin* plugin); /* 1 used for setting plugin's per-session info. */ - BOOL (*SetPluginData)(struct proxy_plugins_manager* mgr, const char*, proxyData*, void*); + WINPR_ATTR_NODISCARD BOOL (*SetPluginData)(struct proxy_plugins_manager* mgr, const char*, + proxyData*, void*); /* 2 used for getting plugin's per-session info. */ - void* (*GetPluginData)(struct proxy_plugins_manager* mgr, const char*, proxyData*); + WINPR_ATTR_NODISCARD void* (*GetPluginData)(struct proxy_plugins_manager* mgr, const char*, + proxyData*); /* 3 used for aborting a session. */ void (*AbortConnect)(struct proxy_plugins_manager* mgr, proxyData*); @@ -148,7 +153,8 @@ extern "C" UINT64 reserved[128 - 4]; /* 4-127 reserved fields */ }; - typedef BOOL (*proxyModuleEntryPoint)(proxyPluginsManager* plugins_manager, void* userdata); + typedef WINPR_ATTR_NODISCARD BOOL (*proxyModuleEntryPoint)(proxyPluginsManager* plugins_manager, + void* userdata); /* filter events parameters */ #define WINPR_PACK_PUSH diff --git a/include/freerdp/server/rail.h b/include/freerdp/server/rail.h index 985baf3ed..3052058b7 100644 --- a/include/freerdp/server/rail.h +++ b/include/freerdp/server/rail.h @@ -101,42 +101,42 @@ extern "C" HANDLE vcm; void* custom; - psRailStart Start; + WINPR_ATTR_NODISCARD psRailStart Start; psRailStop Stop; /* Callbacks from client */ - psRailClientHandshake ClientHandshake; - psRailClientClientStatus ClientClientStatus; - psRailClientExec ClientExec; - psRailClientSysparam ClientSysparam; - psRailClientActivate ClientActivate; - psRailClientSysmenu ClientSysmenu; - psRailClientSyscommand ClientSyscommand; - psRailClientNotifyEvent ClientNotifyEvent; - psRailClientGetAppidReq ClientGetAppidReq; - psRailClientWindowMove ClientWindowMove; - psRailClientSnapArrange ClientSnapArrange; - psRailClientLangbarInfo ClientLangbarInfo; - psRailClientLanguageImeInfo ClientLanguageImeInfo; - psRailClientCompartmentInfo ClientCompartmentInfo; - psRailClientCloak ClientCloak; - psRailClientTextScale ClientTextScale; - psRailClientCaretBlinkRate ClientCaretBlinkRate; + WINPR_ATTR_NODISCARD psRailClientHandshake ClientHandshake; + WINPR_ATTR_NODISCARD psRailClientClientStatus ClientClientStatus; + WINPR_ATTR_NODISCARD psRailClientExec ClientExec; + WINPR_ATTR_NODISCARD psRailClientSysparam ClientSysparam; + WINPR_ATTR_NODISCARD psRailClientActivate ClientActivate; + WINPR_ATTR_NODISCARD psRailClientSysmenu ClientSysmenu; + WINPR_ATTR_NODISCARD psRailClientSyscommand ClientSyscommand; + WINPR_ATTR_NODISCARD psRailClientNotifyEvent ClientNotifyEvent; + WINPR_ATTR_NODISCARD psRailClientGetAppidReq ClientGetAppidReq; + WINPR_ATTR_NODISCARD psRailClientWindowMove ClientWindowMove; + WINPR_ATTR_NODISCARD psRailClientSnapArrange ClientSnapArrange; + WINPR_ATTR_NODISCARD psRailClientLangbarInfo ClientLangbarInfo; + WINPR_ATTR_NODISCARD psRailClientLanguageImeInfo ClientLanguageImeInfo; + WINPR_ATTR_NODISCARD psRailClientCompartmentInfo ClientCompartmentInfo; + WINPR_ATTR_NODISCARD psRailClientCloak ClientCloak; + WINPR_ATTR_NODISCARD psRailClientTextScale ClientTextScale; + WINPR_ATTR_NODISCARD psRailClientCaretBlinkRate ClientCaretBlinkRate; /* Methods for sending server side messages */ - psRailServerHandshake ServerHandshake; - psRailServerHandshakeEx ServerHandshakeEx; - psRailServerSysparam ServerSysparam; - psRailServerLocalMoveSize ServerLocalMoveSize; - psRailServerMinMaxInfo ServerMinMaxInfo; - psRailServerTaskbarInfo ServerTaskbarInfo; - psRailServerLangbarInfo ServerLangbarInfo; - psRailServerExecResult ServerExecResult; - psRailServerZOrderSync ServerZOrderSync; - psRailServerCloak ServerCloak; - psRailServerPowerDisplayRequest ServerPowerDisplayRequest; - psRailServerGetAppidResp ServerGetAppidResp; - psRailServerGetAppidRespEx ServerGetAppidRespEx; + WINPR_ATTR_NODISCARD psRailServerHandshake ServerHandshake; + WINPR_ATTR_NODISCARD psRailServerHandshakeEx ServerHandshakeEx; + WINPR_ATTR_NODISCARD psRailServerSysparam ServerSysparam; + WINPR_ATTR_NODISCARD psRailServerLocalMoveSize ServerLocalMoveSize; + WINPR_ATTR_NODISCARD psRailServerMinMaxInfo ServerMinMaxInfo; + WINPR_ATTR_NODISCARD psRailServerTaskbarInfo ServerTaskbarInfo; + WINPR_ATTR_NODISCARD psRailServerLangbarInfo ServerLangbarInfo; + WINPR_ATTR_NODISCARD psRailServerExecResult ServerExecResult; + WINPR_ATTR_NODISCARD psRailServerZOrderSync ServerZOrderSync; + WINPR_ATTR_NODISCARD psRailServerCloak ServerCloak; + WINPR_ATTR_NODISCARD psRailServerPowerDisplayRequest ServerPowerDisplayRequest; + WINPR_ATTR_NODISCARD psRailServerGetAppidResp ServerGetAppidResp; + WINPR_ATTR_NODISCARD psRailServerGetAppidRespEx ServerGetAppidRespEx; RailServerPrivate* priv; rdpContext* rdpcontext; diff --git a/include/freerdp/server/rdpdr.h b/include/freerdp/server/rdpdr.h index 4b564e079..f2c33a14b 100644 --- a/include/freerdp/server/rdpdr.h +++ b/include/freerdp/server/rdpdr.h @@ -72,40 +72,40 @@ typedef UINT (*psRdpdrStart)(RdpdrServerContext* context); typedef UINT (*psRdpdrStop)(RdpdrServerContext* context); typedef UINT (*psRdpdrCapablityPDU)(RdpdrServerContext* context, - const RDPDR_CAPABILITY_HEADER* header, size_t size, - const BYTE* data); + const RDPDR_CAPABILITY_HEADER* header, size_t size, + const BYTE* data); typedef UINT (*psRdpdrReceivePDU)(RdpdrServerContext* context, const RDPDR_HEADER* header, - UINT error); + UINT error); typedef UINT (*psRdpdrReceiveAnnounceResponse)(RdpdrServerContext* context, UINT16 VersionMajor, - UINT16 VersionMinor, UINT32 ClientId); + UINT16 VersionMinor, UINT32 ClientId); typedef UINT (*psRdpdrSendServerAnnounce)(RdpdrServerContext* context); typedef UINT (*psRdpdrReceiveDeviceAnnounce)(RdpdrServerContext* context, - const RdpdrDevice* device); + const RdpdrDevice* device); typedef UINT (*psRdpdrReceiveDeviceRemove)(RdpdrServerContext* context, UINT32 deviceId, - const RdpdrDevice* device); + const RdpdrDevice* device); typedef UINT (*psRdpdrReceiveClientNameRequest)(RdpdrServerContext* context, size_t ComputerNameLen, - const char* name); + const char* name); typedef UINT (*psRdpdrDriveCreateDirectory)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, const char* path); + UINT32 deviceId, const char* path); typedef UINT (*psRdpdrDriveDeleteDirectory)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, const char* path); + UINT32 deviceId, const char* path); typedef UINT (*psRdpdrDriveQueryDirectory)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, const char* path); + UINT32 deviceId, const char* path); typedef UINT (*psRdpdrDriveOpenFile)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, const char* path, UINT32 desiredAccess, - UINT32 createDisposition); + UINT32 deviceId, const char* path, UINT32 desiredAccess, + UINT32 createDisposition); typedef UINT (*psRdpdrDriveReadFile)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, UINT32 fileId, UINT32 length, UINT32 offset); + UINT32 deviceId, UINT32 fileId, UINT32 length, UINT32 offset); typedef UINT (*psRdpdrDriveWriteFile)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, UINT32 fileId, const char* buffer, - UINT32 length, UINT32 offset); + UINT32 deviceId, UINT32 fileId, const char* buffer, + UINT32 length, UINT32 offset); typedef UINT (*psRdpdrDriveCloseFile)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, UINT32 fileId); + UINT32 deviceId, UINT32 fileId); typedef UINT (*psRdpdrDriveDeleteFile)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, const char* path); + UINT32 deviceId, const char* path); typedef UINT (*psRdpdrDriveRenameFile)(RdpdrServerContext* context, void* callbackData, - UINT32 deviceId, const char* oldPath, const char* newPath); + UINT32 deviceId, const char* oldPath, const char* newPath); typedef void (*psRdpdrOnDriveCreateDirectoryComplete)(RdpdrServerContext* context, void* callbackData, UINT32 ioStatus); @@ -134,7 +134,7 @@ struct s_rdpdr_server_context { HANDLE vcm; - psRdpdrStart Start; + WINPR_ATTR_NODISCARD psRdpdrStart Start; psRdpdrStop Stop; RdpdrServerPrivate* priv; @@ -152,37 +152,40 @@ struct s_rdpdr_server_context UINT16 supported; /*** RDPDR message intercept callbacks */ - psRdpdrCapablityPDU ReceiveCaps; /**< Called for each received capability */ - psRdpdrCapablityPDU SendCaps; /**< Called for each capability to be sent */ - psRdpdrReceivePDU ReceivePDU; /**< Called after a RDPDR pdu was received and parsed */ - psRdpdrSendServerAnnounce - SendServerAnnounce; /**< Called before the server sends the announce message */ - psRdpdrReceiveAnnounceResponse - ReceiveAnnounceResponse; /**< Called after the client announce response is received */ - psRdpdrReceiveClientNameRequest - ReceiveClientNameRequest; /**< Called after a client name request is received */ - psRdpdrReceiveDeviceAnnounce - ReceiveDeviceAnnounce; /** < Called after a new device request was received but before the - device is added */ - psRdpdrReceiveDeviceRemove ReceiveDeviceRemove; /**< Called after a new device request was - received, but before it is removed */ + WINPR_ATTR_NODISCARD psRdpdrCapablityPDU + ReceiveCaps; /**< Called for each received capability */ + WINPR_ATTR_NODISCARD psRdpdrCapablityPDU SendCaps; /**< Called for each capability to be sent */ + WINPR_ATTR_NODISCARD psRdpdrReceivePDU + ReceivePDU; /**< Called after a RDPDR pdu was received and parsed */ + WINPR_ATTR_NODISCARD psRdpdrSendServerAnnounce + SendServerAnnounce; /**< Called before the server sends the announce message */ + WINPR_ATTR_NODISCARD psRdpdrReceiveAnnounceResponse + ReceiveAnnounceResponse; /**< Called after the client announce response is received */ + WINPR_ATTR_NODISCARD psRdpdrReceiveClientNameRequest + ReceiveClientNameRequest; /**< Called after a client name request is received */ + WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceAnnounce + ReceiveDeviceAnnounce; /** < Called after a new device request was received but before the + device is added */ + WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceRemove + ReceiveDeviceRemove; /**< Called after a new device request was + received, but before it is removed */ /*** Drive APIs called by the server. ***/ - psRdpdrDriveCreateDirectory DriveCreateDirectory; - psRdpdrDriveDeleteDirectory DriveDeleteDirectory; - psRdpdrDriveQueryDirectory DriveQueryDirectory; - psRdpdrDriveOpenFile DriveOpenFile; - psRdpdrDriveReadFile DriveReadFile; - psRdpdrDriveWriteFile DriveWriteFile; - psRdpdrDriveCloseFile DriveCloseFile; - psRdpdrDriveDeleteFile DriveDeleteFile; - psRdpdrDriveRenameFile DriveRenameFile; + WINPR_ATTR_NODISCARD psRdpdrDriveCreateDirectory DriveCreateDirectory; + WINPR_ATTR_NODISCARD psRdpdrDriveDeleteDirectory DriveDeleteDirectory; + WINPR_ATTR_NODISCARD psRdpdrDriveQueryDirectory DriveQueryDirectory; + WINPR_ATTR_NODISCARD psRdpdrDriveOpenFile DriveOpenFile; + WINPR_ATTR_NODISCARD psRdpdrDriveReadFile DriveReadFile; + WINPR_ATTR_NODISCARD psRdpdrDriveWriteFile DriveWriteFile; + WINPR_ATTR_NODISCARD psRdpdrDriveCloseFile DriveCloseFile; + WINPR_ATTR_NODISCARD psRdpdrDriveDeleteFile DriveDeleteFile; + WINPR_ATTR_NODISCARD psRdpdrDriveRenameFile DriveRenameFile; /*** Drive callbacks registered by the server. ***/ - psRdpdrOnDeviceCreate OnDriveCreate; /**< Called for devices of type \b RDPDR_DTYP_FILESYSTEM - after \b ReceiveDeviceAnnounce */ - psRdpdrOnDeviceDelete OnDriveDelete; /**< Called for devices of type \b RDPDR_DTYP_FILESYSTEM - after \b ReceiveDeviceRemove */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnDriveCreate; /**< Called for devices of type \b + RDPDR_DTYP_FILESYSTEM after \b ReceiveDeviceAnnounce */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnDriveDelete; /**< Called for devices of type \b + RDPDR_DTYP_FILESYSTEM after \b ReceiveDeviceRemove */ psRdpdrOnDriveCreateDirectoryComplete OnDriveCreateDirectoryComplete; psRdpdrOnDriveDeleteDirectoryComplete OnDriveDeleteDirectoryComplete; psRdpdrOnDriveQueryDirectoryComplete OnDriveQueryDirectoryComplete; @@ -194,28 +197,29 @@ struct s_rdpdr_server_context psRdpdrOnDriveRenameFileComplete OnDriveRenameFileComplete; /*** Serial Port callbacks registered by the server. ***/ - psRdpdrOnDeviceCreate OnSerialPortCreate; /**< Called for devices of type \b RDPDR_DTYP_SERIAL - after \b ReceiveDeviceAnnounce */ - psRdpdrOnDeviceDelete OnSerialPortDelete; /**< Called for devices of type \b RDPDR_DTYP_SERIAL - after \b ReceiveDeviceRemove */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnSerialPortCreate; /**< Called for devices of type + \b RDPDR_DTYP_SERIAL after \b ReceiveDeviceAnnounce */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnSerialPortDelete; /**< Called for devices of type + \b RDPDR_DTYP_SERIAL after \b ReceiveDeviceRemove */ /*** Parallel Port callbacks registered by the server. ***/ - psRdpdrOnDeviceCreate OnParallelPortCreate; /**< Called for devices of type \b - RDPDR_DTYP_PARALLEL after \b ReceiveDeviceAnnounce */ - psRdpdrOnDeviceDelete OnParallelPortDelete; /**< Called for devices of type \b - RDPDR_DTYP_PARALLEL after \b ReceiveDeviceRemove */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnParallelPortCreate; /**< Called for devices of type + \b RDPDR_DTYP_PARALLEL after \b ReceiveDeviceAnnounce */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnParallelPortDelete; /**< Called for devices of type + \b RDPDR_DTYP_PARALLEL after \b ReceiveDeviceRemove */ /*** Printer callbacks registered by the server. ***/ - psRdpdrOnDeviceCreate OnPrinterCreate; /**< Called for devices of type RDPDR_DTYP_PRINT after \b - ReceiveDeviceAnnounce */ - psRdpdrOnDeviceDelete OnPrinterDelete; /**< Called for devices of type RDPDR_DTYP_PRINT after \b - ReceiveDeviceRemove */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnPrinterCreate; /**< Called for devices of type + RDPDR_DTYP_PRINT after \b ReceiveDeviceAnnounce */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnPrinterDelete; /**< Called for devices of type + RDPDR_DTYP_PRINT after \b ReceiveDeviceRemove */ /*** Smartcard callbacks registered by the server. ***/ - psRdpdrOnDeviceCreate OnSmartcardCreate; /**< Called for devices of type RDPDR_DTYP_SMARTCARD - after \b ReceiveDeviceAnnounce */ - psRdpdrOnDeviceDelete OnSmartcardDelete; /**< Called for devices of type RDPDR_DTYP_SMARTCARD - after \b ReceiveDeviceRemove */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate + OnSmartcardCreate; /**< Called for devices of type RDPDR_DTYP_SMARTCARD + after \b ReceiveDeviceAnnounce */ + WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnSmartcardDelete; /**< Called for devices of type + RDPDR_DTYP_SMARTCARD after \b ReceiveDeviceRemove */ rdpContext* rdpcontext; }; diff --git a/include/freerdp/server/rdpecam-enumerator.h b/include/freerdp/server/rdpecam-enumerator.h index ca93ae5cb..c6ee76cfc 100644 --- a/include/freerdp/server/rdpecam-enumerator.h +++ b/include/freerdp/server/rdpecam-enumerator.h @@ -70,57 +70,59 @@ extern "C" * * Defaults to externalThread=FALSE */ - psCamDevEnumServerServerInitialize Initialize; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerInitialize Initialize; /** * Open the camera device enumerator channel. */ - psCamDevEnumServerServerOpen Open; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerOpen Open; /** * Close the camera device enumerator channel. */ - psCamDevEnumServerServerClose Close; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerClose Close; /** * Poll * When externalThread=TRUE, call Poll() periodically from your main loop. * If externalThread=FALSE do not call. */ - psCamDevEnumServerServerPoll Poll; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerPoll Poll; /** * Retrieve the channel handle for use in conjunction with Poll(). * If externalThread=FALSE do not call. */ - psCamDevEnumServerServerChannelHandle ChannelHandle; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerChannelHandle ChannelHandle; /* * Send a Select Version Response PDU. */ - psCamDevEnumServerServerSelectVersionResponse SelectVersionResponse; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerSelectVersionResponse SelectVersionResponse; /*** Callbacks registered by the server. ***/ /** * Callback, when the channel got its id assigned. */ - psCamDevEnumServerServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerChannelIdAssigned ChannelIdAssigned; /** * Callback for the Select Version Request PDU. */ - psCamDevEnumServerServerSelectVersionRequest SelectVersionRequest; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerSelectVersionRequest SelectVersionRequest; /** * Callback for the Device Added Notification PDU. */ - psCamDevEnumServerServerDeviceAddedNotification DeviceAddedNotification; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerDeviceAddedNotification + DeviceAddedNotification; /** * Callback for the Device Removed Notification PDU. */ - psCamDevEnumServerServerDeviceRemovedNotification DeviceRemovedNotification; + WINPR_ATTR_NODISCARD psCamDevEnumServerServerDeviceRemovedNotification + DeviceRemovedNotification; rdpContext* rdpcontext; }; diff --git a/include/freerdp/server/rdpecam.h b/include/freerdp/server/rdpecam.h index e409b0d13..762afe490 100644 --- a/include/freerdp/server/rdpecam.h +++ b/include/freerdp/server/rdpecam.h @@ -132,30 +132,30 @@ extern "C" * * Defaults to externalThread=FALSE */ - psCameraDeviceServerInitialize Initialize; + WINPR_ATTR_NODISCARD psCameraDeviceServerInitialize Initialize; /** * Open the camera device channel. */ - psCameraDeviceServerOpen Open; + WINPR_ATTR_NODISCARD psCameraDeviceServerOpen Open; /** * Close the camera device channel. */ - psCameraDeviceServerClose Close; + WINPR_ATTR_NODISCARD psCameraDeviceServerClose Close; /** * Poll * When externalThread=TRUE, call Poll() periodically from your main loop. * If externalThread=FALSE do not call. */ - psCameraDeviceServerPoll Poll; + WINPR_ATTR_NODISCARD psCameraDeviceServerPoll Poll; /** * Retrieve the channel handle for use in conjunction with Poll(). * If externalThread=FALSE do not call. */ - psCameraDeviceServerChannelHandle ChannelHandle; + WINPR_ATTR_NODISCARD psCameraDeviceServerChannelHandle ChannelHandle; /** * For the following server to client PDUs, @@ -165,109 +165,109 @@ extern "C" /** * Send a Activate Device Request PDU. */ - psCameraDeviceServerActivateDeviceRequest ActivateDeviceRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerActivateDeviceRequest ActivateDeviceRequest; /** * Send a Deactivate Device Request PDU. */ - psCameraDeviceServerDeactivateDeviceRequest DeactivateDeviceRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerDeactivateDeviceRequest DeactivateDeviceRequest; /** * Send a Stream List Request PDU. */ - psCameraDeviceServerStreamListRequest StreamListRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerStreamListRequest StreamListRequest; /** * Send a Media Type List Request PDU. */ - psCameraDeviceServerMediaTypeListRequest MediaTypeListRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerMediaTypeListRequest MediaTypeListRequest; /** * Send a Current Media Type Request PDU. */ - psCameraDeviceServerCurrentMediaTypeRequest CurrentMediaTypeRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerCurrentMediaTypeRequest CurrentMediaTypeRequest; /** * Send a Start Streams Request PDU. */ - psCameraDeviceServerStartStreamsRequest StartStreamsRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerStartStreamsRequest StartStreamsRequest; /** * Send a Stop Streams Request PDU. */ - psCameraDeviceServerStopStreamsRequest StopStreamsRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerStopStreamsRequest StopStreamsRequest; /** * Send a Sample Request PDU. */ - psCameraDeviceServerSampleRequest SampleRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerSampleRequest SampleRequest; /** * Send a Property List Request PDU. */ - psCameraDeviceServerPropertyListRequest PropertyListRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerPropertyListRequest PropertyListRequest; /** * Send a Property Value Request PDU. */ - psCameraDeviceServerPropertyValueRequest PropertyValueRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerPropertyValueRequest PropertyValueRequest; /** * Send a Set Property Value Request PDU. */ - psCameraDeviceServerSetPropertyValueRequest SetPropertyValueRequest; + WINPR_ATTR_NODISCARD psCameraDeviceServerSetPropertyValueRequest SetPropertyValueRequest; /*** Callbacks registered by the server. ***/ /** * Callback, when the channel got its id assigned. */ - psCameraDeviceServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psCameraDeviceServerChannelIdAssigned ChannelIdAssigned; /** * Callback for the Success Response PDU. */ - psCameraDeviceServerSuccessResponse SuccessResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerSuccessResponse SuccessResponse; /** * Callback for the Error Response PDU. */ - psCameraDeviceServerErrorResponse ErrorResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerErrorResponse ErrorResponse; /** * Callback for the Stream List Response PDU. */ - psCameraDeviceServerStreamListResponse StreamListResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerStreamListResponse StreamListResponse; /** * Callback for the Media Type List Response PDU. */ - psCameraDeviceServerMediaTypeListResponse MediaTypeListResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerMediaTypeListResponse MediaTypeListResponse; /** * Callback for the Current Media Type Response PDU. */ - psCameraDeviceServerCurrentMediaTypeResponse CurrentMediaTypeResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerCurrentMediaTypeResponse CurrentMediaTypeResponse; /** * Callback for the Sample Response PDU. */ - psCameraDeviceServerSampleResponse SampleResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerSampleResponse SampleResponse; /** * Callback for the Sample Error Response PDU. */ - psCameraDeviceServerSampleErrorResponse SampleErrorResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerSampleErrorResponse SampleErrorResponse; /** * Callback for the Property List Response PDU. */ - psCameraDeviceServerPropertyListResponse PropertyListResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerPropertyListResponse PropertyListResponse; /** * Callback for the Property Value Response PDU. */ - psCameraDeviceServerPropertyValueResponse PropertyValueResponse; + WINPR_ATTR_NODISCARD psCameraDeviceServerPropertyValueResponse PropertyValueResponse; rdpContext* rdpcontext; }; diff --git a/include/freerdp/server/rdpei.h b/include/freerdp/server/rdpei.h index 74f448f01..214c4e0c8 100644 --- a/include/freerdp/server/rdpei.h +++ b/include/freerdp/server/rdpei.h @@ -48,17 +48,20 @@ extern "C" UINT32 protocolFlags; /** callbacks that can be set by the user */ - UINT (*onClientReady)(RdpeiServerContext* context); - UINT (*onTouchEvent)(RdpeiServerContext* context, const RDPINPUT_TOUCH_EVENT* touchEvent); - UINT (*onPenEvent)(RdpeiServerContext* context, const RDPINPUT_PEN_EVENT* penEvent); - UINT (*onTouchReleased)(RdpeiServerContext* context, BYTE contactId); + WINPR_ATTR_NODISCARD UINT (*onClientReady)(RdpeiServerContext* context); + WINPR_ATTR_NODISCARD UINT (*onTouchEvent)(RdpeiServerContext* context, + const RDPINPUT_TOUCH_EVENT* touchEvent); + WINPR_ATTR_NODISCARD UINT (*onPenEvent)(RdpeiServerContext* context, + const RDPINPUT_PEN_EVENT* penEvent); + WINPR_ATTR_NODISCARD UINT (*onTouchReleased)(RdpeiServerContext* context, BYTE contactId); void* user_data; /* user data, useful for callbacks */ /** * Callback, when the channel got its id assigned. */ - BOOL (*onChannelIdAssigned)(RdpeiServerContext* context, UINT32 channelId); + WINPR_ATTR_NODISCARD BOOL (*onChannelIdAssigned)(RdpeiServerContext* context, + UINT32 channelId); /*** APIs called by the server. ***/ @@ -66,13 +69,13 @@ extern "C" * Open the input channel. * @since version 3.15.0 */ - psRdpeiServerOpen Open; + WINPR_ATTR_NODISCARD psRdpeiServerOpen Open; /** * Close the input channel. * @since version 3.15.0 */ - psRdpeiServerClose Close; + WINPR_ATTR_NODISCARD psRdpeiServerClose Close; }; FREERDP_API void rdpei_server_context_free(RdpeiServerContext* context); diff --git a/include/freerdp/server/rdpemsc.h b/include/freerdp/server/rdpemsc.h index f9947ba53..50a560748 100644 --- a/include/freerdp/server/rdpemsc.h +++ b/include/freerdp/server/rdpemsc.h @@ -68,54 +68,54 @@ extern "C" * * Defaults to externalThread=FALSE */ - psMouseCursorServerInitialize Initialize; + WINPR_ATTR_NODISCARD psMouseCursorServerInitialize Initialize; /** * Open the mouse cursor channel. */ - psMouseCursorServerOpen Open; + WINPR_ATTR_NODISCARD psMouseCursorServerOpen Open; /** * Close the mouse cursor channel. */ - psMouseCursorServerClose Close; + WINPR_ATTR_NODISCARD psMouseCursorServerClose Close; /** * Poll * When externalThread=TRUE, call Poll() periodically from your main loop. * If externalThread=FALSE do not call. */ - psMouseCursorServerPoll Poll; + WINPR_ATTR_NODISCARD psMouseCursorServerPoll Poll; /** * Retrieve the channel handle for use in conjunction with Poll(). * If externalThread=FALSE do not call. */ - psMouseCursorServerChannelHandle ChannelHandle; + WINPR_ATTR_NODISCARD psMouseCursorServerChannelHandle ChannelHandle; /* All PDUs sent by the server don't require the pduType to be set */ /* * Send a CapsConfirm PDU. */ - psMouseCursorServerCapsConfirm CapsConfirm; + WINPR_ATTR_NODISCARD psMouseCursorServerCapsConfirm CapsConfirm; /* * Send a MouseptrUpdate PDU. */ - psMouseCursorServerMouseptrUpdate MouseptrUpdate; + WINPR_ATTR_NODISCARD psMouseCursorServerMouseptrUpdate MouseptrUpdate; /*** Callbacks registered by the server. ***/ /** * Callback, when the channel got its id assigned. */ - psMouseCursorServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psMouseCursorServerChannelIdAssigned ChannelIdAssigned; /** * Callback for the CapsAdvertise PDU. */ - psMouseCursorServerCapsAdvertise CapsAdvertise; + WINPR_ATTR_NODISCARD psMouseCursorServerCapsAdvertise CapsAdvertise; rdpContext* rdpcontext; }; diff --git a/include/freerdp/server/rdpgfx.h b/include/freerdp/server/rdpgfx.h index 933853dc3..a8e6c4665 100644 --- a/include/freerdp/server/rdpgfx.h +++ b/include/freerdp/server/rdpgfx.h @@ -95,32 +95,32 @@ extern "C" HANDLE vcm; void* custom; - psRdpgfxServerOpen Open; - psRdpgfxServerClose Close; + WINPR_ATTR_NODISCARD psRdpgfxServerOpen Open; + WINPR_ATTR_NODISCARD psRdpgfxServerClose Close; - psRdpgfxResetGraphics ResetGraphics; - psRdpgfxStartFrame StartFrame; - psRdpgfxEndFrame EndFrame; - psRdpgfxSurfaceCommand SurfaceCommand; - psRdpgfxSurfaceFrameCommand SurfaceFrameCommand; - psRdpgfxDeleteEncodingContext DeleteEncodingContext; - psRdpgfxCreateSurface CreateSurface; - psRdpgfxDeleteSurface DeleteSurface; - psRdpgfxSolidFill SolidFill; - psRdpgfxSurfaceToSurface SurfaceToSurface; - psRdpgfxSurfaceToCache SurfaceToCache; - psRdpgfxCacheToSurface CacheToSurface; - psRdpgfxCacheImportOffer CacheImportOffer; - psRdpgfxCacheImportReply CacheImportReply; - psRdpgfxEvictCacheEntry EvictCacheEntry; - psRdpgfxMapSurfaceToOutput MapSurfaceToOutput; - psRdpgfxMapSurfaceToWindow MapSurfaceToWindow; - psRdpgfxMapSurfaceToScaledOutput MapSurfaceToScaledOutput; - psRdpgfxMapSurfaceToScaledWindow MapSurfaceToScaledWindow; - psRdpgfxCapsAdvertise CapsAdvertise; - psRdpgfxCapsConfirm CapsConfirm; - psRdpgfxFrameAcknowledge FrameAcknowledge; - psRdpgfxQoeFrameAcknowledge QoeFrameAcknowledge; + WINPR_ATTR_NODISCARD psRdpgfxResetGraphics ResetGraphics; + WINPR_ATTR_NODISCARD psRdpgfxStartFrame StartFrame; + WINPR_ATTR_NODISCARD psRdpgfxEndFrame EndFrame; + WINPR_ATTR_NODISCARD psRdpgfxSurfaceCommand SurfaceCommand; + WINPR_ATTR_NODISCARD psRdpgfxSurfaceFrameCommand SurfaceFrameCommand; + WINPR_ATTR_NODISCARD psRdpgfxDeleteEncodingContext DeleteEncodingContext; + WINPR_ATTR_NODISCARD psRdpgfxCreateSurface CreateSurface; + WINPR_ATTR_NODISCARD psRdpgfxDeleteSurface DeleteSurface; + WINPR_ATTR_NODISCARD psRdpgfxSolidFill SolidFill; + WINPR_ATTR_NODISCARD psRdpgfxSurfaceToSurface SurfaceToSurface; + WINPR_ATTR_NODISCARD psRdpgfxSurfaceToCache SurfaceToCache; + WINPR_ATTR_NODISCARD psRdpgfxCacheToSurface CacheToSurface; + WINPR_ATTR_NODISCARD psRdpgfxCacheImportOffer CacheImportOffer; + WINPR_ATTR_NODISCARD psRdpgfxCacheImportReply CacheImportReply; + WINPR_ATTR_NODISCARD psRdpgfxEvictCacheEntry EvictCacheEntry; + WINPR_ATTR_NODISCARD psRdpgfxMapSurfaceToOutput MapSurfaceToOutput; + WINPR_ATTR_NODISCARD psRdpgfxMapSurfaceToWindow MapSurfaceToWindow; + WINPR_ATTR_NODISCARD psRdpgfxMapSurfaceToScaledOutput MapSurfaceToScaledOutput; + WINPR_ATTR_NODISCARD psRdpgfxMapSurfaceToScaledWindow MapSurfaceToScaledWindow; + WINPR_ATTR_NODISCARD psRdpgfxCapsAdvertise CapsAdvertise; + WINPR_ATTR_NODISCARD psRdpgfxCapsConfirm CapsConfirm; + WINPR_ATTR_NODISCARD psRdpgfxFrameAcknowledge FrameAcknowledge; + WINPR_ATTR_NODISCARD psRdpgfxQoeFrameAcknowledge QoeFrameAcknowledge; RdpgfxServerPrivate* priv; rdpContext* rdpcontext; @@ -128,7 +128,7 @@ extern "C" /** * Callback, when the channel got its id assigned. */ - psRdpgfxServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psRdpgfxServerChannelIdAssigned ChannelIdAssigned; /** * Optional: Set thread handling. * When externalThread=TRUE, the application is responsible to call @@ -136,7 +136,7 @@ extern "C" * * Defaults to externalThread=FALSE */ - psRdpgfxServerInitialize Initialize; + WINPR_ATTR_NODISCARD psRdpgfxServerInitialize Initialize; }; FREERDP_API void rdpgfx_server_context_free(RdpgfxServerContext* context); diff --git a/include/freerdp/server/rdpsnd.h b/include/freerdp/server/rdpsnd.h index 627e157f3..fdac4c87b 100644 --- a/include/freerdp/server/rdpsnd.h +++ b/include/freerdp/server/rdpsnd.h @@ -64,7 +64,7 @@ extern "C" { HANDLE vcm; - psRdpsndStart Start; + WINPR_ATTR_NODISCARD psRdpsndStart Start; psRdpsndStop Stop; RdpsndServerPrivate* priv; @@ -99,27 +99,27 @@ extern "C" * whether the initialization succeed. If not, the "Activated" callback * will not be called and the server must not call any API on this context. */ - psRdpsndServerInitialize Initialize; + WINPR_ATTR_NODISCARD psRdpsndServerInitialize Initialize; /** * Choose the audio format to be sent. The index argument is an index into * the client_formats array and must be smaller than num_client_formats. */ - psRdpsndServerSelectFormat SelectFormat; + WINPR_ATTR_NODISCARD psRdpsndServerSelectFormat SelectFormat; /** * Send audio samples. Actually bytes in the buffer must be: * nframes * src_format.nBitsPerSample * src_format.nChannels / 8 */ - psRdpsndServerSendSamples SendSamples; + WINPR_ATTR_NODISCARD psRdpsndServerSendSamples SendSamples; /** * Called when block confirm is received from the client */ - psRdpsndServerConfirmBlock ConfirmBlock; + WINPR_ATTR_NODISCARD psRdpsndServerConfirmBlock ConfirmBlock; /** * Set the volume level of the client. Valid range is between 0 and 0xFFFF. */ - psRdpsndServerSetVolume SetVolume; + WINPR_ATTR_NODISCARD psRdpsndServerSetVolume SetVolume; /** * Close the audio stream. */ @@ -155,28 +155,28 @@ extern "C" * opening the channel. * Also used to restart the protocol after sending the Close PDU. */ - psRdpsndServerSendFormats SendFormats; + WINPR_ATTR_NODISCARD psRdpsndServerSendFormats SendFormats; /** * Send Training PDU. */ - psRdpsndServerTraining Training; + WINPR_ATTR_NODISCARD psRdpsndServerTraining Training; /** * Send encoded audio samples using a Wave2 PDU. * When successful, the block_no member is incremented. */ - psRdpsndServerSendSamples2 SendSamples2; + WINPR_ATTR_NODISCARD psRdpsndServerSendSamples2 SendSamples2; /** * Called when a TrainingConfirm PDU is received from the client. */ - psRdpsndServerTrainingConfirm TrainingConfirm; + WINPR_ATTR_NODISCARD psRdpsndServerTrainingConfirm TrainingConfirm; /** * Callback, when the channel got its id assigned. * Only called, when use_dynamic_virtual_channel=TRUE. */ - psRdpsndChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psRdpsndChannelIdAssigned ChannelIdAssigned; UINT16 udpPort; /** @since version 3.14.0 */ UINT8 lastblock; /** @since version 3.14.0 */ diff --git a/include/freerdp/server/remdesk.h b/include/freerdp/server/remdesk.h index f4baa1f02..2e5e04727 100644 --- a/include/freerdp/server/remdesk.h +++ b/include/freerdp/server/remdesk.h @@ -48,7 +48,7 @@ extern "C" HANDLE vcm; void* custom; - psRemdeskStart Start; + WINPR_ATTR_NODISCARD psRemdeskStart Start; psRemdeskStop Stop; RemdeskServerPrivate* priv; diff --git a/include/freerdp/server/shadow.h b/include/freerdp/server/shadow.h index 7d71edee8..3cbd582d0 100644 --- a/include/freerdp/server/shadow.h +++ b/include/freerdp/server/shadow.h @@ -200,16 +200,16 @@ extern "C" struct S_RDP_SHADOW_ENTRY_POINTS { - pfnShadowSubsystemNew New; + WINPR_ATTR_NODISCARD pfnShadowSubsystemNew New; pfnShadowSubsystemFree Free; - pfnShadowSubsystemInit Init; + WINPR_ATTR_NODISCARD pfnShadowSubsystemInit Init; pfnShadowSubsystemUninit Uninit; - pfnShadowSubsystemStart Start; + WINPR_ATTR_NODISCARD pfnShadowSubsystemStart Start; pfnShadowSubsystemStop Stop; - pfnShadowEnumMonitors EnumMonitors; + WINPR_ATTR_NODISCARD pfnShadowEnumMonitors EnumMonitors; }; struct rdp_shadow_subsystem @@ -236,21 +236,21 @@ extern "C" AUDIO_FORMAT* audinFormats; size_t nAudinFormats; - pfnShadowSynchronizeEvent SynchronizeEvent; - pfnShadowKeyboardEvent KeyboardEvent; - pfnShadowUnicodeKeyboardEvent UnicodeKeyboardEvent; - pfnShadowMouseEvent MouseEvent; - pfnShadowExtendedMouseEvent ExtendedMouseEvent; - pfnShadowChannelAudinServerReceiveSamples AudinServerReceiveSamples; + WINPR_ATTR_NODISCARD pfnShadowSynchronizeEvent SynchronizeEvent; + WINPR_ATTR_NODISCARD pfnShadowKeyboardEvent KeyboardEvent; + WINPR_ATTR_NODISCARD pfnShadowUnicodeKeyboardEvent UnicodeKeyboardEvent; + WINPR_ATTR_NODISCARD pfnShadowMouseEvent MouseEvent; + WINPR_ATTR_NODISCARD pfnShadowExtendedMouseEvent ExtendedMouseEvent; + WINPR_ATTR_NODISCARD pfnShadowChannelAudinServerReceiveSamples AudinServerReceiveSamples; - pfnShadowAuthenticate Authenticate; - pfnShadowClientConnect ClientConnect; + WINPR_ATTR_NODISCARD pfnShadowAuthenticate Authenticate; + WINPR_ATTR_NODISCARD pfnShadowClientConnect ClientConnect; pfnShadowClientDisconnect ClientDisconnect; - pfnShadowClientCapabilities ClientCapabilities; + WINPR_ATTR_NODISCARD pfnShadowClientCapabilities ClientCapabilities; rdpShadowServer* server; - pfnShadowRelMouseEvent RelMouseEvent; /** @since version 3.15.0 */ + WINPR_ATTR_NODISCARD pfnShadowRelMouseEvent RelMouseEvent; /** @since version 3.15.0 */ }; /* Definition of message between subsystem and clients */ diff --git a/include/freerdp/server/telemetry.h b/include/freerdp/server/telemetry.h index d61642587..a36cf4c23 100644 --- a/include/freerdp/server/telemetry.h +++ b/include/freerdp/server/telemetry.h @@ -60,41 +60,41 @@ extern "C" * * Defaults to externalThread=FALSE */ - psTelemetryServerInitialize Initialize; + WINPR_ATTR_NODISCARD psTelemetryServerInitialize Initialize; /** * Open the telemetry channel. */ - psTelemetryServerOpen Open; + WINPR_ATTR_NODISCARD psTelemetryServerOpen Open; /** * Close the telemetry channel. */ - psTelemetryServerClose Close; + WINPR_ATTR_NODISCARD psTelemetryServerClose Close; /** * Poll * When externalThread=TRUE, call Poll() periodically from your main loop. * If externalThread=FALSE do not call. */ - psTelemetryServerPoll Poll; + WINPR_ATTR_NODISCARD psTelemetryServerPoll Poll; /** * Retrieve the channel handle for use in conjunction with Poll(). * If externalThread=FALSE do not call. */ - psTelemetryServerChannelHandle ChannelHandle; + WINPR_ATTR_NODISCARD psTelemetryServerChannelHandle ChannelHandle; /*** Callbacks registered by the server. ***/ /** * Callback, when the channel got its id assigned */ - psTelemetryServerChannelIdAssigned ChannelIdAssigned; + WINPR_ATTR_NODISCARD psTelemetryServerChannelIdAssigned ChannelIdAssigned; /** * Callback for the RDP Telemetry PDU. */ - psTelemetryServerRdpTelemetry RdpTelemetry; + WINPR_ATTR_NODISCARD psTelemetryServerRdpTelemetry RdpTelemetry; rdpContext* rdpcontext; }; diff --git a/include/freerdp/svc.h b/include/freerdp/svc.h index fa62462b5..8adaa6ace 100644 --- a/include/freerdp/svc.h +++ b/include/freerdp/svc.h @@ -43,10 +43,10 @@ extern "C" { UINT32 cbSize; UINT32 protocolVersion; - PVIRTUALCHANNELINIT pVirtualChannelInit; - PVIRTUALCHANNELOPEN pVirtualChannelOpen; - PVIRTUALCHANNELCLOSE pVirtualChannelClose; - PVIRTUALCHANNELWRITE pVirtualChannelWrite; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELINIT pVirtualChannelInit; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELOPEN pVirtualChannelOpen; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELCLOSE pVirtualChannelClose; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELWRITE pVirtualChannelWrite; /* Extended Fields */ UINT32 MagicNumber; /* identifies FreeRDP */ @@ -60,10 +60,10 @@ extern "C" { UINT32 cbSize; UINT32 protocolVersion; - PVIRTUALCHANNELINITEX pVirtualChannelInitEx; - PVIRTUALCHANNELOPENEX pVirtualChannelOpenEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELINITEX pVirtualChannelInitEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELOPENEX pVirtualChannelOpenEx; PVIRTUALCHANNELCLOSEEX pVirtualChannelCloseEx; - PVIRTUALCHANNELWRITEEX pVirtualChannelWriteEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELWRITEEX pVirtualChannelWriteEx; /* Extended Fields */ UINT32 MagicNumber; /* identifies FreeRDP */ diff --git a/include/freerdp/transport_io.h b/include/freerdp/transport_io.h index 6b2499c6c..a81a046dd 100644 --- a/include/freerdp/transport_io.h +++ b/include/freerdp/transport_io.h @@ -68,11 +68,11 @@ extern "C" typedef struct { ALIGN64 void* userContext; - ALIGN64 pTransportLayerRead Read; - ALIGN64 pTransportLayerWrite Write; + ALIGN64 WINPR_ATTR_NODISCARD pTransportLayerRead Read; + ALIGN64 WINPR_ATTR_NODISCARD pTransportLayerWrite Write; ALIGN64 pTransportLayerFkt Close; - ALIGN64 pTransportLayerWait Wait; - ALIGN64 pTransportLayerGetEvent GetEvent; + ALIGN64 WINPR_ATTR_NODISCARD pTransportLayerWait Wait; + ALIGN64 WINPR_ATTR_NODISCARD pTransportLayerGetEvent GetEvent; UINT64 reserved[64 - 6]; /* Reserve some space for ABI compatibility */ } rdpTransportLayer; @@ -110,18 +110,18 @@ extern "C" struct rdp_transport_io { - pTCPConnect TCPConnect; - pTransportFkt TLSConnect; - pTransportFkt TLSAccept; - pTransportAttach TransportAttach; - pTransportFkt TransportDisconnect; - pTransportRWFkt ReadPdu; /* Reads a whole PDU from the transport */ - pTransportRWFkt WritePdu; /* Writes a whole PDU to the transport */ - pTransportRead ReadBytes; /* Reads up to a requested amount of bytes */ - pTransportGetPublicKey GetPublicKey; /** @since version 3.2.0 */ - pTransportSetBlockingMode SetBlockingMode; /** @since version 3.3.0 */ - pTransportConnectLayer ConnectLayer; /** @since 3.9.0 */ - pTransportAttachLayer AttachLayer; /** @since 3.9.0 */ + WINPR_ATTR_NODISCARD pTCPConnect TCPConnect; + WINPR_ATTR_NODISCARD pTransportFkt TLSConnect; + WINPR_ATTR_NODISCARD pTransportFkt TLSAccept; + WINPR_ATTR_NODISCARD pTransportAttach TransportAttach; + WINPR_ATTR_NODISCARD pTransportFkt TransportDisconnect; + WINPR_ATTR_NODISCARD pTransportRWFkt ReadPdu; /* Reads a whole PDU from the transport */ + WINPR_ATTR_NODISCARD pTransportRWFkt WritePdu; /* Writes a whole PDU to the transport */ + WINPR_ATTR_NODISCARD pTransportRead ReadBytes; /* Reads up to a requested amount of bytes */ + WINPR_ATTR_NODISCARD pTransportGetPublicKey GetPublicKey; /** @since version 3.2.0 */ + WINPR_ATTR_NODISCARD pTransportSetBlockingMode SetBlockingMode; /** @since version 3.3.0 */ + WINPR_ATTR_NODISCARD pTransportConnectLayer ConnectLayer; /** @since 3.9.0 */ + WINPR_ATTR_NODISCARD pTransportAttachLayer AttachLayer; /** @since 3.9.0 */ UINT64 reserved[64 - 12]; /* Reserve some space for ABI compatibility */ }; typedef struct rdp_transport_io rdpTransportIo; diff --git a/include/freerdp/update.h b/include/freerdp/update.h index abfe64018..86e14d79d 100644 --- a/include/freerdp/update.h +++ b/include/freerdp/update.h @@ -202,16 +202,16 @@ extern "C" rdpContext* context; /* 0 */ UINT32 paddingA[16 - 1]; /* 1 */ - pBeginPaint BeginPaint; /* 16 */ - pEndPaint EndPaint; /* 17 */ - pSetBounds SetBounds; /* 18 */ - pSynchronize Synchronize; /* 19 */ - pDesktopResize DesktopResize; /* 20 */ - pBitmapUpdate BitmapUpdate; /* 21 */ - pPalette Palette; /* 22 */ - pPlaySound PlaySound; /* 23 */ - pSetKeyboardIndicators SetKeyboardIndicators; /* 24 */ - pSetKeyboardImeStatus SetKeyboardImeStatus; /* 25 */ + WINPR_ATTR_NODISCARD pBeginPaint BeginPaint; /* 16 */ + WINPR_ATTR_NODISCARD pEndPaint EndPaint; /* 17 */ + WINPR_ATTR_NODISCARD pSetBounds SetBounds; /* 18 */ + WINPR_ATTR_NODISCARD pSynchronize Synchronize; /* 19 */ + WINPR_ATTR_NODISCARD pDesktopResize DesktopResize; /* 20 */ + WINPR_ATTR_NODISCARD pBitmapUpdate BitmapUpdate; /* 21 */ + WINPR_ATTR_NODISCARD pPalette Palette; /* 22 */ + WINPR_ATTR_NODISCARD pPlaySound PlaySound; /* 23 */ + WINPR_ATTR_NODISCARD pSetKeyboardIndicators SetKeyboardIndicators; /* 24 */ + WINPR_ATTR_NODISCARD pSetKeyboardImeStatus SetKeyboardImeStatus; /* 25 */ UINT32 paddingB[32 - 26]; /* 26 */ rdpPointerUpdate* pointer; /* 32 */ @@ -226,13 +226,13 @@ extern "C" pRemoteMonitors RemoteMonitors; /* 50 */ UINT32 paddingD[64 - 51]; /* 51 */ - pSurfaceCommand SurfaceCommand; /* 64 */ - pSurfaceBits SurfaceBits; /* 65 */ - pSurfaceFrameMarker SurfaceFrameMarker; /* 66 */ - pSurfaceFrameBits SurfaceFrameBits; /* 67 */ - pSurfaceFrameAcknowledge SurfaceFrameAcknowledge; /* 68 */ - pSaveSessionInfo SaveSessionInfo; /* 69 */ - pServerStatusInfo ServerStatusInfo; /* 70 */ + WINPR_ATTR_NODISCARD pSurfaceCommand SurfaceCommand; /* 64 */ + WINPR_ATTR_NODISCARD pSurfaceBits SurfaceBits; /* 65 */ + WINPR_ATTR_NODISCARD pSurfaceFrameMarker SurfaceFrameMarker; /* 66 */ + WINPR_ATTR_NODISCARD pSurfaceFrameBits SurfaceFrameBits; /* 67 */ + WINPR_ATTR_NODISCARD pSurfaceFrameAcknowledge SurfaceFrameAcknowledge; /* 68 */ + WINPR_ATTR_NODISCARD pSaveSessionInfo SaveSessionInfo; /* 69 */ + WINPR_ATTR_NODISCARD pServerStatusInfo ServerStatusInfo; /* 70 */ /* if autoCalculateBitmapData is set to TRUE, the server automatically * fills BITMAP_DATA struct members: flags, cbCompMainBodySize and cbCompFirstRowSize. */ diff --git a/include/freerdp/window.h b/include/freerdp/window.h index 2b65a76ce..43a174625 100644 --- a/include/freerdp/window.h +++ b/include/freerdp/window.h @@ -277,16 +277,16 @@ extern "C" rdpContext* context; /* 0 */ UINT32 paddingA[16 - 1]; /* 1 */ - pWindowCreate WindowCreate; /* 16 */ - pWindowUpdate WindowUpdate; /* 17 */ - pWindowIcon WindowIcon; /* 18 */ - pWindowCachedIcon WindowCachedIcon; /* 19 */ - pWindowDelete WindowDelete; /* 20 */ - pNotifyIconCreate NotifyIconCreate; /* 21 */ - pNotifyIconUpdate NotifyIconUpdate; /* 22 */ - pNotifyIconDelete NotifyIconDelete; /* 23 */ - pMonitoredDesktop MonitoredDesktop; /* 24 */ - pNonMonitoredDesktop NonMonitoredDesktop; /* 25 */ + WINPR_ATTR_NODISCARD pWindowCreate WindowCreate; /* 16 */ + WINPR_ATTR_NODISCARD pWindowUpdate WindowUpdate; /* 17 */ + WINPR_ATTR_NODISCARD pWindowIcon WindowIcon; /* 18 */ + WINPR_ATTR_NODISCARD pWindowCachedIcon WindowCachedIcon; /* 19 */ + WINPR_ATTR_NODISCARD pWindowDelete WindowDelete; /* 20 */ + WINPR_ATTR_NODISCARD pNotifyIconCreate NotifyIconCreate; /* 21 */ + WINPR_ATTR_NODISCARD pNotifyIconUpdate NotifyIconUpdate; /* 22 */ + WINPR_ATTR_NODISCARD pNotifyIconDelete NotifyIconDelete; /* 23 */ + WINPR_ATTR_NODISCARD pMonitoredDesktop MonitoredDesktop; /* 24 */ + WINPR_ATTR_NODISCARD pNonMonitoredDesktop NonMonitoredDesktop; /* 25 */ UINT32 paddingB[32 - 26]; /* 26 */ }; typedef struct rdp_window_update rdpWindowUpdate; diff --git a/libfreerdp/cache/offscreen.c b/libfreerdp/cache/offscreen.c index d3c85f95d..545735f1a 100644 --- a/libfreerdp/cache/offscreen.c +++ b/libfreerdp/cache/offscreen.c @@ -52,15 +52,11 @@ static BOOL update_gdi_create_offscreen_bitmap(rdpContext* context, const CREATE_OFFSCREEN_BITMAP_ORDER* createOffscreenBitmap) { - UINT16 index = 0; - rdpBitmap* bitmap = NULL; - rdpCache* cache = NULL; - if (!context || !createOffscreenBitmap || !context->cache) return FALSE; - cache = context->cache; - bitmap = Bitmap_Alloc(context); + rdpCache* cache = context->cache; + rdpBitmap* bitmap = Bitmap_Alloc(context); if (!bitmap) return FALSE; @@ -82,11 +78,14 @@ update_gdi_create_offscreen_bitmap(rdpContext* context, offscreen_cache_put(cache->offscreen, createOffscreenBitmap->id, bitmap); if (cache->offscreen->currentSurface == createOffscreenBitmap->id) - bitmap->SetSurface(context, bitmap, FALSE); + { + if (!bitmap->SetSurface(context, bitmap, FALSE)) + return FALSE; + } for (UINT32 i = 0; i < createOffscreenBitmap->deleteList.cIndices; i++) { - index = createOffscreenBitmap->deleteList.indices[i]; + const UINT16 index = createOffscreenBitmap->deleteList.indices[i]; offscreen_cache_delete(cache->offscreen, index); } @@ -96,20 +95,18 @@ update_gdi_create_offscreen_bitmap(rdpContext* context, static BOOL update_gdi_switch_surface(rdpContext* context, const SWITCH_SURFACE_ORDER* switchSurface) { - rdpCache* cache = NULL; - rdpBitmap* bitmap = NULL; - if (!context || !context->cache || !switchSurface || !context->graphics) return FALSE; - cache = context->cache; - bitmap = context->graphics->Bitmap_Prototype; + rdpCache* cache = context->cache; + rdpBitmap* bitmap = context->graphics->Bitmap_Prototype; if (!bitmap) return FALSE; if (switchSurface->bitmapId == SCREEN_BITMAP_SURFACE) { - bitmap->SetSurface(context, NULL, TRUE); + if (!bitmap->SetSurface(context, NULL, TRUE)) + return FALSE; } else { @@ -118,7 +115,8 @@ static BOOL update_gdi_switch_surface(rdpContext* context, if (bmp == NULL) return FALSE; - bitmap->SetSurface(context, bmp, FALSE); + if (!bitmap->SetSurface(context, bmp, FALSE)) + return FALSE; } cache->offscreen->currentSurface = switchSurface->bitmapId; @@ -179,7 +177,12 @@ void offscreen_cache_delete(rdpOffscreenCache* offscreenCache, UINT32 index) WINPR_ASSERT(offscreenCache->context); /* Ensure that the bitmap is no longer used in GDI */ - IFCALL(prevBitmap->SetSurface, offscreenCache->context, NULL, FALSE); + if (prevBitmap->SetSurface) + { + if (!prevBitmap->SetSurface(offscreenCache->context, NULL, FALSE)) + WLog_WARN(TAG, "prevBitmap->SetSurface failed"); + } + Bitmap_Free(offscreenCache->context, prevBitmap); } diff --git a/libfreerdp/codec/h264.h b/libfreerdp/codec/h264.h index dc758a8b6..59871c823 100644 --- a/libfreerdp/codec/h264.h +++ b/libfreerdp/codec/h264.h @@ -44,10 +44,10 @@ extern "C" struct S_H264_CONTEXT_SUBSYSTEM { const char* name; - pfnH264SubsystemInit Init; + WINPR_ATTR_NODISCARD pfnH264SubsystemInit Init; pfnH264SubsystemUninit Uninit; - pfnH264SubsystemDecompress Decompress; - pfnH264SubsystemCompress Compress; + WINPR_ATTR_NODISCARD pfnH264SubsystemDecompress Decompress; + WINPR_ATTR_NODISCARD pfnH264SubsystemCompress Compress; }; struct S_H264_CONTEXT diff --git a/libfreerdp/codec/h264_openh264.c b/libfreerdp/codec/h264_openh264.c index 59000bb97..fd314a24d 100644 --- a/libfreerdp/codec/h264_openh264.c +++ b/libfreerdp/codec/h264_openh264.c @@ -48,10 +48,10 @@ typedef struct HMODULE lib; OpenH264Version version; #endif - pWelsGetCodecVersionEx WelsGetCodecVersionEx; - pWelsCreateDecoder WelsCreateDecoder; + WINPR_ATTR_NODISCARD pWelsGetCodecVersionEx WelsGetCodecVersionEx; + WINPR_ATTR_NODISCARD pWelsCreateDecoder WelsCreateDecoder; pWelsDestroyDecoder WelsDestroyDecoder; - pWelsCreateSVCEncoder WelsCreateSVCEncoder; + WINPR_ATTR_NODISCARD pWelsCreateSVCEncoder WelsCreateSVCEncoder; pWelsDestroySVCEncoder WelsDestroySVCEncoder; ISVCDecoder* pDecoder; ISVCEncoder* pEncoder; diff --git a/libfreerdp/codec/progressive.c b/libfreerdp/codec/progressive.c index 4eadd73ab..3cb6ee199 100644 --- a/libfreerdp/codec/progressive.c +++ b/libfreerdp/codec/progressive.c @@ -760,7 +760,11 @@ static inline int progressive_rfx_dwt_2d_decode(PROGRESSIVE_CONTEXT* WINPR_RESTR else if (!coeffDiff) memcpy(current, buffer, bsize); else - prims->add_16s_inplace(buffer, current, belements); + { + const pstatus_t rc = prims->add_16s_inplace(buffer, current, belements); + if (rc != PRIMITIVES_SUCCESS) + return -1; + } INT16* temp = (INT16*)BufferPool_Take(progressive->bufferPool, -1); /* DWT buffer */ @@ -787,7 +791,7 @@ static inline void progressive_rfx_decode_block(const primitives_t* prims, if (!shift) return; - prims->lShiftC_16s_inplace(buffer, shift, length); + (void)prims->lShiftC_16s_inplace(buffer, shift, length); } static inline int diff --git a/libfreerdp/codec/rfx_encode.c b/libfreerdp/codec/rfx_encode.c index c56fab416..8a95a4ecc 100644 --- a/libfreerdp/codec/rfx_encode.c +++ b/libfreerdp/codec/rfx_encode.c @@ -254,31 +254,28 @@ static void rfx_encode_component(RFX_CONTEXT* WINPR_RESTRICT context, *size = WINPR_ASSERTING_INT_CAST(uint32_t, rc); } -void rfx_encode_rgb(RFX_CONTEXT* WINPR_RESTRICT context, RFX_TILE* WINPR_RESTRICT tile) +BOOL rfx_encode_rgb(RFX_CONTEXT* WINPR_RESTRICT context, RFX_TILE* WINPR_RESTRICT tile) { + BOOL rc = TRUE; union { const INT16** cpv; INT16** pv; } cnv; - BYTE* pBuffer = NULL; - INT16* pSrcDst[3]; - uint32_t YLen = 0; + INT16* pSrcDst[3] = { 0 }; uint32_t CbLen = 0; uint32_t CrLen = 0; - UINT32* YQuant = NULL; - UINT32* CbQuant = NULL; - UINT32* CrQuant = NULL; primitives_t* prims = primitives_get(); static const prim_size_t roi_64x64 = { 64, 64 }; - if (!(pBuffer = (BYTE*)BufferPool_Take(context->priv->BufferPool, -1))) - return; + BYTE* pBuffer = (BYTE*)BufferPool_Take(context->priv->BufferPool, -1); + if (!pBuffer) + return FALSE; - YLen = CbLen = CrLen = 0; - YQuant = context->quants + (10ULL * tile->quantIdxY); - CbQuant = context->quants + (10ULL * tile->quantIdxCb); - CrQuant = context->quants + (10ULL * tile->quantIdxCr); + uint32_t YLen = CbLen = CrLen = 0; + UINT32* YQuant = context->quants + (10ULL * tile->quantIdxY); + UINT32* CbQuant = context->quants + (10ULL * tile->quantIdxCb); + UINT32* CrQuant = context->quants + (10ULL * tile->quantIdxCr); pSrcDst[0] = (INT16*)((&pBuffer[((8192ULL + 32ULL) * 0ULL) + 16ULL])); /* y_r_buffer */ pSrcDst[1] = (INT16*)((&pBuffer[((8192ULL + 32ULL) * 1ULL) + 16ULL])); /* cb_g_buffer */ pSrcDst[2] = (INT16*)((&pBuffer[((8192ULL + 32ULL) * 2ULL) + 16ULL])); /* cr_b_buffer */ @@ -291,8 +288,9 @@ void rfx_encode_rgb(RFX_CONTEXT* WINPR_RESTRICT context, RFX_TILE* WINPR_RESTRIC PROFILER_ENTER(context->priv->prof_rfx_rgb_to_ycbcr) cnv.pv = pSrcDst; - prims->RGBToYCbCr_16s16s_P3P3(cnv.cpv, 64 * sizeof(INT16), pSrcDst, 64 * sizeof(INT16), - &roi_64x64); + if (prims->RGBToYCbCr_16s16s_P3P3(cnv.cpv, 64 * sizeof(INT16), pSrcDst, 64 * sizeof(INT16), + &roi_64x64) != PRIMITIVES_SUCCESS) + rc = FALSE; PROFILER_EXIT(context->priv->prof_rfx_rgb_to_ycbcr) /** * We need to clear the buffers as the RLGR encoder expects it to be initialized to zero. @@ -308,5 +306,7 @@ void rfx_encode_rgb(RFX_CONTEXT* WINPR_RESTRICT context, RFX_TILE* WINPR_RESTRIC tile->CbLen = WINPR_ASSERTING_INT_CAST(UINT16, CbLen); tile->CrLen = WINPR_ASSERTING_INT_CAST(UINT16, CrLen); PROFILER_EXIT(context->priv->prof_rfx_encode_rgb) - BufferPool_Return(context->priv->BufferPool, pBuffer); + if (!BufferPool_Return(context->priv->BufferPool, pBuffer)) + return FALSE; + return rc; } diff --git a/libfreerdp/codec/rfx_encode.h b/libfreerdp/codec/rfx_encode.h index 41d858fc5..3ff75a4ad 100644 --- a/libfreerdp/codec/rfx_encode.h +++ b/libfreerdp/codec/rfx_encode.h @@ -23,7 +23,7 @@ #include #include -FREERDP_LOCAL void rfx_encode_rgb(RFX_CONTEXT* WINPR_RESTRICT context, +FREERDP_LOCAL BOOL rfx_encode_rgb(RFX_CONTEXT* WINPR_RESTRICT context, RFX_TILE* WINPR_RESTRICT tile); #endif /* FREERDP_LIB_CODEC_RFX_ENCODE_H */ diff --git a/libfreerdp/codec/rfx_quantization.c b/libfreerdp/codec/rfx_quantization.c index 6fd474edf..e4576a6bd 100644 --- a/libfreerdp/codec/rfx_quantization.c +++ b/libfreerdp/codec/rfx_quantization.c @@ -51,7 +51,7 @@ static inline void rfx_quantization_decode_block(const primitives_t* WINPR_RESTR if (factor == 0) return; - prims->lShiftC_16s_inplace(buffer, factor, buffer_size); + (void)prims->lShiftC_16s_inplace(buffer, factor, buffer_size); } void rfx_quantization_decode(INT16* WINPR_RESTRICT buffer, const UINT32* WINPR_RESTRICT quantVals) diff --git a/libfreerdp/codec/test/TestFreeRDPRegion.c b/libfreerdp/codec/test/TestFreeRDPRegion.c index d0ca90b7b..478fd338f 100644 --- a/libfreerdp/codec/test/TestFreeRDPRegion.c +++ b/libfreerdp/codec/test/TestFreeRDPRegion.c @@ -832,7 +832,7 @@ typedef int (*TestFunction)(void); struct UnitaryTest { const char* name; - TestFunction func; + WINPR_ATTR_NODISCARD TestFunction func; }; static struct UnitaryTest tests[] = { { "Basic trivial tests", test_basic }, diff --git a/libfreerdp/core/autodetect.c b/libfreerdp/core/autodetect.c index b0cdde9cb..dc60c2fda 100644 --- a/libfreerdp/core/autodetect.c +++ b/libfreerdp/core/autodetect.c @@ -860,8 +860,10 @@ state_run_t autodetect_recv_request_packet(rdpAutoDetect* autodetect, RDP_TRANSP goto fail; } - IFCALL(autodetect->RequestReceived, autodetect, transport, autodetectReqPdu.requestType, - autodetectReqPdu.sequenceNumber); + if (!IFCALLRESULT(TRUE, autodetect->RequestReceived, autodetect, transport, + autodetectReqPdu.requestType, autodetectReqPdu.sequenceNumber)) + goto fail; + switch (autodetectReqPdu.requestType) { case RDP_RTT_REQUEST_TYPE_CONTINUOUS: @@ -981,8 +983,10 @@ state_run_t autodetect_recv_response_packet(rdpAutoDetect* autodetect, RDP_TRANS goto fail; } - IFCALL(autodetect->ResponseReceived, autodetect, transport, autodetectRspPdu.responseType, - autodetectRspPdu.sequenceNumber); + if (!IFCALLRESULT(TRUE, autodetect->ResponseReceived, autodetect, transport, + autodetectRspPdu.responseType, autodetectRspPdu.sequenceNumber)) + goto fail; + switch (autodetectRspPdu.responseType) { case RDP_RTT_RESPONSE_TYPE: diff --git a/libfreerdp/core/info.c b/libfreerdp/core/info.c index cc54aee7b..b4e18ce3f 100644 --- a/libfreerdp/core/info.c +++ b/libfreerdp/core/info.c @@ -1257,7 +1257,13 @@ static BOOL rdp_recv_logon_error_info(rdpRdp* rdp, wStream* s, logon_info_ex* in Stream_Read_UINT32(s, errorNotificationData); /* errorNotificationData (4 bytes) */ WLog_DBG(TAG, "LogonErrorInfo: Data: 0x%08" PRIX32 " Type: 0x%08" PRIX32 "", errorNotificationData, errorNotificationType); - IFCALL(instance->LogonErrorInfo, instance, errorNotificationData, errorNotificationType); + if (instance->LogonErrorInfo) + { + const int rc = + instance->LogonErrorInfo(instance, errorNotificationData, errorNotificationType); + if (rc < 0) + return FALSE; + } info->ErrorNotificationType = errorNotificationType; info->ErrorNotificationData = errorNotificationData; return TRUE; diff --git a/libfreerdp/core/peer.c b/libfreerdp/core/peer.c index bf26aab6d..84740832e 100644 --- a/libfreerdp/core/peer.c +++ b/libfreerdp/core/peer.c @@ -407,7 +407,11 @@ static state_run_t peer_recv_data_pdu(freerdp_peer* client, wStream* s, return STATE_RUN_FAILED; Stream_Read_UINT32(s, client->ack_frame_id); - IFCALL(update->SurfaceFrameAcknowledge, update->context, client->ack_frame_id); + if (update->SurfaceFrameAcknowledge) + { + if (!update->SurfaceFrameAcknowledge(update->context, client->ack_frame_id)) + return STATE_RUN_FAILED; + } break; case DATA_PDU_TYPE_REFRESH_RECT: @@ -802,7 +806,11 @@ static state_run_t peer_recv_callback_internal(WINPR_ATTR_UNUSED rdpTransport* t rdpSettings* settings = client->context->settings; WINPR_ASSERT(settings); - IFCALL(client->ReachedState, client, rdp_get_state(rdp)); + if (client->ReachedState) + { + if (!client->ReachedState(client, rdp_get_state(rdp))) + return STATE_RUN_FAILED; + } switch (rdp_get_state(rdp)) { case CONNECTION_STATE_INITIAL: @@ -995,7 +1003,11 @@ static state_run_t peer_recv_callback_internal(WINPR_ATTR_UNUSED rdpTransport* t { MONITOR_DEF* monitors = NULL; - IFCALL(client->AdjustMonitorsLayout, client); + if (client->AdjustMonitorsLayout) + { + if (!client->AdjustMonitorsLayout(client)) + return STATE_RUN_FAILED; + } /* client supports the monitorLayout PDU, let's send him the monitors if any */ ret = STATE_RUN_SUCCESS; diff --git a/libfreerdp/core/transport.c b/libfreerdp/core/transport.c index decda40e0..3408cab88 100644 --- a/libfreerdp/core/transport.c +++ b/libfreerdp/core/transport.c @@ -2011,7 +2011,8 @@ void transport_layer_free(rdpTransportLayer* layer) if (!layer) return; - IFCALL(intern->pub.Close, intern->pub.userContext); + if (intern->pub.Close) + intern->pub.Close(intern->pub.userContext); free(intern->userContextShadowPtr); free(intern); } diff --git a/libfreerdp/core/update.c b/libfreerdp/core/update.c index 86cf974a1..ae57a2f88 100644 --- a/libfreerdp/core/update.c +++ b/libfreerdp/core/update.c @@ -963,7 +963,11 @@ void update_reset_state(rdpUpdate* update) WINPR_ASSERT(altsec); altsec->switch_surface.bitmapId = SCREEN_BITMAP_SURFACE; - IFCALL(altsec->common.SwitchSurface, update->context, &(altsec->switch_surface)); + if (altsec->common.SwitchSurface) + { + if (!altsec->common.SwitchSurface(update->context, &(altsec->switch_surface))) + WLog_Print(up->log, WLOG_WARN, "altsec->common.SwitchSurface failed"); + } } } @@ -988,9 +992,10 @@ BOOL update_post_connect(rdpUpdate* update) } altsec->switch_surface.bitmapId = SCREEN_BITMAP_SURFACE; - IFCALL(update->altsec->SwitchSurface, update->context, &(altsec->switch_surface)); + const BOOL rc = IFCALLRESULT(TRUE, update->altsec->SwitchSurface, update->context, + &(altsec->switch_surface)); up->initialState = FALSE; - return TRUE; + return rc; } void update_post_disconnect(rdpUpdate* update) diff --git a/libfreerdp/gdi/gdi.c b/libfreerdp/gdi/gdi.c index d5bb7265e..b2e3c0472 100644 --- a/libfreerdp/gdi/gdi.c +++ b/libfreerdp/gdi/gdi.c @@ -1048,8 +1048,9 @@ static BOOL gdi_surface_frame_marker(rdpContext* context, case SURFACECMD_FRAMEACTION_END: if (freerdp_settings_get_uint32(context->settings, FreeRDP_FrameAcknowledge) > 0) { - IFCALL(context->update->SurfaceFrameAcknowledge, context, - surfaceFrameMarker->frameId); + if (!IFCALLRESULT(TRUE, context->update->SurfaceFrameAcknowledge, context, + surfaceFrameMarker->frameId)) + return FALSE; } break; diff --git a/libfreerdp/gdi/gfx.c b/libfreerdp/gdi/gfx.c index 21b9eb6c3..14893b8be 100644 --- a/libfreerdp/gdi/gfx.c +++ b/libfreerdp/gdi/gfx.c @@ -119,11 +119,14 @@ static UINT gdi_ResetGraphics(RdpgfxClientContext* context, if (update) { WINPR_ASSERT(update->DesktopResize); - update->DesktopResize(gdi->context); + if (!update->DesktopResize(gdi->context)) + goto fail; } WINPR_ASSERT(context->GetSurfaceIds); - context->GetSurfaceIds(context, &pSurfaceIds, &count); + rc = context->GetSurfaceIds(context, &pSurfaceIds, &count); + if (rc != CHANNEL_RC_OK) + goto fail; for (UINT32 index = 0; index < count; index++) { @@ -242,20 +245,19 @@ static UINT gdi_WindowUpdate(RdpgfxClientContext* context, gdiGfxSurface* surfac static UINT gdi_UpdateSurfaces(RdpgfxClientContext* context) { UINT16 count = 0; - UINT status = ERROR_INTERNAL_ERROR; UINT16* pSurfaceIds = NULL; - rdpGdi* gdi = NULL; WINPR_ASSERT(context); - gdi = (rdpGdi*)context->custom; + rdpGdi* gdi = (rdpGdi*)context->custom; WINPR_ASSERT(gdi); EnterCriticalSection(&context->mux); WINPR_ASSERT(context->GetSurfaceIds); - context->GetSurfaceIds(context, &pSurfaceIds, &count); - status = CHANNEL_RC_OK; + UINT status = context->GetSurfaceIds(context, &pSurfaceIds, &count); + if (status != CHANNEL_RC_OK) + goto fail; for (UINT32 index = 0; index < count; index++) { @@ -282,6 +284,7 @@ static UINT gdi_UpdateSurfaces(RdpgfxClientContext* context) break; } +fail: free(pSurfaceIds); LeaveCriticalSection(&context->mux); return status; @@ -1442,15 +1445,14 @@ fail: static UINT gdi_SurfaceToCache(RdpgfxClientContext* context, const RDPGFX_SURFACE_TO_CACHE_PDU* surfaceToCache) { - const RECTANGLE_16* rect = NULL; - gdiGfxSurface* surface = NULL; gdiGfxCacheEntry* cacheEntry = NULL; UINT rc = ERROR_INTERNAL_ERROR; EnterCriticalSection(&context->mux); - rect = &(surfaceToCache->rectSrc); + const RECTANGLE_16* rect = &(surfaceToCache->rectSrc); WINPR_ASSERT(context->GetSurfaceData); - surface = (gdiGfxSurface*)context->GetSurfaceData(context, surfaceToCache->surfaceId); + gdiGfxSurface* surface = + (gdiGfxSurface*)context->GetSurfaceData(context, surfaceToCache->surfaceId); if (!surface) goto fail; @@ -1476,7 +1478,9 @@ static UINT gdi_SurfaceToCache(RdpgfxClientContext* context, { RDPGFX_EVICT_CACHE_ENTRY_PDU evict = { surfaceToCache->cacheSlot }; WINPR_ASSERT(context->EvictCacheEntry); - context->EvictCacheEntry(context, &evict); + rc = context->EvictCacheEntry(context, &evict); + if (rc != CHANNEL_RC_OK) + goto fail; } WINPR_ASSERT(context->SetCacheSlotData); diff --git a/libfreerdp/primitives/prim_copy.c b/libfreerdp/primitives/prim_copy.c index 76bd51acf..c552ed78d 100644 --- a/libfreerdp/primitives/prim_copy.c +++ b/libfreerdp/primitives/prim_copy.c @@ -120,7 +120,11 @@ static pstatus_t general_copy_8u_AC4r(const BYTE* WINPR_RESTRICT pSrc, INT32 src { do { - generic->copy(src, dst, WINPR_ASSERTING_INT_CAST(int32_t, rowbytes)); + const pstatus_t rc = + generic->copy(src, dst, WINPR_ASSERTING_INT_CAST(int32_t, rowbytes)); + if (rc != PRIMITIVES_SUCCESS) + return rc; + src += srcStep; dst += dstStep; } while (--height); diff --git a/libfreerdp/primitives/prim_set.c b/libfreerdp/primitives/prim_set.c index bff2f5fb0..42fb2e011 100644 --- a/libfreerdp/primitives/prim_set.c +++ b/libfreerdp/primitives/prim_set.c @@ -44,7 +44,6 @@ static pstatus_t general_set_32s(INT32 val, INT32* WINPR_RESTRICT pDst, UINT32 l INT32* dptr = pDst; size_t span = 0; size_t remaining = 0; - primitives_t* prims = NULL; if (len < 256) { @@ -58,7 +57,7 @@ static pstatus_t general_set_32s(INT32 val, INT32* WINPR_RESTRICT pDst, UINT32 l span = 1; *dptr = val; remaining = len - 1; - prims = primitives_get(); + primitives_t* prims = primitives_get(); while (remaining) { @@ -69,7 +68,9 @@ static pstatus_t general_set_32s(INT32 val, INT32* WINPR_RESTRICT pDst, UINT32 l const size_t s = thiswidth << 2; WINPR_ASSERT(thiswidth <= INT32_MAX); - prims->copy_8u((BYTE*)dptr, (BYTE*)(dptr + span), (INT32)s); + const pstatus_t rc = prims->copy_8u((BYTE*)dptr, (BYTE*)(dptr + span), (INT32)s); + if (rc != PRIMITIVES_SUCCESS) + return rc; remaining -= thiswidth; span <<= 1; } @@ -108,7 +109,10 @@ static pstatus_t general_set_32u(UINT32 val, UINT32* WINPR_RESTRICT pDst, UINT32 const size_t s = thiswidth << 2; WINPR_ASSERT(thiswidth <= INT32_MAX); - prims->copy_8u((BYTE*)dptr, (BYTE*)(dptr + span), (INT32)s); + const pstatus_t rc = prims->copy_8u((BYTE*)dptr, (BYTE*)(dptr + span), (INT32)s); + if (rc != PRIMITIVES_SUCCESS) + return rc; + remaining -= thiswidth; span <<= 1; } diff --git a/libfreerdp/primitives/sse/prim_templates.h b/libfreerdp/primitives/sse/prim_templates.h index b512d1ba6..9a66dc3ee 100644 --- a/libfreerdp/primitives/sse/prim_templates.h +++ b/libfreerdp/primitives/sse/prim_templates.h @@ -267,7 +267,9 @@ /* Finish off the remainder. */ \ while (len--) \ { \ - _slowWay_; \ + const pstatus_t rc = _slowWay_; \ + if (rc != PRIMITIVES_SUCCESS) \ + return rc; \ } \ return PRIMITIVES_SUCCESS; \ } diff --git a/server/Sample/sfreerdp.c b/server/Sample/sfreerdp.c index 598588bf6..66b234e20 100644 --- a/server/Sample/sfreerdp.c +++ b/server/Sample/sfreerdp.c @@ -190,7 +190,8 @@ static void test_peer_begin_frame(freerdp_peer* client) fm.frameAction = SURFACECMD_FRAMEACTION_BEGIN; fm.frameId = context->frame_id; WINPR_ASSERT(update->SurfaceFrameMarker); - update->SurfaceFrameMarker(update->context, &fm); + if (!update->SurfaceFrameMarker(update->context, &fm)) + WLog_WARN(TAG, "SurfaceFrameMarker failed"); } static void test_peer_end_frame(freerdp_peer* client) @@ -210,7 +211,8 @@ static void test_peer_end_frame(freerdp_peer* client) fm.frameAction = SURFACECMD_FRAMEACTION_END; fm.frameId = context->frame_id; WINPR_ASSERT(update->SurfaceFrameMarker); - update->SurfaceFrameMarker(update->context, &fm); + if (!update->SurfaceFrameMarker(update->context, &fm)) + WLog_WARN(TAG, "SurfaceFrameMarker failed"); context->frame_id++; } @@ -306,8 +308,7 @@ static BOOL test_peer_draw_background(freerdp_peer* client, const RFX_RECT* rect cmd.bmp.bitmapDataLength = (UINT32)Stream_GetPosition(s); cmd.bmp.bitmapData = Stream_Buffer(s); - update->SurfaceBits(update->context, &cmd); - ret = TRUE; + ret = update->SurfaceBits(update->context, &cmd); out: free(rgb_data); return ret; @@ -453,7 +454,10 @@ static void test_send_cursor_update(freerdp_peer* client, UINT32 x, UINT32 y) rdpUpdate* update = client->context->update; WINPR_ASSERT(update); WINPR_ASSERT(update->SurfaceBits); - update->SurfaceBits(update->context, &cmd); + if (!update->SurfaceBits(update->context, &cmd)) + { + WLog_WARN(TAG, "update->SurfaceBits failed"); + } context->icon_x = x; context->icon_y = y; } @@ -575,7 +579,8 @@ static BOOL tf_peer_dump_rfx(freerdp_peer* client) break; WINPR_ASSERT(update->SurfaceCommand); - update->SurfaceCommand(update->context, s); + if (!update->SurfaceCommand(update->context, s)) + break; WINPR_ASSERT(client->CheckFileDescriptor); if (client->CheckFileDescriptor(client) != TRUE) @@ -878,7 +883,8 @@ static BOOL tf_peer_keyboard_event(rdpInput* input, UINT16 flags, UINT8 code) return FALSE; WINPR_ASSERT(update->DesktopResize); - update->DesktopResize(update->context); + if (!update->DesktopResize(update->context)) + return FALSE; tcontext->activated = FALSE; } else if (((flags & KBD_FLAGS_RELEASE) == 0) && code == RDP_SCANCODE_KEY_C) /* 'c' key */ @@ -893,7 +899,8 @@ static BOOL tf_peer_keyboard_event(rdpInput* input, UINT16 flags, UINT8 code) else if (((flags & KBD_FLAGS_RELEASE) == 0) && code == RDP_SCANCODE_KEY_X) /* 'x' key */ { WINPR_ASSERT(client->Close); - client->Close(client); + if (!client->Close(client)) + return FALSE; } else if (((flags & KBD_FLAGS_RELEASE) == 0) && code == RDP_SCANCODE_KEY_R) /* 'r' key */ { diff --git a/server/proxy/channels/pf_channel_drdynvc.c b/server/proxy/channels/pf_channel_drdynvc.c index 7ec55326d..252557499 100644 --- a/server/proxy/channels/pf_channel_drdynvc.c +++ b/server/proxy/channels/pf_channel_drdynvc.c @@ -57,7 +57,7 @@ struct DynChannelTrackerState UINT32 CurrentDataReceived; UINT32 CurrentDataFragments; wStream* currentPacket; - dynamic_channel_on_data_fn dataCallback; + WINPR_ATTR_NODISCARD dynamic_channel_on_data_fn dataCallback; }; typedef void (*channel_data_dtor_fn)(void** user_data); diff --git a/server/proxy/pf_server.c b/server/proxy/pf_server.c index 6f9645ae4..d21ccf2e4 100644 --- a/server/proxy/pf_server.c +++ b/server/proxy/pf_server.c @@ -608,7 +608,8 @@ static DWORD WINAPI pf_server_handle_peer(LPVOID arg) goto out_free_peer; WINPR_ASSERT(client->Initialize); - client->Initialize(client); + if (!client->Initialize(client)) + goto out_free_peer; PROXY_LOG_INFO(TAG, ps, "new connection: proxy address: %s, client address: %s", pdata->config->Host, client->hostname); diff --git a/server/shadow/shadow_client.c b/server/shadow/shadow_client.c index aa7a52fea..3b484c096 100644 --- a/server/shadow/shadow_client.c +++ b/server/shadow/shadow_client.c @@ -2145,7 +2145,10 @@ static int shadow_client_subsystem_process_message(rdpShadowClient* client, wMes if ((msg->xPos != client->pointerX) || (msg->yPos != client->pointerY)) { WINPR_ASSERT(update->pointer); - IFCALL(update->pointer->PointerPosition, context, &pointerPosition); + if (CHANNEL_RC_OK != IFCALLRESULT(CHANNEL_RC_OK, + update->pointer->PointerPosition, context, + &pointerPosition)) + return -1; client->pointerX = msg->xPos; client->pointerY = msg->yPos; } @@ -2178,16 +2181,21 @@ static int shadow_client_subsystem_process_message(rdpShadowClient* client, wMes if (client->activated) { - IFCALL(update->pointer->PointerNew, context, &pointerNew); + if (!IFCALLRESULT(TRUE, update->pointer->PointerNew, context, &pointerNew)) + return -1; if (client->server->ShowMouseCursor) { - IFCALL(update->pointer->PointerCached, context, &pointerCached); + if (!IFCALLRESULT(TRUE, update->pointer->PointerCached, context, + &pointerCached)) + return -1; } else { POINTER_SYSTEM_UPDATE pointer_system = { 0 }; pointer_system.type = SYSPTR_NULL; - IFCALL(update->pointer->PointerSystem, context, &pointer_system); + if (!IFCALLRESULT(TRUE, update->pointer->PointerSystem, context, + &pointer_system)) + return -1; } } @@ -2204,8 +2212,10 @@ static int shadow_client_subsystem_process_message(rdpShadowClient* client, wMes if (client->activated && client->rdpsnd && client->rdpsnd->Activated) { client->rdpsnd->src_format = msg->audio_format; - IFCALL(client->rdpsnd->SendSamples, client->rdpsnd, msg->buf, msg->nFrames, - msg->wTimestamp); + if (CHANNEL_RC_OK != IFCALLRESULT(CHANNEL_RC_OK, client->rdpsnd->SendSamples, + client->rdpsnd, msg->buf, msg->nFrames, + msg->wTimestamp)) + return -1; } break; @@ -2218,7 +2228,9 @@ static int shadow_client_subsystem_process_message(rdpShadowClient* client, wMes if (client->activated && client->rdpsnd && client->rdpsnd->Activated) { - IFCALL(client->rdpsnd->SetVolume, client->rdpsnd, msg->left, msg->right); + if (CHANNEL_RC_OK != IFCALLRESULT(CHANNEL_RC_OK, client->rdpsnd->SetVolume, + client->rdpsnd, msg->left, msg->right)) + return -1; } break; diff --git a/server/shadow/shadow_encomsp.c b/server/shadow/shadow_encomsp.c index 8a3a46836..8f1355ce8 100644 --- a/server/shadow/shadow_encomsp.c +++ b/server/shadow/shadow_encomsp.c @@ -113,7 +113,11 @@ int shadow_client_encomsp_init(rdpShadowClient* client) encomsp->ChangeParticipantControlLevel = encomsp_change_participant_control_level; if (client->encomsp) - client->encomsp->Start(client->encomsp); + { + const UINT rc = client->encomsp->Start(client->encomsp); + if (rc != CHANNEL_RC_OK) + return -1; + } return 1; } diff --git a/server/shadow/shadow_rdpsnd.c b/server/shadow/shadow_rdpsnd.c index f69d80d3e..586bd7601 100644 --- a/server/shadow/shadow_rdpsnd.c +++ b/server/shadow/shadow_rdpsnd.c @@ -40,7 +40,9 @@ static void rdpsnd_activated(RdpsndServerContext* context) { if (audio_format_compatible(&context->server_formats[j], &context->client_formats[i])) { - context->SelectFormat(context, WINPR_ASSERTING_INT_CAST(UINT16, i)); + const UINT rc = context->SelectFormat(context, WINPR_ASSERTING_INT_CAST(UINT16, i)); + if (rc != CHANNEL_RC_OK) + WLog_WARN(TAG, "SelectFormat failed with %" PRIu32, rc); return; } } @@ -75,7 +77,8 @@ int shadow_client_rdpsnd_init(rdpShadowClient* client) rdpsnd->src_format = &rdpsnd->server_formats[0]; rdpsnd->Activated = rdpsnd_activated; - rdpsnd->Initialize(rdpsnd, TRUE); + if (rdpsnd->Initialize(rdpsnd, TRUE) != CHANNEL_RC_OK) + return -1; return 1; } diff --git a/server/shadow/shadow_remdesk.c b/server/shadow/shadow_remdesk.c index 19fb9f36e..910549313 100644 --- a/server/shadow/shadow_remdesk.c +++ b/server/shadow/shadow_remdesk.c @@ -26,15 +26,20 @@ int shadow_client_remdesk_init(rdpShadowClient* client) { - RemdeskServerContext* remdesk = NULL; + RemdeskServerContext* remdesk = client->remdesk = remdesk_server_context_new(client->vcm); + if (!remdesk) + return -1; - remdesk = client->remdesk = remdesk_server_context_new(client->vcm); remdesk->rdpcontext = &client->context; remdesk->custom = (void*)client; if (client->remdesk) - client->remdesk->Start(client->remdesk); + { + const UINT rc = client->remdesk->Start(client->remdesk); + if (rc != CHANNEL_RC_OK) + return -1; + } return 1; } diff --git a/winpr/include/winpr/sspi.h b/winpr/include/winpr/sspi.h index 1b325de2b..5073f9334 100644 --- a/winpr/include/winpr/sspi.h +++ b/winpr/include/winpr/sspi.h @@ -862,7 +862,7 @@ typedef SECURITY_STATUS (*psSspiNtlmHashCallback)(void* client, typedef struct { char* samFile; - psSspiNtlmHashCallback hashCallback; + WINPR_ATTR_NODISCARD psSspiNtlmHashCallback hashCallback; void* hashCallbackArg; } SEC_WINPR_NTLM_SETTINGS; @@ -1126,68 +1126,68 @@ typedef SECURITY_STATUS(SEC_ENTRY* SET_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle typedef struct { UINT32 dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; - QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; - ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; + WINPR_ATTR_NODISCARD ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; + WINPR_ATTR_NODISCARD QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; + WINPR_ATTR_NODISCARD ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + WINPR_ATTR_NODISCARD INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; + WINPR_ATTR_NODISCARD ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + WINPR_ATTR_NODISCARD COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN ApplyControlToken; - QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; + WINPR_ATTR_NODISCARD APPLY_CONTROL_TOKEN_FN ApplyControlToken; + WINPR_ATTR_NODISCARD QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; + WINPR_ATTR_NODISCARD IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + WINPR_ATTR_NODISCARD REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + WINPR_ATTR_NODISCARD MAKE_SIGNATURE_FN MakeSignature; + WINPR_ATTR_NODISCARD VERIFY_SIGNATURE_FN VerifySignature; FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; + WINPR_ATTR_NODISCARD QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; void* Reserved3; void* Reserved4; - EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext; - IMPORT_SECURITY_CONTEXT_FN_A ImportSecurityContextA; - ADD_CREDENTIALS_FN_A AddCredentialsA; + WINPR_ATTR_NODISCARD EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext; + WINPR_ATTR_NODISCARD IMPORT_SECURITY_CONTEXT_FN_A ImportSecurityContextA; + WINPR_ATTR_NODISCARD ADD_CREDENTIALS_FN_A AddCredentialsA; void* Reserved8; - QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; - ENCRYPT_MESSAGE_FN EncryptMessage; - DECRYPT_MESSAGE_FN DecryptMessage; - SET_CONTEXT_ATTRIBUTES_FN_A SetContextAttributesA; - SET_CREDENTIALS_ATTRIBUTES_FN_A SetCredentialsAttributesA; + WINPR_ATTR_NODISCARD QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; + WINPR_ATTR_NODISCARD ENCRYPT_MESSAGE_FN EncryptMessage; + WINPR_ATTR_NODISCARD DECRYPT_MESSAGE_FN DecryptMessage; + WINPR_ATTR_NODISCARD SET_CONTEXT_ATTRIBUTES_FN_A SetContextAttributesA; + WINPR_ATTR_NODISCARD SET_CREDENTIALS_ATTRIBUTES_FN_A SetCredentialsAttributesA; } SecurityFunctionTableA; typedef SecurityFunctionTableA* PSecurityFunctionTableA; typedef struct { UINT32 dwVersion; - ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; - QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; - ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + WINPR_ATTR_NODISCARD ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + WINPR_ATTR_NODISCARD QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + WINPR_ATTR_NODISCARD ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; void* Reserved2; - INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; - ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; - COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + WINPR_ATTR_NODISCARD INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + WINPR_ATTR_NODISCARD ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + WINPR_ATTR_NODISCARD COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; - APPLY_CONTROL_TOKEN_FN ApplyControlToken; - QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; - IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; - REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; - MAKE_SIGNATURE_FN MakeSignature; - VERIFY_SIGNATURE_FN VerifySignature; + WINPR_ATTR_NODISCARD APPLY_CONTROL_TOKEN_FN ApplyControlToken; + WINPR_ATTR_NODISCARD QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + WINPR_ATTR_NODISCARD IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + WINPR_ATTR_NODISCARD REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + WINPR_ATTR_NODISCARD MAKE_SIGNATURE_FN MakeSignature; + WINPR_ATTR_NODISCARD VERIFY_SIGNATURE_FN VerifySignature; FREE_CONTEXT_BUFFER_FN FreeContextBuffer; - QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + WINPR_ATTR_NODISCARD QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; void* Reserved3; void* Reserved4; - EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext; - IMPORT_SECURITY_CONTEXT_FN_W ImportSecurityContextW; - ADD_CREDENTIALS_FN_W AddCredentialsW; + WINPR_ATTR_NODISCARD EXPORT_SECURITY_CONTEXT_FN ExportSecurityContext; + WINPR_ATTR_NODISCARD IMPORT_SECURITY_CONTEXT_FN_W ImportSecurityContextW; + WINPR_ATTR_NODISCARD ADD_CREDENTIALS_FN_W AddCredentialsW; void* Reserved8; - QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; - ENCRYPT_MESSAGE_FN EncryptMessage; - DECRYPT_MESSAGE_FN DecryptMessage; - SET_CONTEXT_ATTRIBUTES_FN_W SetContextAttributesW; - SET_CREDENTIALS_ATTRIBUTES_FN_W SetCredentialsAttributesW; + WINPR_ATTR_NODISCARD QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; + WINPR_ATTR_NODISCARD ENCRYPT_MESSAGE_FN EncryptMessage; + WINPR_ATTR_NODISCARD DECRYPT_MESSAGE_FN DecryptMessage; + WINPR_ATTR_NODISCARD SET_CONTEXT_ATTRIBUTES_FN_W SetContextAttributesW; + WINPR_ATTR_NODISCARD SET_CREDENTIALS_ATTRIBUTES_FN_W SetCredentialsAttributesW; } SecurityFunctionTableW; typedef SecurityFunctionTableW* PSecurityFunctionTableW; diff --git a/winpr/include/winpr/wlog.h b/winpr/include/winpr/wlog.h index 5912da78e..f9b0e3a35 100644 --- a/winpr/include/winpr/wlog.h +++ b/winpr/include/winpr/wlog.h @@ -322,10 +322,10 @@ extern "C" typedef struct { - wLogCallbackData_t data; - wLogCallbackImage_t image; - wLogCallbackMessage_t message; - wLogCallbackPackage_t package; + WINPR_ATTR_NODISCARD wLogCallbackData_t data; + WINPR_ATTR_NODISCARD wLogCallbackImage_t image; + WINPR_ATTR_NODISCARD wLogCallbackMessage_t message; + WINPR_ATTR_NODISCARD wLogCallbackPackage_t package; } wLogCallbacks; #ifdef __cplusplus diff --git a/winpr/include/winpr/wtsapi.h b/winpr/include/winpr/wtsapi.h index fee7441de..6917157e5 100644 --- a/winpr/include/winpr/wtsapi.h +++ b/winpr/include/winpr/wtsapi.h @@ -227,20 +227,20 @@ typedef struct tagCHANNEL_ENTRY_POINTS { DWORD cbSize; DWORD protocolVersion; - PVIRTUALCHANNELINIT pVirtualChannelInit; - PVIRTUALCHANNELOPEN pVirtualChannelOpen; - PVIRTUALCHANNELCLOSE pVirtualChannelClose; - PVIRTUALCHANNELWRITE pVirtualChannelWrite; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELINIT pVirtualChannelInit; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELOPEN pVirtualChannelOpen; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELCLOSE pVirtualChannelClose; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELWRITE pVirtualChannelWrite; } CHANNEL_ENTRY_POINTS, *PCHANNEL_ENTRY_POINTS; typedef struct tagCHANNEL_ENTRY_POINTS_EX { DWORD cbSize; DWORD protocolVersion; - PVIRTUALCHANNELINITEX pVirtualChannelInitEx; - PVIRTUALCHANNELOPENEX pVirtualChannelOpenEx; - PVIRTUALCHANNELCLOSEEX pVirtualChannelCloseEx; - PVIRTUALCHANNELWRITEEX pVirtualChannelWriteEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELINITEX pVirtualChannelInitEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELOPENEX pVirtualChannelOpenEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELCLOSEEX pVirtualChannelCloseEx; + WINPR_ATTR_NODISCARD PVIRTUALCHANNELWRITEEX pVirtualChannelWriteEx; } CHANNEL_ENTRY_POINTS_EX, *PCHANNEL_ENTRY_POINTS_EX; typedef BOOL VCAPITYPE VIRTUALCHANNELENTRY(PCHANNEL_ENTRY_POINTS pEntryPoints); @@ -1445,73 +1445,73 @@ typedef struct DWORD dwVersion; DWORD dwFlags; - WTS_STOP_REMOTE_CONTROL_SESSION_FN pStopRemoteControlSession; - WTS_START_REMOTE_CONTROL_SESSION_FN_W pStartRemoteControlSessionW; - WTS_START_REMOTE_CONTROL_SESSION_FN_A pStartRemoteControlSessionA; - WTS_CONNECT_SESSION_FN_W pConnectSessionW; - WTS_CONNECT_SESSION_FN_A pConnectSessionA; - WTS_ENUMERATE_SERVERS_FN_W pEnumerateServersW; - WTS_ENUMERATE_SERVERS_FN_A pEnumerateServersA; - WTS_OPEN_SERVER_FN_W pOpenServerW; - WTS_OPEN_SERVER_FN_A pOpenServerA; - WTS_OPEN_SERVER_EX_FN_W pOpenServerExW; - WTS_OPEN_SERVER_EX_FN_A pOpenServerExA; + WINPR_ATTR_NODISCARD WTS_STOP_REMOTE_CONTROL_SESSION_FN pStopRemoteControlSession; + WINPR_ATTR_NODISCARD WTS_START_REMOTE_CONTROL_SESSION_FN_W pStartRemoteControlSessionW; + WINPR_ATTR_NODISCARD WTS_START_REMOTE_CONTROL_SESSION_FN_A pStartRemoteControlSessionA; + WINPR_ATTR_NODISCARD WTS_CONNECT_SESSION_FN_W pConnectSessionW; + WINPR_ATTR_NODISCARD WTS_CONNECT_SESSION_FN_A pConnectSessionA; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_SERVERS_FN_W pEnumerateServersW; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_SERVERS_FN_A pEnumerateServersA; + WINPR_ATTR_NODISCARD WTS_OPEN_SERVER_FN_W pOpenServerW; + WINPR_ATTR_NODISCARD WTS_OPEN_SERVER_FN_A pOpenServerA; + WINPR_ATTR_NODISCARD WTS_OPEN_SERVER_EX_FN_W pOpenServerExW; + WINPR_ATTR_NODISCARD WTS_OPEN_SERVER_EX_FN_A pOpenServerExA; WTS_CLOSE_SERVER_FN pCloseServer; - WTS_ENUMERATE_SESSIONS_FN_W pEnumerateSessionsW; - WTS_ENUMERATE_SESSIONS_FN_A pEnumerateSessionsA; - WTS_ENUMERATE_SESSIONS_EX_FN_W pEnumerateSessionsExW; - WTS_ENUMERATE_SESSIONS_EX_FN_A pEnumerateSessionsExA; - WTS_ENUMERATE_PROCESSES_FN_W pEnumerateProcessesW; - WTS_ENUMERATE_PROCESSES_FN_A pEnumerateProcessesA; - WTS_TERMINATE_PROCESS_FN pTerminateProcess; - WTS_QUERY_SESSION_INFORMATION_FN_W pQuerySessionInformationW; - WTS_QUERY_SESSION_INFORMATION_FN_A pQuerySessionInformationA; - WTS_QUERY_USER_CONFIG_FN_W pQueryUserConfigW; - WTS_QUERY_USER_CONFIG_FN_A pQueryUserConfigA; - WTS_SET_USER_CONFIG_FN_W pSetUserConfigW; - WTS_SET_USER_CONFIG_FN_A pSetUserConfigA; - WTS_SEND_MESSAGE_FN_W pSendMessageW; - WTS_SEND_MESSAGE_FN_A pSendMessageA; - WTS_DISCONNECT_SESSION_FN pDisconnectSession; - WTS_LOGOFF_SESSION_FN pLogoffSession; - WTS_SHUTDOWN_SYSTEM_FN pShutdownSystem; - WTS_WAIT_SYSTEM_EVENT_FN pWaitSystemEvent; - WTS_VIRTUAL_CHANNEL_OPEN_FN pVirtualChannelOpen; - WTS_VIRTUAL_CHANNEL_OPEN_EX_FN pVirtualChannelOpenEx; - WTS_VIRTUAL_CHANNEL_CLOSE_FN pVirtualChannelClose; - WTS_VIRTUAL_CHANNEL_READ_FN pVirtualChannelRead; - WTS_VIRTUAL_CHANNEL_WRITE_FN pVirtualChannelWrite; - WTS_VIRTUAL_CHANNEL_PURGE_INPUT_FN pVirtualChannelPurgeInput; - WTS_VIRTUAL_CHANNEL_PURGE_OUTPUT_FN pVirtualChannelPurgeOutput; - WTS_VIRTUAL_CHANNEL_QUERY_FN pVirtualChannelQuery; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_SESSIONS_FN_W pEnumerateSessionsW; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_SESSIONS_FN_A pEnumerateSessionsA; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_SESSIONS_EX_FN_W pEnumerateSessionsExW; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_SESSIONS_EX_FN_A pEnumerateSessionsExA; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_PROCESSES_FN_W pEnumerateProcessesW; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_PROCESSES_FN_A pEnumerateProcessesA; + WINPR_ATTR_NODISCARD WTS_TERMINATE_PROCESS_FN pTerminateProcess; + WINPR_ATTR_NODISCARD WTS_QUERY_SESSION_INFORMATION_FN_W pQuerySessionInformationW; + WINPR_ATTR_NODISCARD WTS_QUERY_SESSION_INFORMATION_FN_A pQuerySessionInformationA; + WINPR_ATTR_NODISCARD WTS_QUERY_USER_CONFIG_FN_W pQueryUserConfigW; + WINPR_ATTR_NODISCARD WTS_QUERY_USER_CONFIG_FN_A pQueryUserConfigA; + WINPR_ATTR_NODISCARD WTS_SET_USER_CONFIG_FN_W pSetUserConfigW; + WINPR_ATTR_NODISCARD WTS_SET_USER_CONFIG_FN_A pSetUserConfigA; + WINPR_ATTR_NODISCARD WTS_SEND_MESSAGE_FN_W pSendMessageW; + WINPR_ATTR_NODISCARD WTS_SEND_MESSAGE_FN_A pSendMessageA; + WINPR_ATTR_NODISCARD WTS_DISCONNECT_SESSION_FN pDisconnectSession; + WINPR_ATTR_NODISCARD WTS_LOGOFF_SESSION_FN pLogoffSession; + WINPR_ATTR_NODISCARD WTS_SHUTDOWN_SYSTEM_FN pShutdownSystem; + WINPR_ATTR_NODISCARD WTS_WAIT_SYSTEM_EVENT_FN pWaitSystemEvent; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_OPEN_FN pVirtualChannelOpen; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_OPEN_EX_FN pVirtualChannelOpenEx; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_CLOSE_FN pVirtualChannelClose; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_READ_FN pVirtualChannelRead; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_WRITE_FN pVirtualChannelWrite; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_PURGE_INPUT_FN pVirtualChannelPurgeInput; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_PURGE_OUTPUT_FN pVirtualChannelPurgeOutput; + WINPR_ATTR_NODISCARD WTS_VIRTUAL_CHANNEL_QUERY_FN pVirtualChannelQuery; WTS_FREE_MEMORY_FN pFreeMemory; - WTS_REGISTER_SESSION_NOTIFICATION_FN pRegisterSessionNotification; - WTS_UNREGISTER_SESSION_NOTIFICATION_FN pUnRegisterSessionNotification; - WTS_REGISTER_SESSION_NOTIFICATION_EX_FN pRegisterSessionNotificationEx; - WTS_UNREGISTER_SESSION_NOTIFICATION_EX_FN pUnRegisterSessionNotificationEx; - WTS_QUERY_USER_TOKEN_FN pQueryUserToken; - WTS_FREE_MEMORY_EX_FN_W pFreeMemoryExW; - WTS_FREE_MEMORY_EX_FN_A pFreeMemoryExA; - WTS_ENUMERATE_PROCESSES_EX_FN_W pEnumerateProcessesExW; - WTS_ENUMERATE_PROCESSES_EX_FN_A pEnumerateProcessesExA; - WTS_ENUMERATE_LISTENERS_FN_W pEnumerateListenersW; - WTS_ENUMERATE_LISTENERS_FN_A pEnumerateListenersA; - WTS_QUERY_LISTENER_CONFIG_FN_W pQueryListenerConfigW; - WTS_QUERY_LISTENER_CONFIG_FN_A pQueryListenerConfigA; - WTS_CREATE_LISTENER_FN_W pCreateListenerW; - WTS_CREATE_LISTENER_FN_A pCreateListenerA; - WTS_SET_LISTENER_SECURITY_FN_W pSetListenerSecurityW; - WTS_SET_LISTENER_SECURITY_FN_A pSetListenerSecurityA; - WTS_GET_LISTENER_SECURITY_FN_W pGetListenerSecurityW; - WTS_GET_LISTENER_SECURITY_FN_A pGetListenerSecurityA; - WTS_ENABLE_CHILD_SESSIONS_FN pEnableChildSessions; - WTS_IS_CHILD_SESSIONS_ENABLED_FN pIsChildSessionsEnabled; - WTS_GET_CHILD_SESSION_ID_FN pGetChildSessionId; - WTS_GET_ACTIVE_CONSOLE_SESSION_ID_FN pGetActiveConsoleSessionId; - WTS_LOGON_USER_FN pLogonUser; - WTS_LOGOFF_USER_FN pLogoffUser; - WTS_START_REMOTE_CONTROL_SESSION_EX_FN_W pStartRemoteControlSessionExW; - WTS_START_REMOTE_CONTROL_SESSION_EX_FN_A pStartRemoteControlSessionExA; + WINPR_ATTR_NODISCARD WTS_REGISTER_SESSION_NOTIFICATION_FN pRegisterSessionNotification; + WINPR_ATTR_NODISCARD WTS_UNREGISTER_SESSION_NOTIFICATION_FN pUnRegisterSessionNotification; + WINPR_ATTR_NODISCARD WTS_REGISTER_SESSION_NOTIFICATION_EX_FN pRegisterSessionNotificationEx; + WINPR_ATTR_NODISCARD WTS_UNREGISTER_SESSION_NOTIFICATION_EX_FN pUnRegisterSessionNotificationEx; + WINPR_ATTR_NODISCARD WTS_QUERY_USER_TOKEN_FN pQueryUserToken; + WINPR_ATTR_NODISCARD WTS_FREE_MEMORY_EX_FN_W pFreeMemoryExW; + WINPR_ATTR_NODISCARD WTS_FREE_MEMORY_EX_FN_A pFreeMemoryExA; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_PROCESSES_EX_FN_W pEnumerateProcessesExW; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_PROCESSES_EX_FN_A pEnumerateProcessesExA; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_LISTENERS_FN_W pEnumerateListenersW; + WINPR_ATTR_NODISCARD WTS_ENUMERATE_LISTENERS_FN_A pEnumerateListenersA; + WINPR_ATTR_NODISCARD WTS_QUERY_LISTENER_CONFIG_FN_W pQueryListenerConfigW; + WINPR_ATTR_NODISCARD WTS_QUERY_LISTENER_CONFIG_FN_A pQueryListenerConfigA; + WINPR_ATTR_NODISCARD WTS_CREATE_LISTENER_FN_W pCreateListenerW; + WINPR_ATTR_NODISCARD WTS_CREATE_LISTENER_FN_A pCreateListenerA; + WINPR_ATTR_NODISCARD WTS_SET_LISTENER_SECURITY_FN_W pSetListenerSecurityW; + WINPR_ATTR_NODISCARD WTS_SET_LISTENER_SECURITY_FN_A pSetListenerSecurityA; + WINPR_ATTR_NODISCARD WTS_GET_LISTENER_SECURITY_FN_W pGetListenerSecurityW; + WINPR_ATTR_NODISCARD WTS_GET_LISTENER_SECURITY_FN_A pGetListenerSecurityA; + WINPR_ATTR_NODISCARD WTS_ENABLE_CHILD_SESSIONS_FN pEnableChildSessions; + WINPR_ATTR_NODISCARD WTS_IS_CHILD_SESSIONS_ENABLED_FN pIsChildSessionsEnabled; + WINPR_ATTR_NODISCARD WTS_GET_CHILD_SESSION_ID_FN pGetChildSessionId; + WINPR_ATTR_NODISCARD WTS_GET_ACTIVE_CONSOLE_SESSION_ID_FN pGetActiveConsoleSessionId; + WINPR_ATTR_NODISCARD WTS_LOGON_USER_FN pLogonUser; + WINPR_ATTR_NODISCARD WTS_LOGOFF_USER_FN pLogoffUser; + WINPR_ATTR_NODISCARD WTS_START_REMOTE_CONTROL_SESSION_EX_FN_W pStartRemoteControlSessionExW; + WINPR_ATTR_NODISCARD WTS_START_REMOTE_CONTROL_SESSION_EX_FN_A pStartRemoteControlSessionExA; } WtsApiFunctionTable; typedef WtsApiFunctionTable* PWtsApiFunctionTable; diff --git a/winpr/libwinpr/sspi/Negotiate/negotiate.c b/winpr/libwinpr/sspi/Negotiate/negotiate.c index 901cf4376..caaaea76c 100644 --- a/winpr/libwinpr/sspi/Negotiate/negotiate.c +++ b/winpr/libwinpr/sspi/Negotiate/negotiate.c @@ -1567,9 +1567,7 @@ static SECURITY_STATUS SEC_ENTRY negotiate_QueryCredentialsAttributesA( static SECURITY_STATUS SEC_ENTRY negotiate_FreeCredentialsHandle(PCredHandle phCredential) { - MechCred* creds = NULL; - - creds = sspi_SecureHandleGetLowerPointer(phCredential); + MechCred* creds = sspi_SecureHandleGetLowerPointer(phCredential); if (!creds) return SEC_E_INVALID_HANDLE; diff --git a/winpr/libwinpr/utils/wlog/wlog.h b/winpr/libwinpr/utils/wlog/wlog.h index 9cbf99a3c..9e72c40e4 100644 --- a/winpr/libwinpr/utils/wlog/wlog.h +++ b/winpr/libwinpr/utils/wlog/wlog.h @@ -48,12 +48,12 @@ struct s_wLogAppender void* DataMessageContext; void* ImageMessageContext; void* PacketMessageContext; - WLOG_APPENDER_OPEN_FN Open; - WLOG_APPENDER_CLOSE_FN Close; - WLOG_APPENDER_WRITE_MESSAGE_FN WriteMessage; - WLOG_APPENDER_WRITE_DATA_MESSAGE_FN WriteDataMessage; - WLOG_APPENDER_WRITE_IMAGE_MESSAGE_FN WriteImageMessage; - WLOG_APPENDER_WRITE_PACKET_MESSAGE_FN WritePacketMessage; + WINPR_ATTR_NODISCARD WLOG_APPENDER_OPEN_FN Open; + WINPR_ATTR_NODISCARD WLOG_APPENDER_CLOSE_FN Close; + WINPR_ATTR_NODISCARD WLOG_APPENDER_WRITE_MESSAGE_FN WriteMessage; + WINPR_ATTR_NODISCARD WLOG_APPENDER_WRITE_DATA_MESSAGE_FN WriteDataMessage; + WINPR_ATTR_NODISCARD WLOG_APPENDER_WRITE_IMAGE_MESSAGE_FN WriteImageMessage; + WINPR_ATTR_NODISCARD WLOG_APPENDER_WRITE_PACKET_MESSAGE_FN WritePacketMessage; WLOG_APPENDER_FREE Free; WLOG_APPENDER_SET Set; }; @@ -75,7 +75,7 @@ struct s_wLog DWORD ChildrenCount; DWORD ChildrenSize; CRITICAL_SECTION lock; - const char* (*custom)(void*); + WINPR_ATTR_NODISCARD const char* (*custom)(void*); void* context; };