Compartir a través de


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

ACCESS_MASK

OBJECT_ATTRIBUTES

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