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)
57FREERDP_LOCAL DRIVE_FILE* drive_file_new(const WCHAR* base_path, const WCHAR* path,
58 UINT32 PathWCharLength, UINT32 id, UINT32 DesiredAccess,
59 UINT32 CreateDisposition, UINT32 CreateOptions,
60 UINT32 FileAttributes, UINT32 SharedAccess);
61
62WINPR_ATTR_NODISCARD
63FREERDP_LOCAL BOOL drive_file_open(DRIVE_FILE* file);
64
65WINPR_ATTR_NODISCARD
66FREERDP_LOCAL BOOL drive_file_seek(DRIVE_FILE* file, UINT64 Offset);
67
68WINPR_ATTR_NODISCARD
69FREERDP_LOCAL BOOL drive_file_read(DRIVE_FILE* file, BYTE* buffer, UINT32* Length);
70
71WINPR_ATTR_NODISCARD
72FREERDP_LOCAL BOOL drive_file_write(DRIVE_FILE* file, const BYTE* buffer, UINT32 Length);
73
74WINPR_ATTR_NODISCARD
75FREERDP_LOCAL BOOL drive_file_query_information(DRIVE_FILE* file, UINT32 FsInformationClass,
76 wStream* output);
77
78WINPR_ATTR_NODISCARD
79FREERDP_LOCAL BOOL drive_file_set_information(DRIVE_FILE* file, UINT32 FsInformationClass,
80 UINT32 Length, wStream* input);
81
82WINPR_ATTR_NODISCARD
83FREERDP_LOCAL BOOL drive_file_query_directory(DRIVE_FILE* file, UINT32 FsInformationClass,
84 BYTE InitialQuery, const WCHAR* path,
85 UINT32 PathWCharLength, wStream* output);
86
87#endif /* FREERDP_CHANNEL_DRIVE_FILE_H */