Función ZwSetInformationToken (ntifs.h)

La rutina ZwSetInformationToken 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

NTSYSAPI NTSTATUS ZwSetInformationToken(
  [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

ZwSetInformationToken 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.

Observaciones

Para obtener más información sobre la seguridad y el control de acceso, consulte la documentación sobre estos temas en Windows SDK.

Nota:

Si la llamada a la función ZwSetInformationToken se produce en modo de usuario, debe usar el nombre NtSetInformationToken" en lugar de "ZwSetInformationToken".

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

   
Cliente mínimo compatible Windows 7
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Vea también

PsDereferenceImpersonationToken

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

SID

SeQueryAuthenticationIdToken

SeQuerySubjectContextToken

SeTokenIsAdmin

SeTokenIsRestricted

TOKEN_DEFAULT_DACL

TOKEN_GROUPS

TOKEN_INFORMATION_CLASS

TOKEN_OWNER

TOKEN_PRIMARY_GROUP

TOKEN_PRIVILEGES

TOKEN_SOURCE

TOKEN_STATISTICS

TOKEN_TYPE

TOKEN_USER

Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema

ZwQueryInformationToken