Можно использовать функцию RtlFindClearBits, чтобы найти непрерывную последовательность кластеров в битмапе тома.
RTL_BITMAP Bitmap;
ULONG nBits = (ULONG) pVolumeBitmap->BitmapSize.QuadPart;
ULONG iFreeLCN;
RtlInitializeBitMap(&Bitmap, (PULONG) pVolumeBitmap->Buffer, nBits);
iFreeLCN = RtlFindClearBits(&Bitmap, nClustersRequired, 0);
typedef struct _RTL_BITMAP
{
ULONG SizeOfBitMap;
PULONG Buffer;
} RTL_BITMAP, *PRTL_BITMAP;
NTSYSAPI
VOID
NTAPI
RtlInitializeBitMap(
PRTL_BITMAP BitMapHeader,
PULONG BitMapBuffer,
ULONG SizeOfBitMap
);
ULONG
NTAPI
RtlFindClearBits (
PRTL_BITMAP BitMapHeader,
ULONG NumberToFind,
ULONG HintIndex
);