Microsoft Docs

OpenProcess function

Overview

The OpenProcess function opens an existing local process object.

Syntax

#include <windows.h>

HANDLE OpenProcess(
    DWORD dwDesiredAccess,
    BOOL  bInheritHandle,
    DWORD dwProcessId
);

Parameters

NameTypeDescription
dwDesiredAccessDWORDAccess rights requested for the process object. For a list of access rights, see Process Security and Access Rights.
bInheritHandleBOOLTRUE to allow the handle to be inherited by child processes; otherwise FALSE.
dwProcessIdDWORDThe identifier of the local process to be opened.

Return value

If the function succeeds, the return value is an open handle to the specified process.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Remarks

The handle returned by OpenProcess can be used by the calling process to manipulate the target process based on the access rights requested.

Do not close a handle twice. Closing an invalid handle results in undefined behavior.

Example

#include <windows.h>
#include <stdio.h>

int main(void) {
    DWORD pid = 1234; // Replace with a valid process ID
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
    if (hProcess == NULL) {
        printf("OpenProcess failed. Error: %lu\\n", GetLastError());
        return 1;
    }
    // Use the handle ...
    CloseHandle(hProcess);
    return 0;
}

See also