Función OpenProcess (processthreadsapi.h)
Abre un objeto de proceso local existente.
Sintaxis
HANDLE OpenProcess(
[in] DWORD dwDesiredAccess,
[in] BOOL bInheritHandle,
[in] DWORD dwProcessId
);
Parámetros
[in] dwDesiredAccess
Acceso al objeto process. Este derecho de acceso se comprueba con el descriptor de seguridad del proceso. Este parámetro puede ser uno o varios de los derechos de acceso al proceso.
Si el autor de la llamada ha habilitado el privilegio SeDebugPrivilege, se concede el acceso solicitado independientemente del contenido del descriptor de seguridad.
[in] bInheritHandle
Si este valor es TRUE, los procesos creados por este proceso heredarán el identificador. De lo contrario, los procesos no heredan este identificador.
[in] dwProcessId
Identificador del proceso local que se va a abrir.
Si el proceso especificado es el proceso inactivo del sistema (0x00000000), se produce un error en la función y el último código de error es ERROR_INVALID_PARAMETER
. Si el proceso especificado es el proceso del sistema o uno de los procesos del Subsistema de Run-Time cliente (CSRSS), esta función produce un error y el último código de error se debe ERROR_ACCESS_DENIED
a que sus restricciones de acceso impiden que el código de nivel de usuario los abra.
Si usa GetCurrentProcessId como argumento para esta función, considere la posibilidad de usar GetCurrentProcess en lugar de OpenProcess para mejorar el rendimiento.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador abierto para el proceso especificado.
Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Para abrir un identificador en otro proceso local y obtener derechos de acceso completo, debe habilitar el privilegio SeDebugPrivilege. Para obtener más información, consulte Cambio de privilegios en un token.
El identificador devuelto por la función OpenProcess se puede usar en cualquier función que requiera un identificador para un proceso, como las funciones de espera, siempre que se solicitaron los derechos de acceso adecuados.
Cuando haya terminado con el identificador, asegúrese de cerrarlo mediante la función CloseHandle .
Ejemplos
Para obtener un ejemplo, vea Tomar una instantánea y ver procesos.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | processthreadsapi.h (incluya Windows.h en Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |