if (ReadOffset % VACB_MAPPING_GRANULARITY + Length > VACB_MAPPING_GRANULARITY)
{
+ CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
+ FileObject, FileOffset, Length, Flags);
return FALSE;
}
&Vacb);
if (!NT_SUCCESS(Status))
{
+ CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
+ FileObject, FileOffset, Length, Flags);
return FALSE;
}
if (!(Flags & MAP_WAIT))
{
CcRosReleaseVacb(SharedCacheMap, Vacb, FALSE, FALSE, FALSE);
+ CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
+ FileObject, FileOffset, Length, Flags);
return FALSE;
}
if (!NT_SUCCESS(CcReadVirtualAddress(Vacb)))
{
CcRosReleaseVacb(SharedCacheMap, Vacb, FALSE, FALSE, FALSE);
+ CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
+ FileObject, FileOffset, Length, Flags);
return FALSE;
}
}
if (iBcb == NULL)
{
CcRosReleaseVacb(SharedCacheMap, Vacb, TRUE, FALSE, FALSE);
+ CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
+ FileObject, FileOffset, Length, Flags);
return FALSE;
}
iBcb->RefCount = 1;
*pBcb = (PVOID)iBcb;
+ CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> TRUE Bcb=%p\n",
+ FileObject, FileOffset, Length, Flags, iBcb);
return TRUE;
}
IN ULONG Flags,
OUT PVOID * Bcb)
{
+ CCTRACE(CC_API_DEBUG, "FileOffset=%p FileOffset=%p Length=%lu Flags=0x%lx\n",
+ FileObject, FileOffset, Length, Flags);
+
/* no-op for current implementation. */
return TRUE;
}
OUT PVOID * Bcb,
OUT PVOID * Buffer)
{
+ CCTRACE(CC_API_DEBUG, "FileOffset=%p FileOffset=%p Length=%lu Flags=0x%lx\n",
+ FileObject, FileOffset, Length, Flags);
+
if (CcMapData(FileObject, FileOffset, Length, Flags, Bcb, Buffer))
{
if (CcPinMappedData(FileObject, FileOffset, Length, Flags, Bcb))
return TRUE;
else
- CcUnpinData(Bcb);
+ CcUnpinData(*Bcb);
}
return FALSE;
}
OUT PVOID * Bcb,
OUT PVOID * Buffer)
{
+ CCTRACE(CC_API_DEBUG, "FileOffset=%p FileOffset=%p Length=%lu Zero=%d Flags=0x%lx\n",
+ FileObject, FileOffset, Length, Zero, Flags);
+
/*
* FIXME: This is function is similar to CcPinRead, but doesn't
* read the data if they're not present. Instead it should just
IN PLARGE_INTEGER Lsn)
{
PINTERNAL_BCB iBcb = Bcb;
+
+ CCTRACE(CC_API_DEBUG, "Bcb=%p Lsn=%p\n",
+ Bcb, Lsn);
+
iBcb->Dirty = TRUE;
}
{
PINTERNAL_BCB iBcb = Bcb;
+ CCTRACE(CC_API_DEBUG, "Bcb=%p\n", Bcb);
+
CcRosReleaseVacb(iBcb->Vacb->SharedCacheMap,
iBcb->Vacb,
TRUE,
IN PVOID Bcb,
IN ERESOURCE_THREAD ResourceThreadId)
{
- UNIMPLEMENTED;
+ PINTERNAL_BCB iBcb = Bcb;
+
+ CCTRACE(CC_API_DEBUG, "Bcb=%p ResourceThreadId=%lu\n", Bcb, ResourceThreadId);
+
+ if (iBcb->OwnerPointer != (PVOID)ResourceThreadId)
+ {
+ DPRINT1("Invalid owner! Caller: %p, Owner: %p\n", (PVOID)ResourceThreadId, iBcb->OwnerPointer);
+ return;
+ }
+
+ CcUnpinData(Bcb);
}
/*
IN PVOID Bcb)
{
PINTERNAL_BCB iBcb = Bcb;
+
+ CCTRACE(CC_API_DEBUG, "Bcb=%p\n", Bcb);
+
iBcb->RefCount++;
}
{
PINTERNAL_BCB iBcb = Bcb;
+ CCTRACE(CC_API_DEBUG, "Bcb=%p WriteThrough=%d\n", Bcb, WriteThrough);
+
IoStatus->Status = STATUS_SUCCESS;
if (--iBcb->RefCount == 0)
{