3 pointer_default(unique)
7 typedef [public] struct {
10 /* <56> Windows sends 4 bytes of zero for the context field. */
21 typedef [public] struct {
25 srv_copychunk chunks
[chunk_count
];
28 typedef [public] struct {
29 uint32 chunks_written
;
30 uint32 chunk_bytes_written
;
31 uint32 total_bytes_written
;
34 typedef [public] struct {
37 uint32 maximum_token_lifetime
;
38 uint32 default_token_lifetime
;
39 hyper maximum_xfer_size
;
40 hyper optimal_xfer_count
;
41 uint32 maximum_data_descriptors
;
42 uint32 maximum_xfer_length_per_descriptor
;
43 uint32 optimal_xfer_length_per_descriptor
;
44 uint16 optimal_xfer_length_granularity
;
46 } device_copy_offload_descriptor
;
48 /* XXX: 0x00000001 is unconfirmed */
49 const uint32 STORAGE_OFFLOAD_TOKEN_TYPE_ZERO_DATA
= 0x00000001;
50 typedef [public] struct {
54 [size_is(token_id_len
)] uint8 token
[];
55 } storage_offload_token
;
57 typedef [public] struct {
60 uint32 token_time_to_live
;
64 } fsctl_offload_read_input
;
66 const uint32 OFFLOAD_READ_FLAG_FILE_TOO_SMALL
= 0x00000001;
67 const uint32 OFFLOAD_READ_FLAG_ALL_ZERO_BEYOND_RANGE
= 0x00000002;
68 const uint32 OFFLOAD_READ_FLAG_CANNOT_OFFLOAD_BEYOND_RANGE
= 0x00000004;
69 typedef [public] struct {
74 } fsctl_offload_read_output
;
76 typedef [public] struct {
83 } fsctl_offload_write_input
;
85 typedef [public] struct {
89 } fsctl_offload_write_output
;
94 const uint16 COMPRESSION_FORMAT_NONE
= 0x0000;
95 const uint16 COMPRESSION_FORMAT_DEFAULT
= 0x0001;
96 const uint16 COMPRESSION_FORMAT_LZNT1
= 0x0002;
98 typedef [public] struct {
103 interface netinterface
105 typedef [bitmap32bit
] bitmap
{
106 FSCTL_NET_IFACE_RSS_CAPABLE
= 0x00000001,
107 FSCTL_NET_IFACE_RDMA_CAPABLE
= 0x00000002
108 } fsctl_net_iface_capability
;
110 typedef [enum16bit
] enum {
111 FSCTL_NET_IFACE_AF_INET
= 0x0002,
112 FSCTL_NET_IFACE_AF_INET6
= 0x0017
115 typedef [flag
(NDR_NOALIGN
)] struct {
116 [value
(0)] uint16 port
;
117 [flag
(NDR_BIG_ENDIAN
)] ipv4address ipv4
;
118 [value
(0)] hyper reserved
;
121 typedef [flag
(NDR_NOALIGN
)] struct {
122 [value
(0)] uint16 port
;
123 [value
(0)] uint32 flowinfo
;
124 [flag
(NDR_BIG_ENDIAN
)] ipv6address ipv6
;
125 [value
(0)] uint32 scopeid
;
126 } fsctl_sockaddr_in6
;
128 typedef [nodiscriminant
,flag
(NDR_NOALIGN
)] union {
129 [case (FSCTL_NET_IFACE_AF_INET
)] fsctl_sockaddr_in saddr_in
;
130 [case (FSCTL_NET_IFACE_AF_INET6
)] fsctl_sockaddr_in6 saddr_in6
;
131 } fsctl_sockaddr_union
;
133 typedef [flag
(NDR_NOALIGN
)] struct {
134 fsctl_sockaddr_af family
;
135 [subcontext
(0),subcontext_size
(126),switch_is(family
)] fsctl_sockaddr_union saddr
;
136 } fsctl_sockaddr_storage
;
138 typedef [public,relative_base
,noprint
] struct {
139 [relative
] fsctl_net_iface_info
*next
;
141 fsctl_net_iface_capability capability
;
142 [value
(0)] uint32 reserved
;
144 fsctl_sockaddr_storage sockaddr
;
145 } fsctl_net_iface_info
;
150 /* MS-FSCC 2.3.33 FSCTL_QUERY_ALLOCATED_RANGES Request */
151 typedef [public] struct {
154 } file_alloced_range_buf
;
156 typedef [public] struct {
157 file_alloced_range_buf buf
;
158 } fsctl_query_alloced_ranges_req
;
161 * 2.3.34 FSCTL_QUERY_ALLOCATED_RANGES Reply
163 * The number of FILE_ALLOCATED_RANGE_BUFFER elements returned is
164 * computed by dividing the size of the returned output buffer (from
165 * either SMB or SMB2, the lower-layer protocol that carries the FSCTL)
166 * by the size of the FILE_ALLOCATED_RANGE_BUFFER element.
168 typedef [public] struct {
169 file_alloced_range_buf
*array
;
170 } fsctl_query_alloced_ranges_rsp
;
172 /* 2.3.65 FSCTL_SET_ZERO_DATA Request */
173 typedef [public] struct {
175 hyper beyond_final_zero
;
176 } file_zero_data_info
;
178 typedef [public] struct {
179 file_zero_data_info info
;
180 } fsctl_set_zero_data_req
;