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>
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.
The object store MUST match all reparse tags on the volume.
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.