FreeRDP
Loading...
Searching...
No Matches
server/rdpdr.h
1
23#ifndef FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
24#define FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
25
26#include <freerdp/api.h>
27#include <freerdp/config.h>
28#include <freerdp/types.h>
29#include <freerdp/channels/wtsvc.h>
30#include <freerdp/channels/rdpdr.h>
31#include <freerdp/channels/scard.h>
32#include <freerdp/utils/rdpdr_utils.h>
33
34#ifdef __cplusplus
35extern "C"
36{
37#endif
38
43 typedef struct s_rdpdr_server_context RdpdrServerContext;
44 typedef struct s_rdpdr_server_private RdpdrServerPrivate;
45
47 typedef struct
48 {
49 UINT16 Component;
50 UINT16 PacketId;
52
53#ifndef __MINGW32__
55 typedef struct
56 {
58 UINT32 FileIndex;
66#if defined(WITH_WCHAR_FILE_DIRECTORY_INFORMATION)
67 WCHAR FileName[512];
68#else
69 char FileName[512];
70#endif
72#endif
73
74 typedef UINT (*psRdpdrStart)(RdpdrServerContext* context);
75 typedef UINT (*psRdpdrStop)(RdpdrServerContext* context);
76
77 typedef UINT (*psRdpdrCapablityPDU)(RdpdrServerContext* context,
78 const RDPDR_CAPABILITY_HEADER* header, size_t size,
79 const BYTE* data);
80 typedef UINT (*psRdpdrReceivePDU)(RdpdrServerContext* context, const RDPDR_HEADER* header,
81 UINT error);
82 typedef UINT (*psRdpdrReceiveAnnounceResponse)(RdpdrServerContext* context, UINT16 VersionMajor,
83 UINT16 VersionMinor, UINT32 ClientId);
84 typedef UINT (*psRdpdrSendServerAnnounce)(RdpdrServerContext* context);
85 typedef UINT (*psRdpdrReceiveDeviceAnnounce)(RdpdrServerContext* context,
86 const RdpdrDevice* device);
87 typedef UINT (*psRdpdrReceiveDeviceRemove)(RdpdrServerContext* context, UINT32 deviceId,
88 const RdpdrDevice* device);
89 typedef UINT (*psRdpdrReceiveClientNameRequest)(RdpdrServerContext* context,
90 size_t ComputerNameLen, const char* name);
91
92 typedef UINT (*psRdpdrDriveCreateDirectory)(RdpdrServerContext* context, void* callbackData,
93 UINT32 deviceId, const char* path);
94 typedef UINT (*psRdpdrDriveDeleteDirectory)(RdpdrServerContext* context, void* callbackData,
95 UINT32 deviceId, const char* path);
96 typedef UINT (*psRdpdrDriveQueryDirectory)(RdpdrServerContext* context, void* callbackData,
97 UINT32 deviceId, const char* path);
98 typedef UINT (*psRdpdrDriveOpenFile)(RdpdrServerContext* context, void* callbackData,
99 UINT32 deviceId, const char* path, UINT32 desiredAccess,
100 UINT32 createDisposition);
101 typedef UINT (*psRdpdrDriveReadFile)(RdpdrServerContext* context, void* callbackData,
102 UINT32 deviceId, UINT32 fileId, UINT32 length,
103 UINT32 offset);
104 typedef UINT (*psRdpdrDriveWriteFile)(RdpdrServerContext* context, void* callbackData,
105 UINT32 deviceId, UINT32 fileId, const char* buffer,
106 UINT32 length, UINT32 offset);
107 typedef UINT (*psRdpdrDriveCloseFile)(RdpdrServerContext* context, void* callbackData,
108 UINT32 deviceId, UINT32 fileId);
109 typedef UINT (*psRdpdrDriveDeleteFile)(RdpdrServerContext* context, void* callbackData,
110 UINT32 deviceId, const char* path);
111 typedef UINT (*psRdpdrDriveRenameFile)(RdpdrServerContext* context, void* callbackData,
112 UINT32 deviceId, const char* oldPath,
113 const char* newPath);
114
115 typedef void (*psRdpdrOnDriveCreateDirectoryComplete)(RdpdrServerContext* context,
116 void* callbackData, UINT32 ioStatus);
117 typedef void (*psRdpdrOnDriveDeleteDirectoryComplete)(RdpdrServerContext* context,
118 void* callbackData, UINT32 ioStatus);
119 typedef void (*psRdpdrOnDriveQueryDirectoryComplete)(RdpdrServerContext* context,
120 void* callbackData, UINT32 ioStatus,
122 typedef void (*psRdpdrOnDriveOpenFileComplete)(RdpdrServerContext* context, void* callbackData,
123 UINT32 ioStatus, UINT32 deviceId, UINT32 fileId);
124 typedef void (*psRdpdrOnDriveReadFileComplete)(RdpdrServerContext* context, void* callbackData,
125 UINT32 ioStatus, const char* buffer,
126 UINT32 length);
127 typedef void (*psRdpdrOnDriveWriteFileComplete)(RdpdrServerContext* context, void* callbackData,
128 UINT32 ioStatus, UINT32 bytesWritten);
129 typedef void (*psRdpdrOnDriveCloseFileComplete)(RdpdrServerContext* context, void* callbackData,
130 UINT32 ioStatus);
131 typedef void (*psRdpdrOnDriveDeleteFileComplete)(RdpdrServerContext* context,
132 void* callbackData, UINT32 ioStatus);
133 typedef void (*psRdpdrOnDriveRenameFileComplete)(RdpdrServerContext* context,
134 void* callbackData, UINT32 ioStatus);
135
136 typedef UINT (*psRdpdrOnDeviceCreate)(RdpdrServerContext* context, const RdpdrDevice* device);
137 typedef UINT (*psRdpdrOnDeviceDelete)(RdpdrServerContext* context, UINT32 deviceId);
138
139 typedef UINT (*psRdpdrSmartcardEstablishContext)(RdpdrServerContext* context,
140 void* callbackData, UINT32 dwScope,
141 UINT32* completionId);
142 typedef UINT (*psRdpdrSmartcardReleaseContext)(RdpdrServerContext* context, void* callbackData,
143 const REDIR_SCARDCONTEXT* hContext,
144 UINT32* completionId);
145 typedef UINT (*psRdpdrSmartcardIsValidContext)(RdpdrServerContext* context, void* callbackData,
146 const REDIR_SCARDCONTEXT* hContext,
147 UINT32* completionId);
148 typedef UINT (*psRdpdrSmartcardListReaderGroups)(RdpdrServerContext* context,
149 void* callbackData,
150 const ListReaderGroups_Call* call,
151 UINT32* completionId);
152 typedef UINT (*psRdpdrSmartcardListReaders)(RdpdrServerContext* context, void* callbackData,
153 const ListReaders_Call* call, UINT32* completionId);
154 typedef UINT (*psRdpdrSmartcardGetStatusChangeA)(RdpdrServerContext* context,
155 void* callbackData,
156 const GetStatusChangeA_Call* call,
157 UINT32* completionId);
158 typedef UINT (*psRdpdrSmartcardGetStatusChangeW)(RdpdrServerContext* context,
159 void* callbackData,
160 const GetStatusChangeW_Call* call,
161 UINT32* completionId);
162 typedef UINT (*psRdpdrSmartcardCancel)(RdpdrServerContext* context, void* callbackData,
163 const REDIR_SCARDCONTEXT* hContext,
164 UINT32* completionId);
165 typedef UINT (*psRdpdrSmartcardConnectA)(RdpdrServerContext* context, void* callbackData,
166 const ConnectA_Call* call, UINT32* completionId);
167 typedef UINT (*psRdpdrSmartcardConnectW)(RdpdrServerContext* context, void* callbackData,
168 const ConnectW_Call* call, UINT32* completionId);
169 typedef UINT (*psRdpdrSmartcardReconnect)(RdpdrServerContext* context, void* callbackData,
170 const Reconnect_Call* call, UINT32* completionId);
171 typedef UINT (*psRdpdrSmartcardDisconnect)(RdpdrServerContext* context, void* callbackData,
172 const HCardAndDisposition_Call* call,
173 UINT32* completionId);
174 typedef UINT (*psRdpdrSmartcardBeginTransaction)(RdpdrServerContext* context,
175 void* callbackData,
176 const HCardAndDisposition_Call* call,
177 UINT32* completionId);
178 typedef UINT (*psRdpdrSmartcardEndTransaction)(RdpdrServerContext* context, void* callbackData,
179 const HCardAndDisposition_Call* call,
180 UINT32* completionId);
181 typedef UINT (*psRdpdrSmartcardStatus)(RdpdrServerContext* context, void* callbackData,
182 const Status_Call* call, UINT32* completionId);
183 typedef UINT (*psRdpdrSmartcardTransmit)(RdpdrServerContext* context, void* callbackData,
184 const Transmit_Call* call, UINT32* completionId);
185 typedef UINT (*psRdpdrSmartcardControl)(RdpdrServerContext* context, void* callbackData,
186 const Control_Call* call, UINT32* completionId);
187 typedef UINT (*psRdpdrSmartcardGetAttrib)(RdpdrServerContext* context, void* callbackData,
188 const GetAttrib_Call* call, UINT32* completionId);
189 typedef UINT (*psRdpdrSmartcardSetAttrib)(RdpdrServerContext* context, void* callbackData,
190 const SetAttrib_Call* call, UINT32* completionId);
191
192 typedef void (*psRdpdrOnSmartcardEstablishContextComplete)(RdpdrServerContext* context,
193 void* callbackData, UINT32 ioStatus,
194 LONG returnCode,
195 const EstablishContext_Return* ret);
196 typedef void (*psRdpdrOnSmartcardReleaseContextComplete)(RdpdrServerContext* context,
197 void* callbackData, UINT32 ioStatus,
198 LONG returnCode);
199 typedef void (*psRdpdrOnSmartcardIsValidContextComplete)(RdpdrServerContext* context,
200 void* callbackData, UINT32 ioStatus,
201 LONG returnCode);
202 typedef void (*psRdpdrOnSmartcardListReaderGroupsComplete)(RdpdrServerContext* context,
203 void* callbackData, UINT32 ioStatus,
204 LONG returnCode,
205 const ListReaderGroups_Return* ret);
206 typedef void (*psRdpdrOnSmartcardListReadersComplete)(RdpdrServerContext* context,
207 void* callbackData, UINT32 ioStatus,
208 LONG returnCode,
209 const ListReaders_Return* ret);
210 typedef void (*psRdpdrOnSmartcardGetStatusChangeComplete)(RdpdrServerContext* context,
211 void* callbackData, UINT32 ioStatus,
212 LONG returnCode,
213 const GetStatusChange_Return* ret);
214 typedef void (*psRdpdrOnSmartcardCancelComplete)(RdpdrServerContext* context,
215 void* callbackData, UINT32 ioStatus,
216 LONG returnCode);
217 typedef void (*psRdpdrOnSmartcardConnectComplete)(RdpdrServerContext* context,
218 void* callbackData, UINT32 ioStatus,
219 LONG returnCode, const Connect_Return* ret);
220 typedef void (*psRdpdrOnSmartcardReconnectComplete)(RdpdrServerContext* context,
221 void* callbackData, UINT32 ioStatus,
222 LONG returnCode,
223 const Reconnect_Return* ret);
224 typedef void (*psRdpdrOnSmartcardDisconnectComplete)(RdpdrServerContext* context,
225 void* callbackData, UINT32 ioStatus,
226 LONG returnCode);
227 typedef void (*psRdpdrOnSmartcardBeginTransactionComplete)(RdpdrServerContext* context,
228 void* callbackData, UINT32 ioStatus,
229 LONG returnCode);
230 typedef void (*psRdpdrOnSmartcardEndTransactionComplete)(RdpdrServerContext* context,
231 void* callbackData, UINT32 ioStatus,
232 LONG returnCode);
233 typedef void (*psRdpdrOnSmartcardStatusComplete)(RdpdrServerContext* context,
234 void* callbackData, UINT32 ioStatus,
235 LONG returnCode, const Status_Return* ret);
236 typedef void (*psRdpdrOnSmartcardTransmitComplete)(RdpdrServerContext* context,
237 void* callbackData, UINT32 ioStatus,
238 LONG returnCode, const Transmit_Return* ret);
239 typedef void (*psRdpdrOnSmartcardControlComplete)(RdpdrServerContext* context,
240 void* callbackData, UINT32 ioStatus,
241 LONG returnCode, const Control_Return* ret);
242 typedef void (*psRdpdrOnSmartcardGetAttribComplete)(RdpdrServerContext* context,
243 void* callbackData, UINT32 ioStatus,
244 LONG returnCode,
245 const GetAttrib_Return* ret);
246 typedef void (*psRdpdrOnSmartcardSetAttribComplete)(RdpdrServerContext* context,
247 void* callbackData, UINT32 ioStatus,
248 LONG returnCode);
249
251 {
252 HANDLE vcm;
254 WINPR_ATTR_NODISCARD psRdpdrStart Start;
255 psRdpdrStop Stop;
257 RdpdrServerPrivate* priv;
259 /* Server self-defined pointer. */
260 void* data;
261
269 UINT16 supported;
270
271 /*** RDPDR message intercept callbacks */
272 WINPR_ATTR_NODISCARD psRdpdrCapablityPDU
274 WINPR_ATTR_NODISCARD psRdpdrCapablityPDU
276 WINPR_ATTR_NODISCARD psRdpdrReceivePDU
278 WINPR_ATTR_NODISCARD psRdpdrSendServerAnnounce
280 WINPR_ATTR_NODISCARD psRdpdrReceiveAnnounceResponse
282 WINPR_ATTR_NODISCARD psRdpdrReceiveClientNameRequest
284 WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceAnnounce
287 WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceRemove
291 /*** Drive APIs called by the server. ***/
292 WINPR_ATTR_NODISCARD psRdpdrDriveCreateDirectory
294 WINPR_ATTR_NODISCARD psRdpdrDriveDeleteDirectory
296 WINPR_ATTR_NODISCARD psRdpdrDriveQueryDirectory DriveQueryDirectory;
297 WINPR_ATTR_NODISCARD psRdpdrDriveOpenFile DriveOpenFile;
298 WINPR_ATTR_NODISCARD psRdpdrDriveReadFile DriveReadFile;
299 WINPR_ATTR_NODISCARD psRdpdrDriveWriteFile DriveWriteFile;
300 WINPR_ATTR_NODISCARD psRdpdrDriveCloseFile DriveCloseFile;
301 WINPR_ATTR_NODISCARD psRdpdrDriveDeleteFile DriveDeleteFile;
302 WINPR_ATTR_NODISCARD psRdpdrDriveRenameFile DriveRenameFile;
304 /*** Drive callbacks registered by the server. ***/
305 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
308 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
311 psRdpdrOnDriveCreateDirectoryComplete
313 psRdpdrOnDriveDeleteDirectoryComplete
315 psRdpdrOnDriveQueryDirectoryComplete
317 psRdpdrOnDriveOpenFileComplete
319 psRdpdrOnDriveReadFileComplete
321 psRdpdrOnDriveWriteFileComplete
323 psRdpdrOnDriveCloseFileComplete
325 psRdpdrOnDriveDeleteFileComplete
327 psRdpdrOnDriveRenameFileComplete
330 /*** Serial Port callbacks registered by the server. ***/
331 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
334 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
338 /*** Parallel Port callbacks registered by the server. ***/
339 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
342 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
346 /*** Printer callbacks registered by the server. ***/
347 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnPrinterCreate;
349 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnPrinterDelete;
352 /*** Smartcard callbacks registered by the server. ***/
353 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
356 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
360 rdpContext* rdpcontext;
362 /*** New Smartcard APIs called by the server.
363 * @since version 3.28.0
364 */
365 WINPR_ATTR_NODISCARD psRdpdrSmartcardEstablishContext
369 WINPR_ATTR_NODISCARD psRdpdrSmartcardReleaseContext
373 WINPR_ATTR_NODISCARD psRdpdrSmartcardIsValidContext
377 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaderGroups
381 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaderGroups
385 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaders
389 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaders
393 WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeA
397 WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeW
401 WINPR_ATTR_NODISCARD psRdpdrSmartcardCancel
405 WINPR_ATTR_NODISCARD psRdpdrSmartcardConnectA
409 WINPR_ATTR_NODISCARD psRdpdrSmartcardConnectW
413 WINPR_ATTR_NODISCARD psRdpdrSmartcardReconnect
417 WINPR_ATTR_NODISCARD psRdpdrSmartcardDisconnect
421 WINPR_ATTR_NODISCARD psRdpdrSmartcardBeginTransaction
425 WINPR_ATTR_NODISCARD psRdpdrSmartcardEndTransaction
429 WINPR_ATTR_NODISCARD psRdpdrSmartcardStatus
433 WINPR_ATTR_NODISCARD psRdpdrSmartcardStatus
437 WINPR_ATTR_NODISCARD psRdpdrSmartcardTransmit
441 WINPR_ATTR_NODISCARD psRdpdrSmartcardControl
445 WINPR_ATTR_NODISCARD psRdpdrSmartcardGetAttrib
449 WINPR_ATTR_NODISCARD psRdpdrSmartcardSetAttrib
454 /*** New Smartcard callbacks registered by the server. ***/
455 psRdpdrOnSmartcardEstablishContextComplete
461 psRdpdrOnSmartcardReleaseContextComplete
466 psRdpdrOnSmartcardIsValidContextComplete
471 psRdpdrOnSmartcardListReaderGroupsComplete
477 psRdpdrOnSmartcardListReadersComplete
482 psRdpdrOnSmartcardGetStatusChangeComplete
487 psRdpdrOnSmartcardCancelComplete OnSmartcardCancelComplete;
491 psRdpdrOnSmartcardConnectComplete OnSmartcardConnectComplete;
495 psRdpdrOnSmartcardReconnectComplete OnSmartcardReconnectComplete;
499 psRdpdrOnSmartcardDisconnectComplete
504 psRdpdrOnSmartcardBeginTransactionComplete
510 psRdpdrOnSmartcardEndTransactionComplete
515 psRdpdrOnSmartcardStatusComplete OnSmartcardStatusComplete;
519 psRdpdrOnSmartcardTransmitComplete OnSmartcardTransmitComplete;
523 psRdpdrOnSmartcardControlComplete OnSmartcardControlComplete;
527 psRdpdrOnSmartcardGetAttribComplete OnSmartcardGetAttribComplete;
531 psRdpdrOnSmartcardSetAttribComplete OnSmartcardSetAttribComplete;
535 };
536
541 FREERDP_API void rdpdr_server_context_free(RdpdrServerContext* context);
542
548 WINPR_ATTR_MALLOC(rdpdr_server_context_free, 1)
549 FREERDP_API RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm);
550
557 FREERDP_API void rdpdr_server_discard_request(RdpdrServerContext* context, UINT32 completionId);
558#ifdef __cplusplus
559}
560#endif
561
562#endif /* FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H */
UINT16 PacketId
UINT16 Component
WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnPrinterCreate
WINPR_ATTR_NODISCARD psRdpdrCapablityPDU ReceiveCaps
psRdpdrOnDriveDeleteFileComplete OnDriveDeleteFileComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardEstablishContext SmartcardEstablishContext
psRdpdrOnSmartcardListReadersComplete OnSmartcardListReadersComplete
psRdpdrOnSmartcardBeginTransactionComplete OnSmartcardBeginTransactionComplete
psRdpdrOnSmartcardDisconnectComplete OnSmartcardDisconnectComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardTransmit SmartcardTransmit
WINPR_ATTR_NODISCARD psRdpdrDriveDeleteDirectory DriveDeleteDirectory
WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaders SmartcardListReadersA
WINPR_ATTR_NODISCARD psRdpdrCapablityPDU SendCaps
WINPR_ATTR_NODISCARD psRdpdrDriveQueryDirectory DriveQueryDirectory
WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnSerialPortCreate
WINPR_ATTR_NODISCARD psRdpdrSmartcardIsValidContext SmartcardIsValidContext
WINPR_ATTR_NODISCARD psRdpdrStart Start
WINPR_ATTR_NODISCARD psRdpdrDriveCloseFile DriveCloseFile
psRdpdrOnDriveOpenFileComplete OnDriveOpenFileComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeW SmartcardGetStatusChangeW
psRdpdrOnDriveReadFileComplete OnDriveReadFileComplete
psRdpdrOnDriveDeleteDirectoryComplete OnDriveDeleteDirectoryComplete
psRdpdrOnSmartcardConnectComplete OnSmartcardConnectComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeA SmartcardGetStatusChangeA
psRdpdrOnSmartcardEstablishContextComplete OnSmartcardEstablishContextComplete
WINPR_ATTR_NODISCARD psRdpdrReceiveClientNameRequest ReceiveClientNameRequest
psRdpdrOnSmartcardIsValidContextComplete OnSmartcardIsValidContextComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardReleaseContext SmartcardReleaseContext
psRdpdrOnSmartcardReleaseContextComplete OnSmartcardReleaseContextComplete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnDriveDelete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnSerialPortDelete
WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceRemove ReceiveDeviceRemove
WINPR_ATTR_NODISCARD psRdpdrSmartcardReconnect SmartcardReconnect
WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaders SmartcardListReadersW
WINPR_ATTR_NODISCARD psRdpdrSmartcardStatus SmartcardStatusA
psRdpdrOnDriveQueryDirectoryComplete OnDriveQueryDirectoryComplete
psRdpdrOnSmartcardCancelComplete OnSmartcardCancelComplete
WINPR_ATTR_NODISCARD psRdpdrReceiveAnnounceResponse ReceiveAnnounceResponse
WINPR_ATTR_NODISCARD psRdpdrSmartcardConnectA SmartcardConnectA
WINPR_ATTR_NODISCARD psRdpdrSmartcardGetAttrib SmartcardGetAttrib
WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaderGroups SmartcardListReaderGroupsW
WINPR_ATTR_NODISCARD psRdpdrSmartcardControl SmartcardControl
WINPR_ATTR_NODISCARD psRdpdrSmartcardDisconnect SmartcardDisconnect
psRdpdrOnSmartcardEndTransactionComplete OnSmartcardEndTransactionComplete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnSmartcardCreate
psRdpdrOnSmartcardStatusComplete OnSmartcardStatusComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardCancel SmartcardCancel
WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceAnnounce ReceiveDeviceAnnounce
WINPR_ATTR_NODISCARD psRdpdrSmartcardConnectW SmartcardConnectW
psRdpdrOnDriveWriteFileComplete OnDriveWriteFileComplete
psRdpdrOnSmartcardReconnectComplete OnSmartcardReconnectComplete
psRdpdrOnSmartcardControlComplete OnSmartcardControlComplete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnParallelPortDelete
WINPR_ATTR_NODISCARD psRdpdrSmartcardEndTransaction SmartcardEndTransaction
psRdpdrOnSmartcardListReaderGroupsComplete OnSmartcardListReaderGroupsComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaderGroups SmartcardListReaderGroupsA
WINPR_ATTR_NODISCARD psRdpdrSmartcardStatus SmartcardStatusW
WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnSmartcardDelete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnDriveCreate
WINPR_ATTR_NODISCARD psRdpdrReceivePDU ReceivePDU
WINPR_ATTR_NODISCARD psRdpdrDriveReadFile DriveReadFile
RdpdrServerPrivate * priv
psRdpdrOnSmartcardGetAttribComplete OnSmartcardGetAttribComplete
WINPR_ATTR_NODISCARD psRdpdrDriveOpenFile DriveOpenFile
psRdpdrOnDriveCreateDirectoryComplete OnDriveCreateDirectoryComplete
WINPR_ATTR_NODISCARD psRdpdrDriveRenameFile DriveRenameFile
WINPR_ATTR_NODISCARD psRdpdrDriveCreateDirectory DriveCreateDirectory
WINPR_ATTR_NODISCARD psRdpdrDriveDeleteFile DriveDeleteFile
psRdpdrOnSmartcardSetAttribComplete OnSmartcardSetAttribComplete
psRdpdrOnDriveCloseFileComplete OnDriveCloseFileComplete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate OnParallelPortCreate
WINPR_ATTR_NODISCARD psRdpdrSmartcardSetAttrib SmartcardSetAttrib
psRdpdrOnSmartcardTransmitComplete OnSmartcardTransmitComplete
psRdpdrOnDriveRenameFileComplete OnDriveRenameFileComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardBeginTransaction SmartcardBeginTransaction
WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnPrinterDelete
WINPR_ATTR_NODISCARD psRdpdrDriveWriteFile DriveWriteFile
psRdpdrOnSmartcardGetStatusChangeComplete OnSmartcardGetStatusChangeComplete
WINPR_ATTR_NODISCARD psRdpdrSendServerAnnounce SendServerAnnounce