FreeRDP
wf_cliprdr.c File Reference
#include <Ole2.h>
#include <ShlObj.h>
#include <Windows.h>
#include <WinUser.h>
#include <assert.h>
#include <winpr/crt.h>
#include <winpr/tchar.h>
#include <winpr/stream.h>
#include <freerdp/log.h>
#include <freerdp/client/cliprdr.h>
#include <Strsafe.h>
#include "wf_cliprdr.h"

Macros

#define CINTERFACE
 
#define COBJMACROS
 
#define TAG   CLIENT_TAG("windows")
 
#define DEBUG_CLIPRDR(...)   do { } while (0)
 
#define WM_CLIPRDR_MESSAGE   (WM_USER + 156)
 
#define OLE_SETCLIPBOARD   1
 

Typedefs

typedef BOOL(WINAPI * fnAddClipboardFormatListener) (HWND hwnd)
 
typedef BOOL(WINAPI * fnRemoveClipboardFormatListener) (HWND hwnd)
 
typedef BOOL(WINAPI * fnGetUpdatedClipboardFormats) (PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut)
 

Functions

static BOOL wf_create_file_obj (wfClipboard *cliprdrrdr, IDataObject **ppDataObject)
 
static void wf_destroy_file_obj (IDataObject *instance)
 
static UINT32 get_remote_format_id (wfClipboard *clipboard, UINT32 local_format)
 
static UINT cliprdr_send_data_request (wfClipboard *clipboard, UINT32 format)
 
static UINT cliprdr_send_lock (wfClipboard *clipboard)
 
static UINT cliprdr_send_unlock (wfClipboard *clipboard)
 
static UINT cliprdr_send_request_filecontents (wfClipboard *clipboard, const void *streamid, ULONG index, UINT32 flag, DWORD positionhigh, DWORD positionlow, ULONG request)
 
static void CliprdrDataObject_Delete (CliprdrDataObject *instance)
 
static CliprdrEnumFORMATETC * CliprdrEnumFORMATETC_New (ULONG nFormats, FORMATETC *pFormatEtc)
 
static void CliprdrEnumFORMATETC_Delete (CliprdrEnumFORMATETC *instance)
 
static void CliprdrStream_Delete (CliprdrStream *instance)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_QueryInterface (IStream *This, REFIID riid, void **ppvObject)
 
static ULONG STDMETHODCALLTYPE CliprdrStream_AddRef (IStream *This)
 
static ULONG STDMETHODCALLTYPE CliprdrStream_Release (IStream *This)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Read (IStream *This, void *pv, ULONG cb, ULONG *pcbRead)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Write (IStream *This, const void *pv, ULONG cb, ULONG *pcbWritten)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Seek (IStream *This, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_SetSize (IStream *This, ULARGE_INTEGER libNewSize)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_CopyTo (IStream *This, IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Commit (IStream *This, DWORD grfCommitFlags)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Revert (IStream *This)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_LockRegion (IStream *This, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_UnlockRegion (IStream *This, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Stat (IStream *This, STATSTG *pstatstg, DWORD grfStatFlag)
 
static HRESULT STDMETHODCALLTYPE CliprdrStream_Clone (IStream *This, IStream **ppstm)
 
static CliprdrStream * CliprdrStream_New (ULONG index, void *pData, const FILEDESCRIPTORW *dsc)
 
static LONG cliprdr_lookup_format (CliprdrDataObject *instance, FORMATETC *pFormatEtc)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_QueryInterface (IDataObject *This, REFIID riid, void **ppvObject)
 
static ULONG STDMETHODCALLTYPE CliprdrDataObject_AddRef (IDataObject *This)
 
static ULONG STDMETHODCALLTYPE CliprdrDataObject_Release (IDataObject *This)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetData (IDataObject *This, FORMATETC *pFormatEtc, STGMEDIUM *pMedium)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetDataHere (IDataObject *This, FORMATETC *pformatetc, STGMEDIUM *pmedium)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_QueryGetData (IDataObject *This, FORMATETC *pformatetc)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetCanonicalFormatEtc (IDataObject *This, FORMATETC *pformatectIn, FORMATETC *pformatetcOut)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_SetData (IDataObject *This, FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_EnumFormatEtc (IDataObject *This, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_DAdvise (IDataObject *This, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_DUnadvise (IDataObject *This, DWORD dwConnection)
 
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_EnumDAdvise (IDataObject *This, IEnumSTATDATA **ppenumAdvise)
 
static CliprdrDataObject * CliprdrDataObject_New (FORMATETC *fmtetc, STGMEDIUM *stgmed, ULONG count, void *data)
 
static void cliprdr_format_deep_copy (FORMATETC *dest, FORMATETC *source)
 
static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_QueryInterface (IEnumFORMATETC *This, REFIID riid, void **ppvObject)
 
static ULONG STDMETHODCALLTYPE CliprdrEnumFORMATETC_AddRef (IEnumFORMATETC *This)
 
static ULONG STDMETHODCALLTYPE CliprdrEnumFORMATETC_Release (IEnumFORMATETC *This)
 
static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Next (IEnumFORMATETC *This, ULONG celt, FORMATETC *rgelt, ULONG *pceltFetched)
 
static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Skip (IEnumFORMATETC *This, ULONG celt)
 
static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Reset (IEnumFORMATETC *This)
 
static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Clone (IEnumFORMATETC *This, IEnumFORMATETC **ppEnum)
 
static UINT32 get_local_format_id_by_name (wfClipboard *clipboard, const TCHAR *format_name)
 
static INLINE BOOL file_transferring (wfClipboard *clipboard)
 
static void map_ensure_capacity (wfClipboard *clipboard)
 
static BOOL clear_format_map (wfClipboard *clipboard)
 
static UINT cliprdr_send_tempdir (wfClipboard *clipboard)
 
BOOL cliprdr_GetUpdatedClipboardFormats (wfClipboard *clipboard, PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut)
 
static UINT cliprdr_send_format_list (wfClipboard *clipboard)
 
static UINT cliprdr_send_response_filecontents (wfClipboard *clipboard, UINT32 streamId, UINT32 size, BYTE *data)
 
static LRESULT CALLBACK cliprdr_proc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
 
static int create_cliprdr_window (wfClipboard *clipboard)
 
static DWORD WINAPI cliprdr_thread_func (LPVOID arg)
 
static void clear_file_array (wfClipboard *clipboard)
 
static BOOL wf_cliprdr_get_file_contents (WCHAR *file_name, BYTE *buffer, LONG positionLow, LONG positionHigh, DWORD nRequested, DWORD *puSize)
 
static FILEDESCRIPTORW * wf_cliprdr_get_file_descriptor (WCHAR *file_name, size_t pathLen)
 
static BOOL wf_cliprdr_array_ensure_capacity (wfClipboard *clipboard)
 
static BOOL wf_cliprdr_add_to_file_arrays (wfClipboard *clipboard, WCHAR *full_file_name, size_t pathLen)
 
static BOOL wf_cliprdr_traverse_directory (wfClipboard *clipboard, WCHAR *Dir, size_t pathLen)
 
static UINT wf_cliprdr_send_client_capabilities (wfClipboard *clipboard)
 
static UINT wf_cliprdr_monitor_ready (CliprdrClientContext *context, CLIPRDR_MONITOR_READY *monitorReady)
 
static UINT wf_cliprdr_server_capabilities (CliprdrClientContext *context, CLIPRDR_CAPABILITIES *capabilities)
 
static UINT wf_cliprdr_server_format_list (CliprdrClientContext *context, CLIPRDR_FORMAT_LIST *formatList)
 
static UINT wf_cliprdr_server_format_list_response (CliprdrClientContext *context, CLIPRDR_FORMAT_LIST_RESPONSE *formatListResponse)
 
static UINT wf_cliprdr_server_lock_clipboard_data (CliprdrClientContext *context, CLIPRDR_LOCK_CLIPBOARD_DATA *lockClipboardData)
 
static UINT wf_cliprdr_server_unlock_clipboard_data (CliprdrClientContext *context, CLIPRDR_UNLOCK_CLIPBOARD_DATA *unlockClipboardData)
 
static BOOL wf_cliprdr_process_filename (wfClipboard *clipboard, WCHAR *wFileName, size_t str_len)
 
static UINT wf_cliprdr_server_format_data_request (CliprdrClientContext *context, CLIPRDR_FORMAT_DATA_REQUEST *formatDataRequest)
 
static UINT wf_cliprdr_server_format_data_response (CliprdrClientContext *context, CLIPRDR_FORMAT_DATA_RESPONSE *formatDataResponse)
 
static UINT wf_cliprdr_server_file_contents_request (CliprdrClientContext *context, CLIPRDR_FILE_CONTENTS_REQUEST *fileContentsRequest)
 
static UINT wf_cliprdr_server_file_contents_response (CliprdrClientContext *context, CLIPRDR_FILE_CONTENTS_RESPONSE *fileContentsResponse)
 
BOOL wf_cliprdr_init (wfContext *wfc, CliprdrClientContext *cliprdr)
 
BOOL wf_cliprdr_uninit (wfContext *wfc, CliprdrClientContext *cliprdr)
 

Macro Definition Documentation

#define CINTERFACE

FreeRDP: A Remote Desktop Protocol Implementation Windows Clipboard Redirection

Copyright 2012 Jason Champion Copyright 2014 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com Copyright 2015 Thincast Technologies GmbH Copyright 2015 DI (FH) Martin Haimberger marti.nosp@m.n.ha.nosp@m.imber.nosp@m.ger@.nosp@m.thinc.nosp@m.ast..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

#define COBJMACROS
#define DEBUG_CLIPRDR (   ...)    do { } while (0)
#define OLE_SETCLIPBOARD   1
#define TAG   CLIENT_TAG("windows")
#define WM_CLIPRDR_MESSAGE   (WM_USER + 156)

Typedef Documentation

typedef BOOL(WINAPI* fnAddClipboardFormatListener) (HWND hwnd)
typedef BOOL(WINAPI* fnGetUpdatedClipboardFormats) (PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut)
typedef BOOL(WINAPI* fnRemoveClipboardFormatListener) (HWND hwnd)

Function Documentation

static void clear_file_array ( wfClipboard *  clipboard)
static

Here is the caller graph for this function:

static BOOL clear_format_map ( wfClipboard *  clipboard)
static

Here is the caller graph for this function:

static void cliprdr_format_deep_copy ( FORMATETC *  dest,
FORMATETC *  source 
)
static

IEnumFORMATETC

Here is the caller graph for this function:

BOOL cliprdr_GetUpdatedClipboardFormats ( wfClipboard *  clipboard,
PUINT  lpuiFormats,
UINT  cFormats,
PUINT  pcFormatsOut 
)
static LONG cliprdr_lookup_format ( CliprdrDataObject *  instance,
FORMATETC *  pFormatEtc 
)
static

IDataObject

Here is the caller graph for this function:

static LRESULT CALLBACK cliprdr_proc ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT cliprdr_send_data_request ( wfClipboard *  clipboard,
UINT32  format 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT cliprdr_send_format_list ( wfClipboard *  clipboard)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT cliprdr_send_lock ( wfClipboard *  clipboard)
static
UINT cliprdr_send_request_filecontents ( wfClipboard *  clipboard,
const void streamid,
ULONG  index,
UINT32  flag,
DWORD  positionhigh,
DWORD  positionlow,
ULONG  request 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT cliprdr_send_response_filecontents ( wfClipboard *  clipboard,
UINT32  streamId,
UINT32  size,
BYTE data 
)
static

Here is the caller graph for this function:

static UINT cliprdr_send_tempdir ( wfClipboard *  clipboard)
static

Here is the call graph for this function:

static UINT cliprdr_send_unlock ( wfClipboard *  clipboard)
static
static DWORD WINAPI cliprdr_thread_func ( LPVOID  arg)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static ULONG STDMETHODCALLTYPE CliprdrDataObject_AddRef ( IDataObject *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_DAdvise ( IDataObject *  This,
FORMATETC *  pformatetc,
DWORD  advf,
IAdviseSink *  pAdvSink,
DWORD *  pdwConnection 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

void CliprdrDataObject_Delete ( CliprdrDataObject *  instance)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_DUnadvise ( IDataObject *  This,
DWORD  dwConnection 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_EnumDAdvise ( IDataObject *  This,
IEnumSTATDATA **  ppenumAdvise 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_EnumFormatEtc ( IDataObject *  This,
DWORD  dwDirection,
IEnumFORMATETC **  ppenumFormatEtc 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetCanonicalFormatEtc ( IDataObject *  This,
FORMATETC *  pformatectIn,
FORMATETC *  pformatetcOut 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetData ( IDataObject *  This,
FORMATETC *  pFormatEtc,
STGMEDIUM *  pMedium 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetDataHere ( IDataObject *  This,
FORMATETC *  pformatetc,
STGMEDIUM *  pmedium 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static CliprdrDataObject* CliprdrDataObject_New ( FORMATETC *  fmtetc,
STGMEDIUM *  stgmed,
ULONG  count,
void data 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_QueryGetData ( IDataObject *  This,
FORMATETC *  pformatetc 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_QueryInterface ( IDataObject *  This,
REFIID  riid,
void **  ppvObject 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static ULONG STDMETHODCALLTYPE CliprdrDataObject_Release ( IDataObject *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrDataObject_SetData ( IDataObject *  This,
FORMATETC *  pformatetc,
STGMEDIUM *  pmedium,
BOOL  fRelease 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static ULONG STDMETHODCALLTYPE CliprdrEnumFORMATETC_AddRef ( IEnumFORMATETC *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Clone ( IEnumFORMATETC *  This,
IEnumFORMATETC **  ppEnum 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

void CliprdrEnumFORMATETC_Delete ( CliprdrEnumFORMATETC *  instance)
static

Here is the caller graph for this function:

CliprdrEnumFORMATETC * CliprdrEnumFORMATETC_New ( ULONG  nFormats,
FORMATETC *  pFormatEtc 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Next ( IEnumFORMATETC *  This,
ULONG  celt,
FORMATETC *  rgelt,
ULONG *  pceltFetched 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_QueryInterface ( IEnumFORMATETC *  This,
REFIID  riid,
void **  ppvObject 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static ULONG STDMETHODCALLTYPE CliprdrEnumFORMATETC_Release ( IEnumFORMATETC *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Reset ( IEnumFORMATETC *  This)
static

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrEnumFORMATETC_Skip ( IEnumFORMATETC *  This,
ULONG  celt 
)
static

Here is the caller graph for this function:

static ULONG STDMETHODCALLTYPE CliprdrStream_AddRef ( IStream *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Clone ( IStream *  This,
IStream **  ppstm 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Commit ( IStream *  This,
DWORD  grfCommitFlags 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_CopyTo ( IStream *  This,
IStream *  pstm,
ULARGE_INTEGER  cb,
ULARGE_INTEGER *  pcbRead,
ULARGE_INTEGER *  pcbWritten 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

void CliprdrStream_Delete ( CliprdrStream *  instance)
static

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_LockRegion ( IStream *  This,
ULARGE_INTEGER  libOffset,
ULARGE_INTEGER  cb,
DWORD  dwLockType 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static CliprdrStream* CliprdrStream_New ( ULONG  index,
void pData,
const FILEDESCRIPTORW *  dsc 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_QueryInterface ( IStream *  This,
REFIID  riid,
void **  ppvObject 
)
static

IStream

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Read ( IStream *  This,
void pv,
ULONG  cb,
ULONG *  pcbRead 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static ULONG STDMETHODCALLTYPE CliprdrStream_Release ( IStream *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Revert ( IStream *  This)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Seek ( IStream *  This,
LARGE_INTEGER  dlibMove,
DWORD  dwOrigin,
ULARGE_INTEGER *  plibNewPosition 
)
static

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_SetSize ( IStream *  This,
ULARGE_INTEGER  libNewSize 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Stat ( IStream *  This,
STATSTG *  pstatstg,
DWORD  grfStatFlag 
)
static

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_UnlockRegion ( IStream *  This,
ULARGE_INTEGER  libOffset,
ULARGE_INTEGER  cb,
DWORD  dwLockType 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static HRESULT STDMETHODCALLTYPE CliprdrStream_Write ( IStream *  This,
const void pv,
ULONG  cb,
ULONG *  pcbWritten 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static int create_cliprdr_window ( wfClipboard *  clipboard)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static INLINE BOOL file_transferring ( wfClipboard *  clipboard)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT32 get_local_format_id_by_name ( wfClipboard *  clipboard,
const TCHAR format_name 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT32 get_remote_format_id ( wfClipboard *  clipboard,
UINT32  local_format 
)
static

Here is the caller graph for this function:

static void map_ensure_capacity ( wfClipboard *  clipboard)
static

Here is the caller graph for this function:

static BOOL wf_cliprdr_add_to_file_arrays ( wfClipboard *  clipboard,
WCHAR *  full_file_name,
size_t  pathLen 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static BOOL wf_cliprdr_array_ensure_capacity ( wfClipboard *  clipboard)
static

Here is the caller graph for this function:

static BOOL wf_cliprdr_get_file_contents ( WCHAR *  file_name,
BYTE buffer,
LONG  positionLow,
LONG  positionHigh,
DWORD  nRequested,
DWORD *  puSize 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static FILEDESCRIPTORW* wf_cliprdr_get_file_descriptor ( WCHAR *  file_name,
size_t  pathLen 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

BOOL wf_cliprdr_init ( wfContext *  wfc,
CliprdrClientContext *  cliprdr 
)

FreeRDP: A Remote Desktop Protocol Implementation Windows Clipboard Redirection

Copyright 2012 Jason Champion

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_monitor_ready ( CliprdrClientContext *  context,
CLIPRDR_MONITOR_READY *  monitorReady 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static BOOL wf_cliprdr_process_filename ( wfClipboard *  clipboard,
WCHAR *  wFileName,
size_t  str_len 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_send_client_capabilities ( wfClipboard *  clipboard)
static

Here is the caller graph for this function:

static UINT wf_cliprdr_server_capabilities ( CliprdrClientContext *  context,
CLIPRDR_CAPABILITIES *  capabilities 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_file_contents_request ( CliprdrClientContext *  context,
CLIPRDR_FILE_CONTENTS_REQUEST *  fileContentsRequest 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_file_contents_response ( CliprdrClientContext *  context,
CLIPRDR_FILE_CONTENTS_RESPONSE *  fileContentsResponse 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_format_data_request ( CliprdrClientContext *  context,
CLIPRDR_FORMAT_DATA_REQUEST *  formatDataRequest 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_format_data_response ( CliprdrClientContext *  context,
CLIPRDR_FORMAT_DATA_RESPONSE *  formatDataResponse 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_format_list ( CliprdrClientContext *  context,
CLIPRDR_FORMAT_LIST *  formatList 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_format_list_response ( CliprdrClientContext *  context,
CLIPRDR_FORMAT_LIST_RESPONSE *  formatListResponse 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_lock_clipboard_data ( CliprdrClientContext *  context,
CLIPRDR_LOCK_CLIPBOARD_DATA *  lockClipboardData 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT wf_cliprdr_server_unlock_clipboard_data ( CliprdrClientContext *  context,
CLIPRDR_UNLOCK_CLIPBOARD_DATA *  unlockClipboardData 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static BOOL wf_cliprdr_traverse_directory ( wfClipboard *  clipboard,
WCHAR *  Dir,
size_t  pathLen 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

BOOL wf_cliprdr_uninit ( wfContext *  wfc,
CliprdrClientContext *  cliprdr 
)

Here is the call graph for this function:

Here is the caller graph for this function:

static BOOL wf_create_file_obj ( wfClipboard *  cliprdrrdr,
IDataObject **  ppDataObject 
)
static

Here is the call graph for this function:

Here is the caller graph for this function:

static void wf_destroy_file_obj ( IDataObject *  instance)
static

Here is the caller graph for this function: