public override void Write(byte[] buffer, int offset, int count) { byte[] data = new byte[count]; for (int i = offset, i2 = 0; i < count; i++, i2++) { data[i2] = buffer[i]; } NTStatus status; int bytesWritten = 0; var stopwatch = new Stopwatch(); stopwatch.Start(); do { status = _fileStore.WriteFile(out bytesWritten, _fileHandle, _position, data); }while (status == NTStatus.STATUS_PENDING && stopwatch.Elapsed.TotalSeconds <= _smbFileSystemSettings.ClientSessionTimeout); stopwatch.Stop(); status.HandleStatus(); _position += bytesWritten; }