Función NtOpenProcess (ntddk.h)
La rutina ZwOpenProcess abre un identificador para un objeto de proceso y establece los derechos de acceso a este objeto.
Sintaxis
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
[out] PHANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PCLIENT_ID ClientId
);
Parámetros
[out] ProcessHandle
Puntero a una variable de tipo HANDLE. La rutina ZwOpenProcess escribe el identificador de proceso en la variable a la que apunta este parámetro.
[in] DesiredAccess
Valor de ACCESS_MASK que contiene los derechos de acceso que el autor de la llamada ha solicitado al objeto de proceso.
[in] ObjectAttributes
Puntero a una estructura de OBJECT_ATTRIBUTES que especifica los atributos que se van a aplicar al identificador de objeto de proceso. El campo ObjectName de esta estructura debe establecerse en NULL. Para obtener más información, vea la siguiente sección Comentarios .
[in, optional] ClientId
Puntero a un identificador de cliente que identifica el subproceso cuyo proceso se va a abrir. Este parámetro debe ser un puntero distinto de NULL a un identificador de cliente válido. Para obtener más información, vea la siguiente sección Comentarios .
Valor devuelto
ZwOpenProcess devuelve STATUS_SUCCESS si la llamada es correcta. Los valores devueltos posibles incluyen los siguientes códigos de estado de error:
Código devuelto | Descripción |
---|---|
STATUS_INVALID_PARAMETER_MIX | El autor de la llamada proporcionó un nombre de objeto o no pudo proporcionar un identificador de cliente. |
STATUS_INVALID_CID | El identificador de cliente especificado no es válido. |
STATUS_INVALID_PARAMETER | Los derechos de acceso solicitados no son válidos para un objeto de proceso. |
STATUS_ACCESS_DENIED | No se pueden conceder los derechos de acceso solicitados. |
Comentarios
Como sucede con los identificadores de kernel abiertos por otras llamadas de servicio del sistema, como ZwCreateKey y ZwCreateFile, el autor de la llamada es responsable de llamar a ZwClose para cerrar el identificador cuando ya no sea necesario.
El parámetro ClientId debe apuntar a un identificador de cliente que identifique el subproceso cuyo proceso se va a abrir. Además, el campo ObjectName de la estructura a la que apunta ObjectAttributes debe establecerse en NULL.
Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtOpenProcess" en lugar de "ZwOpenProcess".
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 |
---|---|
Plataforma de destino | Universal |
Encabezado | ntddk.h (incluya Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs, PowerIrpDDis |
Consulte también
Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema