FsRtlGetNextLargeMcbEntry - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// ntifs.h

BOOLEAN FsRtlGetNextLargeMcbEntry(
       PLARGE_MCB Mcb,
  [in] ULONG      RunIndex,
       PLONGLONG  Vbn,
       PLONGLONG  Lbn,
       PLONGLONG  SectorCount
);
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nf-ntifs-_fsrtl_advanced_fcb_header-fsrtlgetnextlargemcbentry)

FsRtlGetNextLargeMcbEntry function

Description

The FsRtlGetNextLargeMcbEntry routine retrieves a mapping run from a map control block (MCB).

Parameters

Mcb

Pointer to an initialized MCB structure.

RunIndex [in]

Zero-based index of the requested mapping run.

Vbn

Pointer to a variable that receives the starting virtual block number (VBN) of the mapping run, or zero if the run does not exist. Its value is meaningless if FsRtlGetNextLargeMcbEntry returns FALSE.

Lbn

Pointer to a variable that receives the starting logical block number (LBN) of the mapping run, or zero if the run does not exist. Its value is meaningless if FsRtlGetNextLargeMcbEntry returns FALSE.

SectorCount

Pointer to a variable that receives the number of sectors in the mapping run, or zero if the run does not exist. Its value is meaningless if FsRtlGetNextLargeMcbEntry returns FALSE.

Return value

FsRtlGetNextLargeMcbEntry returns TRUE if the requested mapping run exists in the MCB, FALSE otherwise.

Remarks

FsRtlGetNextLargeMcbEntry retrieves the starting VBN, starting LBN, and sector count for a mapping run in an MCB.

Note The upper 32 bits of the LBN are ignored. Only the lower 32 bits are used.

Holes are counted as runs.

The following code snippet shows how to print out all of the runs in a file:

for (i = 0; FsRtlGetNextLargeMcbEntry(Mcb,i,&Vbn,&Lbn,&Count); i++) {

    // print out vbn, lbn, and count

}

See also

FsRtlAddLargeMcbEntry

FsRtlInitializeLargeMcb

FsRtlLookupLargeMcbEntry

FsRtlLookupLastLargeMcbEntry

FsRtlLookupLastLargeMcbEntryAndIndex

FsRtlNumberOfRunsInLargeMcb

FsRtlRemoveLargeMcbEntry

FsRtlSplitLargeMcb

FsRtlTruncateLargeMcb

FsRtlUninitializeLargeMcb