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;
91 typedef [public] struct {
92 /* The FileHandle field is the volatile part of the fileid */
97 } fsctl_dup_extents_to_file;
100 interface compression
102 const uint16 COMPRESSION_FORMAT_NONE = 0x0000;
103 const uint16 COMPRESSION_FORMAT_DEFAULT = 0x0001;
104 const uint16 COMPRESSION_FORMAT_LZNT1 = 0x0002;
106 typedef [public] struct {
111 interface netinterface
113 typedef [bitmap32bit] bitmap {
114 FSCTL_NET_IFACE_RSS_CAPABLE = 0x00000001,
115 FSCTL_NET_IFACE_RDMA_CAPABLE = 0x00000002
116 } fsctl_net_iface_capability;
118 typedef [enum16bit] enum {
119 FSCTL_NET_IFACE_AF_INET = 0x0002,
120 FSCTL_NET_IFACE_AF_INET6 = 0x0017
123 typedef [flag(NDR_NOALIGN)] struct {
124 [value(0)] uint16 port;
125 [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
126 [value(0)] hyper reserved;
129 typedef [flag(NDR_NOALIGN)] struct {
130 [value(0)] uint16 port;
131 [value(0)] uint32 flowinfo;
132 [flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
133 [value(0)] uint32 scopeid;
134 } fsctl_sockaddr_in6;
136 typedef [nodiscriminant,flag(NDR_NOALIGN)] union {
137 [case (FSCTL_NET_IFACE_AF_INET)] fsctl_sockaddr_in saddr_in;
138 [case (FSCTL_NET_IFACE_AF_INET6)] fsctl_sockaddr_in6 saddr_in6;
139 } fsctl_sockaddr_union;
141 typedef [flag(NDR_NOALIGN)] struct {
142 fsctl_sockaddr_af family;
143 [subcontext(0),subcontext_size(126),switch_is(family)] fsctl_sockaddr_union saddr;
144 } fsctl_sockaddr_storage;
146 typedef [public,relative_base,noprint] struct {
147 [relative] fsctl_net_iface_info *next;
149 fsctl_net_iface_capability capability;
150 [value(0)] uint32 reserved;
152 fsctl_sockaddr_storage sockaddr;
153 } fsctl_net_iface_info;
158 /* MS-FSCC 2.3.33 FSCTL_QUERY_ALLOCATED_RANGES Request */
159 typedef [public] struct {
162 } file_alloced_range_buf;
164 typedef [public] struct {
165 file_alloced_range_buf buf;
166 } fsctl_query_alloced_ranges_req;
169 * 2.3.34 FSCTL_QUERY_ALLOCATED_RANGES Reply
171 * The number of FILE_ALLOCATED_RANGE_BUFFER elements returned is
172 * computed by dividing the size of the returned output buffer (from
173 * either SMB or SMB2, the lower-layer protocol that carries the FSCTL)
174 * by the size of the FILE_ALLOCATED_RANGE_BUFFER element.
176 * This logic can't (currently) be represented in pidl, so just use a
177 * blob. Perhaps in future we'll support:
178 * [flag(NDR_REMAINING)] file_alloced_range_buf array[];
180 typedef [public] struct {
181 [flag(NDR_REMAINING)] DATA_BLOB far_buf_array;
182 } fsctl_query_alloced_ranges_rsp;
184 /* 2.3.65 FSCTL_SET_ZERO_DATA Request */
185 typedef [public] struct {
187 hyper beyond_final_zero;
188 } file_zero_data_info;
190 typedef [public] struct {
191 file_zero_data_info info;
192 } fsctl_set_zero_data_req;
197 /* 2.2.31.3 NETWORK_RESILIENCY_REQUEST */
198 typedef [public] struct {
201 } network_resiliency_request;
206 /* MS-FSCC 2.3.73.1 FILE_LEVEL_TRIM_RANGE */
207 typedef [public] struct {
210 } file_level_trim_range;
212 /* MS-FSCC 2.3.73 FSCTL_FILE_LEVEL_TRIM Request */
213 typedef [public] struct {
216 file_level_trim_range ranges[num_ranges];
217 } fsctl_file_level_trim_req;
219 /* MS-FSCC 2.3.74 FSCTL_FILE_LEVEL_TRIM Reply */
220 typedef [public] struct {
221 uint32 num_ranges_processed;
222 } fsctl_file_level_trim_rsp;