共用方式為


2.3.39 FSCTL_MARK_HANDLE Request

The FSCTL_MARK_HANDLE request is used to set specific operational state on the given file handle. This state is lost once the handle is closed.<35>

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

CopyNumber

Unused

VolumeHandle

...

HandleInfo

Reserved

CopyNumber (4 bytes): A 32-bit unsigned integer that identifies, when reading from a file which resides on redundant media, which copy to read.

Unused (4 bytes): Reserved for alignment. This field can contain any value and MUST be ignored.

VolumeHandle (8 bytes): A 64-bit HANDLE that is not used and MUST be set to zero.

HandleInfo (4 bytes): A 32-bit unsigned integer containing flags to identify the request. Only one of the following values can be set:

Value

Meaning

MARK_HANDLE_READ_COPY

0x00000080

When a file resides on redundant media (ex: mirrored or RAID) this tells the file system that read operations on this handle should only come from the specified copy of data.

When this state is not set a file system will return data from any copy available as it sees fit.

This operation is typically used by scrubber applications that want to validate the contents of all copies of data for a given file.

MARK_HANDLE_NOT_READ_COPY

0x00000100

When a file resides on redundant media (ex: mirrored or RAID) this tells the file system that read operations on this handle may come from any copy of the data as the file system sees fit. This turns off reading from a specific copy.

Reserved (4 Bytes):  A 32-bit field. This field is reserved. This field SHOULD be set to 0, and MUST be ignored.