PVOID BaseAddress;
ULONG FATOffset;
ULONG ChunkSize;
- PVOID Context;
+ PVOID Context = NULL;
LARGE_INTEGER Offset;
ChunkSize = CACHEPAGESIZE(DeviceExt);
Offset.QuadPart = ROUND_DOWN(FATOffset, ChunkSize);
_SEH2_TRY
{
- CcMapData(DeviceExt->FATFileObject, &Offset, ChunkSize, MAP_WAIT, &Context, &BaseAddress);
+ if (!CcMapData(DeviceExt->FATFileObject, &Offset, ChunkSize, MAP_WAIT, &Context, &BaseAddress))
+ {
+ NT_ASSERT(FALSE);
+ return STATUS_UNSUCCESSFUL;
+ }
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
SharedCacheMap->FileObject, FileOffset, Length, Flags);
ExRaiseStatus(Status);
- return FALSE;
}
iBcb = CcpGetAppropriateBcb(SharedCacheMap, Vacb, FileOffset, Length, 0, FALSE);
CcRosReleaseVacb(SharedCacheMap, Vacb, FALSE, FALSE);
CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%p Length=%lu Flags=0x%lx -> FALSE\n",
SharedCacheMap->FileObject, FileOffset, Length, Flags);
- return FALSE;
+ *pBcb = NULL; // If you ever remove this for compat, make sure to review all callers for using an unititialized value
+ ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
}
}
else