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 OBJECT_ATTRIBUTES que especifica los atributos que se van a aplicar al identificador de objeto de proceso. El campo ObjectName de de esta estructura debe establecerse en NULL. Para obtener más información, consulte 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 noNULL a un identificador de cliente válido. Para obtener más información, consulte la siguiente sección Comentarios.

Valor devuelto

ZwOpenProcess devuelve STATUS_SUCCESS si la llamada se realiza correctamente. 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.

Observaciones

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 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 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
de la plataforma de destino de Universal
encabezado de ntddk.h (incluya Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs, PowerIrpDDis

Consulte también

ACCESS_MASK

OBJECT_ATTRIBUTES

usar versiones Nt y Zw de las rutinas de servicios del sistema nativo