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 à qual esse parâmetro aponta.

[in] DesiredAccess

Um valor ACCESS_MASK que contém os direitos de acesso solicitados pelo chamador 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 deNULL não para uma ID de cliente válida. Para obter mais informações, consulte a seção comentários a seguir.

Valor de retorno

ZwOpenProcess retornará STATUS_SUCCESS se a chamada for bem-sucedida. Os valores de retorno possíveis incluem os seguintes códigos de status de erro:

Código de retorno Descrição
STATUS_INVALID_PARAMETER_MIX O chamador forneceu um nome de objeto ou não forneceu 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.

Observações

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

O parâmetro ClientId deve apontar para uma ID do cliente que identifique 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 versões de uma rotina dos Serviços de 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 de serviços do sistema nativo.

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ntddk.h (inclua Ntddk.h, Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs, PowerIrpDDis

Consulte também

ACCESS_MASK

OBJECT_ATTRIBUTES

usando versões Nt e Zw das rotinas de serviços do sistema nativo