mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
[winpr,wtsapi] improve API usage
* Mark WTSVirtualChannelOpen and WTSVirtualChannelOpenEx with WINPR_ATTR_MALLOC to enforce compiler checks for resource cleanup * Fix unused result warnings, use the result or cast to (void) where not requierd
This commit is contained in:
parent
a1cef8dd85
commit
8b6091a007
@ -292,7 +292,7 @@ static DWORD WINAPI ainput_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelClose(ainput->ainput_channel);
|
(void)WTSVirtualChannelClose(ainput->ainput_channel);
|
||||||
ainput->ainput_channel = NULL;
|
ainput->ainput_channel = NULL;
|
||||||
|
|
||||||
if (error && ainput->context.rdpcontext)
|
if (error && ainput->context.rdpcontext)
|
||||||
@ -369,7 +369,7 @@ static UINT ainput_server_close(ainput_server_context* context)
|
|||||||
{
|
{
|
||||||
if (ainput->state != AINPUT_INITIAL)
|
if (ainput->state != AINPUT_INITIAL)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(ainput->ainput_channel);
|
(void)WTSVirtualChannelClose(ainput->ainput_channel);
|
||||||
ainput->ainput_channel = NULL;
|
ainput->ainput_channel = NULL;
|
||||||
ainput->state = AINPUT_INITIAL;
|
ainput->state = AINPUT_INITIAL;
|
||||||
}
|
}
|
||||||
|
@ -430,7 +430,7 @@ static DWORD WINAPI audin_server_thread_func(LPVOID arg)
|
|||||||
out_capacity:
|
out_capacity:
|
||||||
Stream_Free(s, TRUE);
|
Stream_Free(s, TRUE);
|
||||||
out:
|
out:
|
||||||
WTSVirtualChannelClose(audin->audin_channel);
|
(void)WTSVirtualChannelClose(audin->audin_channel);
|
||||||
audin->audin_channel = NULL;
|
audin->audin_channel = NULL;
|
||||||
|
|
||||||
if (error && audin->context.rdpcontext)
|
if (error && audin->context.rdpcontext)
|
||||||
@ -533,7 +533,7 @@ static BOOL audin_server_close(audin_server_context* context)
|
|||||||
|
|
||||||
if (audin->audin_channel)
|
if (audin->audin_channel)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(audin->audin_channel);
|
(void)WTSVirtualChannelClose(audin->audin_channel);
|
||||||
audin->audin_channel = NULL;
|
audin->audin_channel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1355,7 +1355,7 @@ static UINT cliprdr_server_close(CliprdrServerContext* context)
|
|||||||
|
|
||||||
if (cliprdr->ChannelHandle)
|
if (cliprdr->ChannelHandle)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(cliprdr->ChannelHandle);
|
(void)WTSVirtualChannelClose(cliprdr->ChannelHandle);
|
||||||
cliprdr->ChannelHandle = NULL;
|
cliprdr->ChannelHandle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,7 +474,7 @@ static UINT disp_server_open(DispServerContext* context)
|
|||||||
|
|
||||||
return CHANNEL_RC_OK;
|
return CHANNEL_RC_OK;
|
||||||
out_close:
|
out_close:
|
||||||
WTSVirtualChannelClose(priv->disp_channel);
|
(void)WTSVirtualChannelClose(priv->disp_channel);
|
||||||
priv->disp_channel = NULL;
|
priv->disp_channel = NULL;
|
||||||
priv->channelEvent = NULL;
|
priv->channelEvent = NULL;
|
||||||
return rc;
|
return rc;
|
||||||
@ -567,7 +567,7 @@ static UINT disp_server_close(DispServerContext* context)
|
|||||||
|
|
||||||
if (priv->disp_channel)
|
if (priv->disp_channel)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(priv->disp_channel);
|
(void)WTSVirtualChannelClose(priv->disp_channel);
|
||||||
priv->disp_channel = NULL;
|
priv->disp_channel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ static DWORD WINAPI echo_server_thread_func(LPVOID arg)
|
|||||||
if (!s)
|
if (!s)
|
||||||
{
|
{
|
||||||
WLog_ERR(TAG, "Stream_New failed!");
|
WLog_ERR(TAG, "Stream_New failed!");
|
||||||
WTSVirtualChannelClose(echo->echo_channel);
|
(void)WTSVirtualChannelClose(echo->echo_channel);
|
||||||
ExitThread(ERROR_NOT_ENOUGH_MEMORY);
|
ExitThread(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
return ERROR_NOT_ENOUGH_MEMORY;
|
return ERROR_NOT_ENOUGH_MEMORY;
|
||||||
}
|
}
|
||||||
@ -239,7 +239,12 @@ static DWORD WINAPI echo_server_thread_func(LPVOID arg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
Stream_SetPosition(s, 0);
|
Stream_SetPosition(s, 0);
|
||||||
WTSVirtualChannelRead(echo->echo_channel, 0, NULL, 0, &BytesReturned);
|
if (!WTSVirtualChannelRead(echo->echo_channel, 0, NULL, 0, &BytesReturned))
|
||||||
|
{
|
||||||
|
WLog_ERR(TAG, "WTSVirtualChannelRead failed!");
|
||||||
|
error = ERROR_INTERNAL_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (BytesReturned < 1)
|
if (BytesReturned < 1)
|
||||||
continue;
|
continue;
|
||||||
@ -270,7 +275,7 @@ static DWORD WINAPI echo_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Stream_Free(s, TRUE);
|
Stream_Free(s, TRUE);
|
||||||
WTSVirtualChannelClose(echo->echo_channel);
|
(void)WTSVirtualChannelClose(echo->echo_channel);
|
||||||
echo->echo_channel = NULL;
|
echo->echo_channel = NULL;
|
||||||
out:
|
out:
|
||||||
|
|
||||||
|
@ -232,7 +232,12 @@ static DWORD WINAPI encomsp_server_thread(LPVOID arg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelRead(context->priv->ChannelHandle, 0, NULL, 0, &BytesReturned);
|
if (!WTSVirtualChannelRead(context->priv->ChannelHandle, 0, NULL, 0, &BytesReturned))
|
||||||
|
{
|
||||||
|
WLog_ERR(TAG, "WTSVirtualChannelRead failed!");
|
||||||
|
error = ERROR_INTERNAL_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (BytesReturned < 1)
|
if (BytesReturned < 1)
|
||||||
continue;
|
continue;
|
||||||
@ -364,7 +369,7 @@ void encomsp_server_context_free(EncomspServerContext* context)
|
|||||||
if (context)
|
if (context)
|
||||||
{
|
{
|
||||||
if (context->priv->ChannelHandle != INVALID_HANDLE_VALUE)
|
if (context->priv->ChannelHandle != INVALID_HANDLE_VALUE)
|
||||||
WTSVirtualChannelClose(context->priv->ChannelHandle);
|
(void)WTSVirtualChannelClose(context->priv->ChannelHandle);
|
||||||
|
|
||||||
free(context->priv);
|
free(context->priv);
|
||||||
free(context);
|
free(context);
|
||||||
|
@ -426,7 +426,7 @@ static DWORD WINAPI location_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelClose(location->location_channel);
|
(void)WTSVirtualChannelClose(location->location_channel);
|
||||||
location->location_channel = NULL;
|
location->location_channel = NULL;
|
||||||
|
|
||||||
if (error && location->context.rdpcontext)
|
if (error && location->context.rdpcontext)
|
||||||
@ -493,7 +493,7 @@ static UINT location_server_close(LocationServerContext* context)
|
|||||||
{
|
{
|
||||||
if (location->state != LOCATION_INITIAL)
|
if (location->state != LOCATION_INITIAL)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(location->location_channel);
|
(void)WTSVirtualChannelClose(location->location_channel);
|
||||||
location->location_channel = NULL;
|
location->location_channel = NULL;
|
||||||
location->state = LOCATION_INITIAL;
|
location->state = LOCATION_INITIAL;
|
||||||
}
|
}
|
||||||
|
@ -1462,7 +1462,7 @@ out_stop_event:
|
|||||||
CloseHandle(context->priv->stopEvent);
|
CloseHandle(context->priv->stopEvent);
|
||||||
context->priv->stopEvent = NULL;
|
context->priv->stopEvent = NULL;
|
||||||
out_close:
|
out_close:
|
||||||
WTSVirtualChannelClose(context->priv->rail_channel);
|
(void)WTSVirtualChannelClose(context->priv->rail_channel);
|
||||||
context->priv->rail_channel = NULL;
|
context->priv->rail_channel = NULL;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -1489,7 +1489,7 @@ static BOOL rail_server_stop(RailServerContext* context)
|
|||||||
|
|
||||||
if (priv->rail_channel)
|
if (priv->rail_channel)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(priv->rail_channel);
|
(void)WTSVirtualChannelClose(priv->rail_channel);
|
||||||
priv->rail_channel = NULL;
|
priv->rail_channel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2186,7 +2186,7 @@ static UINT rdpdr_server_stop(RdpdrServerContext* context)
|
|||||||
|
|
||||||
if (context->priv->ChannelHandle)
|
if (context->priv->ChannelHandle)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(context->priv->ChannelHandle);
|
(void)WTSVirtualChannelClose(context->priv->ChannelHandle);
|
||||||
context->priv->ChannelHandle = NULL;
|
context->priv->ChannelHandle = NULL;
|
||||||
}
|
}
|
||||||
return CHANNEL_RC_OK;
|
return CHANNEL_RC_OK;
|
||||||
|
@ -418,7 +418,7 @@ static DWORD WINAPI enumerator_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelClose(enumerator->enumerator_channel);
|
(void)WTSVirtualChannelClose(enumerator->enumerator_channel);
|
||||||
enumerator->enumerator_channel = NULL;
|
enumerator->enumerator_channel = NULL;
|
||||||
|
|
||||||
if (error && enumerator->context.rdpcontext)
|
if (error && enumerator->context.rdpcontext)
|
||||||
@ -486,7 +486,7 @@ static UINT enumerator_server_close(CamDevEnumServerContext* context)
|
|||||||
{
|
{
|
||||||
if (enumerator->state != ENUMERATOR_INITIAL)
|
if (enumerator->state != ENUMERATOR_INITIAL)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(enumerator->enumerator_channel);
|
(void)WTSVirtualChannelClose(enumerator->enumerator_channel);
|
||||||
enumerator->enumerator_channel = NULL;
|
enumerator->enumerator_channel = NULL;
|
||||||
enumerator->state = ENUMERATOR_INITIAL;
|
enumerator->state = ENUMERATOR_INITIAL;
|
||||||
}
|
}
|
||||||
|
@ -571,7 +571,7 @@ static DWORD WINAPI device_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelClose(device->device_channel);
|
(void)WTSVirtualChannelClose(device->device_channel);
|
||||||
device->device_channel = NULL;
|
device->device_channel = NULL;
|
||||||
|
|
||||||
if (error && device->context.rdpcontext)
|
if (error && device->context.rdpcontext)
|
||||||
@ -638,7 +638,7 @@ static UINT device_server_close(CameraDeviceServerContext* context)
|
|||||||
{
|
{
|
||||||
if (device->state != CAMERA_DEVICE_INITIAL)
|
if (device->state != CAMERA_DEVICE_INITIAL)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(device->device_channel);
|
(void)WTSVirtualChannelClose(device->device_channel);
|
||||||
device->device_channel = NULL;
|
device->device_channel = NULL;
|
||||||
device->state = CAMERA_DEVICE_INITIAL;
|
device->state = CAMERA_DEVICE_INITIAL;
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ UINT rdpei_server_init(RdpeiServerContext* context)
|
|||||||
return CHANNEL_RC_OK;
|
return CHANNEL_RC_OK;
|
||||||
|
|
||||||
out_close:
|
out_close:
|
||||||
WTSVirtualChannelClose(priv->channelHandle);
|
(void)WTSVirtualChannelClose(priv->channelHandle);
|
||||||
return CHANNEL_RC_INITIALIZATION_ERROR;
|
return CHANNEL_RC_INITIALIZATION_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ void rdpei_server_context_free(RdpeiServerContext* context)
|
|||||||
if (priv)
|
if (priv)
|
||||||
{
|
{
|
||||||
if (priv->channelHandle != INVALID_HANDLE_VALUE)
|
if (priv->channelHandle != INVALID_HANDLE_VALUE)
|
||||||
WTSVirtualChannelClose(priv->channelHandle);
|
(void)WTSVirtualChannelClose(priv->channelHandle);
|
||||||
Stream_Free(priv->inputStream, TRUE);
|
Stream_Free(priv->inputStream, TRUE);
|
||||||
}
|
}
|
||||||
free(priv);
|
free(priv);
|
||||||
|
@ -375,7 +375,7 @@ static DWORD WINAPI mouse_cursor_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelClose(mouse_cursor->mouse_cursor_channel);
|
(void)WTSVirtualChannelClose(mouse_cursor->mouse_cursor_channel);
|
||||||
mouse_cursor->mouse_cursor_channel = NULL;
|
mouse_cursor->mouse_cursor_channel = NULL;
|
||||||
|
|
||||||
if (error && mouse_cursor->context.rdpcontext)
|
if (error && mouse_cursor->context.rdpcontext)
|
||||||
@ -443,7 +443,7 @@ static UINT mouse_cursor_server_close(MouseCursorServerContext* context)
|
|||||||
{
|
{
|
||||||
if (mouse_cursor->state != MOUSE_CURSOR_INITIAL)
|
if (mouse_cursor->state != MOUSE_CURSOR_INITIAL)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(mouse_cursor->mouse_cursor_channel);
|
(void)WTSVirtualChannelClose(mouse_cursor->mouse_cursor_channel);
|
||||||
mouse_cursor->mouse_cursor_channel = NULL;
|
mouse_cursor->mouse_cursor_channel = NULL;
|
||||||
mouse_cursor->state = MOUSE_CURSOR_INITIAL;
|
mouse_cursor->state = MOUSE_CURSOR_INITIAL;
|
||||||
}
|
}
|
||||||
|
@ -1649,7 +1649,7 @@ BOOL rdpgfx_server_close(RdpgfxServerContext* context)
|
|||||||
|
|
||||||
if (priv->rdpgfx_channel)
|
if (priv->rdpgfx_channel)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(priv->rdpgfx_channel);
|
(void)WTSVirtualChannelClose(priv->rdpgfx_channel);
|
||||||
priv->rdpgfx_channel = NULL;
|
priv->rdpgfx_channel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -965,7 +965,7 @@ out_pdu:
|
|||||||
Stream_Free(context->priv->rdpsnd_pdu, TRUE);
|
Stream_Free(context->priv->rdpsnd_pdu, TRUE);
|
||||||
context->priv->rdpsnd_pdu = NULL;
|
context->priv->rdpsnd_pdu = NULL;
|
||||||
out_close:
|
out_close:
|
||||||
WTSVirtualChannelClose(context->priv->ChannelHandle);
|
(void)WTSVirtualChannelClose(context->priv->ChannelHandle);
|
||||||
context->priv->ChannelHandle = NULL;
|
context->priv->ChannelHandle = NULL;
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -1015,7 +1015,7 @@ static UINT rdpsnd_server_stop(RdpsndServerContext* context)
|
|||||||
|
|
||||||
if (context->priv->ChannelHandle)
|
if (context->priv->ChannelHandle)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(context->priv->ChannelHandle);
|
(void)WTSVirtualChannelClose(context->priv->ChannelHandle);
|
||||||
context->priv->ChannelHandle = NULL;
|
context->priv->ChannelHandle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -728,7 +728,7 @@ void remdesk_server_context_free(RemdeskServerContext* context)
|
|||||||
if (context)
|
if (context)
|
||||||
{
|
{
|
||||||
if (context->priv->ChannelHandle != INVALID_HANDLE_VALUE)
|
if (context->priv->ChannelHandle != INVALID_HANDLE_VALUE)
|
||||||
WTSVirtualChannelClose(context->priv->ChannelHandle);
|
(void)WTSVirtualChannelClose(context->priv->ChannelHandle);
|
||||||
|
|
||||||
free(context->priv);
|
free(context->priv);
|
||||||
free(context);
|
free(context);
|
||||||
|
@ -295,7 +295,7 @@ static DWORD WINAPI telemetry_server_thread_func(LPVOID arg)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WTSVirtualChannelClose(telemetry->telemetry_channel);
|
(void)WTSVirtualChannelClose(telemetry->telemetry_channel);
|
||||||
telemetry->telemetry_channel = NULL;
|
telemetry->telemetry_channel = NULL;
|
||||||
|
|
||||||
if (error && telemetry->context.rdpcontext)
|
if (error && telemetry->context.rdpcontext)
|
||||||
@ -362,7 +362,7 @@ static UINT telemetry_server_close(TelemetryServerContext* context)
|
|||||||
{
|
{
|
||||||
if (telemetry->state != TELEMETRY_INITIAL)
|
if (telemetry->state != TELEMETRY_INITIAL)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(telemetry->telemetry_channel);
|
(void)WTSVirtualChannelClose(telemetry->telemetry_channel);
|
||||||
telemetry->telemetry_channel = NULL;
|
telemetry->telemetry_channel = NULL;
|
||||||
telemetry->state = TELEMETRY_INITIAL;
|
telemetry->state = TELEMETRY_INITIAL;
|
||||||
}
|
}
|
||||||
|
@ -1066,7 +1066,7 @@ VOID WINAPI FreeRDP_WTSCloseServer(HANDLE hServer)
|
|||||||
|
|
||||||
if (vcm->drdynvc_channel)
|
if (vcm->drdynvc_channel)
|
||||||
{
|
{
|
||||||
WTSVirtualChannelClose(vcm->drdynvc_channel);
|
(void)WTSVirtualChannelClose(vcm->drdynvc_channel);
|
||||||
vcm->drdynvc_channel = NULL;
|
vcm->drdynvc_channel = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ static void test_peer_context_free(freerdp_peer* client, rdpContext* ctx)
|
|||||||
nsc_context_free(context->nsc_context);
|
nsc_context_free(context->nsc_context);
|
||||||
|
|
||||||
if (context->debug_channel)
|
if (context->debug_channel)
|
||||||
WTSVirtualChannelClose(context->debug_channel);
|
(void)WTSVirtualChannelClose(context->debug_channel);
|
||||||
|
|
||||||
sf_peer_audin_uninit(context);
|
sf_peer_audin_uninit(context);
|
||||||
|
|
||||||
@ -610,7 +610,6 @@ fail:
|
|||||||
static DWORD WINAPI tf_debug_channel_thread_func(LPVOID arg)
|
static DWORD WINAPI tf_debug_channel_thread_func(LPVOID arg)
|
||||||
{
|
{
|
||||||
void* fd = NULL;
|
void* fd = NULL;
|
||||||
wStream* s = NULL;
|
|
||||||
void* buffer = NULL;
|
void* buffer = NULL;
|
||||||
DWORD BytesReturned = 0;
|
DWORD BytesReturned = 0;
|
||||||
ULONG written = 0;
|
ULONG written = 0;
|
||||||
@ -627,8 +626,12 @@ static DWORD WINAPI tf_debug_channel_thread_func(LPVOID arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
s = Stream_New(NULL, 4096);
|
wStream* s = Stream_New(NULL, 4096);
|
||||||
WTSVirtualChannelWrite(context->debug_channel, (PCHAR) "test1", 5, &written);
|
if (!s)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
if (!WTSVirtualChannelWrite(context->debug_channel, (PCHAR) "test1", 5, &written))
|
||||||
|
goto fail;
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
@ -892,7 +895,8 @@ static BOOL tf_peer_keyboard_event(rdpInput* input, UINT16 flags, UINT8 code)
|
|||||||
if (tcontext->debug_channel)
|
if (tcontext->debug_channel)
|
||||||
{
|
{
|
||||||
ULONG written = 0;
|
ULONG written = 0;
|
||||||
WTSVirtualChannelWrite(tcontext->debug_channel, (PCHAR) "test2", 5, &written);
|
if (!WTSVirtualChannelWrite(tcontext->debug_channel, (PCHAR) "test2", 5, &written))
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (((flags & KBD_FLAGS_RELEASE) == 0) && code == RDP_SCANCODE_KEY_X) /* 'x' key */
|
else if (((flags & KBD_FLAGS_RELEASE) == 0) && code == RDP_SCANCODE_KEY_X) /* 'x' key */
|
||||||
|
@ -1074,14 +1074,16 @@ extern "C"
|
|||||||
|
|
||||||
WINPR_API BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags);
|
WINPR_API BOOL WINAPI WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags);
|
||||||
|
|
||||||
|
WINPR_API BOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle);
|
||||||
|
|
||||||
|
WINPR_ATTR_MALLOC(WTSVirtualChannelClose, 1)
|
||||||
WINPR_API HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId,
|
WINPR_API HANDLE WINAPI WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId,
|
||||||
LPSTR pVirtualName);
|
LPSTR pVirtualName);
|
||||||
|
|
||||||
|
WINPR_ATTR_MALLOC(WTSVirtualChannelClose, 1)
|
||||||
WINPR_API HANDLE WINAPI WTSVirtualChannelOpenEx(DWORD SessionId, LPSTR pVirtualName,
|
WINPR_API HANDLE WINAPI WTSVirtualChannelOpenEx(DWORD SessionId, LPSTR pVirtualName,
|
||||||
DWORD flags);
|
DWORD flags);
|
||||||
|
|
||||||
WINPR_API BOOL WINAPI WTSVirtualChannelClose(HANDLE hChannelHandle);
|
|
||||||
|
|
||||||
WINPR_API BOOL WINAPI WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer,
|
WINPR_API BOOL WINAPI WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer,
|
||||||
ULONG BufferSize, PULONG pBytesRead);
|
ULONG BufferSize, PULONG pBytesRead);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user