23#ifndef FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
24#define FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
26#include <freerdp/api.h>
27#include <freerdp/types.h>
28#include <freerdp/channels/wtsvc.h>
29#include <freerdp/channels/rdpdr.h>
30#include <freerdp/utils/rdpdr_utils.h>
42 typedef struct s_rdpdr_server_private RdpdrServerPrivate;
53 UINT32 NextEntryOffset;
61 UINT32 FileAttributes;
66typedef UINT (*psRdpdrStart)(RdpdrServerContext* context);
67typedef UINT (*psRdpdrStop)(RdpdrServerContext* context);
69typedef UINT (*psRdpdrCapablityPDU)(RdpdrServerContext* context,
72typedef UINT (*psRdpdrReceivePDU)(RdpdrServerContext* context,
const RDPDR_HEADER* header,
74typedef UINT (*psRdpdrReceiveAnnounceResponse)(RdpdrServerContext* context, UINT16 VersionMajor,
75 UINT16 VersionMinor, UINT32 ClientId);
76typedef UINT (*psRdpdrSendServerAnnounce)(RdpdrServerContext* context);
77typedef UINT (*psRdpdrReceiveDeviceAnnounce)(RdpdrServerContext* context,
79typedef UINT (*psRdpdrReceiveDeviceRemove)(RdpdrServerContext* context, UINT32 deviceId,
81typedef UINT (*psRdpdrReceiveClientNameRequest)(RdpdrServerContext* context,
size_t ComputerNameLen,
84typedef UINT (*psRdpdrDriveCreateDirectory)(RdpdrServerContext* context,
void* callbackData,
85 UINT32 deviceId,
const char* path);
86typedef UINT (*psRdpdrDriveDeleteDirectory)(RdpdrServerContext* context,
void* callbackData,
87 UINT32 deviceId,
const char* path);
88typedef UINT (*psRdpdrDriveQueryDirectory)(RdpdrServerContext* context,
void* callbackData,
89 UINT32 deviceId,
const char* path);
90typedef UINT (*psRdpdrDriveOpenFile)(RdpdrServerContext* context,
void* callbackData,
91 UINT32 deviceId,
const char* path, UINT32 desiredAccess,
92 UINT32 createDisposition);
93typedef UINT (*psRdpdrDriveReadFile)(RdpdrServerContext* context,
void* callbackData,
94 UINT32 deviceId, UINT32 fileId, UINT32 length, UINT32 offset);
95typedef UINT (*psRdpdrDriveWriteFile)(RdpdrServerContext* context,
void* callbackData,
96 UINT32 deviceId, UINT32 fileId,
const char* buffer,
97 UINT32 length, UINT32 offset);
98typedef UINT (*psRdpdrDriveCloseFile)(RdpdrServerContext* context,
void* callbackData,
99 UINT32 deviceId, UINT32 fileId);
100typedef UINT (*psRdpdrDriveDeleteFile)(RdpdrServerContext* context,
void* callbackData,
101 UINT32 deviceId,
const char* path);
102typedef UINT (*psRdpdrDriveRenameFile)(RdpdrServerContext* context,
void* callbackData,
103 UINT32 deviceId,
const char* oldPath,
const char* newPath);
105typedef void (*psRdpdrOnDriveCreateDirectoryComplete)(RdpdrServerContext* context,
106 void* callbackData, UINT32 ioStatus);
107typedef void (*psRdpdrOnDriveDeleteDirectoryComplete)(RdpdrServerContext* context,
108 void* callbackData, UINT32 ioStatus);
109typedef void (*psRdpdrOnDriveQueryDirectoryComplete)(RdpdrServerContext* context,
110 void* callbackData, UINT32 ioStatus,
112typedef void (*psRdpdrOnDriveOpenFileComplete)(RdpdrServerContext* context,
void* callbackData,
113 UINT32 ioStatus, UINT32 deviceId, UINT32 fileId);
114typedef void (*psRdpdrOnDriveReadFileComplete)(RdpdrServerContext* context,
void* callbackData,
115 UINT32 ioStatus,
const char* buffer, UINT32 length);
116typedef void (*psRdpdrOnDriveWriteFileComplete)(RdpdrServerContext* context,
void* callbackData,
117 UINT32 ioStatus, UINT32 bytesWritten);
118typedef void (*psRdpdrOnDriveCloseFileComplete)(RdpdrServerContext* context,
void* callbackData,
120typedef void (*psRdpdrOnDriveDeleteFileComplete)(RdpdrServerContext* context,
void* callbackData,
122typedef void (*psRdpdrOnDriveRenameFileComplete)(RdpdrServerContext* context,
void* callbackData,
125typedef UINT (*psRdpdrOnDeviceCreate)(RdpdrServerContext* context,
const RdpdrDevice* device);
126typedef UINT (*psRdpdrOnDeviceDelete)(RdpdrServerContext* context, UINT32 deviceId);
135 RdpdrServerPrivate* priv;
153 psRdpdrSendServerAnnounce
155 psRdpdrReceiveAnnounceResponse
157 psRdpdrReceiveClientNameRequest
159 psRdpdrReceiveDeviceAnnounce
160 ReceiveDeviceAnnounce;
166 psRdpdrDriveCreateDirectory DriveCreateDirectory;
167 psRdpdrDriveDeleteDirectory DriveDeleteDirectory;
168 psRdpdrDriveQueryDirectory DriveQueryDirectory;
169 psRdpdrDriveOpenFile DriveOpenFile;
170 psRdpdrDriveReadFile DriveReadFile;
171 psRdpdrDriveWriteFile DriveWriteFile;
172 psRdpdrDriveCloseFile DriveCloseFile;
173 psRdpdrDriveDeleteFile DriveDeleteFile;
174 psRdpdrDriveRenameFile DriveRenameFile;
181 psRdpdrOnDriveCreateDirectoryComplete OnDriveCreateDirectoryComplete;
182 psRdpdrOnDriveDeleteDirectoryComplete OnDriveDeleteDirectoryComplete;
183 psRdpdrOnDriveQueryDirectoryComplete OnDriveQueryDirectoryComplete;
184 psRdpdrOnDriveOpenFileComplete OnDriveOpenFileComplete;
185 psRdpdrOnDriveReadFileComplete OnDriveReadFileComplete;
186 psRdpdrOnDriveWriteFileComplete OnDriveWriteFileComplete;
187 psRdpdrOnDriveCloseFileComplete OnDriveCloseFileComplete;
188 psRdpdrOnDriveDeleteFileComplete OnDriveDeleteFileComplete;
189 psRdpdrOnDriveRenameFileComplete OnDriveRenameFileComplete;
215 rdpContext* rdpcontext;
218FREERDP_API
void rdpdr_server_context_free(RdpdrServerContext* context);
220WINPR_ATTR_MALLOC(rdpdr_server_context_free, 1)
221FREERDP_API RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm);
psRdpdrOnDeviceDelete OnParallelPortDelete
psRdpdrReceiveDeviceRemove ReceiveDeviceRemove
psRdpdrReceiveAnnounceResponse ReceiveAnnounceResponse
psRdpdrOnDeviceCreate OnSerialPortCreate
psRdpdrSendServerAnnounce SendServerAnnounce
psRdpdrOnDeviceDelete OnPrinterDelete
psRdpdrOnDeviceDelete OnDriveDelete
psRdpdrOnDeviceDelete OnSerialPortDelete
psRdpdrOnDeviceCreate OnDriveCreate
psRdpdrOnDeviceCreate OnParallelPortCreate
psRdpdrOnDeviceCreate OnPrinterCreate
psRdpdrReceiveClientNameRequest ReceiveClientNameRequest
psRdpdrOnDeviceCreate OnSmartcardCreate
psRdpdrOnDeviceDelete OnSmartcardDelete
psRdpdrCapablityPDU ReceiveCaps
psRdpdrCapablityPDU SendCaps
psRdpdrReceivePDU ReceivePDU