Beispiel #1
0
/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT cliprdr_virtual_channel_event_terminated(cliprdrPlugin* cliprdr)
{
	cliprdr_remove_init_handle_data(cliprdr->InitHandle);

	free(cliprdr);
	return CHANNEL_RC_OK;
}
Beispiel #2
0
static void cliprdr_virtual_channel_event_terminated(cliprdrPlugin* cliprdr)
{
	MessagePipe_PostQuit(cliprdr->MsgPipe, 0);
	WaitForSingleObject(cliprdr->thread, INFINITE);

	MessagePipe_Free(cliprdr->MsgPipe);
	CloseHandle(cliprdr->thread);

	cliprdr->channelEntryPoints.pVirtualChannelClose(cliprdr->OpenHandle);

	if (cliprdr->data_in)
	{
		Stream_Free(cliprdr->data_in, TRUE);
		cliprdr->data_in = NULL;
	}

	cliprdr_remove_open_handle_data(cliprdr->OpenHandle);
	cliprdr_remove_init_handle_data(cliprdr->InitHandle);
}