Función NtSetInformationToken (ntifs.h)
La rutina NtSetInformationToken modifica la información de un token especificado. El proceso de llamada debe tener los derechos de acceso adecuados para establecer la información.
Sintaxis
__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationToken(
[in] HANDLE TokenHandle,
[in] TOKEN_INFORMATION_CLASS TokenInformationClass,
[in] PVOID TokenInformation,
[in] ULONG TokenInformationLength
);
Parámetros
[in] TokenHandle
Identificador de un token de acceso en el que se va a modificar la información.
[in] TokenInformationClass
Valor del TOKEN_INFORMATION_CLASS tipo enumerado que identifica el tipo de información que se va a modificar. Los valores posibles para este parámetro se enumeran en la columna TokenInformationClass Value de la tabla que se muestra en la descripción del parámetro TokenInformation .
[in] TokenInformation
Puntero a un búfer proporcionado por el autor de la llamada que contiene la información que se va a modificar en el token. La estructura de la información de este búfer depende del valor de TokenInformationClass, como se muestra en la tabla siguiente. Todas las estructuras deben alinearse en un límite de 32 bits.
Valor de TokenInformationClass | Efecto en el búfer TokenInformation |
---|---|
TokenDefaultDacl | El búfer contiene una estructura de TOKEN_DEFAULT_DACL que especifica la DACL predeterminada para los objetos recién creados. TOKEN_ADJUST_DEFAULT acceso es necesario para establecer esta información. El contenido del búfer no se valida para la corrección estructural ni la coherencia. |
TokenGroups | No es una clase de información válida. Esta información es de solo lectura. |
TokenOwner | El búfer contiene una estructura de TOKEN_OWNER que especifica el SID de propietario predeterminado para los objetos recién creados. TOKEN_ADJUST_DEFAULT acceso es necesario para establecer esta información. Los valores de propietario que se pueden especificar están restringidos a los identificadores de usuario y grupo con un atributo que indica que se pueden asignar como propietario de objetos. |
TokenPrimaryGroup | El búfer contiene una estructura de TOKEN_PRIMARY_GROUP que especifica el SID de grupo principal predeterminado para los objetos recién creados. TOKEN_ADJUST_DEFAULT acceso es necesario para establecer esta información. Debe ser uno de los identificadores de grupo que ya están en el token. |
TokenPrivileges | No es una clase de información válida. Esta información es de solo lectura. |
TokenSource | No es una clase de información válida. Esta información es de solo lectura. |
TokenStatistics | No es una clase de información válida. Esta información es de solo lectura. |
TokenUser | No es una clase de información válida. Esta información es de solo lectura. |
[in] TokenInformationLength
Tamaño, en bytes, de la estructura pasada en el búfer TokenInformation . Debe ser mayor o igual que el valor mínimo especificado en la tabla siguiente.
Valor de TokenInformationClass | TokenInformationLength mínimo |
---|---|
TokenDefaultDacl | sizeof(TOKEN_DEFAULT_DACL) |
TokenOwner | sizeof(TOKEN_OWNER) |
TokenPrimaryGroup | sizeof(TOKEN_PRIMARY_GROUP) |
Valor devuelto
NtSetInformationToken devuelve STATUS_SUCCESS o un estado de error adecuado. Entre los posibles códigos de estado de error se incluyen los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_ACCESS_DENIED | TokenHandle no tenía el acceso necesario. |
STATUS_ALLOTTED_SPACE_EXCEEDED | El espacio asignado para el almacenamiento del control de acceso discrecional predeterminado y el identificador de grupo principal no es lo suficientemente grande como para aceptar el nuevo valor de uno de estos campos. |
STATUS_INFO_LENGTH_MISMATCH | El valor de TokenInformationLength era menor que el mínimo necesario. |
STATUS_INSUFFICIENT_RESOURCES | No se pudo capturar la información de seguridad del propietario predeterminado especificado. |
STATUS_INVALID_HANDLE | TokenHandle no era un identificador válido. |
STATUS_INVALID_INFO_CLASS | TokenInformationClass no era una clase de información de token válida. |
STATUS_INVALID_OWNER | El autor de la llamada no puede establecer el identificador especificado como propietario (o propietario predeterminado) de un objeto. |
STATUS_INVALID_PRIMARY_GROUP | El autor de la llamada no puede establecer el identificador especificado para que sea el grupo principal de un objeto. |
STATUS_INVALID_SID | La información de seguridad del propietario predeterminado especificada no era válida. |
STATUS_OBJECT_TYPE_MISMATCH | TokenHandle no era un identificador de token. |
Comentarios
Para obtener más información sobre la seguridad y el control de acceso, consulte Modelo de seguridad de Windows para desarrolladores de controladores y la documentación sobre estos temas en Windows SDK.
Nota
Si la llamada a la función NtSetInformationToken se produce en modo kernel, debe usar el nombre "ZwSetInformationToken" en lugar de "NtSetInformationToken".
En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Servicios del sistema nativo de Windows se pueden comportar 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 NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7 |
Plataforma de destino | Universal |
Encabezado | ntifs.h (incluya Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs, PowerIrpDDis |
Consulte también
PsDereferenceImpersonationToken
Uso de las versiones Nt y Zw de las rutinas nativas de System Services