summaryrefslogtreecommitdiff
path: root/librpc/idl
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@samba.org>2012-03-15 14:43:26 +0100
committerDavid Disseldorp <ddiss@samba.org>2012-03-15 18:40:11 +0100
commite5ebe67e3837cf4da0ae2c3d00c72a244b8f202f (patch)
tree0e25f5dfee768c8fa8d71a9c30e037cb3ae5d9a8 /librpc/idl
parentedfdbb82bbe86394167a210e65925ccba1ab8c1f (diff)
downloadsamba-e5ebe67e3837cf4da0ae2c3d00c72a244b8f202f.tar.gz
samba-e5ebe67e3837cf4da0ae2c3d00c72a244b8f202f.tar.bz2
samba-e5ebe67e3837cf4da0ae2c3d00c72a244b8f202f.zip
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
Diffstat (limited to 'librpc/idl')
-rw-r--r--librpc/idl/ioctl.idl57
1 files changed, 57 insertions, 0 deletions
diff --git a/librpc/idl/ioctl.idl b/librpc/idl/ioctl.idl
index 1c319eafec..4672777909 100644
--- a/librpc/idl/ioctl.idl
+++ b/librpc/idl/ioctl.idl
@@ -30,4 +30,61 @@ interface copychunk
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;
}