"AFSCommonWrite (%p) Request failed due to read only volume\n",
Irp));
- try_return( ntStatus = STATUS_ACCESS_DENIED);
+ try_return( ntStatus = STATUS_MEDIA_WRITE_PROTECTED);
}
//
bReleaseSectionObject = TRUE;
if ( bWriteToEndOfFile)
- {
- if (pFcb->Header.ValidDataLength.QuadPart > pFcb->Header.FileSize.QuadPart)
- {
- liStartingByte = pFcb->Header.ValidDataLength;
- }
- else
- {
- liStartingByte = pFcb->Header.FileSize;
- }
- }
+ {
- //
+ if (pFcb->Header.ValidDataLength.QuadPart > pFcb->Header.FileSize.QuadPart)
+ {
+
+ liStartingByte = pFcb->Header.ValidDataLength;
+ }
+ else
+ {
+
+ liStartingByte = pFcb->Header.FileSize;
+ }
+
+ pIrpSp->Parameters.Write.ByteOffset = liStartingByte;
+ }
+
+ //
// We have the correct lock - even if we don't end up truncating
//
bLockOK = TRUE;
pFcb->Header.ValidDataLength.QuadPart = liStartingByte.QuadPart + ulByteCount;
}
- if( !BooleanFlagOn( pFcb->Flags, AFS_FCB_FLAG_UPDATE_LAST_WRITE_TIME))
- {
-
- SetFlag( pFcb->Flags, AFS_FCB_FLAG_UPDATE_WRITE_TIME);
-
- KeQuerySystemTime( &pFcb->ObjectInformation->LastWriteTime);
- }
+ //
+ // Register the File Object as having modified the file.
+ //
+ SetFlag( pFileObject->Flags, FO_FILE_MODIFIED);
}
}