Re: Дефрагментация и FSCTL_MOVE_FILE
От: dimb82  
Дата: 12.08.12 05:56
Оценка: 1 (1)
Можно использовать функцию 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
);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.