if (Flags&MAP_NO_READ) {
g_assert(0==CAPTIVE_ROUND_DOWN_EXCEEDING64(FileOffset->QuadPart,PAGE_SIZE)); /* NOT IMPLEMENTED YET */
- g_assert(0==CAPTIVE_ROUND_DOWN_EXCEEDING(Length,PAGE_SIZE)); /* NOT IMPLEMENTED YET */
+ /* It may not be aligned as this function is prepared by 'after_eof' for incomplete tails.
+ * It is being used at least by ntfs.sys of NT-5.1sp1 CcCopyWrite().
+ */
+#if 0
+ g_assert(0==CAPTIVE_ROUND_DOWN_EXCEEDING64(FileOffset->QuadPart+Length,PAGE_SIZE)); /* NOT IMPLEMENTED YET */
+#endif
}
g_return_val_if_fail(FileObject->SectionObjectPointers!=NULL,FALSE);
g_return_val_if_fail(FileObject!=NULL,FALSE);
g_return_val_if_fail(FileOffset!=NULL,FALSE);
+ g_return_val_if_fail(Wait==TRUE || Wait==FALSE,FALSE); /* Prevent 'Wait' upgrade to 'Flags'. */
g_return_val_if_fail(Buffer!=NULL,FALSE);
g_return_val_if_fail(IoStatus!=NULL,FALSE);
FileObject, /* FileObject */
FileOffset, /* FileOffset */
Length, /* Length */
- Wait, /* Wait */
+ 0 /* Flags; !PIN_NO_READ */
+ | (Wait ? PIN_WAIT : 0),
&MappedBcb, /* Bcb */
&MappedBuffer); /* Buffer */
g_return_val_if_fail(errbool==TRUE,FALSE);
g_return_val_if_fail(FileObject!=NULL,FALSE);
g_return_val_if_fail(FileOffset!=NULL,FALSE);
+ g_return_val_if_fail(Wait==TRUE || Wait==FALSE,FALSE); /* Prevent 'Wait' upgrade to 'Flags'. */
g_return_val_if_fail(Buffer!=NULL,FALSE);
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: FileObject=%p,FileOffset=0x%llX,Length=0x%lX,Wait=%d",G_STRLOC,
FileObject, /* FileObject */
FileOffset, /* FileOffset */
Length, /* Length */
- Wait, /* Wait */
+ PIN_NO_READ /* Flags */
+ | (Wait ? PIN_WAIT : 0),
&MappedBcb, /* Bcb */
&MappedBuffer); /* Buffer */
g_return_val_if_fail(errbool==TRUE,FALSE);
BOOLEAN CcCanIWrite(IN PFILE_OBJECT FileObject,IN ULONG BytesToWrite,IN BOOLEAN Wait,IN BOOLEAN Retrying)
{
g_return_val_if_fail(FileObject!=NULL,FALSE);
+ g_return_val_if_fail(Wait==TRUE || Wait==FALSE,FALSE); /* Prevent 'Wait' upgrade to 'Flags'. */
+ g_return_val_if_fail(Retrying==TRUE || Retrying==FALSE,FALSE);
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: FileObject=%p,BytesToWrite=0x%lX,Wait=%d,Retrying=%d",G_STRLOC,
FileObject,(gulong)BytesToWrite,(gint)Wait,(gint)Retrying);
g_return_val_if_fail(StartOffset->QuadPart<=EndOffset->QuadPart,FALSE);
g_return_val_if_fail((EndOffset->QuadPart-StartOffset->QuadPart)
==(ULONG)(EndOffset->QuadPart-StartOffset->QuadPart),FALSE);
+ g_return_val_if_fail(Wait==TRUE || Wait==FALSE,FALSE); /* Prevent 'Wait' upgrade to 'Flags'. */
SectionObjectPointers_orig=FileObject->SectionObjectPointers;