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
Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo