FsRtlCreateSectionForDataScan 函数 (ntifs.h)
FsRtlCreateSectionForDataScan 例程创建一个 section 对象。 请极其谨慎地使用此例程。 (请参阅以下 备注 部分。)
语法
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
指向调用方分配的变量的指针,该变量接收指向 section 对象的不透明指针。
[out, optional] SectionFileSize
指向调用方分配的变量的指针,该变量在创建节对象时接收文件的大小(以字节为单位)。 此参数是可选的,可以为 NULL。
[in] FileObject
打开的文件的文件对象。 section 对象将由指定的文件提供支持。 此参数是必需的,不能为 NULL。
[in] DesiredAccess
将节对象所需的访问权限指定为以下 一个或多个ACCESS_MASK 标志。
DesiredAccess 标志 | 允许调用方访问 |
---|---|
SECTION_MAP_READ | 读取分区的视图。 |
SECTION_MAP_WRITE | 写入节的视图。 |
SECTION_QUERY | 查询 section 对象以获取有关节的信息。 驱动程序应设置此标志。 |
SECTION_ALL_ACCESS | 由前面的标志以及由 STANDARD_RIGHTS_REQUIRED 定义的所有操作。 (有关STANDARD_RIGHTS_REQUIRED的详细信息,请参阅 ACCESS_MASK.) |
[in, optional] ObjectAttributes
指向 OBJECT_ATTRIBUTES 结构的指针,该结构指定对象名称和其他属性。 使用 InitializeObjectAttributes 宏初始化此结构。 由于 FsRtlCreateSectionForDataScan 将此对象插入进程句柄表,因此调用方在调用 InitializeObjectAttributes 时必须指定 OBJ_KERNEL_HANDLE 属性。
[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 参数中指定的访问权限的节对象所需的权限。 这是错误代码。 |
注解
有关创建映射分区和内存视图的详细信息,请参阅 分区对象和视图。 另请参阅Microsoft Windows SDK中的 CreateFileMapping 例程的文档。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Service Pack 4 更新汇总 (SP4) ;适用于 Windows XP Service Pack 2 的筛选器管理器汇总 (SP2) 。 |
最低受支持的服务器 | Microsoft Windows Server 2003 SP1 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |