99 lines
3.0 KiB
C
99 lines
3.0 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);
|
|
|
|
void
|
|
devredir_file_read(struct state_read *fusep, tui32 device_id, tui32 FileId,
|
|
tui32 Length, tui64 Offset);
|
|
|
|
void
|
|
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
|