Fonction NtSetSecurityObject (ntifs.h)
La routine NtSetSecurityObject définit l’état de sécurité d’un objet.
Syntaxe
__kernel_entry NTSYSCALLAPI NTSTATUS NtSetSecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR SecurityDescriptor
);
Paramètres
[in] Handle
Handle pour l’objet dont l’état de sécurité doit être défini. Ce handle doit avoir l’accès spécifié dans la colonne Meaning de la table indiquée dans la description du paramètre SecurityInformation .
[in] SecurityInformation
SECURITY_INFORMATION valeur spécifiant les informations à définir en combinaison d’un ou plusieurs des éléments suivants.
Valeur | Signification |
---|---|
OWNER_SECURITY_INFORMATION | Indique que l’identificateur de propriétaire de l’objet doit être défini. Nécessite un accès WRITE_OWNER. |
GROUP_SECURITY_INFORMATION | Indique que l’identificateur de groupe principal de l’objet doit être défini. Nécessite un accès WRITE_OWNER. |
SACL_SECURITY_INFORMATION | Indique que l’ACL système (SACL) de l’objet doit être défini. Nécessite un accès ACCESS_SYSTEM_SECURITY. |
DACL_SECURITY_INFORMATION | Indique que la liste de contrôle d’accès discrétionnaire (DACL) de l’objet doit être définie. Nécessite un accès WRITE_DAC. |
[in] SecurityDescriptor
Pointeur vers le descripteur de sécurité à définir pour l’objet.
Valeur retournée
NtSetSecurityObject retourne STATUS_SUCCESS ou une status d’erreur appropriée. Les codes de status d’erreur possibles incluent les éléments suivants :
Code de retour | Description |
---|---|
STATUS_ACCESS_DENIED | L’appelant n’avait pas l’accès requis. |
STATUS_ACCESS_VIOLATION | SecurityDescriptor était un pointeur NULL . |
STATUS_INSUFFICIENT_RESOURCES | Impossible de capturer le descripteur de sécurité de l’objet. |
STATUS_INVALID_ACL | Le descripteur de sécurité de l’objet contenait une liste de contrôle d’accès non valide. |
STATUS_INVALID_HANDLE | Handle n’est pas un handle valide. |
STATUS_INVALID_SECURITY_DESCR | SecurityDescriptor n’a pas pointé vers un descripteur de sécurité valide. |
STATUS_INVALID_SID | Le descripteur de sécurité de l’objet contenait un SID non valide. |
STATUS_OBJECT_TYPE_MISMATCH | Handle n’est pas un handle du type attendu. |
STATUS_UNKNOWN_REVISION | Le niveau de révision du descripteur de sécurité de l’objet était inconnu ou non pris en charge. |
Remarques
Un descripteur de sécurité peut être sous forme absolue ou auto-relative. Sous forme auto-relative, tous les membres de la structure se trouvent contiguëment en mémoire. Sous forme absolue, la structure contient uniquement des pointeurs vers les membres. Pour plus d’informations, consultez Descripteurs de sécurité absolus et Self-Relative.
Pour plus d’informations sur la sécurité et le contrôle d’accès, consultez Modèle de sécurité Windows pour les développeurs de pilotes et la documentation sur ces rubriques dans le Kit de développement logiciel (SDK) Windows.
Les minifiltres doivent utiliser FltSetSecurityObject au lieu de NtSetSecurityObject.
Les appelants de NtSetSecurityObject doivent être en cours d’exécution à IRQL = PASSIVE_LEVEL et avec des API de noyau spéciales activées.
Notes
Si l’appel à la fonction NtSetSecurityObject se produit en mode utilisateur, vous devez utiliser le nom « NtSetSecurityObject » au lieu de « ZwSetSecurityObject ».
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 dans 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 Utilisation des versions Nt et Zw des routines des services système natifs.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP |
Plateforme cible | Universal |
En-tête | ntifs.h (inclure Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (voir la section Remarques) |
Règles de conformité DDI | HwStorPortProhibitedDDIs, PowerIrpDDis |
Voir aussi
Utilisation des versions Nt et Zw des routines natives des services système natifs