diff options
author | David Disseldorp <ddiss@samba.org> | 2012-03-15 14:43:26 +0100 |
---|---|---|
committer | David Disseldorp <ddiss@samba.org> | 2012-03-15 18:40:11 +0100 |
commit | e5ebe67e3837cf4da0ae2c3d00c72a244b8f202f (patch) | |
tree | 0e25f5dfee768c8fa8d71a9c30e037cb3ae5d9a8 /librpc | |
parent | edfdbb82bbe86394167a210e65925ccba1ab8c1f (diff) | |
download | samba-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')
-rw-r--r-- | librpc/idl/ioctl.idl | 57 |
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; } |