Fonction NtCreateSection (ntifs.h)
La routine NtCreateSection crée un objet de section .
Syntaxe
__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
);
Paramètres
[out] SectionHandle
Pointeur vers une variable HANDLE qui reçoit un handle vers l’objet de section.
[in] DesiredAccess
Spécifie une valeur ACCESS_MASK qui détermine l’accès demandé à l’objet. Outre les droits d’accès définis pour tous les types d’objets, l’appelant peut spécifier l’un des droits d’accès suivants, qui sont spécifiques aux objets de section :
Indicateur DesiredAccess | Permet à l’appelant de procéder ainsi |
---|---|
SECTION_EXTEND_SIZE | Étendez dynamiquement la taille de la section. |
SECTION_MAP_EXECUTE | Exécutez des vues de la section. |
SECTION_MAP_READ | Lire les vues de la section. |
SECTION_MAP_WRITE | Écrivez des vues de la section. |
SECTION_QUERY | Interrogez l’objet de section pour plus d’informations sur la section. Les pilotes doivent définir cet indicateur. |
SECTION_ALL_ACCESS | Tous les indicateurs précédents combinés à STANDARD_RIGHTS_REQUIRED. |
[in, optional] ObjectAttributes
Pointeur vers une structure OBJECT_ATTRIBUTES qui spécifie le nom de l’objet et d’autres attributs. Utilisez InitializeObjectAttributes pour initialiser cette structure. Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit définir l’attribut OBJ_KERNEL_HANDLE lorsqu’il appelle InitializeObjectAttributes.
[in, optional] MaximumSize
Spécifie la taille maximale, en octets, de la section. NtCreateSection arrondit cette valeur jusqu’au multiple le plus proche de PAGE_SIZE. Si la section est soutenue par le fichier de pagination, MaximumSize spécifie la taille réelle de la section. Si la section est sauvegardée par un fichier ordinaire, MaximumSize spécifie la taille maximale à laquelle le fichier peut être étendu ou mappé.
[in] SectionPageProtection
Spécifie la protection à placer sur chaque page de la section. Utilisez l’une des quatre valeurs suivantes : PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE ou PAGE_WRITECOPY. Pour obtenir une description de ces valeurs, consultez CreateFileMapping.
[in] AllocationAttributes
Spécifie un masque de bits de SEC_indicateurs de XXX qui détermine les attributs d’allocation de la section. Pour obtenir une description de ces indicateurs, consultez CreateFileMapping.
[in, optional] FileHandle
Spécifie éventuellement un handle pour un objet de fichier ouvert. Si la valeur de FileHandle est NULL, la section est sauvegardée par le fichier de pagination. Sinon, la section est sauvegardée par le fichier spécifié.
Valeur de retour
NtCreateSection retourne STATUS_SUCCESS en cas de réussite ou le code d’erreur NTSTATUS approprié en cas d’échec. Les codes d’état d’erreur possibles sont les suivants :
Retourner le code | Description |
---|---|
STATUS_FILE_LOCK_CONFLICT | Le fichier spécifié par le paramètre FileHandle est verrouillé. |
STATUS_INVALID_FILE_FOR_SECTION | Le fichier spécifié par FileHandle ne prend pas en charge les sections. |
STATUS_INVALID_PAGE_PROTECTION | La valeur spécifiée pour le paramètre SectionPageProtection n’est pas valide. |
STATUS_MAPPED_FILE_SIZE_ZERO | La taille du fichier spécifié par FileHandle est égale à zéro, et MaximumSize est égal à zéro. |
STATUS_SECTION_TOO_BIG | La valeur de MaximumSize est trop importante. Cela se produit lorsque maximumSize est supérieur au maximum défini par le système pour les sections, ou si MaximumSize est supérieur au fichier spécifié et que la section n’est pas accessible en écriture. |
Remarques
Une fois que le handle pointé par SectionHandle n’est plus utilisé, le pilote doit appeler NtClose pour le fermer.
Si l’appelant n’est pas en cours d’exécution dans un contexte de thread système, il doit s’assurer que les handles qu’il crée sont des handles privés. Sinon, le handle est accessible par le processus dans lequel le pilote est en cours d’exécution. Pour plus d’informations, consultez Descripteurs d’objets.
Pour plus d’informations, consultez Gestion des sections de mémoire.
Note
Si l’appel à cette fonction se produit en mode utilisateur, vous devez utiliser le nom «NtCreateSection» au lieu de «ZwCreateSection».
Pour les appels à partir de pilotes en mode noyau, les versions NtXxx et ZwXxx d’une routine Windows Native System Services peuvent se comporter différemment de la façon dont elles gèrent et interprètent les paramètres d’entrée. Pour plus d’informations sur la relation entre les versions NtXxx et ZwXxx d’une routine, consultez Using Nt and Zw Versions of the Native System Services Routines.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 |
plateforme cible | Universel |
d’en-tête | ntifs.h (include Wdm.h, Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |