1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00
samba-mirror/librpc/idl/ioctl.idl
David Disseldorp e5ebe67e38 idl: add offload data transfer ioctl types
For future use in handling FSCTL_OFFLOAD_READ, FSCTL_OFFLOAD_WRITE and
IOCTL_STORAGE_QUERY_PROPERTY requests new to Windows 8.

Based on preliminary data structure documentation from:
http://msdn.microsoft.com/en-us/library/windows/hardware/hh451101%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/hh451122%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/hh449428%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/hh451469%28v=vs.85%29.aspx

Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Lars Müller <lars@samba.org>

Autobuild-User: David Disseldorp <ddiss@samba.org>
Autobuild-Date: Thu Mar 15 18:40:11 CET 2012 on sn-devel-104
2012-03-15 18:40:11 +01:00

91 lines
2.1 KiB
Plaintext

#include "idl_types.h"
[
pointer_default(unique)
]
interface copychunk
{
typedef [public] struct {
uint8 resume_key[24];
uint32 context_len;
/* <56> Windows sends 4 bytes of zero for the context field. */
uint8 context[4];
} req_resume_key_rsp;
typedef struct {
hyper source_off;
hyper target_off;
uint32 length;
uint32 reserved;
} srv_copychunk;
typedef [public] struct {
uint8 source_key[24];
uint32 chunk_count;
uint32 reserved;
srv_copychunk chunks[chunk_count];
} srv_copychunk_copy;
typedef [public] struct {
uint32 chunks_written;
uint32 chunk_bytes_written;
uint32 total_bytes_written;
} srv_copychunk_rsp;
typedef [public] struct {
uint32 version;
uint32 size;
uint32 maximum_token_lifetime;
uint32 default_token_lifetime;
hyper maximum_xfer_size;
hyper optimal_xfer_count;
uint32 maximum_data_descriptors;
uint32 maximum_xfer_length_per_descriptor;
uint32 optimal_xfer_length_per_descriptor;
uint16 optimal_xfer_length_granularity;
uint8 reserved[2];
} device_copy_offload_descriptor;
/* XXX: 0x00000001 is unconfirmed */
const uint32 STORAGE_OFFLOAD_TOKEN_TYPE_ZERO_DATA = 0x00000001;
typedef [public] struct {
uint32 token_type;
uint8 reserved[2];
uint16 token_id_len;
[size_is(token_id_len)] uint8 token[];
} storage_offload_token;
typedef [public] struct {
uint32 size;
uint32 flags;
uint32 token_time_to_live;
uint32 reserved;
hyper file_offset;
hyper length;
} fsctl_offload_read_input;
const uint32 OFFLOAD_READ_FLAG_FILE_TOO_SMALL = 0x00000001;
const uint32 OFFLOAD_READ_FLAG_ALL_ZERO_BEYOND_RANGE = 0x00000002;
const uint32 OFFLOAD_READ_FLAG_CANNOT_OFFLOAD_BEYOND_RANGE = 0x00000004;
typedef [public] struct {
uint32 size;
uint32 flags;
hyper xfer_length;
uint8 token[512];
} fsctl_offload_read_output;
typedef [public] struct {
uint32 size;
uint32 flags;
hyper file_offset;
hyper copy_length;
hyper xfer_offset;
uint8 token[512];
} fsctl_offload_write_input;
typedef [public] struct {
uint32 size;
uint32 flags;
hyper length_written;
} fsctl_offload_write_output;
}