Compartilhar via


Função NtOpenProcess (ntddk.h)

A rotina ZwOpenProcess abre um identificador para um objeto de processo e define os direitos de acesso a esse objeto.

Sintaxe

__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

Um ponteiro para uma variável do tipo HANDLE. A rotina ZwOpenProcess grava o identificador de processo na variável para a qual esse parâmetro aponta.

[in] DesiredAccess

Um valor ACCESS_MASK que contém os direitos de acesso que o chamador solicitou ao objeto de processo.

[in] ObjectAttributes

Um ponteiro para uma estrutura OBJECT_ATTRIBUTES que especifica os atributos a serem aplicados ao identificador do objeto de processo. O campo ObjectName dessa estrutura deve ser definido como NULL. Para obter mais informações, consulte a seção Comentários a seguir.

[in, optional] ClientId

Um ponteiro para uma ID do cliente que identifica o thread cujo processo deve ser aberto. Esse parâmetro deve ser um ponteiro não NULL para uma ID de cliente válida. Para obter mais informações, consulte a seção Comentários a seguir.

Retornar valor

O ZwOpenProcess retornará STATUS_SUCCESS se a chamada for bem-sucedida. Os possíveis valores retornados incluem o seguinte erro status códigos:

Código de retorno Descrição
STATUS_INVALID_PARAMETER_MIX O chamador forneceu um nome de objeto ou falhou ao fornecer uma ID do cliente.
STATUS_INVALID_CID A ID do cliente especificada não é válida.
STATUS_INVALID_PARAMETER Os direitos de acesso solicitados não são válidos para um objeto de processo.
STATUS_ACCESS_DENIED Os direitos de acesso solicitados não podem ser concedidos.

Comentários

Como é o caso com identificadores de kernel abertos por outras chamadas de serviço do sistema, como ZwCreateKey e ZwCreateFile, o chamador é responsável por chamar ZwClose para fechar o identificador quando ele não for mais necessário.

O parâmetro ClientId deve apontar para uma ID do cliente que identifica o thread cujo processo deve ser aberto. Além disso, o campo ObjectName da estrutura apontada por ObjectAttributes deve ser definido como NULL.

Se a chamada para essa função ocorrer no modo de usuário, você deverá usar o nome "NtOpenProcess" em vez de "ZwOpenProcess".

Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ntddk.h (inclua Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade de DDI HwStorPortProhibitedDIs, PowerIrpDDis

Confira também

ACCESS_MASK

OBJECT_ATTRIBUTES

Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo