23#ifndef FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
24#define FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
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>
44 typedef struct s_rdpdr_server_private RdpdrServerPrivate;
66#if defined(WITH_WCHAR_FILE_DIRECTORY_INFORMATION)
74 typedef UINT (*psRdpdrStart)(RdpdrServerContext* context);
75 typedef UINT (*psRdpdrStop)(RdpdrServerContext* context);
77 typedef UINT (*psRdpdrCapablityPDU)(RdpdrServerContext* context,
80 typedef UINT (*psRdpdrReceivePDU)(RdpdrServerContext* context,
const RDPDR_HEADER* header,
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,
87 typedef UINT (*psRdpdrReceiveDeviceRemove)(RdpdrServerContext* context, UINT32 deviceId,
89 typedef UINT (*psRdpdrReceiveClientNameRequest)(RdpdrServerContext* context,
90 size_t ComputerNameLen,
const char* name);
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,
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);
119 typedef UINT (*psRdpdrDriveReadFileEx)(RdpdrServerContext* context,
void* callbackData,
120 UINT32 deviceId, UINT32 fileId, UINT32 length,
126 typedef UINT (*psRdpdrDriveWriteFileEx)(RdpdrServerContext* context,
void* callbackData,
127 UINT32 deviceId, UINT32 fileId,
const char* buffer,
128 UINT32 length, UINT64 offset);
133 typedef UINT (*psRdpdrDriveRenameFileEx)(RdpdrServerContext* context,
void* callbackData,
134 UINT32 deviceId,
const char* oldPath,
135 const char* newPath, BOOL replaceIfExists);
140 typedef UINT (*psRdpdrDriveSetFileSize)(RdpdrServerContext* context,
void* callbackData,
141 UINT32 deviceId,
const char* path, UINT64 size);
146 typedef UINT (*psRdpdrDriveSetFileTimes)(RdpdrServerContext* context,
void* callbackData,
147 UINT32 deviceId,
const char* path,
148 INT64 lastAccessTime, INT64 lastWriteTime);
153 typedef UINT (*psRdpdrDriveQueryVolumeInformation)(RdpdrServerContext* context,
154 void* callbackData, UINT32 deviceId);
160 typedef void (*psRdpdrOnDriveSetFileInformationComplete)(RdpdrServerContext* context,
161 void* callbackData, UINT32 ioStatus);
166 typedef void (*psRdpdrOnDriveQueryVolumeInformationComplete)(RdpdrServerContext* context,
168 UINT32 ioStatus, UINT64 totalBytes,
169 UINT64 availableBytes);
171 typedef void (*psRdpdrOnDriveCreateDirectoryComplete)(RdpdrServerContext* context,
172 void* callbackData, UINT32 ioStatus);
173 typedef void (*psRdpdrOnDriveDeleteDirectoryComplete)(RdpdrServerContext* context,
174 void* callbackData, UINT32 ioStatus);
175 typedef void (*psRdpdrOnDriveQueryDirectoryComplete)(RdpdrServerContext* context,
176 void* callbackData, UINT32 ioStatus,
178 typedef void (*psRdpdrOnDriveOpenFileComplete)(RdpdrServerContext* context,
void* callbackData,
179 UINT32 ioStatus, UINT32 deviceId, UINT32 fileId);
180 typedef void (*psRdpdrOnDriveReadFileComplete)(RdpdrServerContext* context,
void* callbackData,
181 UINT32 ioStatus,
const char* buffer,
183 typedef void (*psRdpdrOnDriveWriteFileComplete)(RdpdrServerContext* context,
void* callbackData,
184 UINT32 ioStatus, UINT32 bytesWritten);
185 typedef void (*psRdpdrOnDriveCloseFileComplete)(RdpdrServerContext* context,
void* callbackData,
187 typedef void (*psRdpdrOnDriveDeleteFileComplete)(RdpdrServerContext* context,
188 void* callbackData, UINT32 ioStatus);
189 typedef void (*psRdpdrOnDriveRenameFileComplete)(RdpdrServerContext* context,
190 void* callbackData, UINT32 ioStatus);
192 typedef UINT (*psRdpdrOnDeviceCreate)(RdpdrServerContext* context,
const RdpdrDevice* device);
193 typedef UINT (*psRdpdrOnDeviceDelete)(RdpdrServerContext* context, UINT32 deviceId);
195 typedef UINT (*psRdpdrSmartcardEstablishContext)(RdpdrServerContext* context,
196 void* callbackData, UINT32 dwScope,
197 UINT32* completionId);
198 typedef UINT (*psRdpdrSmartcardReleaseContext)(RdpdrServerContext* context,
void* callbackData,
200 UINT32* completionId);
201 typedef UINT (*psRdpdrSmartcardIsValidContext)(RdpdrServerContext* context,
void* callbackData,
203 UINT32* completionId);
204 typedef UINT (*psRdpdrSmartcardListReaderGroups)(RdpdrServerContext* context,
207 UINT32* completionId);
208 typedef UINT (*psRdpdrSmartcardListReaders)(RdpdrServerContext* context,
void* callbackData,
210 typedef UINT (*psRdpdrSmartcardGetStatusChangeA)(RdpdrServerContext* context,
213 UINT32* completionId);
214 typedef UINT (*psRdpdrSmartcardGetStatusChangeW)(RdpdrServerContext* context,
217 UINT32* completionId);
218 typedef UINT (*psRdpdrSmartcardCancel)(RdpdrServerContext* context,
void* callbackData,
220 UINT32* completionId);
221 typedef UINT (*psRdpdrSmartcardConnectA)(RdpdrServerContext* context,
void* callbackData,
223 typedef UINT (*psRdpdrSmartcardConnectW)(RdpdrServerContext* context,
void* callbackData,
225 typedef UINT (*psRdpdrSmartcardReconnect)(RdpdrServerContext* context,
void* callbackData,
227 typedef UINT (*psRdpdrSmartcardDisconnect)(RdpdrServerContext* context,
void* callbackData,
229 UINT32* completionId);
230 typedef UINT (*psRdpdrSmartcardBeginTransaction)(RdpdrServerContext* context,
233 UINT32* completionId);
234 typedef UINT (*psRdpdrSmartcardEndTransaction)(RdpdrServerContext* context,
void* callbackData,
236 UINT32* completionId);
237 typedef UINT (*psRdpdrSmartcardStatus)(RdpdrServerContext* context,
void* callbackData,
239 typedef UINT (*psRdpdrSmartcardTransmit)(RdpdrServerContext* context,
void* callbackData,
241 typedef UINT (*psRdpdrSmartcardControl)(RdpdrServerContext* context,
void* callbackData,
243 typedef UINT (*psRdpdrSmartcardGetAttrib)(RdpdrServerContext* context,
void* callbackData,
245 typedef UINT (*psRdpdrSmartcardSetAttrib)(RdpdrServerContext* context,
void* callbackData,
248 typedef void (*psRdpdrOnSmartcardEstablishContextComplete)(RdpdrServerContext* context,
249 void* callbackData, UINT32 ioStatus,
252 typedef void (*psRdpdrOnSmartcardReleaseContextComplete)(RdpdrServerContext* context,
253 void* callbackData, UINT32 ioStatus,
255 typedef void (*psRdpdrOnSmartcardIsValidContextComplete)(RdpdrServerContext* context,
256 void* callbackData, UINT32 ioStatus,
258 typedef void (*psRdpdrOnSmartcardListReaderGroupsComplete)(RdpdrServerContext* context,
259 void* callbackData, UINT32 ioStatus,
262 typedef void (*psRdpdrOnSmartcardListReadersComplete)(RdpdrServerContext* context,
263 void* callbackData, UINT32 ioStatus,
266 typedef void (*psRdpdrOnSmartcardGetStatusChangeComplete)(RdpdrServerContext* context,
267 void* callbackData, UINT32 ioStatus,
270 typedef void (*psRdpdrOnSmartcardCancelComplete)(RdpdrServerContext* context,
271 void* callbackData, UINT32 ioStatus,
273 typedef void (*psRdpdrOnSmartcardConnectComplete)(RdpdrServerContext* context,
274 void* callbackData, UINT32 ioStatus,
276 typedef void (*psRdpdrOnSmartcardReconnectComplete)(RdpdrServerContext* context,
277 void* callbackData, UINT32 ioStatus,
280 typedef void (*psRdpdrOnSmartcardDisconnectComplete)(RdpdrServerContext* context,
281 void* callbackData, UINT32 ioStatus,
283 typedef void (*psRdpdrOnSmartcardBeginTransactionComplete)(RdpdrServerContext* context,
284 void* callbackData, UINT32 ioStatus,
286 typedef void (*psRdpdrOnSmartcardEndTransactionComplete)(RdpdrServerContext* context,
287 void* callbackData, UINT32 ioStatus,
289 typedef void (*psRdpdrOnSmartcardStatusComplete)(RdpdrServerContext* context,
290 void* callbackData, UINT32 ioStatus,
292 typedef void (*psRdpdrOnSmartcardTransmitComplete)(RdpdrServerContext* context,
293 void* callbackData, UINT32 ioStatus,
295 typedef void (*psRdpdrOnSmartcardControlComplete)(RdpdrServerContext* context,
296 void* callbackData, UINT32 ioStatus,
298 typedef void (*psRdpdrOnSmartcardGetAttribComplete)(RdpdrServerContext* context,
299 void* callbackData, UINT32 ioStatus,
302 typedef void (*psRdpdrOnSmartcardSetAttribComplete)(RdpdrServerContext* context,
303 void* callbackData, UINT32 ioStatus,
310 WINPR_ATTR_NODISCARD psRdpdrStart
Start;
328 WINPR_ATTR_NODISCARD psRdpdrCapablityPDU
330 WINPR_ATTR_NODISCARD psRdpdrCapablityPDU
332 WINPR_ATTR_NODISCARD psRdpdrReceivePDU
334 WINPR_ATTR_NODISCARD psRdpdrSendServerAnnounce
336 WINPR_ATTR_NODISCARD psRdpdrReceiveAnnounceResponse
338 WINPR_ATTR_NODISCARD psRdpdrReceiveClientNameRequest
340 WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceAnnounce
343 WINPR_ATTR_NODISCARD psRdpdrReceiveDeviceRemove
348 WINPR_ATTR_NODISCARD psRdpdrDriveCreateDirectory
350 WINPR_ATTR_NODISCARD psRdpdrDriveDeleteDirectory
361 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
364 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
367 psRdpdrOnDriveCreateDirectoryComplete
369 psRdpdrOnDriveDeleteDirectoryComplete
371 psRdpdrOnDriveQueryDirectoryComplete
373 psRdpdrOnDriveOpenFileComplete
375 psRdpdrOnDriveReadFileComplete
377 psRdpdrOnDriveWriteFileComplete
379 psRdpdrOnDriveCloseFileComplete
381 psRdpdrOnDriveDeleteFileComplete
383 psRdpdrOnDriveRenameFileComplete
387 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
390 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
395 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
398 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
409 WINPR_ATTR_NODISCARD psRdpdrOnDeviceCreate
412 WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete
421 WINPR_ATTR_NODISCARD psRdpdrSmartcardEstablishContext
425 WINPR_ATTR_NODISCARD psRdpdrSmartcardReleaseContext
429 WINPR_ATTR_NODISCARD psRdpdrSmartcardIsValidContext
433 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaderGroups
437 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaderGroups
441 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaders
445 WINPR_ATTR_NODISCARD psRdpdrSmartcardListReaders
449 WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeA
453 WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeW
457 WINPR_ATTR_NODISCARD psRdpdrSmartcardCancel
461 WINPR_ATTR_NODISCARD psRdpdrSmartcardConnectA
465 WINPR_ATTR_NODISCARD psRdpdrSmartcardConnectW
469 WINPR_ATTR_NODISCARD psRdpdrSmartcardReconnect
473 WINPR_ATTR_NODISCARD psRdpdrSmartcardDisconnect
477 WINPR_ATTR_NODISCARD psRdpdrSmartcardBeginTransaction
481 WINPR_ATTR_NODISCARD psRdpdrSmartcardEndTransaction
485 WINPR_ATTR_NODISCARD psRdpdrSmartcardStatus
489 WINPR_ATTR_NODISCARD psRdpdrSmartcardStatus
493 WINPR_ATTR_NODISCARD psRdpdrSmartcardTransmit
497 WINPR_ATTR_NODISCARD psRdpdrSmartcardControl
501 WINPR_ATTR_NODISCARD psRdpdrSmartcardGetAttrib
505 WINPR_ATTR_NODISCARD psRdpdrSmartcardSetAttrib
511 psRdpdrOnSmartcardEstablishContextComplete
517 psRdpdrOnSmartcardReleaseContextComplete
522 psRdpdrOnSmartcardIsValidContextComplete
527 psRdpdrOnSmartcardListReaderGroupsComplete
533 psRdpdrOnSmartcardListReadersComplete
538 psRdpdrOnSmartcardGetStatusChangeComplete
555 psRdpdrOnSmartcardDisconnectComplete
560 psRdpdrOnSmartcardBeginTransactionComplete
566 psRdpdrOnSmartcardEndTransactionComplete
595 WINPR_ATTR_NODISCARD psRdpdrDriveReadFileEx
600 WINPR_ATTR_NODISCARD psRdpdrDriveWriteFileEx
605 WINPR_ATTR_NODISCARD psRdpdrDriveRenameFileEx
610 WINPR_ATTR_NODISCARD psRdpdrDriveSetFileSize
615 WINPR_ATTR_NODISCARD psRdpdrDriveSetFileTimes
621 WINPR_ATTR_NODISCARD psRdpdrDriveQueryVolumeInformation
627 psRdpdrOnDriveSetFileInformationComplete
632 psRdpdrOnDriveQueryVolumeInformationComplete
643 FREERDP_API
void rdpdr_server_context_free(RdpdrServerContext* context);
650 WINPR_ATTR_MALLOC(rdpdr_server_context_free, 1)
651 FREERDP_API RdpdrServerContext* rdpdr_server_context_new(HANDLE vcm);
659 FREERDP_API
void rdpdr_server_discard_request(RdpdrServerContext* context, UINT32 completionId);
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 psRdpdrDriveReadFileEx DriveReadFileEx
WINPR_ATTR_NODISCARD psRdpdrDriveCloseFile DriveCloseFile
psRdpdrOnDriveOpenFileComplete OnDriveOpenFileComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeW SmartcardGetStatusChangeW
psRdpdrOnDriveReadFileComplete OnDriveReadFileComplete
psRdpdrOnDriveQueryVolumeInformationComplete OnDriveQueryVolumeInformationComplete
psRdpdrOnDriveDeleteDirectoryComplete OnDriveDeleteDirectoryComplete
psRdpdrOnSmartcardConnectComplete OnSmartcardConnectComplete
WINPR_ATTR_NODISCARD psRdpdrDriveSetFileSize DriveSetFileSize
WINPR_ATTR_NODISCARD psRdpdrSmartcardGetStatusChangeA SmartcardGetStatusChangeA
psRdpdrOnSmartcardEstablishContextComplete OnSmartcardEstablishContextComplete
WINPR_ATTR_NODISCARD psRdpdrDriveSetFileTimes DriveSetFileTimes
WINPR_ATTR_NODISCARD psRdpdrReceiveClientNameRequest ReceiveClientNameRequest
psRdpdrOnSmartcardIsValidContextComplete OnSmartcardIsValidContextComplete
WINPR_ATTR_NODISCARD psRdpdrSmartcardReleaseContext SmartcardReleaseContext
psRdpdrOnSmartcardReleaseContextComplete OnSmartcardReleaseContextComplete
WINPR_ATTR_NODISCARD psRdpdrOnDeviceDelete OnDriveDelete
WINPR_ATTR_NODISCARD psRdpdrDriveWriteFileEx DriveWriteFileEx
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 psRdpdrDriveQueryVolumeInformation DriveQueryVolumeInformation
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
WINPR_ATTR_NODISCARD psRdpdrDriveRenameFileEx DriveRenameFileEx
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
psRdpdrOnDriveSetFileInformationComplete OnDriveSetFileInformationComplete
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