Поделиться через


Функция FsRtlAddLargeMcbEntry (ntifs.h)

Подпрограмма FsRtlAddLargeMcbEntry добавляет новое сопоставление в существующий блок управления картой (MCB).

Синтаксис

BOOLEAN FsRtlAddLargeMcbEntry(
  PLARGE_MCB Mcb,
  LONGLONG   Vbn,
  LONGLONG   Lbn,
  LONGLONG   SectorCount
);

Параметры

Mcb

Указатель на инициализированную структуру MCB.

Vbn

Начальный номер виртуального блока (VBN) нового запуска сопоставления, добавляемого в MCB.

Lbn

Логический номер блока (LBN), с которым сопоставляется LargeVbn .

SectorCount

Количество секторов в новом выполнении сопоставления.

Возвращаемое значение

FsRtlAddLargeMcbEntry возвращает значение TRUE , если новое сопоставление было успешно добавлено в MCB, в противном случае — FALSE .

Комментарии

FsRtlAddLargeMcbEntry добавляет новое сопоставление к существующему блоку управления картой (MCB). Файловые системы используют структуры MCB для сопоставления номеров виртуальных блоков (VBN) для файла с соответствующими номерами логических блоков (LBN) на диске.

Примечание Верхние 32 бита LBN игнорируются, но для них необходимо задать нулевое значение. Используются только нижние 32 бита.
 
Если добавляемое новое выполнение сопоставления перекрывает существующий запуск сопоставления, FsRtlAddLargeMcbEntry объединяет их в один запуск сопоставления.

Если происходит сбой выделения пула, FsRtlAddLargeMcbEntry вызывает исключение STATUS_INSUFFICIENT_RESOURCES. Чтобы получить контроль в случае сбоя выделения пула, драйвер должен заключить вызов FsRtlAddLargeMcbEntry в инструкцию try-except или try-finally .

Чтобы инициализировать MCB, вызовите FsRtlInitializeLargeMcb. Чтобы не инициализировать MCB, вызовите FsRtlUninitializeLargeMcb.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также раздел

FsRtlGetNextLargeMcbEntry

FsRtlInitializeLargeMcb

FsRtlLookupLargeMcbEntry

FsRtlLookupLastLargeMcbEntry

FsRtlLookupLastLargeMcbEntryAndIndex

FsRtlNumberOfRunsInLargeMcb

FsRtlRemoveLargeMcbEntry

FsRtlSplitLargeMcb

FsRtlTruncateLargeMcb

FsRtlUninitializeLargeMcb