2.3.42 FSCTL_OFFLOAD_READ Reply

The FSCTL_OFFLOAD_READ Reply message returns the results of the FSCTL_OFFLOAD_READ Request (section 2.3.41).

The FSCTL_OFFLOAD_READ_OUTPUT data element is as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Size

Flags

TransferLength

...

Token (512 bytes)

...

...

Size (4 bytes): A 32-bit unsigned integer that indicates the size, in bytes, of the returned data element.

Flags (4 bytes): A 32-bit unsigned integer that indicates which flags were returned for this operation. Possible values for the flags follow. All unused bits are reserved for future use, SHOULD be set to 0, and MUST be ignored.

Value

Meaning

OFFLOAD_READ_FLAG_ALL_ZERO_BEYOND_CURRENT_RANGE

0x00000001

The data beyond the current range is logically equivalent to zero.

TransferLength (8 bytes): A 64-bit unsigned integer that contains the amount, in bytes, of data that the Token logically represents. This value indicates a contiguous region of the file from the beginning of the requested offset in the FileOffset field in the FSCTL_OFFLOAD_READ_INPUT data element (section 2.3.41). This value can be smaller than the CopyLength field specified in the FSCTL_OFFLOAD_READ_INPUT data element, which indicates that less data was logically represented (logically read) with the Token than was requested. The value of this field MUST be greater than 0x0000000000000000 and MUST be aligned to a logical sector boundary on the volume.

Token (512 bytes): A STORAGE_OFFLOAD_TOKEN (section 2.1.11) structure that contains the generated Token to be used as a representation of the data contained within the portion of the file specified in the FSCTL_OFFLOAD_READ_INPUT data element at the time of the FSCTL_OFFLOAD_READ operation. The contents of this field MUST NOT be modified during subsequent operations.<39>

This message returns a status code as specified in section 2.2. Upon success, the status code returned by the function that processes this FSCTL is STATUS_SUCCESS. The most common error codes are listed in the following table.

Error code

Meaning

STATUS_INVALID_DEVICE_REQUEST

0xC0000010

The file system does not support offload operations.

STATUS_INVALID_PARAMETER

0xC000000D

At least one of the following assertions is true:

  • The target file is smaller than the logical sector size.

  • The FileOffset field is not a multiple of the logical sector size of the volume.

  • The CopyLength field is not a multiple of the logical sector size of the volume.

  • The Size field is not equivalent to the size of an FSCTL_OFFLOAD_READ_INPUT data element.

  • Adding the FileOffset and CopyLength fields results in the overflow of a 64-bit value.

STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED

0xC000A2A3

Offload operations cannot be performed on:

  • Compressed Files

  • Sparse Files

  • Encrypted Files

  • File System Metadata Files

STATUS_NOT_SUPPORTED

0xC00000BB

The file system indicates that the volume does not support the Offload Read operation.

STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED

0xC000A2A1

A file system filter on the server has not opted in for Offload Read support.

STATUS_FILE_DELETED

0xC0000123

The specified data stream is not valid.

STATUS_FILE_CLOSED

0xC0000128

The specified file handle is closed.

STATUS_END_OF_FILE

0xC0000011

The file read starts beyond the End Of the File (EOF).<40>

STATUS_INSUFFICIENT_RESOURCES

0xC000009A

There were insufficient resources to complete the operation.

STATUS_BUFFER_TOO_SMALL

0xC0000023

The input buffer is too small to contain an FSCTL_OFFLOAD_READ_INPUT data element.

or

The output buffer is too small to contain an FSCTL_OFFLOAD_READ_OUTPUT data element.

STATUS_DEVICE_FEATURE_NOT_SUPPORTED

0xC0000463

The storage device does not support offload read.