3.3.1.10 Per Open

The server implements the following:

  • Open.FileId: A numeric value that uniquely identifies the open handle to a file or a pipe within the scope of a session over which the handle was opened. A 64-bit representation of this value, combined with Open.DurableFileId as described below, form the SMB2_FILEID described in section 2.2.14.1.

  • Open.FileGlobalId: A numeric value obtained via registration with [MS-SRVS], as specified in [MS-SRVS] section 3.1.6.4.

  • Open.DurableFileId: A numeric value that uniquely identifies the open handle to a file or a pipe within the scope of all opens granted by the server, as described by the GlobalOpenTable. A 64-bit representation of this value combined with Open.FileId, as described above, form the SMB2_FILEID described in section 2.2.14.1. This value is the persistent portion of the identifier.

  • Open.Session: A reference to the authenticated session, as specified in section 3.3.1.8, over which this open was performed. If the open is not attached to a session at this time, this value MUST be NULL.

  • Open.TreeConnect: A reference to the TreeConnect, as specified in section 3.3.1.9, over which the open was performed. If the open is not attached to a TreeConnect at this time, this value MUST be NULL.

  • Open.Connection: A reference to the connection, as specified in section 3.3.1.7, that created this open. If the open is not attached to a connection at this time, this value MUST be NULL.

  • Open.LocalOpen: An open of a file or named pipe in the underlying local resource that is used to perform the local operations, such as reading or writing, to the underlying object. For named pipes, Open.LocalOpen is shared between the SMB server and RPC server applications which serve RPC requests on a given named pipe. The higher level interfaces described in sections 3.3.4.5 and 3.3.4.11 require this shared element.

  • Open.GrantedAccess: The access granted on this open, as defined in section 2.2.13.1.

  • Open.OplockLevel: The current oplock level for this open. This value MUST be one of the OplockLevel values defined in section 2.2.14: SMB2_OPLOCK_LEVEL_NONE, SMB2_OPLOCK_LEVEL_II, SMB2_OPLOCK_LEVEL_EXCLUSIVE, SMB2_OPLOCK_LEVEL_BATCH, or SMB2_OPLOCK_LEVEL_LEASE.

  • Open.OplockState: The current oplock state of the file. This value MUST be Held, Breaking, or None.

  • Open.OplockTimeout: The time value that indicates when an oplock that is breaking and has not received an acknowledgment from the client will be acknowledged by the server.

  • Open.IsDurable: A Boolean that indicates whether the Open is preserved for reconnect.

  • Open.DurableOpenTimeout: The time the server waits before closing a handle that has been preserved for durability, if a client has not reclaimed it.

  • Open.DurableOpenScavengerTimeout: A time stamp value, if non-zero, representing the maximum time to preserve the open for reclaim.

  • Open.DurableOwner: A security descriptor that holds the original opener of the open. This allows the server to determine if a caller that is trying to reestablish a durable open is allowed to do so. If the server implements SMB 2.1 or SMB 3.x and supports resiliency, this value is also used to enforce security during resilient open reestablishment.

  • Open.CurrentEaIndex: For extended attribute information, this value indicates the current location in an extended attribute information list and allows for the continuing of an enumeration across multiple requests.

  • Open.CurrentQuotaIndex: For quota queries, this value indicates the current index in the quota information list and allows for the continuation of an enumeration across multiple requests.

  • Open.LockCount: A numeric value that indicates the number of locks that are held by current open.

  • Open.PathName: A variable-length Unicode string that contains the local path name on the server that the open is performed on.

  • Open.ResumeKey: A 24-byte key that identifies a source file in a server-side data copy operation.

  • Open.FileName: A Unicode file name supplied by the client for this Open.

  • Open.CreateOptions: The create options requested by the client for this Open, in the format specified in section 2.2.13.

  • Open.FileAttributes: The file attributes used by the client for this Open, in the format specified in section 2.2.13.

If the server supports leasing, it MUST implement the following:

  • Open.ClientGuid: An identifier for the client machine that created this open.

  • Open.Lease: The lease associated with this open, as defined in 3.3.1.12. This value MUST point to a valid lease, or be set to NULL.

If the server supports resiliency, it MUST implement the following:

  • Open.IsResilient: A Boolean that indicates whether this open has requested resilient operation.

  • Open.ResiliencyTimeout: A time-out value that indicates how long the server will hold the file open after a disconnect before releasing the open.

  • Open.ResilientOpenTimeout: A time-out value that indicates when a handle that has been preserved for resiliency will be closed by the system if a client has not reclaimed it.

  • Open.LockSequenceArray: An array of 64 entries used to maintain lock sequences for resilient opens. Each entry MUST be assigned an index from the range of 1 to 64. Each entry is a structure with the following elements:

    • SequenceNumber: A 4-bit integer modulo 16.

    • Valid: A Boolean, if set to TRUE, indicates that the SequenceNumber element is valid.

If the server implements the SMB 3.x dialect family, it MUST implement the following:

  • Open.CreateGuid: A 16-byte value that associates this open to a create request.

  • Open.AppInstanceId: A 16-byte value that associates this open with a calling application.

  • Open.IsPersistent: A Boolean that indicates whether this open is persistent.

  • Open.ChannelSequence: A 16-bit identifier indicating the client's Channel change.

  • Open.OutstandingRequestCount: A numerical value that indicates the number of outstanding requests issued with ChannelSequence equal to Open.ChannelSequence.

  • Open.OutstandingPreRequestCount: A numerical value that indicates the number of outstanding requests issued with ChannelSequence less than Open.ChannelSequence.

  • Open.IsReplayEligible: A Boolean that indicates whether the Open is eligible for replay by a CREATE request that can be replayed by reissuing the original CREATE request with the SMB2_FLAGS_REPLAY_OPERATION flag set.

If the server implements the SMB 3.0.2 or SMB 3.1.1 dialect, it MUST implement the following:

  • Open.IsSharedVHDX: A Boolean that indicates whether this open is a shared virtual disk operation.

If the server implements the SMB 3.1.1 dialect, it MUST implement the following:

  • Open.ApplicationInstanceVersionHigh: An unsigned 64-bit numeric value representing the most significant value of the application instance version.

  • Open.ApplicationInstanceVersionLow: An unsigned 64-bit numeric value representing the least significant value of the application instance version.