Compartir a través de


Función FsRtlCreateSectionForDataScan (ntifs.h)

La rutina FsRtlCreateSectionForDataScan crea un objeto de sección. Use esta rutina con extrema precaución. (Consulte la siguiente sección Comentarios).

Sintaxis

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
);

Parámetros

[out] SectionHandle

Puntero a una variable asignada por el autor de la llamada que recibe un identificador opaco al objeto section.

[out] SectionObject

Puntero a una variable asignada por el autor de la llamada que recibe un puntero opaco al objeto de sección.

[out, optional] SectionFileSize

Puntero a una variable asignada por el autor de la llamada que recibe el tamaño, en bytes, del archivo en el momento en que se creó el objeto de sección. Este parámetro es opcional y se puede NULL.

[in] FileObject

Objeto file para un archivo abierto. El archivo especificado respaldará el objeto section. Este parámetro es necesario y no se puede null.

[in] DesiredAccess

Especifica el acceso deseado para el objeto de sección como una o varias de las marcas de ACCESS_MASK siguientes.

Marca de DesiredAccess Permite al autor de la llamada
SECTION_MAP_READ Lee las vistas de la sección.
SECTION_MAP_WRITE Escriba vistas de la sección.
SECTION_QUERY Consulte el objeto section para obtener información sobre la sección. Los controladores deben establecer esta marca.
SECTION_ALL_ACCESS Todas las acciones definidas por las marcas anteriores, así como las definidas por STANDARD_RIGHTS_REQUIRED. (Para obtener más información sobre STANDARD_RIGHTS_REQUIRED, consulte ACCESS_MASK).

[in, optional] ObjectAttributes

Puntero a una estructura OBJECT_ATTRIBUTES que especifica el nombre del objeto y otros atributos. Use la macro InitializeObjectAttributes para inicializar esta estructura. Dado que FsRtlCreateSectionForDataScan inserta este objeto en la tabla de identificadores de proceso, el autor de la llamada debe especificar el atributo OBJ_KERNEL_HANDLE cuando llama a InitializeObjectAttributes.

[in, optional] MaximumSize

Este parámetro está reservado para uso futuro.

[in] SectionPageProtection

Especifica la protección que se va a colocar en cada página de la sección. Especifique uno de los valores siguientes. Este parámetro es necesario y no puede ser cero.

Bandera Significado
PAGE_READONLY Habilita el acceso de solo lectura a la región confirmada de las páginas. Un intento de escribir en la región confirmada produce una infracción de acceso. Si el sistema diferencia entre el acceso de solo lectura y el acceso de ejecución, un intento de ejecutar código en la región confirmada produce una infracción de acceso.
PAGE_READWRITE Habilita el acceso de lectura y escritura a la región confirmada de páginas.

[in] AllocationAttributes

Las máscaras de bits de las marcas de SEC_XXX determinan los atributos de asignación de la sección. Especifique uno o varios de los valores siguientes. Este parámetro es necesario y no puede ser cero.

Bandera Significado
SEC_COMMIT Asigna almacenamiento físico en memoria o en el archivo de paginación en disco para todas las páginas de una sección. Esta es la configuración predeterminada. Tenga en cuenta que esta marca es necesaria y no se puede omitir.
SEC_FILE El archivo especificado por el parámetro FileObject es un archivo asignado.

[in] Flags

Este parámetro está reservado para uso futuro.

Valor devuelto

FsRtlCreateSectionForDataScan devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_END_OF_FILE
El tamaño del archivo especificado por el parámetro FileObject es cero. Se trata de un código de error.
STATUS_FILE_LOCK_CONFLICT
El archivo especificado por el parámetro FileObject está bloqueado. Se trata de un código de error.
STATUS_INSUFFICIENT_RESOURCES
FsRtlCreateSectionForDataScan encontró un error de asignación de grupo. Se trata de un código de error.
STATUS_INVALID_FILE_FOR_SECTION
El archivo especificado por el parámetro FileObject no admite secciones. Se trata de un código de error.
STATUS_INVALID_PARAMETER_8
El valor especificado para el parámetro SectionPageProtection no es válido. Se trata de un código de error.
STATUS_INVALID_PARAMETER_9
El autor de la llamada especificó un valor no válido para el parámetro AllocationAttributes. Se trata de un código de error.
STATUS_PRIVILEGE_NOT_HELD

El autor de la llamada no tenía el privilegio necesario para crear un objeto de sección con el acceso especificado en el parámetro DesiredAccess. Se trata de un código de error.

Observaciones

importante La rutina FsRtlCreateSectionForDataScan solo debe usarse en los casos en los que un identificador para el objeto de archivo especificado en el parámetro FileObject aún no se ha creado (normalmente mientras se procesa una operación posterior a la creación). Si el controlador tiene un identificador para el objeto de archivo o puede obtener un identificador para el objeto de archivo, el controlador debe usar el ZwCreateSection rutina en su lugar.
 
Una vez que el objeto de sección creado por esta rutina ya no es necesario, asegúrese de cerrar el identificador del objeto de sección (SectionHandle) llamando a la rutina ZwClose y desreferenciar el propio objeto de sección (SectionObject) llamando a la rutina ObDereferenceObject.

Para obtener más información sobre cómo crear secciones asignadas y vistas de memoria, vea Section Objects and Views. Consulte también la documentación de rutina CreateFileMapping en Microsoft Windows SDK.

Requisitos

Requisito Valor
cliente mínimo admitido Paquete acumulativo de actualizaciones para Windows 2000 Service Pack 4 (SP4); Paquete acumulativo del Administrador de filtros para Windows XP Service Pack 2 (SP2).
servidor mínimo admitido Microsoft Windows Server 2003 SP1
de la plataforma de destino de Universal
encabezado de ntifs.h (incluya Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL <= APC_LEVEL

Consulte también

ACCESS_MASK

CcPurgeCacheSection

MmFlushImageSection

mmForceSectionClosed

ZwCreateSection