26#ifndef FREERDP_CHANNEL_DRIVE_CLIENT_FILE_H
27#define FREERDP_CHANNEL_DRIVE_CLIENT_FILE_H
29#include <winpr/stream.h>
30#include <winpr/file.h>
32#include <freerdp/api.h>
33#include <freerdp/channels/log.h>
35#define TAG CHANNELS_TAG("drive.client")
44 const WCHAR* basepath;
47 UINT32 FileAttributes;
50 UINT32 CreateDisposition;
54FREERDP_LOCAL BOOL drive_file_free(
DRIVE_FILE* file);
56WINPR_ATTR_MALLOC(drive_file_free, 1)
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);
62WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_open(
DRIVE_FILE* file);
64WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_seek(
DRIVE_FILE* file, UINT64 Offset);
66WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_read(
DRIVE_FILE* file, BYTE* buffer,
69WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_write(
DRIVE_FILE* file, const BYTE* buffer,
72WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_query_information(
DRIVE_FILE* file,
73 UINT32 FsInformationClass,
76WINPR_ATTR_NODISCARD FREERDP_LOCAL BOOL drive_file_set_information(
DRIVE_FILE* file,
77 UINT32 FsInformationClass,
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);