--- /dev/null
+
+MS-FSA:
+
+ Per Open (Volatile):
+
+ RootOpen - Share
+ FileName - absolute/relative to root?
+ File
+ Link
+ Stream
+ Privileges - (backup/restore/symlink/manage volume/is_admin)
+ GrantedAccess
+ RemainingDesiredAccess
+ SharingAccess
+ Per Directory:
+ search mask, search index...
+ some more stuff...
+ UserSetModTime
+ UserSetWriteTime
+ NextEAEntry
+ OplockKey (guid)
+
+ Per Brlock (Volatile):
+ LockOffset
+ LockLength
+ IsExclusive
+ OwnerOpen
+
+ Per NotifyEntryWatch (Volatile):
+ ...
+
+ Per RHOpcontext (Volatile):
+ Open
+ BreakingToRead
+
+ Per Oplock (Volatile per Stream):
+ ExclusiveOpen: 1 Open
+ Level2Opens: 0..x Opens
+ ReadOpens: 0..x Opens
+ ReadHandleOpens: 0..x Opens
+ ReadHandleBreakQueue: 0..x RHOpContexts
+ WaitList: 0..x Opens waiting for Breaks
+ State: all kind of flags
+ NO_OPLOCK
+ LEVEL_ONE_OPLOCK
+ BATCH_OPLOCK
+ LEVEL_TWO_OPLOCK
+ EXCLUSIVE
+ BREAK_TO_TWO
+ BREAK_TO_NONE
+ BREAK_TO_TWO_TO_NONE
+ READ_CACHING
+ HANDLE_CACHING
+ WRITE_CACHING ???
+
+ Per File (Persistent):
+ FileType: file or directory
+ FileID: uint64_t unique (inode?)
+ FileNumber: uint64_t unique (seqnum?)
+ LinkList: 1..x links (dir => x == 1)
+ SecurityDescriptor:
+ FileAttributes:
+ CreationTime:
+ LastModificationTime:
+ LastChangeTime:
+ LastAccessTime:
+ ExtendedAttributes:
+ ExtendedAttributesLength:
+ ObjectId: guid maybe NULL
+ BirthVolumeId: guid
+ BirthObjectId: guid maybe NULL
+ StreamList:
+ ReparseTag: uint32_t
+ ReparseGUID: guid
+ ReparseData:
+ DirectoryList: for directories only
+ Volume:
+ Usn: uint64_t
+ IsSymbolicLink:
+ UserCertificateList:
+ Volatile Fields:
+ OpenList:
+ PendingNotifications: uint32_t ??? for directories only
+
+ Per Link (Persistent):
+ Name: 1..256 chars (UTF16 or UCS2?)
+ ShortName: maybe NULL
+ File:
+ ParentFile:
+ IsDeleted:
+ Volatile Fields:
+ PendingNotifications: uint32_t ??? for directories only
+
+ Per Stream (Persistent):
+ StreamType: data or directory stream
+ Name: 256 chars (UTF16 or UCS2)
+ Size: uint64_t
+ AllocationSize: uint64_t multiple of File.Volume.ClusterSize.
+ ValidDataLength: uint64_t (optional)
+ File:
+ IsCompressed:
+ IsSparse:
+ IsTemporary:
+ IsEncrypted:
+ ExtentList:
+ Volatile Fields:
+ Oplock: maybe NULL
+ ByteRangeLockList:
+ IsDeleted:
+ IsDefectManagementDisabled:
+ PendingNotifications: uint32_t ??? for directories only
+ ZeroOnDeallocate:
+
+
+
+SMB 2.10:
+- session reauth
+- branch cache hash
+- multi-credit on port 445
+- lease and resilience
+
+
+The SMB 2.1 dialect introduces the following enhancements:
+- Allowing a client to indicate support for multiple SMB 2 dialects in a multi-protocol negotiate
+request.
+- Allowing a client to obtain and preserve client caching state across multiple opens from the same
+client.
+- Allowing a client to mark individual write operations on unbuffered handles to be treated as
+write-through.
+- Allowing a client to retrieve hashes of a file for use in branch cache retrieval, as specified in [MS-
+PCCRC].