Dynamic channel internal functions now static.

This commit is contained in:
Armin Novak 2016-04-26 09:35:54 +02:00
parent ee186bec73
commit 48b11cf150
3 changed files with 57 additions and 38 deletions

View File

@ -31,6 +31,8 @@
#define TAG CHANNELS_TAG("drdynvc.client") #define TAG CHANNELS_TAG("drdynvc.client")
static void dvcman_channel_free(void* channel); static void dvcman_channel_free(void* channel);
static UINT drdynvc_write_data(drdynvcPlugin* drdynvc, UINT32 ChannelId,
const BYTE* data, UINT32 dataSize);
/** /**
* Function description * Function description
@ -100,7 +102,8 @@ static UINT dvcman_create_listener(IWTSVirtualChannelManager* pChannelMgr,
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT dvcman_register_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name, IWTSPlugin* pPlugin) static UINT dvcman_register_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints,
const char* name, IWTSPlugin* pPlugin)
{ {
DVCMAN* dvcman = ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->dvcman; DVCMAN* dvcman = ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->dvcman;
@ -118,7 +121,7 @@ static UINT dvcman_register_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const ch
} }
} }
IWTSPlugin* dvcman_get_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name) static IWTSPlugin* dvcman_get_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name)
{ {
int i; int i;
DVCMAN* dvcman = ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->dvcman; DVCMAN* dvcman = ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->dvcman;
@ -135,22 +138,23 @@ IWTSPlugin* dvcman_get_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* n
return NULL; return NULL;
} }
ADDIN_ARGV* dvcman_get_plugin_data(IDRDYNVC_ENTRY_POINTS* pEntryPoints) static ADDIN_ARGV* dvcman_get_plugin_data(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
{ {
return ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->args; return ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->args;
} }
void* dvcman_get_rdp_settings(IDRDYNVC_ENTRY_POINTS* pEntryPoints) static void* dvcman_get_rdp_settings(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
{ {
return (void*) ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->settings; return (void*) ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->settings;
} }
UINT32 dvcman_get_channel_id(IWTSVirtualChannel * channel) static UINT32 dvcman_get_channel_id(IWTSVirtualChannel * channel)
{ {
return ((DVCMAN_CHANNEL*) channel)->channel_id; return ((DVCMAN_CHANNEL*) channel)->channel_id;
} }
IWTSVirtualChannel* dvcman_find_channel_by_id(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId) static IWTSVirtualChannel* dvcman_find_channel_by_id(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId)
{ {
int index; int index;
BOOL found = FALSE; BOOL found = FALSE;
@ -178,7 +182,8 @@ IWTSVirtualChannel* dvcman_find_channel_by_id(IWTSVirtualChannelManager* pChanne
return (found) ? ((IWTSVirtualChannel*) channel) : NULL; return (found) ? ((IWTSVirtualChannel*) channel) : NULL;
} }
void* dvcman_get_channel_interface_by_name(IWTSVirtualChannelManager* pChannelMgr, const char* ChannelName) static void* dvcman_get_channel_interface_by_name(IWTSVirtualChannelManager* pChannelMgr,
const char* ChannelName)
{ {
int i; int i;
BOOL found = FALSE; BOOL found = FALSE;
@ -201,7 +206,7 @@ void* dvcman_get_channel_interface_by_name(IWTSVirtualChannelManager* pChannelMg
return (found) ? pInterface : NULL; return (found) ? pInterface : NULL;
} }
IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin) static IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin)
{ {
DVCMAN* dvcman; DVCMAN* dvcman;
@ -241,7 +246,8 @@ IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV* args, rdpSettings* settings) static UINT dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV* args,
rdpSettings* settings)
{ {
DVCMAN_ENTRY_POINTS entryPoints; DVCMAN_ENTRY_POINTS entryPoints;
PDVC_PLUGIN_ENTRY pDVCPluginEntry = NULL; PDVC_PLUGIN_ENTRY pDVCPluginEntry = NULL;
@ -267,7 +273,8 @@ static UINT dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV
return CHANNEL_RC_OK; return CHANNEL_RC_OK;
} }
static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, const char* ChannelName) static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, const char* ChannelName)
{ {
DVCMAN_CHANNEL* channel; DVCMAN_CHANNEL* channel;
@ -306,7 +313,7 @@ static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr
return channel; return channel;
} }
void dvcman_channel_free(void* arg) static void dvcman_channel_free(void* arg)
{ {
DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) arg; DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) arg;
@ -333,7 +340,7 @@ void dvcman_channel_free(void* arg)
free(channel); free(channel);
} }
void dvcman_free(IWTSVirtualChannelManager* pChannelMgr) static void dvcman_free(IWTSVirtualChannelManager* pChannelMgr)
{ {
int i; int i;
IWTSPlugin* pPlugin; IWTSPlugin* pPlugin;
@ -373,7 +380,7 @@ void dvcman_free(IWTSVirtualChannelManager* pChannelMgr)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT dvcman_init(IWTSVirtualChannelManager* pChannelMgr) static UINT dvcman_init(IWTSVirtualChannelManager* pChannelMgr)
{ {
int i; int i;
IWTSPlugin* pPlugin; IWTSPlugin* pPlugin;
@ -400,14 +407,16 @@ UINT dvcman_init(IWTSVirtualChannelManager* pChannelMgr)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT dvcman_write_channel(IWTSVirtualChannel* pChannel, ULONG cbSize, BYTE* pBuffer, void* pReserved) static UINT dvcman_write_channel(IWTSVirtualChannel* pChannel, ULONG cbSize,
const BYTE* pBuffer, void* pReserved)
{ {
UINT status; UINT status;
DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) pChannel; DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) pChannel;
EnterCriticalSection(&(channel->lock)); EnterCriticalSection(&(channel->lock));
status = drdynvc_write_data(channel->dvcman->drdynvc, channel->channel_id, pBuffer, cbSize); status = drdynvc_write_data(channel->dvcman->drdynvc,
channel->channel_id, pBuffer, cbSize);
LeaveCriticalSection(&(channel->lock)); LeaveCriticalSection(&(channel->lock));
@ -433,7 +442,8 @@ static UINT dvcman_close_channel_iface(IWTSVirtualChannel* pChannel)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT dvcman_create_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, const char* ChannelName) UINT dvcman_create_channel(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, const char* ChannelName)
{ {
int i; int i;
BOOL bAccept; BOOL bAccept;
@ -507,7 +517,8 @@ UINT dvcman_create_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 Channe
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId) static UINT dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId)
{ {
DVCMAN_CHANNEL* channel; DVCMAN_CHANNEL* channel;
IWTSVirtualChannelCallback* pCallback; IWTSVirtualChannelCallback* pCallback;
@ -540,7 +551,8 @@ UINT dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelI
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId) static UINT dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId)
{ {
DVCMAN_CHANNEL* channel; DVCMAN_CHANNEL* channel;
IWTSVirtualChannel* ichannel; IWTSVirtualChannel* ichannel;
@ -592,7 +604,8 @@ UINT dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 Channel
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, UINT32 length) static UINT dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, UINT32 length)
{ {
DVCMAN_CHANNEL* channel; DVCMAN_CHANNEL* channel;
@ -624,7 +637,8 @@ UINT dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr, U
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT dvcman_receive_channel_data(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, wStream* data) static UINT dvcman_receive_channel_data(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, wStream* data)
{ {
UINT status = CHANNEL_RC_OK; UINT status = CHANNEL_RC_OK;
DVCMAN_CHANNEL* channel; DVCMAN_CHANNEL* channel;
@ -696,7 +710,7 @@ static UINT drdynvc_write_variable_uint(wStream* s, UINT32 val)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT drdynvc_send(drdynvcPlugin* drdynvc, wStream* s) static UINT drdynvc_send(drdynvcPlugin* drdynvc, wStream* s)
{ {
UINT status; UINT status;
@ -725,7 +739,8 @@ UINT drdynvc_send(drdynvcPlugin* drdynvc, wStream* s)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT drdynvc_write_data(drdynvcPlugin* drdynvc, UINT32 ChannelId, BYTE* data, UINT32 dataSize) UINT drdynvc_write_data(drdynvcPlugin* drdynvc, UINT32 ChannelId,
const BYTE* data, UINT32 dataSize)
{ {
wStream* data_out; wStream* data_out;
unsigned long pos; unsigned long pos;
@ -863,7 +878,8 @@ static UINT drdynvc_send_capability_response(drdynvcPlugin* drdynvc)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT drdynvc_process_capability_request(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s) static UINT drdynvc_process_capability_request(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{ {
UINT status; UINT status;
@ -917,7 +933,8 @@ static UINT32 drdynvc_read_variable_uint(wStream* s, int cbLen)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s) static UINT drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{ {
unsigned long pos; unsigned long pos;
UINT status; UINT status;
@ -1002,7 +1019,8 @@ static UINT drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp, int c
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT drdynvc_process_data_first(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s) static UINT drdynvc_process_data_first(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{ {
UINT status; UINT status;
UINT32 Length; UINT32 Length;
@ -1040,7 +1058,8 @@ static UINT drdynvc_process_data(drdynvcPlugin* drdynvc, int Sp, int cbChId, wSt
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT drdynvc_process_close_request(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s) static UINT drdynvc_process_close_request(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{ {
int value; int value;
UINT error; UINT error;
@ -1138,7 +1157,7 @@ static wListDictionary* g_OpenHandles = NULL;
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT drdynvc_add_init_handle_data(void* pInitHandle, void* pUserData) static UINT drdynvc_add_init_handle_data(void* pInitHandle, void* pUserData)
{ {
if (!g_InitHandles) if (!g_InitHandles)
g_InitHandles = ListDictionary_New(TRUE); g_InitHandles = ListDictionary_New(TRUE);
@ -1158,14 +1177,14 @@ UINT drdynvc_add_init_handle_data(void* pInitHandle, void* pUserData)
return CHANNEL_RC_OK; return CHANNEL_RC_OK;
} }
void* drdynvc_get_init_handle_data(void* pInitHandle) static void* drdynvc_get_init_handle_data(void* pInitHandle)
{ {
void* pUserData = NULL; void* pUserData = NULL;
pUserData = ListDictionary_GetItemValue(g_InitHandles, pInitHandle); pUserData = ListDictionary_GetItemValue(g_InitHandles, pInitHandle);
return pUserData; return pUserData;
} }
void drdynvc_remove_init_handle_data(void* pInitHandle) static void drdynvc_remove_init_handle_data(void* pInitHandle)
{ {
ListDictionary_Remove(g_InitHandles, pInitHandle); ListDictionary_Remove(g_InitHandles, pInitHandle);
@ -1181,7 +1200,7 @@ void drdynvc_remove_init_handle_data(void* pInitHandle)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
UINT drdynvc_add_open_handle_data(DWORD openHandle, void* pUserData) static UINT drdynvc_add_open_handle_data(DWORD openHandle, void* pUserData)
{ {
void* pOpenHandle = (void*) (size_t) openHandle; void* pOpenHandle = (void*) (size_t) openHandle;
@ -1203,7 +1222,7 @@ UINT drdynvc_add_open_handle_data(DWORD openHandle, void* pUserData)
return CHANNEL_RC_OK; return CHANNEL_RC_OK;
} }
void* drdynvc_get_open_handle_data(DWORD openHandle) static void* drdynvc_get_open_handle_data(DWORD openHandle)
{ {
void* pUserData = NULL; void* pUserData = NULL;
void* pOpenHandle = (void*) (size_t) openHandle; void* pOpenHandle = (void*) (size_t) openHandle;
@ -1211,7 +1230,7 @@ void* drdynvc_get_open_handle_data(DWORD openHandle)
return pUserData; return pUserData;
} }
void drdynvc_remove_open_handle_data(DWORD openHandle) static void drdynvc_remove_open_handle_data(DWORD openHandle)
{ {
void* pOpenHandle = (void*) (size_t) openHandle; void* pOpenHandle = (void*) (size_t) openHandle;
@ -1370,7 +1389,8 @@ static void* drdynvc_virtual_channel_client_thread(void* arg)
* *
* @return 0 on success, otherwise a Win32 error code * @return 0 on success, otherwise a Win32 error code
*/ */
static UINT drdynvc_virtual_channel_event_connected(drdynvcPlugin* drdynvc, LPVOID pData, UINT32 dataLength) static UINT drdynvc_virtual_channel_event_connected(drdynvcPlugin* drdynvc,
LPVOID pData, UINT32 dataLength)
{ {
UINT32 status; UINT32 status;
UINT32 index; UINT32 index;
@ -1452,7 +1472,8 @@ static UINT drdynvc_virtual_channel_event_disconnected(drdynvcPlugin* drdynvc)
{ {
UINT status; UINT status;
if (MessageQueue_PostQuit(drdynvc->queue, 0) && (WaitForSingleObject(drdynvc->thread, INFINITE) == WAIT_FAILED)) if (MessageQueue_PostQuit(drdynvc->queue, 0) &&
(WaitForSingleObject(drdynvc->thread, INFINITE) == WAIT_FAILED))
{ {
status = GetLastError(); status = GetLastError();
WLog_ERR(TAG, "WaitForSingleObject failed with error %lu", status); WLog_ERR(TAG, "WaitForSingleObject failed with error %lu", status);
@ -1541,7 +1562,7 @@ static VOID VCAPITYPE drdynvc_virtual_channel_init_event(LPVOID pInitHandle,
* Channel Client Interface * Channel Client Interface
*/ */
int drdynvc_get_version(DrdynvcClientContext* context) static int drdynvc_get_version(DrdynvcClientContext* context)
{ {
drdynvcPlugin* drdynvc = (drdynvcPlugin*) context->handle; drdynvcPlugin* drdynvc = (drdynvcPlugin*) context->handle;
return drdynvc->version; return drdynvc->version;

View File

@ -138,6 +138,4 @@ struct drdynvc_plugin
IWTSVirtualChannelManager* channel_mgr; IWTSVirtualChannelManager* channel_mgr;
}; };
UINT drdynvc_write_data(drdynvcPlugin* plugin, UINT32 ChannelId, BYTE* data, UINT32 data_size);
#endif #endif

View File

@ -78,7 +78,7 @@ struct _IWTSVirtualChannel
/* Starts a write request on the channel. */ /* Starts a write request on the channel. */
UINT (*Write)(IWTSVirtualChannel *pChannel, UINT (*Write)(IWTSVirtualChannel *pChannel,
ULONG cbSize, ULONG cbSize,
BYTE *pBuffer, const BYTE *pBuffer,
void *pReserved); void *pReserved);
/* Closes the channel. */ /* Closes the channel. */
UINT (*Close)(IWTSVirtualChannel *pChannel); UINT (*Close)(IWTSVirtualChannel *pChannel);