Función ZwOpenProcessTokenEx (ntifs.h)
La rutina
Sintaxis
NTSYSAPI NTSTATUS ZwOpenProcessTokenEx(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] ULONG HandleAttributes,
[out] PHANDLE TokenHandle
);
Parámetros
[in] ProcessHandle
Controle al proceso cuyo token de acceso se va a abrir. El identificador debe tener acceso PROCESS_QUERY_INFORMATION. Use la macro NtCurrentProcess, definida en Ntddk.h, para especificar el proceso actual.
[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é accesos se conceden o deniegan.
[in] HandleAttributes
Atributos para el identificador de token de acceso. Actualmente solo se admite OBJ_KERNEL_HANDLE. Si el autor de la llamada no se está ejecutando en el contexto del proceso del sistema, debe especificar OBJ_KERNEL_HANDLE para este parámetro.
[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
ZwOpenProcessTokenEx 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 | ProcessHandle no tenía acceso PROCESS_QUERY_INFORMATION. |
STATUS_INSUFFICIENT_RESOURCES | No se pudo asignar un nuevo identificador de token. |
STATUS_INVALID_HANDLE | ProcessHandle no era un identificador válido. |
STATUS_INVALID_PARAMETER | El |
STATUS_OBJECT_TYPE_MISMATCH | ProcessHandle no era un identificador de proceso. |
STATUS_PRIVILEGE_NOT_HELD | El autor de la llamada no tiene el privilegio (SeSecurityPrivilege) necesario para crear un identificador de token con el acceso especificado en el parámetro DesiredAccess. |
STATUS_QUOTA_EXCEEDED | La cuota de memoria del proceso no es suficiente para asignar el identificador de token. |
STATUS_UNSUCCESSFUL | No se pudo crear el identificador de token. |
Observaciones
ZwOpenProcessTokenEx abre el token de acceso asociado a un proceso y devuelve un identificador para ese token.
Cualquier identificador obtenido mediante una llamada a ZwOpenProcessTokenEx debe liberarse llamando a ZwClose.
Las rutinas de controlador que se ejecutan en un contexto de proceso distinto del del proceso del sistema deben establecer el atributo OBJ_KERNEL_HANDLE para el parámetro HandleAttributes de ZwOpenProcessTokenEx. Esto restringe el uso del identificador devuelto por ZwOpenProcessTokenEx a los procesos que se ejecutan en modo kernel. De lo contrario, el proceso puede acceder al identificador en cuyo contexto se está ejecutando el controlador.
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 ZwOpenProcessTokenEx función se produce en modo de usuario, debe usar el nombre "NtOpenProcessTokenEx" en lugar de "ZwOpenProcessTokenEx".
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 |
de la plataforma de destino de |
Universal |
encabezado de |
ntifs.h (incluya Ntifs.h) |
biblioteca de |
NtosKrnl.lib |
DLL de |
NtosKrnl.exe |
irQL | PASSIVE_LEVEL |
reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
Consulte también
usar versiones Nt y Zw de las rutinas de servicios del sistema nativo