FreeRDP
Loading...
Searching...
No Matches
drive_file.h
1
26#ifndef FREERDP_CHANNEL_DRIVE_CLIENT_FILE_H
27#define FREERDP_CHANNEL_DRIVE_CLIENT_FILE_H
28
29#include <winpr/stream.h>
30#include <winpr/file.h>
31
32#include <freerdp/api.h>
33#include <freerdp/channels/log.h>
34
35#define TAG CHANNELS_TAG("drive.client")
36
37typedef struct
38{
39 UINT32 id;
40 BOOL is_dir;
41 HANDLE file_handle;
42 HANDLE find_handle;
43 WIN32_FIND_DATAW find_data;
44 const WCHAR* basepath;
45 WCHAR* fullpath;
46 BOOL delete_pending;
47 UINT32 FileAttributes;
48 UINT32 SharedAccess;
49 UINT32 DesiredAccess;
50 UINT32 CreateDisposition;
51 UINT32 CreateOptions;
53
54FREERDP_LOCAL BOOL drive_file_free(DRIVE_FILE* file);
55
56WINPR_ATTR_MALLOC(drive_file_free, 1)
57WINPR_ATTR_NODISCARD FREERDP_LOCAL DRIVE_FILE*
58drive_file_new(const WCHAR* base_path, const WCHAR* path, UINT32 PathWCharLength, UINT32 id,
59 UINT32 DesiredAccess, UINT32 CreateDisposition, UINT32 CreateOptions,
60 UINT32 FileAttributes, UINT32 SharedAccess);
61
62WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_open(DRIVE_FILE* file);
63
64WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_seek(DRIVE_FILE* file, UINT64 Offset);
65
66WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_read(DRIVE_FILE* file, BYTE* buffer,
67 UINT32* Length);
68
69WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_write(DRIVE_FILE* file, const BYTE* buffer,
70 UINT32 Length);
71
72WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_query_information(DRIVE_FILE* file,
73 UINT32 FsInformationClass,
74 wStream* output);
75
76WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_set_information(DRIVE_FILE* file,
77 UINT32 FsInformationClass,
78 UINT32 Length, wStream* input);
79
80WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL
81drive_file_query_directory(DRIVE_FILE* file, UINT32 FsInformationClass, BYTE InitialQuery,
82 const WCHAR* path, UINT32 PathWCharLength, wStream* output);
83
84#endif /* FREERDP_CHANNEL_DRIVE_FILE_H */