2
* FreeRDP: A Remote Desktop Protocol client.
3
* Static Virtual Channel Interface
5
* Copyright 2009-2011 Jay Sorg
7
* Licensed under the Apache License, Version 2.0 (the "License");
8
* you may not use this file except in compliance with the License.
9
* You may obtain a copy of the License at
11
* http://www.apache.org/licenses/LICENSE-2.0
13
* Unless required by applicable law or agreed to in writing, software
14
* distributed under the License is distributed on an "AS IS" BASIS,
15
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
* See the License for the specific language governing permissions and
17
* limitations under the License.
21
* MS compatible SVC plugin interface
23
* http://msdn.microsoft.com/en-us/library/aa383580.aspx
26
#ifndef __FREERDP_SVC_H
27
#define __FREERDP_SVC_H
29
#include <freerdp/api.h>
30
#include <freerdp/types.h>
32
#define CHANNEL_EXPORT_FUNC_NAME "VirtualChannelEntry"
34
#define CHANNEL_NAME_LEN 7
38
char name[CHANNEL_NAME_LEN + 1];
41
typedef struct _CHANNEL_DEF CHANNEL_DEF;
42
typedef CHANNEL_DEF* PCHANNEL_DEF;
43
typedef CHANNEL_DEF** PPCHANNEL_DEF;
45
typedef void (FREERDP_CC * PCHANNEL_INIT_EVENT_FN)(void* pInitHandle,
46
uint32 event, void* pData, uint32 dataLength);
49
typedef void (FREERDP_CC * PCHANNEL_OPEN_EVENT_FN)(uint32 openHandle,
50
uint32 event, void* pData, uint32 dataLength,
51
uint32 totalLength, uint32 dataFlags);
53
#define CHANNEL_RC_OK 0
54
#define CHANNEL_RC_ALREADY_INITIALIZED 1
55
#define CHANNEL_RC_NOT_INITIALIZED 2
56
#define CHANNEL_RC_ALREADY_CONNECTED 3
57
#define CHANNEL_RC_NOT_CONNECTED 4
58
#define CHANNEL_RC_TOO_MANY_CHANNELS 5
59
#define CHANNEL_RC_BAD_CHANNEL 6
60
#define CHANNEL_RC_BAD_CHANNEL_HANDLE 7
61
#define CHANNEL_RC_NO_BUFFER 8
62
#define CHANNEL_RC_BAD_INIT_HANDLE 9
63
#define CHANNEL_RC_NOT_OPEN 10
64
#define CHANNEL_RC_BAD_PROC 11
65
#define CHANNEL_RC_NO_MEMORY 12
66
#define CHANNEL_RC_UNKNOWN_CHANNEL_NAME 13
67
#define CHANNEL_RC_ALREADY_OPEN 14
68
#define CHANNEL_RC_NOT_IN_VIRTUALCHANNELENTRY 15
69
#define CHANNEL_RC_NULL_DATA 16
70
#define CHANNEL_RC_ZERO_LENGTH 17
72
#define VIRTUAL_CHANNEL_VERSION_WIN2000 1
74
typedef uint32 (FREERDP_CC * PVIRTUALCHANNELINIT)(void** ppInitHandle,
75
PCHANNEL_DEF pChannel, int channelCount, uint32 versionRequested,
76
PCHANNEL_INIT_EVENT_FN pChannelInitEventProc);
77
typedef uint32 (FREERDP_CC * PVIRTUALCHANNELOPEN)(void* pInitHandle,
78
uint32* pOpenHandle, char* pChannelName,
79
PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc);
80
typedef uint32 (FREERDP_CC * PVIRTUALCHANNELCLOSE)(uint32 openHandle);
82
typedef uint32 (FREERDP_CC * PVIRTUALCHANNELWRITE)(uint32 openHandle,
83
void* pData, uint32 dataLength, void* pUserData);
85
typedef uint32 (FREERDP_CC * PVIRTUALCHANNELEVENTPUSH)(uint32 openHandle,
88
struct _CHANNEL_ENTRY_POINTS
91
uint32 protocolVersion;
92
PVIRTUALCHANNELINIT pVirtualChannelInit;
93
PVIRTUALCHANNELOPEN pVirtualChannelOpen;
94
PVIRTUALCHANNELCLOSE pVirtualChannelClose;
95
PVIRTUALCHANNELWRITE pVirtualChannelWrite;
97
typedef struct _CHANNEL_ENTRY_POINTS CHANNEL_ENTRY_POINTS;
98
typedef CHANNEL_ENTRY_POINTS* PCHANNEL_ENTRY_POINTS;
100
typedef int (FREERDP_CC * PVIRTUALCHANNELENTRY)(PCHANNEL_ENTRY_POINTS pEntryPoints);
102
struct _CHANNEL_ENTRY_POINTS_EX
105
uint32 protocolVersion;
106
PVIRTUALCHANNELINIT pVirtualChannelInit;
107
PVIRTUALCHANNELOPEN pVirtualChannelOpen;
108
PVIRTUALCHANNELCLOSE pVirtualChannelClose;
109
PVIRTUALCHANNELWRITE pVirtualChannelWrite;
110
void* pExtendedData; /* extended data field to pass initial parameters */
111
PVIRTUALCHANNELEVENTPUSH pVirtualChannelEventPush;
113
typedef struct _CHANNEL_ENTRY_POINTS_EX CHANNEL_ENTRY_POINTS_EX;
114
typedef CHANNEL_ENTRY_POINTS_EX* PCHANNEL_ENTRY_POINTS_EX;