Ignore set end-of-file and set allocation.
This commit is contained in:
parent
683e8c24c0
commit
f9cf524993
@ -380,37 +380,38 @@ void guac_rdpdr_fs_process_set_file_info(guac_rdpdr_device* device,
|
|||||||
wStream* input_stream, int file_id, int completion_id) {
|
wStream* input_stream, int file_id, int completion_id) {
|
||||||
|
|
||||||
int fs_information_class;
|
int fs_information_class;
|
||||||
|
int length;
|
||||||
|
|
||||||
Stream_Read_UINT32(input_stream, fs_information_class);
|
Stream_Read_UINT32(input_stream, fs_information_class);
|
||||||
Stream_Seek(input_stream, 4); /* Length */
|
Stream_Read_UINT32(input_stream, length); /* Length */
|
||||||
Stream_Seek(input_stream, 24); /* Padding */
|
Stream_Seek(input_stream, 24); /* Padding */
|
||||||
|
|
||||||
/* Dispatch to appropriate class-specific handler */
|
/* Dispatch to appropriate class-specific handler */
|
||||||
switch (fs_information_class) {
|
switch (fs_information_class) {
|
||||||
|
|
||||||
case FileBasicInformation:
|
case FileBasicInformation:
|
||||||
guac_rdpdr_fs_process_set_basic_info(device, input_stream,
|
guac_rdpdr_fs_process_set_basic_info(device, input_stream,
|
||||||
file_id, completion_id);
|
file_id, completion_id, length);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FileEndOfFileInformation:
|
case FileEndOfFileInformation:
|
||||||
guac_rdpdr_fs_process_set_end_of_file_info(device, input_stream,
|
guac_rdpdr_fs_process_set_end_of_file_info(device, input_stream,
|
||||||
file_id, completion_id);
|
file_id, completion_id, length);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FileDispositionInformation:
|
case FileDispositionInformation:
|
||||||
guac_rdpdr_fs_process_set_disposition_info(device, input_stream,
|
guac_rdpdr_fs_process_set_disposition_info(device, input_stream,
|
||||||
file_id, completion_id);
|
file_id, completion_id, length);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FileRenameInformation:
|
case FileRenameInformation:
|
||||||
guac_rdpdr_fs_process_set_rename_info(device, input_stream,
|
guac_rdpdr_fs_process_set_rename_info(device, input_stream,
|
||||||
file_id, completion_id);
|
file_id, completion_id, length);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FileAllocationInformation:
|
case FileAllocationInformation:
|
||||||
guac_rdpdr_fs_process_set_allocation_info(device, input_stream,
|
guac_rdpdr_fs_process_set_allocation_info(device, input_stream,
|
||||||
file_id, completion_id);
|
file_id, completion_id, length);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -130,35 +130,63 @@ void guac_rdpdr_fs_process_query_attribute_tag_info(guac_rdpdr_device* device, w
|
|||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdpdr_fs_process_set_rename_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_rename_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id) {
|
wStream* input_stream, int file_id, int completion_id, int length) {
|
||||||
/* STUB */
|
/* STUB */
|
||||||
guac_client_log_error(device->rdpdr->client,
|
guac_client_log_error(device->rdpdr->client,
|
||||||
"Unimplemented stub: %s", __func__);
|
"Unimplemented stub: %s", __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdpdr_fs_process_set_allocation_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_allocation_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id) {
|
wStream* input_stream, int file_id, int completion_id, int length) {
|
||||||
/* STUB */
|
|
||||||
guac_client_log_error(device->rdpdr->client,
|
wStream* output_stream = Stream_New(NULL, 60);
|
||||||
"Unimplemented stub: %s", __func__);
|
|
||||||
|
/* Write header */
|
||||||
|
Stream_Write_UINT16(output_stream, RDPDR_CTYP_CORE);
|
||||||
|
Stream_Write_UINT16(output_stream, PAKID_CORE_DEVICE_IOCOMPLETION);
|
||||||
|
|
||||||
|
/* Write content */
|
||||||
|
Stream_Write_UINT32(output_stream, device->device_id);
|
||||||
|
Stream_Write_UINT32(output_stream, completion_id);
|
||||||
|
Stream_Write_UINT32(output_stream, STATUS_SUCCESS);
|
||||||
|
|
||||||
|
/* No content for now */
|
||||||
|
Stream_Write_UINT32(output_stream, length);
|
||||||
|
|
||||||
|
svc_plugin_send((rdpSvcPlugin*) device->rdpdr, output_stream);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdpdr_fs_process_set_disposition_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_disposition_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id) {
|
wStream* input_stream, int file_id, int completion_id, int length) {
|
||||||
/* STUB */
|
/* STUB */
|
||||||
guac_client_log_error(device->rdpdr->client,
|
guac_client_log_error(device->rdpdr->client,
|
||||||
"Unimplemented stub: %s", __func__);
|
"Unimplemented stub: %s", __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdpdr_fs_process_set_end_of_file_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_end_of_file_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id) {
|
wStream* input_stream, int file_id, int completion_id, int length) {
|
||||||
/* STUB */
|
|
||||||
guac_client_log_error(device->rdpdr->client,
|
wStream* output_stream = Stream_New(NULL, 60);
|
||||||
"Unimplemented stub: %s", __func__);
|
|
||||||
|
/* Write header */
|
||||||
|
Stream_Write_UINT16(output_stream, RDPDR_CTYP_CORE);
|
||||||
|
Stream_Write_UINT16(output_stream, PAKID_CORE_DEVICE_IOCOMPLETION);
|
||||||
|
|
||||||
|
/* Write content */
|
||||||
|
Stream_Write_UINT32(output_stream, device->device_id);
|
||||||
|
Stream_Write_UINT32(output_stream, completion_id);
|
||||||
|
Stream_Write_UINT32(output_stream, STATUS_SUCCESS);
|
||||||
|
|
||||||
|
/* No content for now */
|
||||||
|
Stream_Write_UINT32(output_stream, length);
|
||||||
|
|
||||||
|
svc_plugin_send((rdpSvcPlugin*) device->rdpdr, output_stream);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_rdpdr_fs_process_set_basic_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_basic_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id) {
|
wStream* input_stream, int file_id, int completion_id, int length) {
|
||||||
/* STUB */
|
/* STUB */
|
||||||
guac_client_log_error(device->rdpdr->client,
|
guac_client_log_error(device->rdpdr->client,
|
||||||
"Unimplemented stub: %s", __func__);
|
"Unimplemented stub: %s", __func__);
|
||||||
|
@ -81,21 +81,21 @@ void guac_rdpdr_fs_process_query_attribute_tag_info(guac_rdpdr_device* device,
|
|||||||
* this operation is used to rename a file.
|
* this operation is used to rename a file.
|
||||||
*/
|
*/
|
||||||
void guac_rdpdr_fs_process_set_rename_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_rename_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id);
|
wStream* input_stream, int file_id, int completion_id, int length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process a set operation for FileAllocationInformation. From the
|
* Process a set operation for FileAllocationInformation. From the
|
||||||
* documentation, this operation is used to set a file's allocation size.
|
* documentation, this operation is used to set a file's allocation size.
|
||||||
*/
|
*/
|
||||||
void guac_rdpdr_fs_process_set_allocation_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_allocation_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id);
|
wStream* input_stream, int file_id, int completion_id, int length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process a set operation for FileDispositionInformation. From the
|
* Process a set operation for FileDispositionInformation. From the
|
||||||
* documentation, this operation is used to mark a file for deletion.
|
* documentation, this operation is used to mark a file for deletion.
|
||||||
*/
|
*/
|
||||||
void guac_rdpdr_fs_process_set_disposition_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_disposition_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id);
|
wStream* input_stream, int file_id, int completion_id, int length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process a set operation for FileEndOfFileInformation. From the
|
* Process a set operation for FileEndOfFileInformation. From the
|
||||||
@ -103,7 +103,7 @@ void guac_rdpdr_fs_process_set_disposition_info(guac_rdpdr_device* device,
|
|||||||
* a file."
|
* a file."
|
||||||
*/
|
*/
|
||||||
void guac_rdpdr_fs_process_set_end_of_file_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_end_of_file_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id);
|
wStream* input_stream, int file_id, int completion_id, int length);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process a set operation for FileBasicInformation. From the documentation,
|
* Process a set operation for FileBasicInformation. From the documentation,
|
||||||
@ -111,6 +111,6 @@ void guac_rdpdr_fs_process_set_end_of_file_info(guac_rdpdr_device* device,
|
|||||||
* access, last write, and change, in addition to file attributes."
|
* access, last write, and change, in addition to file attributes."
|
||||||
*/
|
*/
|
||||||
void guac_rdpdr_fs_process_set_basic_info(guac_rdpdr_device* device,
|
void guac_rdpdr_fs_process_set_basic_info(guac_rdpdr_device* device,
|
||||||
wStream* input_stream, int file_id, int completion_id);
|
wStream* input_stream, int file_id, int completion_id, int length);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user