Función NtOpenThreadToken (ntifs.h)
La rutina de
Sintaxis
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenThreadToken(
[in] HANDLE ThreadHandle,
[in] ACCESS_MASK DesiredAccess,
[in] BOOLEAN OpenAsSelf,
[out] PHANDLE TokenHandle
);
Parámetros
[in] ThreadHandle
Controle al subproceso cuyo token de acceso se va a abrir. El identificador debe tener acceso THREAD_QUERY_INFORMATION. Use la macro
[in] DesiredAccess
ACCESS_MASK estructura que especifica los tipos de acceso solicitados al token de acceso. Estos tipos de acceso solicitados se comparan con la lista de control de acceso discrecional del token (DACL) para determinar qué derechos de acceso se conceden o deniegan.
[in] OpenAsSelf
Valor booleano que especifica si se debe realizar la comprobación de acceso en el contexto de seguridad del subproceso que llama a NtOpenThreadToken o en el contexto de seguridad del proceso para el subproceso que realiza la llamada.
Si este parámetro es FALSE, la comprobación de acceso se realiza mediante el contexto de seguridad del subproceso que realiza la llamada. Si el subproceso suplanta a un cliente, este contexto de seguridad puede ser el de un proceso de cliente. Si este parámetro es TRUE, la comprobación de acceso se realiza mediante el contexto de seguridad del proceso para el subproceso que realiza la llamada.
[out] TokenHandle
Puntero a una variable asignada por el autor de la llamada que recibe un identificador del token de acceso recién abierto.
Valor devuelto
NtOpenThreadToken devuelve STATUS_SUCCESS o un estado de error adecuado. Entre los códigos de estado de error posibles se incluyen los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_ACCESS_DENIED | |
ThreadHandle no tenía acceso THREAD_QUERY_INFORMATION. | |
STATUS_CANT_OPEN_ANONYMOUS | El cliente solicitó el nivel de suplantación SecurityAnonymous. Sin embargo, no se puede abrir un token anónimo. Para obtener más información, vea SECURITY_IMPERSONATION_LEVEL. |
STATUS_INVALID_HANDLE | ThreadHandle no era un identificador válido. |
STATUS_NO_TOKEN | Se ha intentado abrir un token asociado a un subproceso que actualmente no suplanta a un cliente. |
STATUS_OBJECT_TYPE_MISMATCH | ThreadHandle no era un identificador de subproceso. |
Observaciones
NtOpenThreadToken abre el token de acceso asociado a un subproceso y devuelve un identificador para ese token.
El parámetro OpenAsSelf permite que un proceso de servidor abra el token de acceso para un proceso de cliente cuando el proceso de cliente haya especificado el nivel de suplantación SecurityIdentification para el tipo enumerado SECURITY_IMPERSONATION_LEVEL. Sin este parámetro, el proceso de llamada no puede abrir el token de acceso del cliente mediante el contexto de seguridad del cliente porque es imposible abrir objetos de nivel ejecutivo mediante el nivel de suplantación SecurityIdentification.
Cualquier identificador obtenido llamando a NtOpenThreadToken debe liberarse llamando a NtClose.
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.
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 XP |
encabezado de |
ntifs.h |
biblioteca de |
NtosKrnl.lib |
DLL de |
NtosKrnl.exe |