2.3.34.1 EXTENT_AND_REFCOUNTS

The EXTENT_AND_REFCOUNTS 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

NextVcn

...

Lcn

...

ReferenceCount

NextVcn (8 bytes): A 64-bit signed integer that contains the VCN at which the next extent begins. This value minus either StartingVcn (for the first Extents array element) or the NextVcn of the previous element of the array (for all other Extents array elements) is the length in clusters of the current extent.

Lcn (8 bytes): A 64-bit signed integer that contains the logical cluster number (LCN) at which the current extent begins on the volume. A 64-bit value of -1 indicates either a compression unit that is partially allocated or an unallocated region of a sparse file. For more information about sparse files, see [SPARSE]. Compression is performed in 16-cluster units. If a given 16-cluster unit compresses to fit in, for example, 9 clusters, there will be a 7-cluster extent of the file with an LCN of -1.

ReferenceCount (4 bytes): A 32-bit unsigned integer that contains the reference count on the logical cluster number (LCN) at which the current extent begins on the volume. If no one else is using the corresponding LCN, the reference count will be 1.

This message also 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_BUFFER_TOO_SMALL

0xC0000023

The output buffer is too small to contain a RETRIEVAL_POINTERS_BUFFER structure.

STATUS_INVALID_PARAMETER

0xC000000D

The input buffer is too small to contain a STARTING_VCN_INPUT_BUFFER, or the StartingVcn given is negative, or the handle is not to a file or directory.

STATUS_END_OF_FILE

0xC0000011

The stream is resident in the MFT and has no clusters allocated, or the starting VCN is beyond the end of the file.

STATUS_BUFFER_OVERFLOW

0x80000005

The output buffer filled before all the extents for this file were returned.