static VOID VCAPITYPE rail_virtual_channel_open_event(DWORD openHandle, UINT event, LPVOID pData, UINT32 dataLength, UINT32 totalLength, UINT32 dataFlags) { railPlugin* rail; rail = (railPlugin*) rail_get_open_handle_data(openHandle); if (!rail) { WLog_ERR(TAG, "rail_virtual_channel_open_event: error no match"); return; } switch (event) { case CHANNEL_EVENT_DATA_RECEIVED: rail_virtual_channel_event_data_received(rail, pData, dataLength, totalLength, dataFlags); break; case CHANNEL_EVENT_WRITE_COMPLETE: Stream_Free((wStream*) pData, TRUE); break; case CHANNEL_EVENT_USER: break; } }
static VOID VCAPITYPE rail_virtual_channel_open_event_ex(LPVOID lpUserParam, DWORD openHandle, UINT event, LPVOID pData, UINT32 dataLength, UINT32 totalLength, UINT32 dataFlags) { UINT error = CHANNEL_RC_OK; railPlugin* rail = (railPlugin*) lpUserParam; if (!rail || (rail->OpenHandle != openHandle)) { WLog_ERR(TAG, "error no match"); return; } switch (event) { case CHANNEL_EVENT_DATA_RECEIVED: if ((error = rail_virtual_channel_event_data_received(rail, pData, dataLength, totalLength, dataFlags))) WLog_ERR(TAG, "rail_virtual_channel_event_data_received failed with error %"PRIu32"!", error); break; case CHANNEL_EVENT_WRITE_COMPLETE: Stream_Free((wStream*) pData, TRUE); break; case CHANNEL_EVENT_USER: break; } if (error && rail->rdpcontext) setChannelError(rail->rdpcontext, error, "rail_virtual_channel_open_event reported an error"); return; }