2.1.1.6 Per Open

The object store MUST implement the following:

  • RootOpen: The Open that represents the root of the share.

  • FileName: The absolute pathname of the opened file in the format specified in [MS-FSCC] section 2.1.5.

  • File: The File that is opened.

  • Link: The Link through which File is opened. Link MUST be an element of File.LinkList.

  • Stream: The Stream that is opened. Stream MUST be an element of File.StreamList.

  • GrantedAccess: The access granted for this open as specified in [MS-SMB2] section 2.2.13.1.

  • RemainingDesiredAccess: The access requested for this Open but not yet granted, as specified in [MS-SMB2] section 2.2.13.1.

  • SharingMode: The sharing mode for this Open as specified in [MS-SMB2] section 2.2.13.

  • Mode: The mode flags for this Open as specified in [MS-FSCC] section 2.4.30.

  • IsCaseInsensitive: A Boolean that is TRUE if this Open is treated as case-insensitive.

  • HasBackupAccess: A Boolean that is TRUE if the Open was performed by a user who is allowed to perform backup operations.

  • HasRestoreAccess: A Boolean that is TRUE if the Open was performed by a user who is allowed to perform restore operations.

  • HasCreateSymbolicLinkAccess: A Boolean that is TRUE if the Open was performed by a user who is allowed to create symbolic links.

  • HasManageVolumeAccess: A Boolean that is TRUE if the Open was performed by a user who is allowed to manage the volume.

  • IsAdministrator: A Boolean that is TRUE if the Open was performed by a user who is a member of the BUILTIN_ADMINISTRATORS group as specified in [MS-DTYP] section 2.4.2.4.

  • QueryPattern: The Unicode string containing the query pattern used to filter directory query.

  • QueryLastEntry: The last Link that was returned in a directory query.

  • LastQuotaId: The index of the last SID returned during quota enumeration on this Open, or -1 if there has not been a quota enumeration on this Open.

  • CurrentByteOffset: The byte offset immediately following the most recent successful synchronous read or write operation of one or more bytes, or 0 if there have not been any.

  • FindBySidRestartIndex: A 64-bit unsigned integer specifying the starting index for a FSCTL_FILE_FILES_BY_SID operation.

  • UserSetModificationTime: A Boolean that is TRUE if a user has explicitly set File.LastModificationTime through this Open.

  • UserSetChangeTime: A Boolean that is TRUE if a user has explicitly set File.LastChangeTime through this Open.

  • UserSetAccessTime: A Boolean that is TRUE if a user has explicitly set File.LastAccessTime through this Open.

  • ReadCopyNumber: A 32-bit unsigned integer which is initialized to a value of 0XFFFFFFFF. Identifies which copy of data should be read from a volume with redundant data (where Volume.NumberOfDataCopies > 1). The CopyNumber is zero based, meaning zero reads the 1st copy, 1 reads the 2nd copy, etc.

  • NextEaEntry: Contains a reference to the next FILE_FULL_EA_INFORMATION entry in File.ExtendedAttributes to be returned the next time FileFullEaInformation is called using this Open as defined in section 2.1.5.12.12.<40>

  • TargetOplockKey: A GUID value that can be used to identify the owner of the Open for the purpose of determining whether to break an oplock in response to a request delivered on a particular Open. Requests on an Open whose Open.TargetOplockKey value matches the Open.TargetOplockKey value associated with an oplock that exists on the Stream do not affect the oplock state (that is, do not cause the oplock to break). For a given Open, the TargetOplockKey value could be empty. An empty value MUST NOT be considered equal to anything other than itself. In other words, given two Open values, Open1 and Open2, such that Open1.TargetOplockKey and/or Open2.TargetOplockKey are empty, Open1.TargetOplockKey MUST NOT be considered equal to Open2.TargetOplockKey.

  • ParentOplockKey: A GUID value that can be used to identify the owner of an oplock on the parent directory of the File associated with the current Open for the purpose of determining whether to break an oplock on the parent in response to a request delivered on a particular Open to a child of that parent. Requests on an Open whose Open.ParentOplockKey value matches the Open.TargetOplockKey value associated with an oplock that exists on the parent directory Stream do not affect the parent's oplock state (that is, do not cause the oplock to break).  For a given Open, the TargetOplockKey value could be empty. An empty value MUST NOT be considered equal to anything other than itself. In other words, given two Open values, ParentOpen on a directory and ChildOpen on a child (either file or directory), such that ParentOpen.TargetOplockKey and/or ChildOpen.ParentOplockKey are empty, ParentOpen. TargetOplockKey MUST NOT be considered equal to ChildOpen.ParentOplockKey.