Функция FsRtlCreateSectionForDataScan (ntifs.h)
Подпрограмма FsRtlCreateSectionForDataScan создает объект раздела
Синтаксис
NTSTATUS FsRtlCreateSectionForDataScan(
[out] PHANDLE SectionHandle,
[out] PVOID *SectionObject,
[out, optional] PLARGE_INTEGER SectionFileSize,
[in] PFILE_OBJECT FileObject,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PLARGE_INTEGER MaximumSize,
[in] ULONG SectionPageProtection,
[in] ULONG AllocationAttributes,
[in] ULONG Flags
);
Параметры
[out] SectionHandle
Указатель на переменную, выделенную вызывающим объектом, которая получает непрозрачный дескриптор объекта раздела.
[out] SectionObject
Указатель на выделенную вызывающим переменную, которая получает непрозрачный указатель на объект раздела.
[out, optional] SectionFileSize
Указатель на выделенную вызывающим переменную, которая получает размер файла в байтах во время создания объекта раздела. Этот параметр является необязательным и может быть null.
[in] FileObject
Объект файла для открытого файла. Объект раздела будет защищен указанным файлом. Этот параметр является обязательным и не может быть null.
[in] DesiredAccess
Указывает требуемый доступ для объекта раздела как один или несколько из следующих флагов ACCESS_MASK.
флаг DesiredAccess | Разрешает вызывающим абонентам |
---|---|
SECTION_MAP_READ | Чтение представлений раздела. |
SECTION_MAP_WRITE | Написание представлений раздела. |
SECTION_QUERY | Запрос объекта раздела для получения сведений о разделе. Драйверы должны задать этот флаг. |
SECTION_ALL_ACCESS | Все действия, определенные предыдущими флагами, а также определенные STANDARD_RIGHTS_REQUIRED. (Дополнительные сведения о STANDARD_RIGHTS_REQUIRED см. в разделе ACCESS_MASK.) |
[in, optional] ObjectAttributes
Указатель на структуру OBJECT_ATTRIBUTES, указывающую имя объекта и другие атрибуты. Используйте макрос InitializeObjectAttributes для инициализации этой структуры. Так как FsRtlCreateSectionForDataScan вставляет этот объект в таблицу дескрипторов процесса, вызывающий объект должен указать атрибут OBJ_KERNEL_HANDLE при вызове InitializeObjectAttributes.
[in, optional] MaximumSize
Этот параметр зарезервирован для дальнейшего использования.
[in] SectionPageProtection
Указывает защиту для размещения на каждой странице в разделе. Укажите одно из следующих значений. Этот параметр является обязательным и не может быть нулевым.
Флаг | Значение |
---|---|
PAGE_READONLY | Включает доступ только для чтения к зафиксированной области страниц. Попытка записи в зафиксированный регион приводит к нарушению доступа. Если система отличается от доступа только для чтения и выполнения, попытка выполнить код в зафиксированном регионе приводит к нарушению доступа. |
PAGE_READWRITE | Включает доступ для чтения и записи к зафиксированной области страниц. |
[in] AllocationAttributes
Битовые маски флагов SEC_XXX определяют атрибуты выделения раздела. Укажите одно или несколько следующих значений. Этот параметр является обязательным и не может быть нулевым.
Флаг | Значение |
---|---|
SEC_COMMIT | Выделяет физическое хранилище в памяти или на диске на диске для всех страниц раздела. Это параметр по умолчанию. Обратите внимание, что этот флаг является обязательным и не может быть опущен. |
SEC_FILE | Файл, указанный параметром FileObject, является сопоставленным файлом. |
[in] Flags
Этот параметр зарезервирован для дальнейшего использования.
Возвращаемое значение
FsRtlCreateSectionForDataScan возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих:
Возвращаемый код | Описание |
---|---|
|
Размер файла, указанного параметром FileObject, равен нулю. Это код ошибки. |
|
Файл, указанный параметром FileObject, заблокирован. Это код ошибки. |
|
FsRtlCreateSectionForDataScan обнаружил сбой выделения пула. Это код ошибки. |
|
Файл, указанный параметром FileObject, не поддерживает разделы. Это код ошибки. |
|
Недопустимое значение параметра SectionPageProtection. Это код ошибки. |
|
Вызывающий объект указал недопустимое значение для параметра AllocationAttributes. Это код ошибки. |
|
Вызывающий объект не имеет необходимых привилегий для создания объекта раздела с доступом, указанным в параметре DesiredAccess. Это код ошибки. |
Замечания
Дополнительные сведения о создании сопоставленных разделов и представлений памяти см. в разделе Объекты и представления разделов. Также см. документацию по подпрограмме CreateFileMapping в пакете SDK для Microsoft Windows.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Накопительный пакет обновления для Windows 2000 с пакетом обновления 4 (SP4); Накопительный пакет обновления диспетчера фильтров для Windows XP с пакетом обновления 2 (SP2). |
минимальный поддерживаемый сервер | Microsoft Windows Server 2003 с пакетом обновления 1 (SP1) |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |