cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

rdpdr-fs-messages-file-info.h (4588B)


      1/*
      2 * Licensed to the Apache Software Foundation (ASF) under one
      3 * or more contributor license agreements.  See the NOTICE file
      4 * distributed with this work for additional information
      5 * regarding copyright ownership.  The ASF licenses this file
      6 * to you under the Apache License, Version 2.0 (the
      7 * "License"); you may not use this file except in compliance
      8 * with the License.  You may obtain a copy of the License at
      9 *
     10 *   http://www.apache.org/licenses/LICENSE-2.0
     11 *
     12 * Unless required by applicable law or agreed to in writing,
     13 * software distributed under the License is distributed on an
     14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     15 * KIND, either express or implied.  See the License for the
     16 * specific language governing permissions and limitations
     17 * under the License.
     18 */
     19
     20#ifndef GUAC_RDP_CHANNELS_RDPDR_FS_MESSAGES_FILE_INFO_H
     21#define GUAC_RDP_CHANNELS_RDPDR_FS_MESSAGES_FILE_INFO_H
     22
     23/**
     24 * Handlers for file queries received over the RDPDR channel via the
     25 * IRP_MJ_QUERY_INFORMATION major function.
     26 *
     27 * @file rdpdr-fs-messages-file-info.h
     28 */
     29
     30#include "channels/common-svc.h"
     31#include "channels/rdpdr/rdpdr.h"
     32
     33#include <winpr/stream.h>
     34
     35/**
     36 * Handler for Device I/O Requests which set/update file information.
     37 *
     38 * @param svc
     39 *     The guac_rdp_common_svc representing the static virtual channel being
     40 *     used for RDPDR.
     41 *
     42 * @param device
     43 *     The guac_rdpdr_device of the relevant device, as dictated by the
     44 *     deviceId field of the common RDPDR header within the received PDU.
     45 *     Within the guac_rdpdr_iorequest structure, the deviceId field is stored
     46 *     within device_id.
     47 *
     48 * @param iorequest
     49 *     The contents of the common RDPDR Device I/O Request header shared by all
     50 *     RDPDR devices.
     51 *
     52 * @param length
     53 *     The length of the SetBuffer field of the I/O request, in bytes. Whether
     54 *     the SetBuffer field is applicable to a particular request, as well as
     55 *     the specific contents of that field, depend on the type of request.
     56 *
     57 * @param input_stream
     58 *     The remaining data within the received PDU, following the common RDPDR
     59 *     Device I/O Request header and length field. If the SetBuffer field is
     60 *     used for this request, the first byte of SetBuffer will be the first
     61 *     byte read from this stream.
     62 */
     63typedef void guac_rdpdr_set_information_request_handler(guac_rdp_common_svc* svc,
     64        guac_rdpdr_device* device, guac_rdpdr_iorequest* iorequest,
     65        int length, wStream* input_stream);
     66
     67/**
     68 * Processes a query for FileBasicInformation. From the documentation, this is
     69 * "used to query a file for the times of creation, last access, last write,
     70 * and change, in addition to file attribute information."
     71 */
     72guac_rdpdr_device_iorequest_handler guac_rdpdr_fs_process_query_basic_info;
     73
     74/**
     75 * Processes a query for FileStandardInformation. From the documentation, this
     76 * is "used to query for file information such as allocation size, end-of-file
     77 * position, and number of links."
     78 */
     79guac_rdpdr_device_iorequest_handler guac_rdpdr_fs_process_query_standard_info;
     80
     81/**
     82 * Processes a query for FileAttributeTagInformation. From the documentation
     83 * this is "used to query for file attribute and reparse tag information."
     84 */
     85guac_rdpdr_device_iorequest_handler guac_rdpdr_fs_process_query_attribute_tag_info;
     86
     87/**
     88 * Process a set operation for FileRenameInformation. From the documentation,
     89 * this operation is used to rename a file.
     90 */
     91guac_rdpdr_set_information_request_handler guac_rdpdr_fs_process_set_rename_info;
     92
     93/**
     94 * Process a set operation for FileAllocationInformation. From the
     95 * documentation, this operation is used to set a file's allocation size.
     96 */
     97guac_rdpdr_set_information_request_handler guac_rdpdr_fs_process_set_allocation_info;
     98
     99/**
    100 * Process a set operation for FileDispositionInformation. From the
    101 * documentation, this operation is used to mark a file for deletion.
    102 */
    103guac_rdpdr_set_information_request_handler guac_rdpdr_fs_process_set_disposition_info;
    104
    105/**
    106 * Process a set operation for FileEndOfFileInformation. From the
    107 * documentation, this operation is used "to set end-of-file information for
    108 * a file."
    109 */
    110guac_rdpdr_set_information_request_handler guac_rdpdr_fs_process_set_end_of_file_info;
    111
    112/**
    113 * Process a set operation for FileBasicInformation. From the documentation,
    114 * this is "used to set file information such as the times of creation, last
    115 * access, last write, and change, in addition to file attributes."
    116 */
    117guac_rdpdr_set_information_request_handler guac_rdpdr_fs_process_set_basic_info;
    118
    119#endif