4d8f2b5a31
- Reimplemented inode store in separate module chansrv_xfs.[hc] - Allowed atimes and mtimes to be written to Windows side - Mapped file user write bit to (inverted) Windows FILE_ATTRIBUTE_READONLY bit - Mapped file user execute bit to Windows FILE_ATTRIBUTE_SYSTEM bit - Implemented improved security for remotely mounted drives - Implemented USB device removal, allowing hot-plug/remove of memory sticks - Fixed pagefile.sys breaking Ubuntu file browser - Fixed write offset bug - Allowed renaming of open files - Improved reported error codes - Fixed various memory leaks - Addressed valgrind errors related to struct fuse_file_info pointers.
98 lines
3.2 KiB
C
98 lines
3.2 KiB
C
/**
|
|
* xrdp: A Remote Desktop Protocol server.
|
|
*
|
|
* xrdp device redirection - we mainly use it for drive redirection
|
|
*
|
|
* Copyright (C) Laxmikant Rashinkar 2013 LK.Rashinkar@gmail.com
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#if !defined(DEVREDIR_H)
|
|
#define DEVREDIR_H
|
|
|
|
#include "irp.h"
|
|
#include "ms-rdpefs.h"
|
|
|
|
int devredir_init(void);
|
|
int devredir_deinit(void);
|
|
|
|
int devredir_data_in(struct stream* s, int chan_id, int chan_flags,
|
|
int length, int total_length);
|
|
|
|
int devredir_get_wait_objs(tbus* objs, int* count, int* timeout);
|
|
int devredir_check_wait_objs(void);
|
|
|
|
/* misc stuff */
|
|
void devredir_insert_DeviceIoRequest(struct stream *s,
|
|
tui32 DeviceId,
|
|
tui32 FileId,
|
|
tui32 CompletionId,
|
|
enum IRP_MJ MajorFunction,
|
|
enum IRP_MN MinorFunction);
|
|
|
|
/* State pointer types (opaque outside this module), used for
|
|
* callback data
|
|
*/
|
|
struct state_dirscan;
|
|
struct state_lookup;
|
|
struct state_setattr;
|
|
struct state_open;
|
|
struct state_create;
|
|
struct state_read;
|
|
struct state_write;
|
|
struct state_remove;
|
|
struct state_close;
|
|
|
|
/* called from FUSE module */
|
|
|
|
int devredir_get_dir_listing(struct state_dirscan *fusep, tui32 device_id,
|
|
const char *path);
|
|
|
|
int devredir_lookup_entry(struct state_lookup *fusep, tui32 device_id,
|
|
const char *path);
|
|
|
|
int devredir_setattr_for_entry(
|
|
struct state_setattr *fusep, tui32 device_id,
|
|
const char *filename,
|
|
const struct file_attr *fattr,
|
|
tui32 to_set);
|
|
|
|
int devredir_file_create(
|
|
struct state_create *fusep, tui32 device_id,
|
|
const char *path, int mode);
|
|
|
|
int devredir_file_open(struct state_open *fusep, tui32 device_id,
|
|
const char *path, int flags);
|
|
|
|
int devredir_file_close(struct state_close *fusep, tui32 device_id,
|
|
tui32 file_id);
|
|
|
|
int devredir_file_read(struct state_read *fusep, tui32 device_id, tui32 FileId,
|
|
tui32 Length, tui64 Offset);
|
|
|
|
int
|
|
devredir_file_write(struct state_write *fusep, tui32 DeviceId, tui32 FileId,
|
|
const char *buf, int Length, tui64 Offset);
|
|
|
|
int devredir_file_rename(
|
|
struct state_rename *fusep, tui32 device_id,
|
|
const char *old_name,
|
|
const char *new_name);
|
|
|
|
int
|
|
devredir_rmdir_or_file(struct state_remove *fusep, tui32 device_id,
|
|
const char *path);
|
|
|
|
#endif
|