2.2.1.1.1 Pathname Extensions

In addition to the specification in [MS-CIFS] section 2.2.1.1.2, pathnames include the following extension:

  • Previous Version Tokens -- Support for this feature is optional.<6>

Pathnames are allowed to contain a previous version token (or @GMT token), as a directory element in a path. A previous version token indicates that the pathname is a request to access the previous version (or shadow copy) of the file or directory at a particular point in time. This feature is available on any path-based operation (for example, SMB_COM_NT_CREATE_ANDX). A pathname MUST NOT contain more than one previous version token.

For example, requesting a previous version of the file \\server\mydocs\reviews\feb01.doc at 2:44:00 P.M. on March30, 2001 UTC is specified in the following format:

 \\server\mydocs\reviews\@GMT-2001.03.30-14.44.00\feb01.doc

The same technique can be used to build a path that represents a previous version of a directory as opposed to a file.

For example, requesting a previous version of the directory \\server\mydocs\reviews at 2:44:00 PM on 3/30/01 UTC can be specified in either of the following formats:

A token appearing as an intermediate path component:

 \\server\mydocs\@GMT-2001.03.30-14.44.00\reviews

A token appearing as a final path component:

 \\server\mydocs\reviews\@GMT-2001.03.30-14.44.00

In addition, it is possible to request an enumeration of available previous version timestamps (or snapshots) of a file or directory. While the NT_TRANSACT_IOCTL subcommand can be used with the FSCTL_SRV_ENUMERATE_SNAPSHOTS FSCTL code to enumerate available previous version timestamps using a valid Fid (section 2.2.7.2.1), these extensions also present a path-based method to access this functionality. The TRANS2_FIND_FIRST2 subcommand's SMB_FIND_FILE_BOTH_DIRECTORY_INFO Information Level (section 2.2.6.1) has been extended to allow a special previous version wildcard token, @GMT-*.

For example, requesting an enumeration of available previous version timestamps of the examples, discussed earlier in this section, can be specified in the following ways:

 \\server\mydocs\reviews\@GMT-*\feb01.doc
 \\server\mydocs\@GMT-*\reviews
 \\server\mydocs\reviews\@GMT-*