123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- Revision History:
- -----------------
- 1.0.0 - Initial release.
- 1.0.1 - Better handling of invalid read / write operations.
- 1.0.2 - Improved documentation and updated SMB_COM_TRANSACTION2 request (Technical Specifications Errata was found).
- 1.0.3 - Search handles (SID) are now properly closed.
- 1.0.4 - Added support for IPv6.
- 1.0.5 - Bugfix: SMB_COM_OPEN_ANDX was not returning the requested response format.
- File buffering logic logic was moved to a separate class.
- 1.0.6 - IOException handling when opening a file.
- Bugfix: Will not try to prefetch write-only streams.
- Bugfix: When closing a prefetched stream, close underlying stream.
- Bugfix: Proper handling of FILE_OPEN_REPARSE_POINT flag.
- Bugfix: Proper handling of Transaction2SetFileInformation requests.
- 1.0.7 - Improved connection buffer implementation.
- Improved compliance with MS-SMB when NTTransactIOCTLRequest.IsFsctl is set to false.
- Report STATUS_SHARING_VIOLATION instead of STATUS_FILE_LOCK_CONFLICT on IOException when deleting a file.
- 1.0.8 - Bugfix: Honor FILE_DELETE_ON_CLOSE flag.
- Bugfix: SMB_COM_SESSION_SETUP_ANDX Extended Request: NativeOS and NativeLanMan were not properly read.
- Improved Transaction2Subcommands implementation.
- Added support for GSSAPI SPNEGO tokens.
- API: Added SMBServer.OnLogEntry event.
- 1.0.9 - Improved SID / TID / FID / UID allocation mechanisms.
- API: More control over which users are permitted access via the guest user account if the normal authentication process fails.
- Improved NTLM authentication API and implementation.
- Added authentication related logging.
- Improved connected trees management logic.
- Remove connected user from connection state on Logoff.
- Bugfix: Transaction2Open2Response: Incorrect value was set as default CreationTime.
- 1.1.0 - Improved session management logic.
- Improved open-search management.
- Set DeletePending if FILE_DELETE_ON_CLOSE has been set.
- Properly handle NegotiateRequest.
- DerEncodingHelper: Fixed incorrect length calculation.
- Now Returning accept-completed at the final stage of a GSS authentication.
- LoginAPI: Properly handle ERROR_ACCOUNT_DISABLED.
- NTLM: improved compatibility with clients.
- Improved logging.
- 1.1.1 - Added MS-FSCC enums and structures required for SMB2.
- Added SMB2 command structures and enums.
- Added SMB 2.0 / 2.1 server implementation
- Updated UI to enable selection of SMB1.0/CIFS and/or SMB 2.0 / 2.1.
- Return STATUS_ACCESS_DENIED when writing to a file that was opened for reading and vice versa.
- SMB1: Return STATUS_NOT_IMPLEMENTED when receiving Remote Administration Protocol requests.
- SMB1: Return STATUS_INVALID_SMB when transaction subcommand is invalid.
- Return STATUS_INVALID_SMB instead of STATUS_SMB_BAD_COMMAND when usage of SMB_COM_NEGOTIATE is invalid.
- Return STATUS_INVALID_PARAMETER instead of STATUS_SMB_BAD_COMMAND when client tries to perform operation on mismatching share.
- Win32 authentication: fail authentication if AcceptSecurityContext return SEC_E_INVALID_TOKEN.
- DirectoryFileSystem: Updated Name property to return the name of the underlying file system.
- DirectoryFileSystem: Updated ValidatePath to verify that path starts with a blackslash.
- 1.1.2 - Improved NetBIOS name server implementation.
- Corrected SPNEGO implementation.
- SMB_COM_NT_CREATE_ANDX response: Added support for relative time (negative value) as specified in MS-CIFS.
- FileTimeHelper.ReadNullableFileTime: throw InvalidDataException if FILETIME is negative.
- Implemented additional FileInformation structures.
- Improved CreateFile implementation.
- OpenAndXHelper will now call NTFileSystemHelper.CreateFile.
- Corrected SMB_COM_QUERY_INFORMATION response implementation.
- Corrected object store related size fields from UInt64 to Int64.
- Removed LANMAN2.0 FileInformation structures.
- Rename will now return STATUS_OBJECT_NAME_COLLISION if the destination exists.
- Return STATUS_DIRECTORY_NOT_EMPTY when trying to delete a folder that is not empty.
- Return STATUS_OBJECT_PATH_INVALID when FILE_DIRECTORY_FILE is specified and a path component is not a directory.
- API: IFileSystem: Added exception documentation.
- API: FileSystemShare: Modified constructor.
- API: FileSystemShare: Added OnAccessRequest event that allows the subscriber to manage read / write permissions.
- API: INTFileStore interface was added for better separation between the object store layer and the SMB layer.
- 1.1.3 - Fixed InvalidCastException.
- NetworkAPI: Fixed compatibility with 64-bit environment and other improvements.
- SSPIHelper: Improved implementation.
- LoginAPI: Added ImpersonateLoggedOnUser method
- Improved NTLM authentication API.
- Improved Integrated Windows Authentication implementation.
- Corrected handling of SMB_COM_RENAME.
- NTFileSystemAdapter: Improved logging.
- API: GSS-style authentication, additional IGSSMechanism implementations can be provided.
- API: Added DeviceIOControl to the INTFileStore interface, relevant functionality moved to the object store layer.
- API: Added a SecurityContext class which will be passes to the underlying object store.
- 1.1.4 - Fixed infinite loop condition.
- SMB1: SMB_COM_TRANSACTION / SMB_COM_TRANSACTION2: interim response will now be sent when required.
- SMB1: Improved SMB_COM_NEGOTIATE response implementation.
- SMB1: Improved SMB_COM_SESSION_SETUP_ANDX request and response implementations.
- SMB1: Improved SMB_COM_NT_CREATE_ANDX request implementation.
- Improved NetBIOS related exception messages and documentation.
- Win32: Improved secur32.dll and Netapi32.dll API compatibility.
- 1.1.5 - NTLM: Added session key computation helper method and tests.
- SSPIHelper: Added GetUserName and GetSessionKey methods.
- IntegratedNTLMAuthenticationProvider: Bugfix: IsGuest was not always set when the username did not exist.
- IntegratedNTLMAuthenticationProvider: The correct SessionKey will now be returned instead of EncryptedRandomSessionKey.
- IndependentNTLMAuthenticationProvider: ChallengeMessage.NegotiateFlags are now properly set.
- IndependentNTLMAuthenticationProvider: Compute and store SessionKey.
- IndependentNTLMAuthenticationProvider: Set KeyExchange NTLM flag if client request it.
- SMB2Command: Implemented signing in GetCommandChainBytes.
- SMB2: Workaround to prevent Windows 7 / 8 / 10 from sending ChangeNotify requests infinitely.
- SMB2: Correctly report server start time in SMB_NEGOTIATE response.
- SMB2: Retrieve SessionKey from GSS mechanism and store it in SMB2Session.
- SMB2: Enable message signing if client request it.
- 1.1.6 - SMBServer: Added server Start / Stop log entries.
- SMBServer: Hid internal methods and classes.
- SMBServer: Each connection now use a dedicaded thread for send operations.
- SMBServer: TCP KeepAlive is now used to detect dead clients.
- SMBServer: All matching opened files will now be closed during tree disconnect.
- SMBServer: All matching opened files will now be closed during logoff.
- SMBServer: All matching opened files will now be closed during connection termination.
- SMBServer API: Moved socket parameters to the Start method.
- SMBServer API: Added GetSessionsInformation method
- SMB1: Retrieve SessionKey from GSS mechanism and store it in SMB1Session.
- Bugfix: Independent / Integrated NTLMAuthenticationProvider: MachineName was not read from AuthenticationMessage.
- GSS: Minor improvements.
- 1.1.7 - Fixed FormatException.
- SocketUtils.ReleaseSocket: Improved exception handling.
- SMB2: Check share permissions before Read / Write.
- SMB2: FileID related improvements.
- SMBServer: Hid internal classes.
- SMB2: CloseHelper: An error response will be returned if the underlying file store was not able to close the handle.
- Renamed ShareCollection to SMBShareCollection.
- NetBIOS session packet length is now calculated correctly.
- Added LogWriter implementation to handle log events
- Workstation and Domain information are now logged during session setup.
- Write to log when share access was denied.
- Add share information to log message where applicable.
- Various Logging related improvements.
- 1.1.8 - CreateFile: Return STATUS_NO_SUCH_FILE when file not found instead of STATUS_OBJECT_PATH_NOT_FOUND.
- NTFileSystemAdapter: Bugfix: FILE_DELETE_ON_CLOSE was ignored in some cases.
- Various Logging related improvements.
- 1.1.9 - IFileSystem: Added FileOptions parameter to OpenFile.
- SMB1: Added support for paths without a leading backslash.
- NTFileSystemAdapter: Bugfix: FILE_OPEN_IF was not handled properly if the file exists.
- IndependentNTLMAuthenticationProvider: Workaround for NTLMv2 with LmChallengeResponse length of 0 bytes.
- Minor logging improvements.
- 1.2.0 - SMB1: Minor optimization of GetFindInformationList.
- SMB2: Bugfix: QUERY_DIRECTORY response buffer length sometimes exceeded the request's OutputBufferLength.
- Bugfix: DerEncodingHelper.WriteLength was writing incorrect length.
- Improved GSS implementation.
- Corrected exception message.
- 1.2.1 - GSSProvider: Marked core methods as virtual to improve extensibility.
- SMB1: Bugfix: The server was returning more bytes than the specified maximum for SMB_COM_NT_TRANSACT and SMB_COM_NT_TRANSACT commands.
- SMBServer: Correct handling of STATUS_BUFFER_OVERFLOW returned by the NTFileStore.
- Improved implementation of RPC PDUs.
- SMBServer: Improved Named Pipe implementation.
- Several enums and events were renamed.
- 1.2.2 - NTFileSystemAdapter: Bugfix: FILE_DELETE_ON_CLOSE flag was ignored in some cases.
- FileSystemInformation: Added GetFileSystemInformation method.
- INTFileStore: CreateFile: Added FileAttributes parameter.
- SMB1FileStoreHelper: Delete / Rename: The status of SetFileInformation should be returned regardless of the status of CloseFile.
- SMB1FileStoreHelper: QueryInformation / SetInformation / QueryDirectory: Bugfix: Temporary handle was not closed.
- SMB2 Commands: Marked StructureSize as private.
- Improved compatibility with Windows Native API.
- Added SMB_COM_NT_CANCEL request implementation.
- SMB1: NTTransactionHelper / TransactionHelper: Store MaxParameterCount (required for NT_TRANSACT_NOTIFY_CHANGE).
- SMB1/SMB2 Headers: Marked Protocol ID bytes as private.
- SMBServer: SMB1: SMB_COM_FLUSH will now call FlushFileBuffers on the handle associated with the specified FID.
- SMBServer: SMB1: Properly handle SMB_COM_NT_TRANSACT requests with invalid function code.
- SMBServer: SMB2: Do not try to process async commands other than Cancel.
- INTFileStore: Added NotifyChange and Cancel methods.
- SMBServer: Added Support for NotifyChange and Cancel if the underlying file store supports it.
- NTFileStore: Added FileLinkInformationType1 and FileRenameInformation Type1 implementations.
- Added NTDirectoryFileSystem implementation for passsing-through IO requests to the local NT storage subsystem.
- SMBServer: SMB2: Bugfix: Last SessionSetupResponse was not signed, final async response was not signed.
- Minor logging improvements.
- 1.2.3 - SMBServer: SMB1: ReadAndX: Added workaround for JCIFS.
- SMBServer: Release connections and associated resources when stopping the server.
- SMBServer: SMB1FileStoreHelper: Delete / Rename: Bugfix: The temporary file handle was not closed.
- SMBServer: SMB1: Delete / Rename commands no longer require exlusive access to the file / directory being delete / renamed.
- SMBServer: Bugfix: Incorrect OplockLevel was reported.
- Improved SMB_COM_NT_TRANSACT response implementation.
- SMBServer: SMB1: Added support for splitting SMB_COM_NT_TRANSACT transaction over multiple responses.
- SMBServer: SMB1: Corrected assembly of AndX Response chain.
- SMBServer: Store the share name for each open file.
- SMBServer: GetSessionsInformation: Include share name when listing open files.
- SMBServer: Bugfix: Keep accepting new connections after getting WSAETIMEDOUT on a new connection request.
- SMBServer: SMB1: Set SMB_FLAGS2_LONG_NAMES in NT_TRANSACT_NOTIFY_CHANGE response.
- NTDirectoryFileSystem: CreateFile: Workaround for using FILE_NO_INTERMEDIATE_BUFFERING and FILE_APPEND_DATA together.
- NTDirectoryFileSystem: SetFileInformation will no longed modify the FileInformation instance received.
- Minor logging improvement.
- 1.2.4 - IndependentNTLMAuthenticationProvider: Added account lockout mechanism to hinder bruteforce attacks.
- SMBServer: Bugfix: Do not send NotifyChange response if the session has been closed.
- SMB1Command: Mark SMBParameters and SMBData as protected.
- NTLMAuthenticationProviderBase: Properly handle invalid NegotiateMessage / AuthenticateMessage.
- GSSProvider: Properly handle invalid SPNEGO Token.
- FileSystemShare: Added ability to specify client-side caching policy.
- Bugfix: Check share-level write access on the new file name before sending FileRenameInformation to the object store.
- Minor logging improvements.
- Minor code refactoring.
- 1.2.5 - IOCtlHelper: Improved compliance with the specifications.
- Added FSCTL_PIPE_WAIT Request implementation.
- Pass TRANS_WAIT_NMPIPE requests to the underlying object store.
- Corrected StringComparison type.
- NamedPipeStore: Added support for FSCTL_PIPE_WAIT.
- IOControlCode: Added additional values.
- NTStatus: Added STATUS_PRIVILEGE_NOT_HELD.
- SMBServer: SMB1: Fixed unhandled NullReferenceException when an Invalid FID was specified for a Read / ReadAndX request.
- SMB2: Improved LockRequest implementation.
- SMB2: LockElement: Added SharedLock / ExclusiveLock / Unlock / FailImmediately properties.
- INTFileStore: Added LockFile and UnlockFile methods.
- SMB2: LockElement: Fixed a bug in ReadLockList / WriteLockList.
- Pass lock / unlock requests to the underlying object store.
- NTDirectoryFileSystem: Pass-through LockFile / UnlockFile requests.
- Corrected FileStreamInformation implementation.
- Corrected FileFullEaInformation implementation.
- SMBServer: SMB1: Added support for SMB_FIND_FILE_ID_FULL_DIRECTORY_INFO and SMB_FIND_FILE_ID_BOTH_DIRECTORY_INFO.
- Logging improvements.
- 1.2.6 - NTDirectoryFileSystem: Pass-through FSCTL requests.
- NTDirectoryFileSystem: QueryDirectory / GetFileSystemInformation: Prevent possibility of reading data beyond the number of bytes written.
- NTLM: NEGOTIATE_MESSAGE: Do not include DomainName and WorkstationName if the appropriate flags are not set.
- NTLM: CHALLENGE_MESSAGE: Do not include TargetName and TargetInfo if the appropriate flags are not set.
- NTLM: AUTHENTICATE_MESSAGE: Do not include EncryptedRandomSessionKey if the appropriate flags are not set.
- NTLM: NEGOTIATE_MESSAGE: Bugfix: Workstation overwrote DomainName.
- NTLM: NEGOTIATE_MESSAGE: Improved implementation.
- NTLM: Added constructor to NTLMv2_CLIENT_CHALLENGE.
- NTLM: NegotiateFlags: Renamed LanManagerKey to LanManagerSessionKey.
- NTLM: Renamed NTLMv1 Extended Security to NTLMv1 Extended Session Security.
- NTLM: Corrected CHALLENGE_MESSAGE test.
- SMB1: Corrected implementation of SMB_COM_SESSION_SETUP_ANDX response.
- SMB1: Corrected implementaion SMB_COM_SESSION_SETUP_ANDX Extended Security response.
- SMB1: Improved implementation of SMB1Command.ReadCommandResponse method.
- SMB1: SessionSetupHelper: Invalid NTLM flag was set (and ignored) in some cases.
- SMB1: Minor implementation improvements of SMB1 commands.
- SMB2: Renamed ServerCapabilities to Capabilities and added notes.
- Use InvalidDataException instead of InvalidRequestException.
- Logging improvement.
- 1.2.7 - SMBServer: Bugfix: Connection resources were not released after send error in some cases.
- SMBServer: SMB1: NotifyChange: Use ErrorResponse for any status other than STATUS_SUCCESS.
- SMBServer: SMB1: Return STATUS_BAD_DEVICE_TYPE when applicable.
- SMBServer: SMB2: Improved handling of compunded related requests.
- SMBServer: SMB2: ChangeNotify: Return ErrorResponse if the object store returns an error.
- NTLM: IndependentNTLMAuthenticationProvider: Changed the default account lockout settings.
- SMB1: Corrected implementation of SMB_COM_ECHO request.
- SMB1: Corrected SMB_COM_TREE_CONNECT_ANDX request implementation and added constructor.
- SMB1: Corrected SMB_COM_NT_CREATE_ANDX implementation.
- SMB1: Renamed ServerCapabilities to Capabilities.
- SMB1: SMB_COM_SESSION_SETUP_ANDX response: Added workaround for a single terminating null byte.
- SMB1: Corrected implementation of SMB_COM_TRANSACTION subcommand request.
- SMB1: Improved SMB_COM_TRANSACTION request implementation and corrected GetBytes() implementation.
- SMB2: NegotiateRequest: Corrected implementation.
- SMB2: SMB2Command: Added ReadResponse and ReadResponseChain methods.
- Improved AccessMask implementation.
- RPCPipeStream: Treat the bytes written to the pipe as a single message unit.
- RPC: Improved PDUs implementation: Hid FragmentLength variable and added Length property.
- RPC: Added constructor to ContextElement.
- RPC: Added BindNakPDU implementation.
- Services: Added ServerServiceOpName and WorkstationServiceOpName enums.
- Services: RemoteServiceHelper: Marked transfer syntax GUIDs as public and added version numbers.
- Services: ServerService: Added ServicePipeName, ServiceInterfaceGuid and ServiceVersion declarations.
- Services: WorkstationService: Added ServicePipeName, ServiceInterfaceGuid and ServiceVersion declarations.
- Services: ServerService: NetrServerGetInfo: Added constructor.
- Services: ServerService: ShareEnum: Bugfix: NullReferenceException was thrown if Info was null.
- Services: ServerService: Implementation improvement.
- Services: ServerService: SHARE_INFO_0_CONTAINER, SHARE_INFO_1_CONTAINER: Changed the default value of Entries to null.
- NTStatus: Added STATUS_DELETE_PENDING, STATUS_BAD_DEVICE_TYPE and STATUS_BAD_NETWORK_NAME.
- SocketUtils: Improved ReleaseSocket implementation.
- Logging and documentation improvements.
- SMB1Client: Added Login implementation using NTLM authentication.
- SMB1Client: Additional client functions implemented.
- 1.2.8 - SMB1: Improved FindInformation implementation and corrected reading of FindInformation entries from buffer.
- SMB1: Added ParametersLength definition to several Transaction2Subcommands.
- SMB1: Transaction2SetFileInformationRequest: SetInformation method will now set InformationLevel.
- Client: ServerServiceHelper: ListShares: Added support for NetrShareEnumResponse spanning more than one RPC PDU and improved error handling.
- Client: SMB1FileStore: Added native QueryDirectory, GetFileInformation, GetFileSystemInformation and SetFileInformation implementations.
- 1.2.9 - NTFileStore: Added SecurityInformation enum.
- NTFileStore: SecurityDescriptor: Added Length property.
- NTFileStore: Completed implementation of SECURITY_DESCRIPTOR.
- INTFileStore: Added SetFileSystemInformation, GetSecurityInformation and SetSecurityInformation methods.
- NTDirectoryFileSystem: Added NtSetVolumeInformationFile, NtQuerySecurityObject and NtSetSecurityObject external method declarations.
- SMBServer: Pass GetSecurityInformation and SetSecurityInformation requests to the underlying object store.
- SMBServer: Logging improvement.
- SMB1: Improved implementation of TRANS2_GET_DFS_REFERRAL request and response.
- SMB1: Improved NT_TRANSACT_QUERY_SECURITY_DESC response implementation.
- SMB1: Added NT_TRANSACT_SET_SECURITY_DESC response implementation.
- SMB1: Improved implementation of TRANS2_QUERY_FILE_INFORMATION and TRANS2_QUERY_PATH_INFORMATION.
- SMB1: NTTransactSubcommandName: Added NT_TRANSACT_QUERY_QUOTA and NT_TRANSACT_SET_QUOTA.
- SMB1: Transaction2SubcommandName: Added TRANS2_SET_FS_INFORMATION.
- SMB1: Added implementation of TRANS2_SET_FS_INFORMATION request and response.
- SMB2: WriteRequest: DataOffset field was set incorrectly in some cases.
- SMB2: IOCtlRequest: OutputOffset field was set incorrectly in some cases.
- SMB2: Improved implementation of QUERY_INFO request and response.
- SMB2: Improved implementation of SMB2_CREATE_CONTEXT.
- SMB2: Improved implementation of SET_INFO Request.
- SMB2: Improved ERROR response implementation.
- SPNEGO: Bugfix: negTokenResp is allowed to have a generic GSSAPI header.
- SPNEGO: Minor code refactoring.
- NTStatus: Added STATUS_INVALID_DEVICE_REQUEST.
- Improved exception messages.
- Client: Preliminary SMB2 client implementation.
- Client: NTLMAuthenticationHelper: Corrected sessionKey computation.
- Client: SMB1FileStore, SMB2FileStore: Added Disconnect method.
- Client: Bugfix: The tree connection to the named pipe share that was created in the ListShares method was not being terminated.
- Client: ISMBFileStore interface added.
- Client: ISMBClient interface added.
- Client: NTLMAuthenticationHelper: Bugfix: The generic GSSAPI header was not appended to negTokenInit.
- Client: Throw Exception if attemping to logoff when the client is not connected.
- Client: SMB1Client: Minor code refactoring.
- 1.3.0 - NTFileStore: FileBasicInformation, SMB_SET_FILE_BASIC_INFO: Bugfix: Correctly handle FILETIME value of -1.
- Server: Bugfix: Some connection resources were not released after send error in some cases.
- Server: SMB2: SMB2Session: Fixed KeyNotFoundException when calling the DisconnectTree method.
- Server: Corrected synchronization of SMB1Session and SMB2Session TreeID and FileID allocation methods.
- Server: SMB1: Set CAP_RPC_REMOTE_APIS flag.
- Server: SMB1: Added support for pass-through Information Levels.
- Server: Pass SetFileSystemInformation requests to the underlying object store.
- SMB1: Transaction2 subcommands: Added support for pass-through Information Levels.
- SMB2: Added helper methods to QUERY_INFO response implementation.
- SMB2: Corrected CREATE request implementation.
- Client: SMB1Client: Store and expose server capabilities.
- Client: SMB2Client: Added MaxTransactSize, MaxReadSize and MaxWriteSize properties.
- Client: SMB2Client: Implemented QueryDirectory method.
- Client: SMB1FileStore: Use the SMB1Client.Unicode property and SMB_FLAGS2_UNICODE flag instead of assuming the server supports Unicode.
- Client: SMB1FileStore: Added GetFileInformation and GetFileSystemInformation for servers that supports pass-through Information Levels.
- Client: SMB2FileStore: Implemented GetFileInformation and GetFileSystemInformation methods.
- 1.3.1 - Server: Prevent clients from creating files without sufficient permissions.
- Server: SMB1: Increased MaxBufferSize to 65535 bytes.
- Server: OpenFileObject: Added FileAccess property.
- Server API: Added the OpenFileInformation class to provide more information about open files.
- SMB1: QueryInformationHelper: Bugfix: LastChangeTime was not correctly set.
- SMB1: QueryInformationHelper: Added ToFileInformationLevel and ToFileInformation methods.
- SMB1: Renamed QueryFileExtendedAttributeInfo to QueryFileEaInfo.
- Client: SMB2Client: Limit the value of MaxTransactSize, MaxReadSize and MaxWriteSize to 64KB.
- Client: ISMBClient: Added MaxReadSize and MaxWriteSize properties.
- Client: ISMBFileStore: Added MaxReadSize and MaxWriteSize properties.
- Client: SMB1FileStore: Completed implementation of GetFileInformation.
- Minor code refactoring and documentation improvements.
- 1.3.2 - SMB1: SMB1Helper.ReadNullableFileTime: Return DateTime in UTC for negative values.
- SMB1: Bugfixes and improvements to the WriteBytes methods of several SMB1 structures.
- SMB1: SMB_COM_OPEN_ANDX request and response: Implemented client related functionality.
- SMB1: NTCreateAndXRequest: Removed duplicate functionality.
- SMB1: SMB_DATE, SMB_TIME, UTime: Set DateTimeKind to Local.
- SMB1: SMB_COM_NT_CREATE_ANDX response and extended response bugfixes.
- Server: LoginCounter: Use UTC instead of local time.
- Server: Use UTC instead of local time for DateTime values returned by the API.
- Server: Maintain connection creation time and last receive time.
- Server: Added an optional mechanism to disconnect connections after a specified duration of inactivity.
- 1.3.3 - Server: Maintain connection last send time.
- Server: Added API to terminate a specific connection.
- Server: Added an optional dead connection detection mechanism instead of simply disconnecting them after a specified duration of inactivity.
- Client: Discard all unsolicited responses except OpLock break.
- Bugfix: FormatException was thrown upon InvalidDataException in some cases.
- 1.3.4 - ShareAccess: Renamed enum members and added ShareAccess.None enum value.
- Minor logging improvements.
- SPNEGO: Minor improvements to SimpleProtectedNegotiationTokenInit implementation.
- SPNEGO: Added NegTokenInit2 implementation.
- Client: Login will now return SEC_E_INVALID_TOKEN if an invalid token is returned from the server instead of throwing NullReferenceException.
- Client: Fixed compatibility issue with Windows 8.1 / 10.
- Client: SMB2FileStore: SetFileInformation implementation.
- Win32Error: Added ERROR_NOT_SUPPORTED and ERROR_INVALID_LEVEL.
- RPC: FaultPDU parameterless constructor will now set Data to an empty byte array.
- RPC: RPCPDU PacketType variable is now protected.
- RPC: FaultPDU is now using FaultStatus enum.
- RPC: DataRepresentationFormat: Added constructor.
- Services: Minor improvements to ServerService and WorkstationService structures.
- Services: Added UnsupportedOpNumException.
- Services: ServerService, WorkstationService: Unsupported OpNums and Levels are now reported back to the client instead of NotImplementedException.
- 1.3.5 - FileStreamInformation: WriteBytes: Set the value NextEntryOffset for each FileStreamEntry.
- NTFileSystemAdapter: Set CasePreservedNames flag when querying FileFsAttributeInformation.
- NTFileSystemAdapter: ToNTStatus: Return STATUS_OBJECT_PATH_INVALID when Win32 error code is ERROR_BAD_PATHNAME.
- NTFileSystemAdapter: Bugfix: Do not make up a short name.
- NTFileSystemAdapter: Assume FileNotFoundException or DirectoryNotFoundException will be thrown if file does not exists.
- NTFileSystemAdapter: When querying FileAlternateNameInformation return STATUS_OBJECT_NAME_NOT_FOUND.
- NTFileSystemAdapter: Added support for alternate data streams.
- 1.3.6 - NTFileSystemAdapter: Do not handle unexpected IFileSystem exceptions.
- SPNEGO: Assume NegTokenInit2 SPNEGO extension was sent for server-initiated negotiation.
- NTStatus: Added STATUS_NOT_A_DIRECTORY.
- SMB1: TransactionQueryNamedPipeStateResponse: Added constructors.
- SMB1: TransactionQueryNamedPipeInfoResponse: Corrected implementation.
- Client: SMB1FileStore, SMB2FileStore: Implemented GetSecurityInformation.
- Minor improvements.
- 1.3.7 - Win32Error: Added ERROR_INVALID_NAME.
- NTFileSystemAdapter: ToNTStatus: Return STATUS_OBJECT_NAME_INVALID when Win32 error code is ERROR_INVALID_NAME.
- NTStatus: Added STATUS_NOT_A_REPARSE_POINT and STATUS_INFO_LENGTH_MISMATCH.
- SMB2: SMB2Command: Bugfix: ReadResponse returned ErrorResponse instead of QueryInfoResponse when status was STATUS_BUFFER_OVERFLOW.
- SMB2: SecurityMode: Added Flags attribute.
- Server: SMB1: Pass the Transaction2 MaxDataCount parameter to methods that retrieve FileInformation / FileSystemInformation.
- Server: SMB1: TransactionHelper: Return Transaction2Response instead of ErrorResponse when status is set to STATUS_BUFFER_OVERFLOW.
- Server: Bugfix: Do not return more bytes than requested when querying FileInformation / FileSystemInformation, report STATUS_BUFFER_OVERFLOW.
- Client: SMB2Client: Sign commands when required.
- 1.3.8 - Server: New connections can now be rejected using the ConnectionRequested event.
- NTStatus: Added STATUS_NOT_FOUND.
- NTDirectoryFileSystem: Bugfix: IO requests were not cancelled on Windows Vista and later.
- Moved Win32 specific functionality to separate project.
- Moved tests to separate project.
- 1.3.9 - Server: SMB1: Improved handling of transaction subcommand failures.
- NTDirectoryFileSystem: Bugfix: buffer size was reduced before subsequent calls to NtQueryDirectoryFile.
- 1.4.0 - Server: Bugfix: Collection was modified in a non thread-safe way.
- NTFileSystemAdapter: Return STATUS_END_OF_FILE when applicable.
- NTFileSystemAdapter: Minor logging improvement.
- Server: SMB2: Bugfix: Invalid change notify interim response was sent when the object store did not support change notifications.
- Client: Fixed a bug related to localhost communication.
- Client: NetBios: Added NameServiceClient.
- Client: Improved NetBios over TCP support.
- NetBios: Minor implementation improvements.
- 1.4.1 - Server: Enabled SMB 2.1 Large MTU support.
- Client: Enabled SMB 2.1 Large MTU support.
- Client: Disconnect connection when inappropriate NetBIOS session packet is received.
- SessionPacket: Added support for SMB 2.1 Large MTU.
- NBTConnectionReceiveBuffer: Added support for SMB 2.1 Large MTU.
- Added VS2019 solution and projects.
|