[MS-FSCC] specifies:
The number of FILE_ALLOCATED_RANGE_BUFFER elements returned is
computed by dividing the size of the returned output buffer (from
either SMB or SMB2, the lower-layer protocol that carries the FSCTL)
by the size of the FILE_ALLOCATED_RANGE_BUFFER element.
Ideally, this requirement could be defined in idl with the following:
[flag(NDR_REMAINING)] file_alloced_range_buf array[];
However, this is not currently supported by PIDL, so just use an opaque
data blob for now.
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
* computed by dividing the size of the returned output buffer (from
* either SMB or SMB2, the lower-layer protocol that carries the FSCTL)
* by the size of the FILE_ALLOCATED_RANGE_BUFFER element.
+ *
+ * This logic can't (currently) be represented in pidl, so just use a
+ * blob. Perhaps in future we'll support:
+ * [flag(NDR_REMAINING)] file_alloced_range_buf array[];
*/
typedef [public] struct {
- file_alloced_range_buf *array;
+ [flag(NDR_REMAINING)] DATA_BLOB far_buf_array;
} fsctl_query_alloced_ranges_rsp;
/* 2.3.65 FSCTL_SET_ZERO_DATA Request */
status = NT_STATUS_UNSUCCESSFUL;
goto err_out;
}
+ /* move to next buffer */
+ ioctl.smb2.out.out.data += sizeof(far_buf);
+ ioctl.smb2.out.out.length -= sizeof(far_buf);
}
done: