The following local variable is used:

  • Boolean value (initialized to FALSE): EmptyPattern

Support for this operation is optional. If the object store does not implement this functionality, the operation MUST be failed with STATUS_INVALID_DEVICE_REQUEST.<58>

OutputBuffer is an array of one or more FILE_REPARSE_POINT_INFORMATION structures as specified in [MS-FSCC] section 2.4.35.

This Information class can only be sent to a specific directory that maintains a list of all Reparse Points on Open.File.Volume. The name of this directory is: "\$Extend\$Reparse:$R:$INDEX_ALLOCATION". If it is sent to any other file or directory on Open.File.Volume, the operation MUST be failed with STATUS_INVALID_INFO_CLASS.<59>

Pseudocode for the operation is as follows:

  • If FileNamePattern is not empty and FileNamePattern.Length (0 is a valid length) is not a multiple of 4, the operation MUST be failed with STATUS_INVALID_PARAMETER.

  • If FileNamePattern is empty, the object store MUST set EmptyPattern to TRUE; otherwise it MUST set EmptyPattern to FALSE.

  • If FileNamePattern.Length is less than the size of a ReparseTag (4 bytes), FileNamePattern.Buffer will be zero filled up to the size of ReparseTag.

  • If EmptyPattern is FALSE:

    • The object store MUST search Open.File.Volume for Files having File ReparseTag matching FileNamePattern.

  • Else

    • The object store MUST match all reparse tags on the volume.

  • EndIf

  • If RestartScan is FALSE and EmptyPattern is TRUE and there is no match, the operation MUST be failed with STATUS_NO_MORE_FILES.

  • The operation MUST fail with STATUS_NO_SUCH_FILE under any of the following conditions:

    • EmptyPattern is FALSE and there is no match.

    • EmptyPattern is TRUE and RestartScan is TRUE and there is no match.

  • The operation MUST fail with STATUS_BUFFER_OVERFLOW if OutputBuffer is not large enough to hold the first matching entry.

  • If there is at least one match, the operation is considered successful. The object store MUST return:

    • Status set to STATUS_SUCCESS.

    • OutputBuffer containing an array of as many FILE_REPARSE_POINT_INFORMATION structures that match the query as will fit in OutputBuffer unless ReturnSingleEntry is TRUE, in which case only a single entry will be stored in OutputBuffer. To continue the query, FileNamePattern MUST be empty and RestartScan MUST be FALSE.

    • ByteCount set to the number of bytes filled in OutputBuffer.