Función NtCreateSection (ntifs.h)
La rutina NtCreateSection crea un objeto de sección .
Sintaxis
__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateSection(
[out] PHANDLE SectionHandle,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PLARGE_INTEGER MaximumSize,
[in] ULONG SectionPageProtection,
[in] ULONG AllocationAttributes,
[in, optional] HANDLE FileHandle
);
Parámetros
[out] SectionHandle
Puntero a una variable HANDLE que recibe un identificador para el objeto section.
[in] DesiredAccess
Especifica un valor ACCESS_MASK que determina el acceso solicitado al objeto . Además de los derechos de acceso definidos para todos los tipos de objetos, el autor de la llamada puede especificar cualquiera de los siguientes derechos de acceso, que son específicos de los objetos de sección:
Marca DesiredAccess | Permite al autor de la llamada hacer esto |
---|---|
SECTION_EXTEND_SIZE | Amplíe dinámicamente el tamaño de la sección. |
SECTION_MAP_EXECUTE | Ejecute vistas de la sección. |
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 marcas anteriores combinadas con STANDARD_RIGHTS_REQUIRED. |
[in, optional] ObjectAttributes
Puntero a una estructura de OBJECT_ATTRIBUTES que especifica el nombre del objeto y otros atributos. Use InitializeObjectAttributes para inicializar esta estructura. Si el autor de la llamada no se ejecuta en un contexto de subproceso del sistema, debe establecer el atributo OBJ_KERNEL_HANDLE cuando llama a InitializeObjectAttributes.
[in, optional] MaximumSize
Especifica el tamaño máximo, en bytes, de la sección. NtCreateSection redondea este valor hasta el múltiplo más cercano de PAGE_SIZE. Si el archivo de paginación respalda la sección, MaximumSize especifica el tamaño real de la sección. Si una sección está respaldada por un archivo normal, MaximumSize especifica el tamaño máximo al que se puede extender o asignar el archivo.
[in] SectionPageProtection
Especifica la protección que se va a colocar en cada página de la sección. Use uno de los cuatro valores siguientes: PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE o PAGE_WRITECOPY. Para obtener una descripción de estos valores, vea CreateFileMapping.
[in] AllocationAttributes
Especifica una máscara de bits de SEC_XXX marcas que determina los atributos de asignación de la sección. Para obtener una descripción de estas marcas, vea CreateFileMapping.
[in, optional] FileHandle
Opcionalmente, especifica un identificador para un objeto de archivo abierto. Si el valor de fileHandle es NULL, el archivo de paginación respalda la sección. De lo contrario, el archivo especificado respalda la sección.
Valor devuelto
NtCreateSection devuelve STATUS_SUCCESS correcto o el código de error NTSTATUS adecuado en caso de error. Entre los códigos de estado de error posibles se incluyen los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_FILE_LOCK_CONFLICT | El archivo especificado por el parámetro FileHandle está bloqueado. |
STATUS_INVALID_FILE_FOR_SECTION | El archivo especificado por FileHandle no admite secciones. |
STATUS_INVALID_PAGE_PROTECTION | El valor especificado para el parámetro SectionPageProtection no es válido. |
STATUS_MAPPED_FILE_SIZE_ZERO | El tamaño del archivo especificado por FileHandle es cero y maximumSize es cero. |
STATUS_SECTION_TOO_BIG | El valor de MaximumSize es demasiado grande. Esto ocurre cuando MaximumSize es mayor que el máximo definido por el sistema para las secciones, o si MaximumSize es mayor que el archivo especificado y la sección no se puede escribir. |
Observaciones
Una vez que el controlador al que apunta SectionHandle ya no está en uso, el controlador debe llamar a NtClose para cerrarlo.
Si el autor de la llamada no se está ejecutando en un contexto de subproceso del sistema, debe asegurarse de que los identificadores que cree sean identificadores privados. De lo contrario, el proceso puede acceder al identificador en cuyo contexto se está ejecutando el controlador. Para obtener más información, vea identificadores de objeto.
Para obtener más información, vea Administración de secciones de memoria.
Nota
Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtCreateSection" en lugar de "ZwCreateSection".
En el caso de las llamadas desde controladores en modo kernel, las NtXxx y Zwversiones de Xxx de una rutina de Servicios del sistema nativo de Windows pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones de NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 |
de la plataforma de destino de | Universal |
encabezado de | ntifs.h (include Wdm.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | PASSIVE_LEVEL |