Merge pull request #4471 from akallabeth/thread_function_fix
Thread and Threadpool work function fix
This commit is contained in:
commit
14997f96e3
@ -219,7 +219,7 @@ static UINT audin_alsa_thread_receive(AudinALSADevice* alsa, BYTE* src,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void* audin_alsa_thread_func(void* arg)
|
||||
static DWORD WINAPI audin_alsa_thread_func(LPVOID arg)
|
||||
{
|
||||
long error;
|
||||
BYTE* buffer;
|
||||
@ -300,8 +300,8 @@ out:
|
||||
setChannelError(alsa->rdpcontext, error,
|
||||
"audin_alsa_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -427,7 +427,7 @@ static UINT audin_alsa_open(IAudinDevice* device, AudinReceive receive,
|
||||
}
|
||||
|
||||
if (!(alsa->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) audin_alsa_thread_func, alsa, 0, NULL)))
|
||||
audin_alsa_thread_func, alsa, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
goto error_out;
|
||||
|
@ -70,7 +70,7 @@ typedef struct _AudinOpenSLESDevice
|
||||
rdpContext* rdpcontext;
|
||||
} AudinOpenSLESDevice;
|
||||
|
||||
static void* audin_opensles_thread_func(void* arg)
|
||||
static DWORD WINAPI audin_opensles_thread_func(LPVOID arg)
|
||||
{
|
||||
union
|
||||
{
|
||||
@ -173,8 +173,8 @@ out:
|
||||
if (error && opensles->rdpcontext)
|
||||
setChannelError(opensles->rdpcontext, error, "audin_opensles_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -356,7 +356,7 @@ static UINT audin_opensles_open(IAudinDevice* device, AudinReceive receive,
|
||||
goto error_out;
|
||||
}
|
||||
if (!(opensles->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) audin_opensles_thread_func,
|
||||
audin_opensles_thread_func,
|
||||
opensles, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -173,7 +173,7 @@ static UINT audin_oss_set_format(IAudinDevice* device, audinFormat* format,
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static void* audin_oss_thread_func(void* arg)
|
||||
static DWORD WINAPI audin_oss_thread_func(LPVOID arg)
|
||||
{
|
||||
char dev_name[PATH_MAX] = "/dev/dsp";
|
||||
char mixer_name[PATH_MAX] = "/dev/mixer";
|
||||
@ -352,8 +352,8 @@ err_out:
|
||||
}
|
||||
|
||||
free(buffer);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -374,8 +374,7 @@ static UINT audin_oss_open(IAudinDevice* device, AudinReceive receive,
|
||||
return ERROR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
if (!(oss->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE)audin_oss_thread_func, oss, 0, NULL)))
|
||||
if (!(oss->thread = CreateThread(NULL, 0, audin_oss_thread_func, oss, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(oss->stopEvent);
|
||||
|
@ -94,7 +94,7 @@ static void CALLBACK waveInProc(HWAVEIN hWaveIn, UINT uMsg, DWORD_PTR dwInstance
|
||||
setChannelError(winmm->rdpcontext, error, "waveInProc reported an error");
|
||||
}
|
||||
|
||||
static DWORD audin_winmm_thread_func(void* arg)
|
||||
static DWORD WINAPI audin_winmm_thread_func(LPVOID arg)
|
||||
{
|
||||
AudinWinmmDevice* winmm = (AudinWinmmDevice*) arg;
|
||||
char *buffer;
|
||||
@ -332,8 +332,7 @@ static UINT audin_winmm_open(IAudinDevice* device, AudinReceive receive, void* u
|
||||
return ERROR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
if (!(winmm->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) audin_winmm_thread_func, winmm, 0, NULL)))
|
||||
if (!(winmm->thread = CreateThread(NULL, 0, audin_winmm_thread_func, winmm, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(winmm->stopEvent);
|
||||
|
@ -401,7 +401,7 @@ static UINT audin_server_recv_data(audin_server* audin, wStream* s,
|
||||
return success;
|
||||
}
|
||||
|
||||
static void* audin_server_thread_func(void* arg)
|
||||
static DWORD WINAPI audin_server_thread_func(LPVOID arg)
|
||||
{
|
||||
wStream* s;
|
||||
void* buffer;
|
||||
@ -596,8 +596,8 @@ out:
|
||||
setChannelError(audin->context.rdpcontext, error,
|
||||
"audin_server_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
static BOOL audin_server_open(audin_server_context* context)
|
||||
@ -632,8 +632,7 @@ static BOOL audin_server_open(audin_server_context* context)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(audin->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) audin_server_thread_func, (void*) audin, 0, NULL)))
|
||||
if (!(audin->thread = CreateThread(NULL, 0, audin_server_thread_func, (void*) audin, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(audin->stopEvent);
|
||||
|
@ -1057,7 +1057,7 @@ static VOID VCAPITYPE cliprdr_virtual_channel_open_event_ex(LPVOID lpUserParam,
|
||||
"cliprdr_virtual_channel_open_event_ex reported an error");
|
||||
}
|
||||
|
||||
static void* cliprdr_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI cliprdr_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -1099,8 +1099,8 @@ static void* cliprdr_virtual_channel_client_thread(void* arg)
|
||||
setChannelError(cliprdr->context->rdpcontext, error,
|
||||
"cliprdr_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1131,8 +1131,7 @@ static UINT cliprdr_virtual_channel_event_connected(cliprdrPlugin* cliprdr,
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
|
||||
if (!(cliprdr->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) cliprdr_virtual_channel_client_thread, (void*) cliprdr,
|
||||
if (!(cliprdr->thread = CreateThread(NULL, 0, cliprdr_virtual_channel_client_thread, (void*) cliprdr,
|
||||
0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -1319,7 +1319,7 @@ UINT cliprdr_server_read(CliprdrServerContext* context)
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static void* cliprdr_server_thread(void* arg)
|
||||
static DWORD WINAPI cliprdr_server_thread(LPVOID arg)
|
||||
{
|
||||
DWORD status;
|
||||
DWORD nCount;
|
||||
@ -1388,8 +1388,8 @@ out:
|
||||
setChannelError(context->rdpcontext, error,
|
||||
"cliprdr_server_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1478,8 +1478,7 @@ static UINT cliprdr_server_start(CliprdrServerContext* context)
|
||||
return ERROR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
if (!(cliprdr->Thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) cliprdr_server_thread, (void*) context, 0, NULL)))
|
||||
if (!(cliprdr->Thread = CreateThread(NULL, 0, cliprdr_server_thread, (void*) context, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(cliprdr->StopEvent);
|
||||
|
@ -1231,7 +1231,7 @@ static void VCAPITYPE drdynvc_virtual_channel_open_event_ex(LPVOID lpUserParam,
|
||||
setChannelError(drdynvc->rdpcontext, error, "drdynvc_virtual_channel_open_event reported an error");
|
||||
}
|
||||
|
||||
static void* drdynvc_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI drdynvc_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -1241,7 +1241,7 @@ static void* drdynvc_virtual_channel_client_thread(void* arg)
|
||||
if (!drdynvc)
|
||||
{
|
||||
ExitThread((DWORD) CHANNEL_RC_BAD_CHANNEL_HANDLE);
|
||||
return NULL;
|
||||
return CHANNEL_RC_BAD_CHANNEL_HANDLE;
|
||||
}
|
||||
|
||||
while (1)
|
||||
@ -1298,7 +1298,7 @@ static void* drdynvc_virtual_channel_client_thread(void* arg)
|
||||
"drdynvc_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD) error);
|
||||
return NULL;
|
||||
return error;
|
||||
}
|
||||
|
||||
static void drdynvc_queue_object_free(void* obj)
|
||||
@ -1380,8 +1380,7 @@ static UINT drdynvc_virtual_channel_event_connected(drdynvcPlugin* drdynvc, LPVO
|
||||
|
||||
drdynvc->state = DRDYNVC_STATE_CAPABILITIES;
|
||||
|
||||
if (!(drdynvc->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) drdynvc_virtual_channel_client_thread, (void*) drdynvc,
|
||||
if (!(drdynvc->thread = CreateThread(NULL, 0, drdynvc_virtual_channel_client_thread, (void*) drdynvc,
|
||||
0, NULL)))
|
||||
{
|
||||
error = ERROR_INTERNAL_ERROR;
|
||||
|
@ -33,7 +33,7 @@
|
||||
#define TAG CHANNELS_TAG("drdynvc.server")
|
||||
|
||||
|
||||
static void* drdynvc_server_thread(void* arg)
|
||||
static DWORD WINAPI drdynvc_server_thread(LPVOID arg)
|
||||
{
|
||||
#if 0
|
||||
wStream* s;
|
||||
@ -56,7 +56,7 @@ static void* drdynvc_server_thread(void* arg)
|
||||
{
|
||||
WLog_ERR(TAG, "Stream_New failed!");
|
||||
ExitThread((DWORD) CHANNEL_RC_NO_MEMORY);
|
||||
return NULL;
|
||||
return CHANNEL_RC_NO_MEMORY;
|
||||
}
|
||||
|
||||
if (WTSVirtualChannelQuery(context->priv->ChannelHandle, WTSVirtualEventHandle,
|
||||
@ -111,7 +111,7 @@ static void* drdynvc_server_thread(void* arg)
|
||||
#endif
|
||||
// WTF ... this code only reads data into the stream until there is no more memory
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -136,8 +136,7 @@ static UINT drdynvc_server_start(DrdynvcServerContext* context)
|
||||
return ERROR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
if (!(context->priv->Thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) drdynvc_server_thread, (void*) context, 0, NULL)))
|
||||
if (!(context->priv->Thread = CreateThread(NULL, 0, drdynvc_server_thread, (void*) context, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(context->priv->StopEvent);
|
||||
|
@ -743,7 +743,7 @@ static UINT drive_process_irp(DRIVE_DEVICE* drive, IRP* irp)
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* drive_thread_func(void* arg)
|
||||
static DWORD WINAPI drive_thread_func(LPVOID arg)
|
||||
{
|
||||
IRP* irp;
|
||||
wMessage message;
|
||||
@ -791,8 +791,8 @@ fail:
|
||||
if (error && drive && drive->rdpcontext)
|
||||
setChannelError(drive->rdpcontext, error, "drive_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -947,7 +947,7 @@ static UINT drive_register_drive_path(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints,
|
||||
goto out_error;
|
||||
}
|
||||
|
||||
if (!(drive->thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) drive_thread_func, drive,
|
||||
if (!(drive->thread = CreateThread(NULL, 0, drive_thread_func, drive,
|
||||
CREATE_SUSPENDED, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -105,7 +105,7 @@ static UINT echo_server_open_channel(echo_server* echo)
|
||||
return echo->echo_channel ? CHANNEL_RC_OK : ERROR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
static void* echo_server_thread_func(void* arg)
|
||||
static DWORD WINAPI echo_server_thread_func(LPVOID arg)
|
||||
{
|
||||
wStream* s;
|
||||
void* buffer;
|
||||
@ -206,8 +206,8 @@ static void* echo_server_thread_func(void* arg)
|
||||
{
|
||||
WLog_ERR(TAG, "Stream_New failed!");
|
||||
WTSVirtualChannelClose(echo->echo_channel);
|
||||
ExitThread((DWORD)ERROR_NOT_ENOUGH_MEMORY);
|
||||
return NULL;
|
||||
ExitThread(ERROR_NOT_ENOUGH_MEMORY);
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
|
||||
while (ready)
|
||||
@ -264,8 +264,8 @@ out:
|
||||
setChannelError(echo->context.rdpcontext, error,
|
||||
"echo_server_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -285,8 +285,7 @@ static UINT echo_server_open(echo_server_context* context)
|
||||
return ERROR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
if (!(echo->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) echo_server_thread_func, (void*) echo, 0, NULL)))
|
||||
if (!(echo->thread = CreateThread(NULL, 0, echo_server_thread_func, (void*) echo, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateEvent failed!");
|
||||
CloseHandle(echo->stopEvent);
|
||||
|
@ -1011,7 +1011,7 @@ static VOID VCAPITYPE encomsp_virtual_channel_open_event_ex(LPVOID lpUserParam,
|
||||
return;
|
||||
}
|
||||
|
||||
static void* encomsp_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI encomsp_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -1054,8 +1054,8 @@ static void* encomsp_virtual_channel_client_thread(void* arg)
|
||||
setChannelError(encomsp->rdpcontext, error,
|
||||
"encomsp_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1087,7 +1087,7 @@ static UINT encomsp_virtual_channel_event_connected(encomspPlugin* encomsp,
|
||||
}
|
||||
|
||||
if (!(encomsp->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) encomsp_virtual_channel_client_thread, (void*) encomsp,
|
||||
encomsp_virtual_channel_client_thread, (void*) encomsp,
|
||||
0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -174,7 +174,7 @@ static UINT encomsp_server_receive_pdu(EncomspServerContext* context,
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* encomsp_server_thread(void* arg)
|
||||
static DWORD WINAPI encomsp_server_thread(LPVOID arg)
|
||||
{
|
||||
wStream* s;
|
||||
DWORD nCount;
|
||||
@ -285,8 +285,8 @@ out:
|
||||
setChannelError(context->rdpcontext, error,
|
||||
"encomsp_server_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -309,7 +309,7 @@ static UINT encomsp_server_start(EncomspServerContext* context)
|
||||
}
|
||||
|
||||
if (!(context->priv->Thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) encomsp_server_thread, (void*) context, 0, NULL)))
|
||||
encomsp_server_thread, (void*) context, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(context->priv->StopEvent);
|
||||
|
@ -304,7 +304,7 @@ static UINT parallel_process_irp(PARALLEL_DEVICE* parallel, IRP* irp)
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static void* parallel_thread_func(void* arg)
|
||||
static DWORD WINAPI parallel_thread_func(LPVOID arg)
|
||||
{
|
||||
IRP* irp;
|
||||
wMessage message;
|
||||
@ -343,8 +343,8 @@ static void* parallel_thread_func(void* arg)
|
||||
setChannelError(parallel->rdpcontext, error,
|
||||
"parallel_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -466,7 +466,7 @@ UINT DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints)
|
||||
}
|
||||
|
||||
if (!(parallel->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) parallel_thread_func, (void*) parallel, 0, NULL)))
|
||||
parallel_thread_func, (void*) parallel, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
error = ERROR_INTERNAL_ERROR;
|
||||
|
@ -231,7 +231,7 @@ static UINT printer_process_irp(PRINTER_DEVICE* printer_dev, IRP* irp)
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static void* printer_thread_func(void* arg)
|
||||
static DWORD WINAPI printer_thread_func(LPVOID arg)
|
||||
{
|
||||
IRP* irp;
|
||||
PRINTER_DEVICE* printer_dev = (PRINTER_DEVICE*) arg;
|
||||
@ -275,8 +275,8 @@ static void* printer_thread_func(void* arg)
|
||||
setChannelError(printer_dev->rdpcontext, error,
|
||||
"printer_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD) error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -445,8 +445,7 @@ UINT printer_register(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints,
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
if (!(printer_dev->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) printer_thread_func, (void*) printer_dev, 0, NULL)))
|
||||
if (!(printer_dev->thread = CreateThread(NULL, 0, printer_thread_func, (void*) printer_dev, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
error = ERROR_INTERNAL_ERROR;
|
||||
|
@ -606,7 +606,7 @@ static VOID VCAPITYPE rail_virtual_channel_open_event_ex(LPVOID lpUserParam, DWO
|
||||
return;
|
||||
}
|
||||
|
||||
static void* rail_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI rail_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -650,8 +650,8 @@ static void* rail_virtual_channel_client_thread(void* arg)
|
||||
setChannelError(rail->rdpcontext, error,
|
||||
"rail_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -682,7 +682,7 @@ static UINT rail_virtual_channel_event_connected(railPlugin* rail, LPVOID pData,
|
||||
}
|
||||
|
||||
if (!(rail->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) rail_virtual_channel_client_thread, (void*) rail, 0,
|
||||
rail_virtual_channel_client_thread, (void*) rail, 0,
|
||||
NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -118,9 +118,9 @@ void first_hotplug(rdpdrPlugin* rdpdr)
|
||||
{
|
||||
}
|
||||
|
||||
static void* drive_hotplug_thread_func(void* arg)
|
||||
static DWORD WINAPI drive_hotplug_thread_func(LPVOID arg)
|
||||
{
|
||||
return NULL;
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static UINT drive_hotplug_thread_terminate(rdpdrPlugin* rdpdr)
|
||||
@ -280,7 +280,7 @@ LRESULT CALLBACK hotplug_proc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
|
||||
return DefWindowProc(hWnd, Msg, wParam, lParam);
|
||||
}
|
||||
|
||||
static void* drive_hotplug_thread_func(void* arg)
|
||||
static DWORD WINAPI drive_hotplug_thread_func(LPVOID arg)
|
||||
{
|
||||
rdpdrPlugin* rdpdr;
|
||||
WNDCLASSEX wnd_cls;
|
||||
@ -331,7 +331,7 @@ static void* drive_hotplug_thread_func(void* arg)
|
||||
}
|
||||
|
||||
UnregisterDeviceNotification(hDevNotify);
|
||||
return NULL;
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -558,7 +558,7 @@ void first_hotplug(rdpdrPlugin* rdpdr)
|
||||
}
|
||||
}
|
||||
|
||||
static void* drive_hotplug_thread_func(void* arg)
|
||||
static DWORD WINAPI drive_hotplug_thread_func(LPVOID arg)
|
||||
{
|
||||
rdpdrPlugin* rdpdr;
|
||||
FSEventStreamRef fsev;
|
||||
@ -579,7 +579,7 @@ static void* drive_hotplug_thread_func(void* arg)
|
||||
FSEventStreamStop(fsev);
|
||||
FSEventStreamRelease(fsev);
|
||||
ExitThread(CHANNEL_RC_OK);
|
||||
return NULL;
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -923,7 +923,7 @@ static void first_hotplug(rdpdrPlugin* rdpdr)
|
||||
}
|
||||
}
|
||||
|
||||
static void* drive_hotplug_thread_func(void* arg)
|
||||
static DWORD WINAPI drive_hotplug_thread_func(LPVOID arg)
|
||||
{
|
||||
rdpdrPlugin* rdpdr;
|
||||
int mfd;
|
||||
@ -994,8 +994,8 @@ out:
|
||||
"drive_hotplug_thread_func reported an error");
|
||||
|
||||
CloseHandle(rdpdr->stopEvent);
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1069,7 +1069,7 @@ static UINT rdpdr_process_connect(rdpdrPlugin* rdpdr)
|
||||
first_hotplug(rdpdr);
|
||||
|
||||
if (!(rdpdr->hotplugThread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) drive_hotplug_thread_func, rdpdr, 0, NULL)))
|
||||
drive_hotplug_thread_func, rdpdr, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
return ERROR_INTERNAL_ERROR;
|
||||
@ -1623,7 +1623,7 @@ static VOID VCAPITYPE rdpdr_virtual_channel_open_event_ex(LPVOID lpUserParam, DW
|
||||
return;
|
||||
}
|
||||
|
||||
static void* rdpdr_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI rdpdr_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -1633,7 +1633,7 @@ static void* rdpdr_virtual_channel_client_thread(void* arg)
|
||||
if (!rdpdr)
|
||||
{
|
||||
ExitThread((DWORD) CHANNEL_RC_NULL_DATA);
|
||||
return NULL;
|
||||
return CHANNEL_RC_NULL_DATA;
|
||||
}
|
||||
|
||||
if ((error = rdpdr_process_connect(rdpdr)))
|
||||
@ -1644,8 +1644,8 @@ static void* rdpdr_virtual_channel_client_thread(void* arg)
|
||||
setChannelError(rdpdr->rdpcontext, error,
|
||||
"rdpdr_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD) error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
while (1)
|
||||
@ -1671,14 +1671,14 @@ static void* rdpdr_virtual_channel_client_thread(void* arg)
|
||||
"rdpdr_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD) error);
|
||||
return NULL;
|
||||
return error;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1709,7 +1709,7 @@ static UINT rdpdr_virtual_channel_event_connected(rdpdrPlugin* rdpdr,
|
||||
}
|
||||
|
||||
if (!(rdpdr->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) rdpdr_virtual_channel_client_thread, (void*) rdpdr, 0,
|
||||
rdpdr_virtual_channel_client_thread, (void*) rdpdr, 0,
|
||||
NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -1129,7 +1129,7 @@ static UINT rdpdr_server_receive_pdu(RdpdrServerContext* context, wStream* s,
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* rdpdr_server_thread(void* arg)
|
||||
static DWORD WINAPI rdpdr_server_thread(LPVOID arg)
|
||||
{
|
||||
wStream* s;
|
||||
DWORD status;
|
||||
@ -1233,8 +1233,8 @@ out:
|
||||
setChannelError(context->rdpcontext, error,
|
||||
"rdpdr_server_thread reported an error");
|
||||
|
||||
ExitThread((DWORD) error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1260,7 +1260,7 @@ static UINT rdpdr_server_start(RdpdrServerContext* context)
|
||||
}
|
||||
|
||||
if (!(context->priv->Thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) rdpdr_server_thread, (void*) context, 0, NULL)))
|
||||
rdpdr_server_thread, (void*) context, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(context->priv->StopEvent);
|
||||
|
@ -169,7 +169,7 @@ UINT rdpei_add_frame(RdpeiClientContext* context)
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static void* rdpei_schedule_thread(void* arg)
|
||||
static DWORD WINAPI rdpei_schedule_thread(LPVOID arg)
|
||||
{
|
||||
DWORD status;
|
||||
RDPEI_PLUGIN* rdpei = (RDPEI_PLUGIN*) arg;
|
||||
@ -232,8 +232,8 @@ out:
|
||||
setChannelError(rdpei->rdpcontext, error,
|
||||
"rdpei_schedule_thread reported an error");
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -653,7 +653,7 @@ static UINT rdpei_plugin_initialize(IWTSPlugin* pPlugin,
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
if (!(rdpei->thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)
|
||||
if (!(rdpei->thread = CreateThread(NULL, 0,
|
||||
rdpei_schedule_thread, (void*) rdpei, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
|
@ -1327,7 +1327,7 @@ static UINT rdpgfx_server_receive_pdu(RdpgfxServerContext* context, wStream* s)
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* rdpgfx_server_thread_func(void* arg)
|
||||
static DWORD WINAPI rdpgfx_server_thread_func(LPVOID arg)
|
||||
{
|
||||
RdpgfxServerContext* context = (RdpgfxServerContext*) arg;
|
||||
RdpgfxServerPrivate* priv = context->priv;
|
||||
@ -1369,8 +1369,8 @@ static void* rdpgfx_server_thread_func(void* arg)
|
||||
setChannelError(context->rdpcontext, error,
|
||||
"rdpgfx_server_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
static BOOL rdpgfx_server_open(RdpgfxServerContext* context)
|
||||
@ -1437,7 +1437,6 @@ static BOOL rdpgfx_server_open(RdpgfxServerContext* context)
|
||||
}
|
||||
|
||||
if (!(priv->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE)
|
||||
rdpgfx_server_thread_func,
|
||||
(void*) context, 0, NULL)))
|
||||
{
|
||||
|
@ -103,7 +103,7 @@ struct rdpsnd_plugin
|
||||
*/
|
||||
static UINT rdpsnd_confirm_wave(rdpsndPlugin* rdpsnd, RDPSND_WAVE* wave);
|
||||
|
||||
static void* rdpsnd_schedule_thread(void* arg)
|
||||
static DWORD WINAPI rdpsnd_schedule_thread(LPVOID arg)
|
||||
{
|
||||
wMessage message;
|
||||
UINT16 wTimeDiff;
|
||||
@ -183,8 +183,8 @@ static void* rdpsnd_schedule_thread(void* arg)
|
||||
setChannelError(rdpsnd->rdpcontext, error,
|
||||
"rdpsnd_schedule_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1115,7 +1115,7 @@ static UINT rdpsnd_process_connect(rdpsndPlugin* rdpsnd)
|
||||
}
|
||||
|
||||
rdpsnd->ScheduleThread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) rdpsnd_schedule_thread,
|
||||
rdpsnd_schedule_thread,
|
||||
(void*) rdpsnd, 0, NULL);
|
||||
|
||||
if (!rdpsnd->ScheduleThread)
|
||||
@ -1271,7 +1271,7 @@ static VOID VCAPITYPE rdpsnd_virtual_channel_open_event_ex(LPVOID lpUserParam, D
|
||||
"rdpsnd_virtual_channel_open_event_ex reported an error");
|
||||
}
|
||||
|
||||
static void* rdpsnd_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI rdpsnd_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -1322,8 +1322,8 @@ out:
|
||||
"rdpsnd_virtual_channel_client_thread reported an error");
|
||||
|
||||
rdpsnd_process_disconnect(rdpsnd);
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1355,7 +1355,7 @@ static UINT rdpsnd_virtual_channel_event_connected(rdpsndPlugin* rdpsnd,
|
||||
}
|
||||
|
||||
rdpsnd->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) rdpsnd_virtual_channel_client_thread, (void*) rdpsnd,
|
||||
rdpsnd_virtual_channel_client_thread, (void*) rdpsnd,
|
||||
0, NULL);
|
||||
|
||||
if (!rdpsnd->thread)
|
||||
|
@ -239,7 +239,7 @@ out_free:
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* rdpsnd_server_thread(void* arg)
|
||||
static DWORD WINAPI rdpsnd_server_thread(LPVOID arg)
|
||||
{
|
||||
DWORD nCount, status;
|
||||
HANDLE events[8];
|
||||
@ -293,8 +293,8 @@ out:
|
||||
setChannelError(context->rdpcontext, error,
|
||||
"rdpsnd_server_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -701,7 +701,7 @@ static UINT rdpsnd_server_start(RdpsndServerContext* context)
|
||||
}
|
||||
|
||||
context->priv->Thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) rdpsnd_server_thread, (void*) context, 0, NULL);
|
||||
rdpsnd_server_thread, (void*) context, 0, NULL);
|
||||
|
||||
if (!context->priv->Thread)
|
||||
{
|
||||
|
@ -804,7 +804,7 @@ static VOID VCAPITYPE remdesk_virtual_channel_open_event_ex(LPVOID lpUserParam,
|
||||
"remdesk_virtual_channel_open_event_ex reported an error");
|
||||
}
|
||||
|
||||
static void* remdesk_virtual_channel_client_thread(void* arg)
|
||||
static DWORD WINAPI remdesk_virtual_channel_client_thread(LPVOID arg)
|
||||
{
|
||||
wStream* data;
|
||||
wMessage message;
|
||||
@ -847,8 +847,8 @@ static void* remdesk_virtual_channel_client_thread(void* arg)
|
||||
setChannelError(remdesk->rdpcontext, error,
|
||||
"remdesk_virtual_channel_client_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -882,7 +882,7 @@ static UINT remdesk_virtual_channel_event_connected(remdeskPlugin* remdesk,
|
||||
}
|
||||
|
||||
remdesk->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) remdesk_virtual_channel_client_thread, (void*) remdesk,
|
||||
remdesk_virtual_channel_client_thread, (void*) remdesk,
|
||||
0, NULL);
|
||||
|
||||
if (!remdesk->thread)
|
||||
|
@ -578,7 +578,7 @@ static UINT remdesk_server_receive_pdu(RemdeskServerContext* context,
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* remdesk_server_thread(void* arg)
|
||||
static DWORD WINAPI remdesk_server_thread(LPVOID arg)
|
||||
{
|
||||
wStream* s;
|
||||
DWORD status;
|
||||
@ -700,8 +700,8 @@ out:
|
||||
setChannelError(context->rdpcontext, error,
|
||||
"remdesk_server_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -727,7 +727,7 @@ static UINT remdesk_server_start(RemdeskServerContext* context)
|
||||
}
|
||||
|
||||
if (!(context->priv->Thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) remdesk_server_thread, (void*) context, 0, NULL)))
|
||||
remdesk_server_thread, (void*) context, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "CreateThread failed!");
|
||||
CloseHandle(context->priv->StopEvent);
|
||||
|
@ -483,7 +483,7 @@ static UINT serial_process_irp(SERIAL_DEVICE* serial, IRP* irp)
|
||||
}
|
||||
|
||||
|
||||
static void* irp_thread_func(void* arg)
|
||||
static DWORD WINAPI irp_thread_func(LPVOID arg)
|
||||
{
|
||||
IRP_THREAD_DATA* data = (IRP_THREAD_DATA*)arg;
|
||||
UINT error;
|
||||
@ -509,8 +509,8 @@ error_out:
|
||||
* the CompletionId whereas the thread is not yet
|
||||
* terminated */
|
||||
free(data);
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
@ -642,7 +642,7 @@ static void create_irp_thread(SERIAL_DEVICE* serial, IRP* irp)
|
||||
/* data freed by irp_thread_func */
|
||||
irpThread = CreateThread(NULL,
|
||||
0,
|
||||
(LPTHREAD_START_ROUTINE)irp_thread_func,
|
||||
irp_thread_func,
|
||||
(void*)data,
|
||||
0,
|
||||
NULL);
|
||||
@ -697,7 +697,7 @@ static void terminate_pending_irp_threads(SERIAL_DEVICE* serial)
|
||||
}
|
||||
|
||||
|
||||
static void* serial_thread_func(void* arg)
|
||||
static DWORD WINAPI serial_thread_func(LPVOID arg)
|
||||
{
|
||||
IRP* irp;
|
||||
wMessage message;
|
||||
@ -736,8 +736,8 @@ static void* serial_thread_func(void* arg)
|
||||
setChannelError(serial->rdpcontext, error,
|
||||
"serial_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD) error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
@ -952,7 +952,7 @@ UINT DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints)
|
||||
|
||||
if (!(serial->MainThread = CreateThread(NULL,
|
||||
0,
|
||||
(LPTHREAD_START_ROUTINE) serial_thread_func,
|
||||
serial_thread_func,
|
||||
(void*) serial,
|
||||
0,
|
||||
NULL)))
|
||||
|
@ -34,8 +34,9 @@
|
||||
|
||||
#include "smartcard_main.h"
|
||||
|
||||
void* smartcard_context_thread(SMARTCARD_CONTEXT* pContext)
|
||||
static DWORD WINAPI smartcard_context_thread(LPVOID arg)
|
||||
{
|
||||
SMARTCARD_CONTEXT* pContext = (SMARTCARD_CONTEXT*)arg;
|
||||
DWORD nCount;
|
||||
LONG status = 0;
|
||||
DWORD waitStatus;
|
||||
@ -107,8 +108,8 @@ void* smartcard_context_thread(SMARTCARD_CONTEXT* pContext)
|
||||
setChannelError(smartcard->rdpcontext, error,
|
||||
"smartcard_context_thread reported an error");
|
||||
|
||||
ExitThread((DWORD)status);
|
||||
return NULL;
|
||||
ExitThread(status);
|
||||
return error;
|
||||
}
|
||||
|
||||
SMARTCARD_CONTEXT* smartcard_context_new(SMARTCARD_DEVICE* smartcard,
|
||||
@ -134,7 +135,7 @@ SMARTCARD_CONTEXT* smartcard_context_new(SMARTCARD_DEVICE* smartcard,
|
||||
}
|
||||
|
||||
pContext->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) smartcard_context_thread,
|
||||
smartcard_context_thread,
|
||||
pContext, 0, NULL);
|
||||
|
||||
if (!pContext->thread)
|
||||
@ -494,7 +495,7 @@ UINT smartcard_process_irp(SMARTCARD_DEVICE* smartcard, IRP* irp)
|
||||
return CHANNEL_RC_OK;
|
||||
}
|
||||
|
||||
static void* smartcard_thread_func(void* arg)
|
||||
static DWORD WINAPI smartcard_thread_func(LPVOID arg)
|
||||
{
|
||||
IRP* irp;
|
||||
DWORD nCount;
|
||||
@ -645,8 +646,8 @@ out:
|
||||
setChannelError(smartcard->rdpcontext, error,
|
||||
"smartcard_thread_func reported an error");
|
||||
|
||||
ExitThread((DWORD)error);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -746,7 +747,7 @@ UINT DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints)
|
||||
}
|
||||
|
||||
smartcard->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) smartcard_thread_func,
|
||||
smartcard_thread_func,
|
||||
smartcard, CREATE_SUSPENDED, NULL);
|
||||
|
||||
if (!smartcard->thread)
|
||||
|
@ -139,7 +139,7 @@ static int connect_to_sshagent(const char* udspath)
|
||||
*
|
||||
* @return NULL
|
||||
*/
|
||||
static void* sshagent_read_thread(void* data)
|
||||
static DWORD WINAPI sshagent_read_thread(LPVOID data)
|
||||
{
|
||||
SSHAGENT_CHANNEL_CALLBACK* callback = (SSHAGENT_CHANNEL_CALLBACK*)data;
|
||||
BYTE buffer[4096];
|
||||
@ -189,8 +189,8 @@ static void* sshagent_read_thread(void* data)
|
||||
setChannelError(callback->rdpcontext, status,
|
||||
"sshagent_read_thread reported an error");
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
ExitThread(status);
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -302,7 +302,7 @@ static UINT sshagent_on_new_channel_connection(IWTSListenerCallback* pListenerCa
|
||||
callback->thread
|
||||
= CreateThread(NULL,
|
||||
0,
|
||||
(LPTHREAD_START_ROUTINE) sshagent_read_thread,
|
||||
sshagent_read_thread,
|
||||
(void*) callback,
|
||||
0,
|
||||
NULL);
|
||||
|
@ -737,7 +737,7 @@ static BOOL tsmf_sample_playback(TSMF_SAMPLE* sample)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void* tsmf_stream_ack_func(void* arg)
|
||||
static DWORD WINAPI tsmf_stream_ack_func(LPVOID arg)
|
||||
{
|
||||
HANDLE hdl[2];
|
||||
TSMF_STREAM* stream = (TSMF_STREAM*) arg;
|
||||
@ -817,11 +817,11 @@ static void* tsmf_stream_ack_func(void* arg)
|
||||
"tsmf_stream_ack_func reported an error");
|
||||
|
||||
DEBUG_TSMF("out %"PRIu32"", stream->stream_id);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
static void* tsmf_stream_playback_func(void* arg)
|
||||
static DWORD WINAPI tsmf_stream_playback_func(LPVOID arg)
|
||||
{
|
||||
HANDLE hdl[2];
|
||||
TSMF_SAMPLE* sample = NULL;
|
||||
@ -907,8 +907,8 @@ static void* tsmf_stream_playback_func(void* arg)
|
||||
"tsmf_stream_playback_func reported an error");
|
||||
|
||||
DEBUG_TSMF("out %"PRIu32"", stream->stream_id);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
ExitThread(error);
|
||||
return error;
|
||||
}
|
||||
|
||||
static BOOL tsmf_stream_start(TSMF_STREAM* stream)
|
||||
@ -1259,13 +1259,13 @@ TSMF_STREAM* tsmf_stream_new(TSMF_PRESENTATION* presentation, UINT32 stream_id,
|
||||
goto error_sample_ack_list;
|
||||
|
||||
stream->sample_ack_list->object.fnObjectFree = tsmf_sample_free;
|
||||
stream->play_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) tsmf_stream_playback_func,
|
||||
stream->play_thread = CreateThread(NULL, 0, tsmf_stream_playback_func,
|
||||
stream, CREATE_SUSPENDED, NULL);
|
||||
|
||||
if (!stream->play_thread)
|
||||
goto error_play_thread;
|
||||
|
||||
stream->ack_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)tsmf_stream_ack_func, stream,
|
||||
stream->ack_thread = CreateThread(NULL, 0, tsmf_stream_ack_func, stream,
|
||||
CREATE_SUSPENDED, NULL);
|
||||
|
||||
if (!stream->ack_thread)
|
||||
|
@ -494,7 +494,7 @@ static DWORD android_verify_changed_certificate(freerdp* instance,
|
||||
return res;
|
||||
}
|
||||
|
||||
static void* jni_input_thread(void* arg)
|
||||
static DWORD WINAPI jni_input_thread(LPVOID arg)
|
||||
{
|
||||
HANDLE event[2];
|
||||
wMessageQueue* queue;
|
||||
@ -536,7 +536,7 @@ static void* jni_input_thread(void* arg)
|
||||
disconnect:
|
||||
MessageQueue_PostQuit(queue, 0);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int android_freerdp_run(freerdp* instance)
|
||||
@ -553,8 +553,7 @@ static int android_freerdp_run(freerdp* instance)
|
||||
|
||||
if (async_input)
|
||||
{
|
||||
if (!(inputThread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) jni_input_thread, instance, 0, NULL)))
|
||||
if (!(inputThread = CreateThread(NULL, 0, jni_input_thread, instance, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "async input: failed to create input thread");
|
||||
goto disconnect;
|
||||
@ -627,7 +626,7 @@ disconnect:
|
||||
return status;
|
||||
}
|
||||
|
||||
static void* android_thread_func(void* param)
|
||||
static DWORD WINAPI android_thread_func(LPVOID param)
|
||||
{
|
||||
DWORD status = ERROR_BAD_ARGUMENTS;
|
||||
freerdp* instance = param;
|
||||
@ -667,7 +666,7 @@ fail:
|
||||
|
||||
WLog_DBG(TAG, "Quit.");
|
||||
ExitThread(status);
|
||||
return NULL;
|
||||
return status;
|
||||
}
|
||||
|
||||
static BOOL android_client_new(freerdp* instance, rdpContext* context)
|
||||
@ -869,8 +868,7 @@ static jboolean JNICALL jni_freerdp_connect(JNIEnv* env, jclass cls,
|
||||
|
||||
ctx = (androidContext*)inst->context;
|
||||
|
||||
if (!(ctx->thread = CreateThread(
|
||||
NULL, 0, (LPTHREAD_START_ROUTINE)android_thread_func,
|
||||
if (!(ctx->thread = CreateThread(NULL, 0, android_thread_func,
|
||||
inst, 0, NULL)))
|
||||
{
|
||||
return JNI_FALSE;
|
||||
|
@ -113,8 +113,9 @@ static BOOL tf_post_connect(freerdp* instance)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void* tf_client_thread_proc(freerdp* instance)
|
||||
static DWORD WINAPI tf_client_thread_proc(LPVOID arg)
|
||||
{
|
||||
freerdp* instance = (freerdp*)arg;
|
||||
DWORD nCount;
|
||||
DWORD status;
|
||||
HANDLE handles[64];
|
||||
@ -122,7 +123,7 @@ static void* tf_client_thread_proc(freerdp* instance)
|
||||
if (!freerdp_connect(instance))
|
||||
{
|
||||
WLog_ERR(TAG, "connection failure");
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (!freerdp_shall_disconnect(instance))
|
||||
@ -155,7 +156,7 @@ static void* tf_client_thread_proc(freerdp* instance)
|
||||
|
||||
freerdp_disconnect(instance);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
@ -196,8 +197,7 @@ int main(int argc, char* argv[])
|
||||
instance->settings))
|
||||
return winpr_exit(-1);
|
||||
|
||||
if (!(thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)
|
||||
tf_client_thread_proc, instance, 0, NULL)))
|
||||
if (!(thread = CreateThread(NULL, 0, tf_client_thread_proc, instance, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create client thread");
|
||||
}
|
||||
|
@ -583,7 +583,7 @@ static BOOL wf_auto_reconnect(freerdp* instance)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void* wf_input_thread(void* arg)
|
||||
static DWORD WINAPI wf_input_thread(LPVOID arg)
|
||||
{
|
||||
int status;
|
||||
wMessage message;
|
||||
@ -609,7 +609,7 @@ static void* wf_input_thread(void* arg)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static DWORD WINAPI wf_client_thread(LPVOID lpParam)
|
||||
@ -644,8 +644,7 @@ static DWORD WINAPI wf_client_thread(LPVOID lpParam)
|
||||
|
||||
if (async_input)
|
||||
{
|
||||
if (!(input_thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) wf_input_thread,
|
||||
if (!(input_thread = CreateThread(NULL, 0, wf_input_thread,
|
||||
instance, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create async input thread.");
|
||||
|
@ -1565,7 +1565,7 @@ static int create_cliprdr_window(wfClipboard* clipboard)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* cliprdr_thread_func(void* arg)
|
||||
static DWORD WINAPI cliprdr_thread_func(LPVOID arg)
|
||||
{
|
||||
int ret;
|
||||
MSG msg;
|
||||
@ -1576,7 +1576,7 @@ static void* cliprdr_thread_func(void* arg)
|
||||
if ((ret = create_cliprdr_window(clipboard)) != 0)
|
||||
{
|
||||
DEBUG_CLIPRDR("error: create clipboard window failed.");
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while ((mcode = GetMessage(&msg, 0, 0, 0)) != 0)
|
||||
@ -1594,7 +1594,7 @@ static void* cliprdr_thread_func(void* arg)
|
||||
}
|
||||
|
||||
OleUninitialize();
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void clear_file_array(wfClipboard* clipboard)
|
||||
@ -2520,8 +2520,7 @@ BOOL wf_cliprdr_init(wfContext* wfc, CliprdrClientContext* cliprdr)
|
||||
_T("request_filecontents_event"))))
|
||||
goto error;
|
||||
|
||||
if (!(clipboard->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) cliprdr_thread_func, clipboard, 0, NULL)))
|
||||
if (!(clipboard->thread = CreateThread(NULL, 0, cliprdr_thread_func, clipboard, 0, NULL)))
|
||||
goto error;
|
||||
|
||||
cliprdr->MonitorReady = wf_cliprdr_monitor_ready;
|
||||
|
@ -1314,7 +1314,7 @@ static void xf_post_disconnect(freerdp* instance)
|
||||
}
|
||||
|
||||
if ((xfc->window != NULL) && (xfc->drawable == xfc->window->handle))
|
||||
xfc->drawable = NULL;
|
||||
xfc->drawable = 0;
|
||||
else
|
||||
xf_DestroyDummyWindow(xfc, xfc->drawable);
|
||||
|
||||
@ -1332,7 +1332,7 @@ static int xf_logon_error_info(freerdp* instance, UINT32 data, UINT32 type)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void* xf_input_thread(void* arg)
|
||||
static DWORD WINAPI xf_input_thread(LPVOID arg)
|
||||
{
|
||||
BOOL running = TRUE;
|
||||
DWORD status;
|
||||
@ -1411,7 +1411,7 @@ static void* xf_input_thread(void* arg)
|
||||
|
||||
MessageQueue_PostQuit(queue, 0);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static BOOL xf_auto_reconnect(freerdp* instance)
|
||||
@ -1463,10 +1463,10 @@ static BOOL xf_auto_reconnect(freerdp* instance)
|
||||
* @param instance - pointer to the rdp_freerdp structure that contains the session's settings
|
||||
* @return A code from the enum XF_EXIT_CODE (0 if successful)
|
||||
*/
|
||||
static void* xf_client_thread(void* param)
|
||||
static DWORD WINAPI xf_client_thread(LPVOID param)
|
||||
{
|
||||
BOOL status;
|
||||
int exit_code;
|
||||
DWORD exit_code = 0;
|
||||
DWORD nCount;
|
||||
DWORD waitStatus;
|
||||
HANDLE handles[64];
|
||||
@ -1480,7 +1480,6 @@ static void* xf_client_thread(void* param)
|
||||
rdpSettings* settings;
|
||||
TimerEventArgs timerEvent;
|
||||
EventArgsInit(&timerEvent, "xfreerdp");
|
||||
exit_code = 0;
|
||||
instance = (freerdp*) param;
|
||||
context = instance->context;
|
||||
status = freerdp_connect(instance);
|
||||
@ -1546,8 +1545,7 @@ static void* xf_client_thread(void* param)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(inputThread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) xf_input_thread, instance, 0, NULL)))
|
||||
if (!(inputThread = CreateThread(NULL, 0, xf_input_thread, instance, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "async input: failed to create input thread");
|
||||
exit_code = XF_EXIT_UNKNOWN;
|
||||
@ -1635,7 +1633,7 @@ disconnect:
|
||||
freerdp_disconnect(instance);
|
||||
end:
|
||||
ExitThread(exit_code);
|
||||
return NULL;
|
||||
return exit_code;
|
||||
}
|
||||
|
||||
DWORD xf_exit_code_from_disconnect_reason(DWORD reason)
|
||||
@ -1733,8 +1731,7 @@ static int xfreerdp_client_start(rdpContext* context)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(xfc->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) xf_client_thread,
|
||||
if (!(xfc->thread = CreateThread(NULL, 0, xf_client_thread,
|
||||
context->instance, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "failed to create client thread");
|
||||
|
@ -1684,7 +1684,7 @@ INT32 progressive_decompress(PROGRESSIVE_CONTEXT* progressive,
|
||||
|
||||
if (region->numRects > progressive->cRects)
|
||||
{
|
||||
BYTE* tmpBuf = (RFX_RECT*) realloc(progressive->rects,
|
||||
RFX_RECT* tmpBuf = (RFX_RECT*) realloc(progressive->rects,
|
||||
region->numRects * sizeof(RFX_RECT));
|
||||
if (!tmpBuf)
|
||||
return -1016;
|
||||
@ -1713,7 +1713,7 @@ INT32 progressive_decompress(PROGRESSIVE_CONTEXT* progressive,
|
||||
|
||||
if (region->numQuant > progressive->cQuant)
|
||||
{
|
||||
BYTE* tmpBuf = (RFX_COMPONENT_CODEC_QUANT*) realloc(
|
||||
RFX_COMPONENT_CODEC_QUANT* tmpBuf = (RFX_COMPONENT_CODEC_QUANT*) realloc(
|
||||
progressive->quantVals,
|
||||
region->numQuant * sizeof(RFX_COMPONENT_CODEC_QUANT));
|
||||
if (!tmpBuf)
|
||||
@ -1746,7 +1746,7 @@ INT32 progressive_decompress(PROGRESSIVE_CONTEXT* progressive,
|
||||
|
||||
if (region->numProgQuant > progressive->cProgQuant)
|
||||
{
|
||||
BYTE* tmpBuf = (RFX_PROGRESSIVE_CODEC_QUANT*) realloc(
|
||||
RFX_PROGRESSIVE_CODEC_QUANT* tmpBuf = (RFX_PROGRESSIVE_CODEC_QUANT*) realloc(
|
||||
progressive->quantProgVals,
|
||||
region->numProgQuant * sizeof(RFX_PROGRESSIVE_CODEC_QUANT));
|
||||
if (!tmpBuf)
|
||||
@ -1779,7 +1779,7 @@ INT32 progressive_decompress(PROGRESSIVE_CONTEXT* progressive,
|
||||
|
||||
if (progressive->cTiles < surface->gridSize)
|
||||
{
|
||||
BYTE* tmpBuf = (RFX_PROGRESSIVE_TILE**) realloc(progressive->tiles,
|
||||
RFX_PROGRESSIVE_TILE** tmpBuf = (RFX_PROGRESSIVE_TILE**) realloc(progressive->tiles,
|
||||
surface->gridSize * sizeof(RFX_PROGRESSIVE_TILE*));
|
||||
if (!tmpBuf)
|
||||
return -1025;
|
||||
|
@ -949,7 +949,7 @@ static BOOL rfx_process_message_tileset(RFX_CONTEXT* context,
|
||||
params[i].context = context;
|
||||
params[i].tile = message->tiles[i];
|
||||
|
||||
if (!(work_objects[i] = CreateThreadpoolWork((PTP_WORK_CALLBACK)
|
||||
if (!(work_objects[i] = CreateThreadpoolWork(
|
||||
rfx_process_message_tile_work_callback,
|
||||
(void*) ¶ms[i], &context->priv->ThreadPoolEnv)))
|
||||
{
|
||||
@ -1367,7 +1367,7 @@ struct _RFX_TILE_COMPOSE_WORK_PARAM
|
||||
RFX_CONTEXT* context;
|
||||
};
|
||||
|
||||
void CALLBACK rfx_compose_message_tile_work_callback(PTP_CALLBACK_INSTANCE
|
||||
static void CALLBACK rfx_compose_message_tile_work_callback(PTP_CALLBACK_INSTANCE
|
||||
instance, void* context, PTP_WORK work)
|
||||
{
|
||||
RFX_TILE_COMPOSE_WORK_PARAM* param = (RFX_TILE_COMPOSE_WORK_PARAM*) context;
|
||||
@ -1580,7 +1580,7 @@ RFX_MESSAGE* rfx_encode_message(RFX_CONTEXT* context, const RFX_RECT* rects,
|
||||
workParam->tile = tile;
|
||||
|
||||
if (!(*workObject = CreateThreadpoolWork(
|
||||
(PTP_WORK_CALLBACK)rfx_compose_message_tile_work_callback,
|
||||
rfx_compose_message_tile_work_callback,
|
||||
(void*) workParam,
|
||||
&context->priv->ThreadPoolEnv)))
|
||||
{
|
||||
|
@ -159,7 +159,7 @@ BOOL yuv_context_decode(YUV_CONTEXT* context, const BYTE* pYUVData[3], UINT32 iS
|
||||
else
|
||||
params[i].height = context->height % context->heightStep;
|
||||
|
||||
work_objects[i] = CreateThreadpoolWork((PTP_WORK_CALLBACK)yuv_process_work_callback,
|
||||
work_objects[i] = CreateThreadpoolWork(yuv_process_work_callback,
|
||||
(void*) ¶ms[i], &context->ThreadPoolEnv);
|
||||
if (!work_objects[i])
|
||||
{
|
||||
|
@ -2851,7 +2851,7 @@ static BOOL update_message_register_interface(rdpUpdateProxy* message, rdpUpdate
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void* update_message_proxy_thread(void* arg)
|
||||
static DWORD WINAPI update_message_proxy_thread(LPVOID arg)
|
||||
{
|
||||
rdpUpdate* update = (rdpUpdate*)arg;
|
||||
wMessage message;
|
||||
@ -2860,8 +2860,8 @@ static void* update_message_proxy_thread(void* arg)
|
||||
{
|
||||
WLog_ERR(TAG, "update=%p, update->queue=%p", (void*) update,
|
||||
(void*)(update ? update->queue : NULL));
|
||||
ExitThread(-1);
|
||||
return NULL;
|
||||
ExitThread(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (MessageQueue_Wait(update->queue))
|
||||
@ -2876,7 +2876,7 @@ static void* update_message_proxy_thread(void* arg)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
rdpUpdateProxy* update_message_proxy_new(rdpUpdate* update)
|
||||
@ -2892,7 +2892,7 @@ rdpUpdateProxy* update_message_proxy_new(rdpUpdate* update)
|
||||
message->update = update;
|
||||
update_message_register_interface(message, update);
|
||||
|
||||
if (!(message->thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) update_message_proxy_thread,
|
||||
if (!(message->thread = CreateThread(NULL, 0, update_message_proxy_thread,
|
||||
update, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create proxy thread");
|
||||
|
@ -88,7 +88,7 @@ struct testThreadArgs
|
||||
freerdp** arg;
|
||||
};
|
||||
|
||||
static void* testThread(void* arg)
|
||||
static DWORD WINAPI testThread(LPVOID arg)
|
||||
{
|
||||
char arg1[] = "/v:192.0.2.1:XXXXX";
|
||||
char* argv[] =
|
||||
@ -107,7 +107,7 @@ static void* testThread(void* arg)
|
||||
ExitThread(-1);
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int testAbort(int port)
|
||||
@ -125,7 +125,7 @@ static int testAbort(int port)
|
||||
args.port = port;
|
||||
args.arg = &instance;
|
||||
start = GetTickCount();
|
||||
thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)testThread,
|
||||
thread = CreateThread(NULL, 0, testThread,
|
||||
&args, 0, NULL);
|
||||
|
||||
if (!thread)
|
||||
|
@ -57,7 +57,7 @@
|
||||
|
||||
#define BUFFER_SIZE 16384
|
||||
|
||||
static void* transport_client_thread(void* arg);
|
||||
static DWORD WINAPI transport_client_thread(LPVOID arg);
|
||||
|
||||
#ifdef WITH_GSSAPI
|
||||
|
||||
@ -425,8 +425,7 @@ BOOL transport_connect(rdpTransport* transport, const char* hostname,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!(transport->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) transport_client_thread, transport, 0, NULL)))
|
||||
if (!(transport->thread = CreateThread(NULL, 0, transport_client_thread, transport, 0, NULL)))
|
||||
{
|
||||
WLog_Print(transport->log, WLOG_ERROR, "Failed to create transport client thread");
|
||||
CloseHandle(transport->stopEvent);
|
||||
@ -1132,7 +1131,7 @@ BOOL transport_disconnect(rdpTransport* transport)
|
||||
return status;
|
||||
}
|
||||
|
||||
static void* transport_client_thread(void* arg)
|
||||
DWORD WINAPI transport_client_thread(LPVOID arg)
|
||||
{
|
||||
DWORD dwExitCode = 0;
|
||||
DWORD status;
|
||||
@ -1217,7 +1216,7 @@ static void* transport_client_thread(void* arg)
|
||||
out:
|
||||
WLog_Print(transport->log, WLOG_DEBUG, "Terminating transport thread");
|
||||
ExitThread(dwExitCode);
|
||||
return NULL;
|
||||
return dwExitCode;
|
||||
}
|
||||
|
||||
rdpTransport* transport_new(rdpContext* context)
|
||||
|
@ -466,7 +466,7 @@ BOOL tf_peer_dump_rfx(freerdp_peer* client)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void* tf_debug_channel_thread_func(void* arg)
|
||||
static DWORD WINAPI tf_debug_channel_thread_func(LPVOID arg)
|
||||
{
|
||||
void* fd;
|
||||
wStream* s;
|
||||
@ -482,7 +482,7 @@ static void* tf_debug_channel_thread_func(void* arg)
|
||||
WTSFreeMemory(buffer);
|
||||
|
||||
if (!(context->event = CreateWaitObjectEvent(NULL, TRUE, FALSE, fd)))
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
s = Stream_New(NULL, 4096);
|
||||
@ -584,8 +584,7 @@ BOOL tf_peer_post_connect(freerdp_peer* client)
|
||||
}
|
||||
|
||||
if (!(context->debug_channel_thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) tf_debug_channel_thread_func, (void*) context, 0,
|
||||
NULL)))
|
||||
tf_debug_channel_thread_func, (void*) context, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create debug channel thread");
|
||||
CloseHandle(context->stopEvent);
|
||||
@ -752,7 +751,7 @@ static BOOL tf_peer_suppress_output(rdpContext* context, BYTE allow,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void* test_peer_mainloop(void* arg)
|
||||
static DWORD WINAPI test_peer_mainloop(LPVOID arg)
|
||||
{
|
||||
HANDLE handles[32];
|
||||
DWORD count;
|
||||
@ -763,7 +762,7 @@ static void* test_peer_mainloop(void* arg)
|
||||
if (!test_peer_init(client))
|
||||
{
|
||||
freerdp_peer_free(client);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Initialize the real server settings here */
|
||||
@ -776,7 +775,7 @@ static void* test_peer_mainloop(void* arg)
|
||||
{
|
||||
WLog_ERR(TAG, "Memory allocation failed (strdup)");
|
||||
freerdp_peer_free(client);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
client->settings->RdpSecurity = TRUE;
|
||||
@ -840,15 +839,14 @@ static void* test_peer_mainloop(void* arg)
|
||||
client->Disconnect(client);
|
||||
freerdp_peer_context_free(client);
|
||||
freerdp_peer_free(client);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static BOOL test_peer_accepted(freerdp_listener* instance, freerdp_peer* client)
|
||||
{
|
||||
HANDLE hThread;
|
||||
|
||||
if (!(hThread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) test_peer_mainloop, (void*) client, 0, NULL)))
|
||||
if (!(hThread = CreateThread(NULL, 0, test_peer_mainloop, (void*) client, 0, NULL)))
|
||||
return FALSE;
|
||||
|
||||
CloseHandle(hThread);
|
||||
|
@ -88,7 +88,7 @@ int wf_directsound_activate(RdpsndServerContext* context)
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD WINAPI wf_rdpsnd_directsound_thread(LPVOID lpParam)
|
||||
static DWORD WINAPI wf_rdpsnd_directsound_thread(LPVOID lpParam)
|
||||
{
|
||||
HRESULT hr;
|
||||
DWORD beg = 0;
|
||||
|
@ -88,7 +88,7 @@ void set_screen_id(int id)
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD WINAPI wf_server_main_loop(LPVOID lpParam)
|
||||
static DWORD WINAPI wf_server_main_loop(LPVOID lpParam)
|
||||
{
|
||||
int i, fds;
|
||||
int rcount;
|
||||
|
@ -167,7 +167,7 @@ BOOL wf_peer_accepted(freerdp_listener* instance, freerdp_peer* client)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
DWORD WINAPI wf_peer_socket_listener(LPVOID lpParam)
|
||||
static DWORD WINAPI wf_peer_socket_listener(LPVOID lpParam)
|
||||
{
|
||||
int i, fds;
|
||||
int rcount;
|
||||
@ -239,7 +239,7 @@ BOOL wf_peer_read_settings(freerdp_peer* client)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
DWORD WINAPI wf_peer_main_loop(LPVOID lpParam)
|
||||
static DWORD WINAPI wf_peer_main_loop(LPVOID lpParam)
|
||||
{
|
||||
wfInfo* wfi;
|
||||
DWORD nCount;
|
||||
|
@ -160,7 +160,7 @@ int wf_wasapi_get_device_string(LPWSTR pattern, LPWSTR * deviceStr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD WINAPI wf_rdpsnd_wasapi_thread(LPVOID lpParam)
|
||||
static DWORD WINAPI wf_rdpsnd_wasapi_thread(LPVOID lpParam)
|
||||
{
|
||||
IMMDeviceEnumerator *pEnumerator = NULL;
|
||||
IMMDevice *pDevice = NULL;
|
||||
|
@ -499,8 +499,9 @@ static int mac_shadow_subsystem_process_message(macShadowSubsystem* subsystem,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void* mac_shadow_subsystem_thread(macShadowSubsystem* subsystem)
|
||||
static DWORD WINAPI mac_shadow_subsystem_thread(LPVOID arg)
|
||||
{
|
||||
macShadowSubsystem* subsystem = (macShadowSubsystem*)arg;
|
||||
DWORD status;
|
||||
DWORD nCount;
|
||||
UINT64 cTime;
|
||||
@ -543,7 +544,7 @@ static void* mac_shadow_subsystem_thread(macShadowSubsystem* subsystem)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mac_shadow_enum_monitors(MONITOR_DEF* monitors, int maxMonitors)
|
||||
@ -600,8 +601,7 @@ static int mac_shadow_subsystem_start(macShadowSubsystem* subsystem)
|
||||
|
||||
mac_shadow_capture_start(subsystem);
|
||||
|
||||
if (!(thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) mac_shadow_subsystem_thread,
|
||||
if (!(thread = CreateThread(NULL, 0, mac_shadow_subsystem_thread,
|
||||
(void*) subsystem, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create thread");
|
||||
|
@ -156,7 +156,7 @@ static BOOL shw_post_connect(freerdp* instance)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void* shw_client_thread(void* arg)
|
||||
static DWORD WINAPI shw_client_thread(LPVOID arg)
|
||||
{
|
||||
int index;
|
||||
int rcount;
|
||||
@ -180,7 +180,7 @@ static void* shw_client_thread(void* arg)
|
||||
if (!bSuccess)
|
||||
{
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
channels = instance->context->channels;
|
||||
@ -237,7 +237,7 @@ static void* shw_client_thread(void* arg)
|
||||
|
||||
freerdp_free(instance);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -259,8 +259,7 @@ static int shw_freerdp_client_start(rdpContext* context)
|
||||
freerdp* instance = context->instance;
|
||||
shw = (shwContext*) context;
|
||||
|
||||
if (!(shw->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) shw_client_thread,
|
||||
if (!(shw->thread = CreateThread(NULL, 0, shw_client_thread,
|
||||
instance, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create thread");
|
||||
|
@ -280,8 +280,9 @@ int win_shadow_surface_copy(winShadowSubsystem* subsystem)
|
||||
|
||||
#if defined(WITH_WDS_API)
|
||||
|
||||
void* win_shadow_subsystem_thread(winShadowSubsystem* subsystem)
|
||||
static DWORD WINAPI win_shadow_subsystem_thread(LPVOID arg)
|
||||
{
|
||||
winShadowSubsystem* subsystem = (winShadowSubsystem*)arg;
|
||||
DWORD status;
|
||||
DWORD nCount;
|
||||
HANDLE events[32];
|
||||
@ -309,13 +310,14 @@ void* win_shadow_subsystem_thread(winShadowSubsystem* subsystem)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#elif defined(WITH_DXGI_1_2)
|
||||
|
||||
void* win_shadow_subsystem_thread(winShadowSubsystem* subsystem)
|
||||
static DWORD WINAPI win_shadow_subsystem_thread(LPVOID arg)
|
||||
{
|
||||
winShadowSubsystem* subsystem = (winShadowSubsystem*)arg;
|
||||
int fps;
|
||||
DWORD status;
|
||||
DWORD nCount;
|
||||
@ -361,7 +363,7 @@ void* win_shadow_subsystem_thread(winShadowSubsystem* subsystem)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
@ -438,8 +440,7 @@ int win_shadow_subsystem_start(winShadowSubsystem* subsystem)
|
||||
if (!subsystem)
|
||||
return -1;
|
||||
|
||||
if (!(thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) win_shadow_subsystem_thread,
|
||||
if (!(thread = CreateThread(NULL, 0, win_shadow_subsystem_thread,
|
||||
(void*) subsystem, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create thread");
|
||||
|
@ -857,8 +857,9 @@ static int x11_shadow_subsystem_process_message(x11ShadowSubsystem* subsystem,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void* x11_shadow_subsystem_thread(x11ShadowSubsystem* subsystem)
|
||||
static DWORD WINAPI x11_shadow_subsystem_thread(LPVOID arg)
|
||||
{
|
||||
x11ShadowSubsystem* subsystem = (x11ShadowSubsystem*)arg;
|
||||
XEvent xevent;
|
||||
DWORD status;
|
||||
DWORD nCount;
|
||||
@ -918,7 +919,7 @@ static void* x11_shadow_subsystem_thread(x11ShadowSubsystem* subsystem)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int x11_shadow_subsystem_base_init(x11ShadowSubsystem* subsystem)
|
||||
@ -1355,8 +1356,7 @@ static int x11_shadow_subsystem_start(rdpShadowSubsystem* sub)
|
||||
if (!subsystem)
|
||||
return -1;
|
||||
|
||||
if (!(subsystem->thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) x11_shadow_subsystem_thread,
|
||||
if (!(subsystem->thread = CreateThread(NULL, 0, x11_shadow_subsystem_thread,
|
||||
(void*) subsystem, 0, NULL)))
|
||||
{
|
||||
WLog_ERR(TAG, "Failed to create thread");
|
||||
|
@ -719,7 +719,7 @@ static UINT shadow_client_rdpgfx_caps_advertise(RdpgfxServerContext* context,
|
||||
if (settings)
|
||||
{
|
||||
flags = pdu.capsSet->flags;
|
||||
settings->GfxAVC444v2 = settings->GfxAVC444 = settings->GfxAVC444 = FALSE;
|
||||
settings->GfxAVC444v2 = settings->GfxAVC444 = FALSE;
|
||||
settings->GfxThinClient = (flags & RDPGFX_CAPS_FLAG_THINCLIENT);
|
||||
settings->GfxSmallCache = (flags & RDPGFX_CAPS_FLAG_SMALL_CACHE);
|
||||
#ifndef WITH_GFX_H264
|
||||
@ -1595,8 +1595,9 @@ static int shadow_client_subsystem_process_message(rdpShadowClient* client,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void* shadow_client_thread(rdpShadowClient* client)
|
||||
static DWORD WINAPI shadow_client_thread(LPVOID arg)
|
||||
{
|
||||
rdpShadowClient* client = (rdpShadowClient*)arg;
|
||||
DWORD status;
|
||||
DWORD nCount;
|
||||
wMessage message;
|
||||
@ -1869,7 +1870,7 @@ out:
|
||||
freerdp_peer_context_free(peer);
|
||||
freerdp_peer_free(peer);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL shadow_client_accepted(freerdp_listener* listener, freerdp_peer* peer)
|
||||
@ -1892,8 +1893,7 @@ BOOL shadow_client_accepted(freerdp_listener* listener, freerdp_peer* peer)
|
||||
|
||||
client = (rdpShadowClient*) peer->context;
|
||||
|
||||
if (!(client->thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)
|
||||
shadow_client_thread, client, 0, NULL)))
|
||||
if (!(client->thread = CreateThread(NULL, 0, shadow_client_thread, client, 0, NULL)))
|
||||
{
|
||||
freerdp_peer_context_free(peer);
|
||||
return FALSE;
|
||||
|
@ -389,8 +389,9 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
|
||||
return status;
|
||||
}
|
||||
|
||||
static void* shadow_server_thread(rdpShadowServer* server)
|
||||
static DWORD WINAPI shadow_server_thread(LPVOID arg)
|
||||
{
|
||||
rdpShadowServer* server = (rdpShadowServer*)arg;
|
||||
BOOL running = TRUE;
|
||||
DWORD status;
|
||||
freerdp_listener* listener = server->listener;
|
||||
@ -450,7 +451,7 @@ static void* shadow_server_thread(rdpShadowServer* server)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int shadow_server_start(rdpShadowServer* server)
|
||||
@ -494,8 +495,7 @@ int shadow_server_start(rdpShadowServer* server)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(server->thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)
|
||||
shadow_server_thread, (void*) server, 0, NULL)))
|
||||
if (!(server->thread = CreateThread(NULL, 0, shadow_server_thread, (void*) server, 0, NULL)))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ static int status = 0;
|
||||
LONG *pLoopCount = NULL;
|
||||
BOOL bStopTest = FALSE;
|
||||
|
||||
static void* test_error_thread(void* arg)
|
||||
static DWORD WINAPI test_error_thread(LPVOID arg)
|
||||
{
|
||||
int id;
|
||||
DWORD dwErrorSet;
|
||||
@ -53,7 +53,7 @@ static void* test_error_thread(void* arg)
|
||||
InterlockedIncrement(pLoopCount);
|
||||
} while (!status && !bStopTest);
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TestErrorSetLastError(int argc, char* argv[])
|
||||
@ -88,7 +88,7 @@ int TestErrorSetLastError(int argc, char* argv[])
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (!(threads[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) test_error_thread, (void*) (size_t) 0, 0, NULL)))
|
||||
if (!(threads[i] = CreateThread(NULL, 0, test_error_thread, (void*) (size_t) 0, 0, NULL)))
|
||||
{
|
||||
printf("Failed to create thread #%d\n", i);
|
||||
return -1;
|
||||
|
@ -21,9 +21,9 @@ static HANDLE ReadyEvent;
|
||||
static LPTSTR lpszPipeNameMt = _T("\\\\.\\pipe\\winpr_test_pipe_mt");
|
||||
static LPTSTR lpszPipeNameSt = _T("\\\\.\\pipe\\winpr_test_pipe_st");
|
||||
|
||||
BOOL testFailed = FALSE;
|
||||
static BOOL testFailed = FALSE;
|
||||
|
||||
static void* named_pipe_client_thread(void* arg)
|
||||
static DWORD WINAPI named_pipe_client_thread(LPVOID arg)
|
||||
{
|
||||
HANDLE hNamedPipe = NULL;
|
||||
BYTE* lpReadBuffer = NULL;
|
||||
@ -87,10 +87,11 @@ out:
|
||||
if (!fSuccess)
|
||||
testFailed = TRUE;
|
||||
|
||||
return NULL;
|
||||
ExitThread(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* named_pipe_server_thread(void* arg)
|
||||
static DWORD WINAPI named_pipe_server_thread(LPVOID arg)
|
||||
{
|
||||
HANDLE hNamedPipe = NULL;
|
||||
BYTE* lpReadBuffer = NULL;
|
||||
@ -179,11 +180,12 @@ out:
|
||||
if (!fSuccess)
|
||||
testFailed = TRUE;
|
||||
|
||||
return NULL;
|
||||
ExitThread(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define TESTNUMPIPESST 16
|
||||
static void* named_pipe_single_thread(void* arg)
|
||||
static DWORD WINAPI named_pipe_single_thread(LPVOID arg)
|
||||
{
|
||||
HANDLE servers[TESTNUMPIPESST];
|
||||
HANDLE clients[TESTNUMPIPESST];
|
||||
@ -431,7 +433,7 @@ out:
|
||||
if (!bSuccess)
|
||||
testFailed = TRUE;
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -459,17 +461,17 @@ int TestPipeCreateNamedPipe(int argc, char* argv[])
|
||||
printf("CreateEvent failure: (%"PRIu32")\n", GetLastError());
|
||||
return -1;
|
||||
}
|
||||
if (!(SingleThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) named_pipe_single_thread, NULL, 0, NULL)))
|
||||
if (!(SingleThread = CreateThread(NULL, 0, named_pipe_single_thread, NULL, 0, NULL)))
|
||||
{
|
||||
printf("CreateThread (SingleThread) failure: (%"PRIu32")\n", GetLastError());
|
||||
return -1;
|
||||
}
|
||||
if (!(ClientThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) named_pipe_client_thread, NULL, 0, NULL)))
|
||||
if (!(ClientThread = CreateThread(NULL, 0, named_pipe_client_thread, NULL, 0, NULL)))
|
||||
{
|
||||
printf("CreateThread (ClientThread) failure: (%"PRIu32")\n", GetLastError());
|
||||
return -1;
|
||||
}
|
||||
if (!(ServerThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) named_pipe_server_thread, NULL, 0, NULL)))
|
||||
if (!(ServerThread = CreateThread(NULL, 0, named_pipe_server_thread, NULL, 0, NULL)))
|
||||
{
|
||||
printf("CreateThread (ServerThread) failure: (%"PRIu32")\n", GetLastError());
|
||||
return -1;
|
||||
|
@ -13,17 +13,17 @@
|
||||
#define PIPE_BUFFER_SIZE 32
|
||||
#define PIPE_TIMEOUT_MS 20000 // 20 seconds
|
||||
|
||||
BYTE SERVER_MESSAGE[PIPE_BUFFER_SIZE];
|
||||
BYTE CLIENT_MESSAGE[PIPE_BUFFER_SIZE];
|
||||
static BYTE SERVER_MESSAGE[PIPE_BUFFER_SIZE];
|
||||
static BYTE CLIENT_MESSAGE[PIPE_BUFFER_SIZE];
|
||||
|
||||
BOOL bClientSuccess = FALSE;
|
||||
BOOL bServerSuccess = FALSE;
|
||||
static BOOL bClientSuccess = FALSE;
|
||||
static BOOL bServerSuccess = FALSE;
|
||||
|
||||
static HANDLE serverReadyEvent;
|
||||
|
||||
static LPTSTR lpszPipeName = _T("\\\\.\\pipe\\winpr_test_pipe_overlapped");
|
||||
|
||||
static void* named_pipe_client_thread(void* arg)
|
||||
static DWORD WINAPI named_pipe_client_thread(LPVOID arg)
|
||||
{
|
||||
DWORD status;
|
||||
HANDLE hEvent = NULL;
|
||||
@ -153,10 +153,10 @@ finish:
|
||||
if (hEvent)
|
||||
CloseHandle(hEvent);
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* named_pipe_server_thread(void* arg)
|
||||
static DWORD WINAPI named_pipe_server_thread(LPVOID arg)
|
||||
{
|
||||
DWORD status;
|
||||
HANDLE hEvent = NULL;
|
||||
@ -331,7 +331,7 @@ finish:
|
||||
CloseHandle(hNamedPipe);
|
||||
CloseHandle(hEvent);
|
||||
free(lpReadBuffer);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TestPipeCreateNamedPipeOverlapped(int argc, char* argv[])
|
||||
@ -348,7 +348,7 @@ int TestPipeCreateNamedPipeOverlapped(int argc, char* argv[])
|
||||
printf("CreateEvent failed: %"PRIu32"\n", GetLastError());
|
||||
goto out;
|
||||
}
|
||||
if (!(ClientThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) named_pipe_client_thread, NULL, 0, NULL)))
|
||||
if (!(ClientThread = CreateThread(NULL, 0, named_pipe_client_thread, NULL, 0, NULL)))
|
||||
{
|
||||
printf("CreateThread (client) failed: %"PRIu32"\n", GetLastError());
|
||||
goto out;
|
||||
|
@ -60,7 +60,7 @@ static TP_POOL DEFAULT_POOL =
|
||||
NULL, /* wCountdownEvent* WorkComplete */
|
||||
};
|
||||
|
||||
static void* thread_pool_work_func(void* arg)
|
||||
static DWORD WINAPI thread_pool_work_func(LPVOID arg)
|
||||
{
|
||||
DWORD status;
|
||||
PTP_POOL pool;
|
||||
@ -95,7 +95,7 @@ static void* thread_pool_work_func(void* arg)
|
||||
}
|
||||
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void threads_close(void *thread)
|
||||
@ -132,7 +132,7 @@ static BOOL InitializeThreadpool(PTP_POOL pool)
|
||||
for (index = 0; index < 4; index++)
|
||||
{
|
||||
if (!(thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) thread_pool_work_func,
|
||||
thread_pool_work_func,
|
||||
(void*) pool, 0, NULL)))
|
||||
{
|
||||
goto fail_create_threads;
|
||||
@ -237,7 +237,7 @@ BOOL winpr_SetThreadpoolThreadMinimum(PTP_POOL ptpp, DWORD cthrdMic)
|
||||
while (ArrayList_Count(ptpp->Threads) < ptpp->Minimum)
|
||||
{
|
||||
if (!(thread = CreateThread(NULL, 0,
|
||||
(LPTHREAD_START_ROUTINE) thread_pool_work_func,
|
||||
thread_pool_work_func,
|
||||
(void*) ptpp, 0, NULL)))
|
||||
{
|
||||
return FALSE;
|
||||
|
@ -31,7 +31,7 @@ static BOOL test1(void)
|
||||
int index;
|
||||
PTP_WORK work;
|
||||
printf("Global Thread Pool\n");
|
||||
work = CreateThreadpoolWork((PTP_WORK_CALLBACK) test_WorkCallback, "world", NULL);
|
||||
work = CreateThreadpoolWork(test_WorkCallback, "world", NULL);
|
||||
|
||||
if (!work)
|
||||
{
|
||||
@ -86,7 +86,7 @@ static BOOL test2(void)
|
||||
}
|
||||
|
||||
SetThreadpoolCallbackCleanupGroup(&environment, cleanupGroup, NULL);
|
||||
work = CreateThreadpoolWork((PTP_WORK_CALLBACK) test_WorkCallback, "world", &environment);
|
||||
work = CreateThreadpoolWork(test_WorkCallback, "world", &environment);
|
||||
|
||||
if (!work)
|
||||
{
|
||||
|
@ -12,15 +12,15 @@
|
||||
#include <winpr/wlog.h>
|
||||
#include <winpr/schannel.h>
|
||||
|
||||
BOOL g_ClientWait = FALSE;
|
||||
BOOL g_ServerWait = FALSE;
|
||||
static BOOL g_ClientWait = FALSE;
|
||||
static BOOL g_ServerWait = FALSE;
|
||||
|
||||
HANDLE g_ClientReadPipe = NULL;
|
||||
HANDLE g_ClientWritePipe = NULL;
|
||||
HANDLE g_ServerReadPipe = NULL;
|
||||
HANDLE g_ServerWritePipe = NULL;
|
||||
static HANDLE g_ClientReadPipe = NULL;
|
||||
static HANDLE g_ClientWritePipe = NULL;
|
||||
static HANDLE g_ServerReadPipe = NULL;
|
||||
static HANDLE g_ServerWritePipe = NULL;
|
||||
|
||||
BYTE test_localhost_crt[1029] =
|
||||
static const BYTE test_localhost_crt[1029] =
|
||||
{
|
||||
0x2D,0x2D,0x2D,0x2D,0x2D,0x42,0x45,0x47,0x49,0x4E,0x20,0x43,0x45,0x52,0x54,
|
||||
0x49,0x46,0x49,0x43,0x41,0x54,0x45,0x2D,0x2D,0x2D,0x2D,0x2D,0x0A,0x4D,0x49,
|
||||
@ -93,7 +93,7 @@ BYTE test_localhost_crt[1029] =
|
||||
0x41,0x54,0x45,0x2D,0x2D,0x2D,0x2D,0x2D,0x0A
|
||||
};
|
||||
|
||||
BYTE test_localhost_key[1704] =
|
||||
static const BYTE test_localhost_key[1704] =
|
||||
{
|
||||
0x2D,0x2D,0x2D,0x2D,0x2D,0x42,0x45,0x47,0x49,0x4E,0x20,0x50,0x52,0x49,0x56,
|
||||
0x41,0x54,0x45,0x20,0x4B,0x45,0x59,0x2D,0x2D,0x2D,0x2D,0x2D,0x0A,0x4D,0x49,
|
||||
@ -211,7 +211,7 @@ BYTE test_localhost_key[1704] =
|
||||
0x4B,0x45,0x59,0x2D,0x2D,0x2D,0x2D,0x2D,0x0A
|
||||
};
|
||||
|
||||
BYTE test_DummyMessage[64] =
|
||||
static const BYTE test_DummyMessage[64] =
|
||||
{
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
|
||||
@ -219,7 +219,7 @@ BYTE test_DummyMessage[64] =
|
||||
0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD
|
||||
};
|
||||
|
||||
BYTE test_LastDummyMessage[64] =
|
||||
static const BYTE test_LastDummyMessage[64] =
|
||||
{
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -227,7 +227,7 @@ BYTE test_LastDummyMessage[64] =
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
int schannel_send(PSecurityFunctionTable table, HANDLE hPipe, PCtxtHandle phContext, BYTE* buffer, UINT32 length)
|
||||
static int schannel_send(PSecurityFunctionTable table, HANDLE hPipe, PCtxtHandle phContext, BYTE* buffer, UINT32 length)
|
||||
{
|
||||
BYTE* ioBuffer;
|
||||
UINT32 ioBufferLength;
|
||||
@ -284,7 +284,7 @@ int schannel_send(PSecurityFunctionTable table, HANDLE hPipe, PCtxtHandle phCont
|
||||
return 0;
|
||||
}
|
||||
|
||||
int schannel_recv(PSecurityFunctionTable table, HANDLE hPipe, PCtxtHandle phContext)
|
||||
static int schannel_recv(PSecurityFunctionTable table, HANDLE hPipe, PCtxtHandle phContext)
|
||||
{
|
||||
BYTE* ioBuffer;
|
||||
UINT32 ioBufferLength;
|
||||
@ -342,7 +342,7 @@ int schannel_recv(PSecurityFunctionTable table, HANDLE hPipe, PCtxtHandle phCont
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* schannel_test_server_thread(void* arg)
|
||||
static DWORD WINAPI schannel_test_server_thread(LPVOID arg)
|
||||
{
|
||||
BOOL extraData;
|
||||
BYTE* lpTokenIn;
|
||||
@ -377,7 +377,7 @@ static void* schannel_test_server_thread(void* arg)
|
||||
if (status != SEC_E_OK)
|
||||
{
|
||||
printf("QuerySecurityPackageInfo failure: 0x%08"PRIX32"\n", status);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
cbMaxToken = pPackageInfo->cbMaxToken;
|
||||
@ -406,7 +406,7 @@ static void* schannel_test_server_thread(void* arg)
|
||||
if (!pszNameString)
|
||||
{
|
||||
printf("Memory allocation failed\n");
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
cchNameString = CertGetNameString(pCertContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, NULL, pszNameString, cchNameString);
|
||||
_tprintf(_T("Certificate Name: %s\n"), pszNameString);
|
||||
@ -424,7 +424,7 @@ static void* schannel_test_server_thread(void* arg)
|
||||
if (status != SEC_E_OK)
|
||||
{
|
||||
printf("AcquireCredentialsHandle failure: 0x%08"PRIX32"\n", status);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
extraData = FALSE;
|
||||
@ -432,13 +432,13 @@ static void* schannel_test_server_thread(void* arg)
|
||||
if (!(lpTokenIn = (BYTE*) malloc(cbMaxToken)))
|
||||
{
|
||||
printf("Memory allocation failed\n");
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
if (!(lpTokenOut = (BYTE*) malloc(cbMaxToken)))
|
||||
{
|
||||
printf("Memory allocation failed\n");
|
||||
free(lpTokenIn);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
fContextReq = ASC_REQ_STREAM |
|
||||
ASC_REQ_SEQUENCE_DETECT | ASC_REQ_REPLAY_DETECT |
|
||||
@ -544,10 +544,10 @@ static void* schannel_test_server_thread(void* arg)
|
||||
}
|
||||
while (1);
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dump_test_certificate_files()
|
||||
static int dump_test_certificate_files(void)
|
||||
{
|
||||
FILE* fp;
|
||||
char* fullpath = NULL;
|
||||
@ -634,7 +634,7 @@ int TestSchannel(int argc, char* argv[])
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) schannel_test_server_thread, NULL, 0, NULL)))
|
||||
if (!(thread = CreateThread(NULL, 0, schannel_test_server_thread, NULL, 0, NULL)))
|
||||
{
|
||||
printf("Failed to create server thread\n");
|
||||
return -1;
|
||||
|
@ -23,7 +23,7 @@ struct test_params
|
||||
};
|
||||
|
||||
|
||||
DWORD WINAPI test_synch_barrier_thread(LPVOID lpParam)
|
||||
static DWORD WINAPI test_synch_barrier_thread(LPVOID lpParam)
|
||||
{
|
||||
BOOL status = FALSE;
|
||||
struct test_params* p = (struct test_params*)lpParam;
|
||||
|
@ -10,11 +10,11 @@
|
||||
#define TEST_SYNC_CRITICAL_TEST1_RUNTIME_MS 500
|
||||
#define TEST_SYNC_CRITICAL_TEST1_RUNS 4
|
||||
|
||||
CRITICAL_SECTION critical;
|
||||
LONG gTestValueVulnerable = 0;
|
||||
LONG gTestValueSerialized = 0;
|
||||
static CRITICAL_SECTION critical;
|
||||
static LONG gTestValueVulnerable = 0;
|
||||
static LONG gTestValueSerialized = 0;
|
||||
|
||||
BOOL TestSynchCritical_TriggerAndCheckRaceCondition(HANDLE OwningThread, LONG RecursionCount)
|
||||
static BOOL TestSynchCritical_TriggerAndCheckRaceCondition(HANDLE OwningThread, LONG RecursionCount)
|
||||
{
|
||||
/* if called unprotected this will hopefully trigger a race condition ... */
|
||||
gTestValueVulnerable++;
|
||||
@ -41,7 +41,7 @@ BOOL TestSynchCritical_TriggerAndCheckRaceCondition(HANDLE OwningThread, LONG Re
|
||||
}
|
||||
|
||||
/* this thread function shall increment the global dwTestValue until the PBOOL passsed in arg is FALSE */
|
||||
static PVOID TestSynchCritical_Test1(PVOID arg)
|
||||
static DWORD WINAPI TestSynchCritical_Test1(LPVOID arg)
|
||||
{
|
||||
int i, j, rc;
|
||||
HANDLE hThread = (HANDLE) (ULONG_PTR) GetCurrentThreadId();
|
||||
@ -55,25 +55,25 @@ static PVOID TestSynchCritical_Test1(PVOID arg)
|
||||
rc = 1;
|
||||
|
||||
if (!TestSynchCritical_TriggerAndCheckRaceCondition(hThread, rc))
|
||||
return (PVOID)1;
|
||||
return 1;
|
||||
|
||||
/* add some random recursion level */
|
||||
j = rand()%5;
|
||||
for (i=0; i<j; i++)
|
||||
{
|
||||
if (!TestSynchCritical_TriggerAndCheckRaceCondition(hThread, rc++))
|
||||
return (PVOID)2;
|
||||
return 2;
|
||||
EnterCriticalSection(&critical);
|
||||
}
|
||||
for (i=0; i<j; i++)
|
||||
{
|
||||
if (!TestSynchCritical_TriggerAndCheckRaceCondition(hThread, rc--))
|
||||
return (PVOID)2;
|
||||
return 2;
|
||||
LeaveCriticalSection(&critical);
|
||||
}
|
||||
|
||||
if (!TestSynchCritical_TriggerAndCheckRaceCondition(hThread, rc))
|
||||
return (PVOID)3;
|
||||
return 3;
|
||||
|
||||
LeaveCriticalSection(&critical);
|
||||
}
|
||||
@ -82,18 +82,17 @@ static PVOID TestSynchCritical_Test1(PVOID arg)
|
||||
}
|
||||
|
||||
/* this thread function tries to call TryEnterCriticalSection while the main thread holds the lock */
|
||||
static PVOID TestSynchCritical_Test2(PVOID arg)
|
||||
static DWORD WINAPI TestSynchCritical_Test2(LPVOID arg)
|
||||
{
|
||||
if (TryEnterCriticalSection(&critical)==TRUE)
|
||||
{
|
||||
LeaveCriticalSection(&critical);
|
||||
return (PVOID)1;
|
||||
return 1;
|
||||
}
|
||||
return (PVOID)0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static PVOID TestSynchCritical_Main(PVOID arg)
|
||||
static DWORD WINAPI TestSynchCritical_Main(LPVOID arg)
|
||||
{
|
||||
int i, j;
|
||||
SYSTEM_INFO sysinfo;
|
||||
@ -219,7 +218,7 @@ static PVOID TestSynchCritical_Main(PVOID arg)
|
||||
bTest1Running = TRUE;
|
||||
for (i = 0; i < (int) dwThreadCount; i++)
|
||||
{
|
||||
if (!(hThreads[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) TestSynchCritical_Test1, &bTest1Running, 0, NULL)))
|
||||
if (!(hThreads[i] = CreateThread(NULL, 0, TestSynchCritical_Test1, &bTest1Running, 0, NULL)))
|
||||
{
|
||||
printf("CriticalSection failure: Failed to create test_1 thread #%d\n", i);
|
||||
goto fail;
|
||||
@ -270,7 +269,7 @@ static PVOID TestSynchCritical_Main(PVOID arg)
|
||||
goto fail;
|
||||
}
|
||||
/* This thread tries to call TryEnterCriticalSection which must fail */
|
||||
if (!(hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) TestSynchCritical_Test2, NULL, 0, NULL)))
|
||||
if (!(hThread = CreateThread(NULL, 0, TestSynchCritical_Test2, NULL, 0, NULL)))
|
||||
{
|
||||
printf("CriticalSection failure: Failed to create test_2 thread\n");
|
||||
goto fail;
|
||||
@ -289,11 +288,11 @@ static PVOID TestSynchCritical_Main(PVOID arg)
|
||||
CloseHandle(hThread);
|
||||
|
||||
*pbThreadTerminated = TRUE; /* requ. for winpr issue, see below */
|
||||
return (PVOID)0;
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
*pbThreadTerminated = TRUE; /* requ. for winpr issue, see below */
|
||||
return (PVOID)1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@ -309,7 +308,7 @@ int TestSynchCritical(int argc, char* argv[])
|
||||
|
||||
printf("Deadlock will be assumed after %"PRIu32" ms.\n", dwDeadLockDetectionTimeMs);
|
||||
|
||||
if (!(hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) TestSynchCritical_Main, &bThreadTerminated, 0, NULL)))
|
||||
if (!(hThread = CreateThread(NULL, 0, TestSynchCritical_Main, &bThreadTerminated, 0, NULL)))
|
||||
{
|
||||
printf("CriticalSection failure: Failed to create main thread\n");
|
||||
return -1;
|
||||
|
@ -7,16 +7,16 @@
|
||||
#define TEST_NUM_THREADS 100
|
||||
#define TEST_NUM_FAILURES 10
|
||||
|
||||
INIT_ONCE initOnceTest = INIT_ONCE_STATIC_INIT;
|
||||
static INIT_ONCE initOnceTest = INIT_ONCE_STATIC_INIT;
|
||||
|
||||
HANDLE hStartEvent = NULL;
|
||||
LONG *pErrors = NULL;
|
||||
LONG *pTestThreadFunctionCalls = NULL;
|
||||
LONG *pTestOnceFunctionCalls = NULL;
|
||||
LONG *pInitOnceExecuteOnceCalls = NULL;
|
||||
static HANDLE hStartEvent = NULL;
|
||||
static LONG *pErrors = NULL;
|
||||
static LONG *pTestThreadFunctionCalls = NULL;
|
||||
static LONG *pTestOnceFunctionCalls = NULL;
|
||||
static LONG *pInitOnceExecuteOnceCalls = NULL;
|
||||
|
||||
|
||||
BOOL CALLBACK TestOnceFunction(PINIT_ONCE once, PVOID param, PVOID *context)
|
||||
static BOOL CALLBACK TestOnceFunction(PINIT_ONCE once, PVOID param, PVOID *context)
|
||||
{
|
||||
LONG calls = InterlockedIncrement(pTestOnceFunctionCalls) - 1;
|
||||
|
||||
@ -37,7 +37,7 @@ BOOL CALLBACK TestOnceFunction(PINIT_ONCE once, PVOID param, PVOID *context)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
DWORD WINAPI TestThreadFunction(LPVOID lpParam)
|
||||
static DWORD WINAPI TestThreadFunction(LPVOID lpParam)
|
||||
{
|
||||
LONG calls;
|
||||
BOOL ok;
|
||||
|
@ -5,14 +5,14 @@
|
||||
#include <winpr/synch.h>
|
||||
#include <winpr/thread.h>
|
||||
|
||||
static void *test_thread(void *arg)
|
||||
static DWORD WINAPI test_thread(LPVOID arg)
|
||||
{
|
||||
long timeout = rand();
|
||||
timeout %= 1000;
|
||||
timeout += 100;
|
||||
Sleep(timeout);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int start_threads(DWORD count, HANDLE *threads)
|
||||
@ -21,8 +21,7 @@ static int start_threads(DWORD count, HANDLE *threads)
|
||||
|
||||
for (i=0; i<count; i++)
|
||||
{
|
||||
threads[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)test_thread,
|
||||
NULL, 0, NULL);
|
||||
threads[i] = CreateThread(NULL, 0, test_thread, NULL, 0, NULL);
|
||||
|
||||
if (!threads[i])
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include <winpr/thread.h>
|
||||
|
||||
|
||||
BOOL test_mutex_basic()
|
||||
static BOOL test_mutex_basic(void)
|
||||
{
|
||||
HANDLE mutex;
|
||||
DWORD rc;
|
||||
@ -42,7 +42,7 @@ BOOL test_mutex_basic()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL test_mutex_recursive()
|
||||
static BOOL test_mutex_recursive(void)
|
||||
{
|
||||
HANDLE mutex;
|
||||
DWORD rc, i, cnt = 50;
|
||||
@ -94,11 +94,11 @@ BOOL test_mutex_recursive()
|
||||
}
|
||||
|
||||
|
||||
HANDLE thread1_mutex1 = NULL;
|
||||
HANDLE thread1_mutex2 = NULL;
|
||||
BOOL thread1_failed = TRUE;
|
||||
static HANDLE thread1_mutex1 = NULL;
|
||||
static HANDLE thread1_mutex2 = NULL;
|
||||
static BOOL thread1_failed = TRUE;
|
||||
|
||||
DWORD WINAPI test_mutex_thread1(LPVOID lpParam)
|
||||
static DWORD WINAPI test_mutex_thread1(LPVOID lpParam)
|
||||
{
|
||||
HANDLE hStartEvent = (HANDLE)lpParam;
|
||||
DWORD rc = 0;
|
||||
@ -143,7 +143,7 @@ DWORD WINAPI test_mutex_thread1(LPVOID lpParam)
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL test_mutex_threading()
|
||||
static BOOL test_mutex_threading(void)
|
||||
{
|
||||
HANDLE hThread = NULL;
|
||||
HANDLE hStartEvent = NULL;
|
||||
|
@ -3,19 +3,18 @@
|
||||
#include <winpr/synch.h>
|
||||
#include <winpr/thread.h>
|
||||
|
||||
static void *test_thread(void *arg)
|
||||
static DWORD WINAPI test_thread(LPVOID arg)
|
||||
{
|
||||
Sleep(1000);
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TestSynchThread(int argc, char *argv[])
|
||||
{
|
||||
DWORD rc;
|
||||
HANDLE thread;
|
||||
thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)test_thread,
|
||||
NULL, 0, NULL);
|
||||
thread = CreateThread(NULL, 0, test_thread, NULL, 0, NULL);
|
||||
|
||||
if (!thread)
|
||||
{
|
||||
@ -56,8 +55,7 @@ int TestSynchThread(int argc, char *argv[])
|
||||
return -1;
|
||||
}
|
||||
|
||||
thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)test_thread,
|
||||
NULL, 0, NULL);
|
||||
thread = CreateThread(NULL, 0, test_thread, NULL, 0, NULL);
|
||||
|
||||
if (!thread)
|
||||
{
|
||||
@ -99,8 +97,7 @@ int TestSynchThread(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* Thread detach test */
|
||||
thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)test_thread,
|
||||
NULL, 0, NULL);
|
||||
thread = CreateThread(NULL, 0, test_thread, NULL, 0, NULL);
|
||||
|
||||
if (!thread)
|
||||
{
|
||||
|
@ -4,11 +4,11 @@
|
||||
#include <winpr/synch.h>
|
||||
#include <winpr/thread.h>
|
||||
|
||||
static void* thread_func(void* arg)
|
||||
static DWORD WINAPI thread_func(LPVOID arg)
|
||||
{
|
||||
/* exists of the thread the quickest as possible */
|
||||
ExitThread(0);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TestThreadExitThread(int argc, char* argv[])
|
||||
@ -23,7 +23,7 @@ int TestThreadExitThread(int argc, char* argv[])
|
||||
{
|
||||
thread = CreateThread(NULL,
|
||||
0,
|
||||
(LPTHREAD_START_ROUTINE)thread_func,
|
||||
thread_func,
|
||||
NULL,
|
||||
0,
|
||||
NULL);
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include <winpr/thread.h>
|
||||
#include <winpr/collections.h>
|
||||
|
||||
static void* message_echo_pipe_client_thread(void* arg)
|
||||
static DWORD WINAPI message_echo_pipe_client_thread(LPVOID arg)
|
||||
{
|
||||
int index = 0;
|
||||
wMessagePipe* pipe = (wMessagePipe*) arg;
|
||||
@ -35,10 +35,10 @@ static void* message_echo_pipe_client_thread(void* arg)
|
||||
|
||||
MessageQueue_PostQuit(pipe->In, 0);
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* message_echo_pipe_server_thread(void* arg)
|
||||
static DWORD WINAPI message_echo_pipe_server_thread(LPVOID arg)
|
||||
{
|
||||
wMessage message;
|
||||
wMessagePipe* pipe;
|
||||
@ -57,7 +57,7 @@ static void* message_echo_pipe_server_thread(void* arg)
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TestMessagePipe(int argc, char* argv[])
|
||||
@ -73,13 +73,13 @@ int TestMessagePipe(int argc, char* argv[])
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(ClientThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) message_echo_pipe_client_thread, (void*) EchoPipe, 0, NULL)))
|
||||
if (!(ClientThread = CreateThread(NULL, 0, message_echo_pipe_client_thread, (void*) EchoPipe, 0, NULL)))
|
||||
{
|
||||
printf("failed to create client thread\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!(ServerThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) message_echo_pipe_server_thread, (void*) EchoPipe, 0, NULL)))
|
||||
if (!(ServerThread = CreateThread(NULL, 0, message_echo_pipe_server_thread, (void*) EchoPipe, 0, NULL)))
|
||||
{
|
||||
printf("failed to create server thread\n");
|
||||
goto out;
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include <winpr/thread.h>
|
||||
#include <winpr/collections.h>
|
||||
|
||||
static void* message_queue_consumer_thread(void* arg)
|
||||
static DWORD WINAPI message_queue_consumer_thread(LPVOID arg)
|
||||
{
|
||||
wMessage message;
|
||||
wMessageQueue* queue;
|
||||
@ -21,7 +21,7 @@ static void* message_queue_consumer_thread(void* arg)
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int TestMessageQueue(int argc, char* argv[])
|
||||
@ -35,7 +35,7 @@ int TestMessageQueue(int argc, char* argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!(thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) message_queue_consumer_thread, (void*) queue, 0, NULL)))
|
||||
if (!(thread = CreateThread(NULL, 0, message_queue_consumer_thread, (void*) queue, 0, NULL)))
|
||||
{
|
||||
printf("failed to create thread\n");
|
||||
MessageQueue_Free(queue);
|
||||
|
Loading…
Reference in New Issue
Block a user