Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Obtiene el nombre completo del paquete para el proceso especificado.
Sintaxis
LONG GetPackageFullName(
[in] HANDLE hProcess,
[in, out] UINT32 *packageFullNameLength,
[out, optional] PWSTR packageFullName
);
Parámetros
[in] hProcess
Tipo: HANDLE de
Identificador del proceso que tiene el derecho de acceso PROCESS_QUERY_INFORMATION o PROCESS_QUERY_LIMITED_INFORMATION. Para obtener más información, consulte Derechos de acceso y seguridad de procesos.
[in, out] packageFullNameLength
Tipo: UINT32*
En la entrada, el tamaño del packageFullName búfer, en caracteres. En la salida, el tamaño del nombre completo del paquete devuelto, en caracteres, incluido el terminador NULL.
[out, optional] packageFullName
Tipo: PWSTR
Nombre completo del paquete.
Valor devuelto
Tipo: LONG
Si la función se realiza correctamente, devuelve ERROR_SUCCESS. De lo contrario, la función devuelve un código de error. Los códigos de error posibles incluyen lo siguiente.
| Código devuelto | Descripción |
|---|---|
|
El proceso no tiene ninguna identidad de paquete. |
|
El búfer no es lo suficientemente grande como para contener los datos. El tamaño necesario se especifica mediante packageFullNameLength. |
Observaciones
Para obtener información sobre los límites de tamaño de cadena, consulte Constantes de identidad.
Ejemplos
#define _UNICODE 1
#define UNICODE 1
#include <Windows.h>
#include <appmodel.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
int ShowUsage();
void ShowProcessPackageFullName(__in const UINT32 pid, __in HANDLE process);
int ShowUsage()
{
wprintf(L"Usage: GetPackageFullName <pid> [<pid>...]\n");
return 1;
}
int __cdecl wmain(__in int argc, __in_ecount(argc) WCHAR * argv[])
{
if (argc <= 1)
return ShowUsage();
for (int i=1; i<argc; ++i)
{
UINT32 pid = wcstoul(argv[i], NULL, 10);
if (pid > 0)
{
HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (process == NULL)
wprintf(L"Error %d in OpenProcess (pid=%u)\n", GetLastError(), pid);
else
{
ShowProcessPackageFullName(pid, process);
CloseHandle(process);
}
}
}
return 0;
}
void ShowProcessPackageFullName(__in const UINT32 pid, __in HANDLE process)
{
wprintf(L"Process %u (handle=%p)\n", pid, process);
UINT32 length = 0;
LONG rc = GetPackageFullName(process, &length, NULL);
if (rc != ERROR_INSUFFICIENT_BUFFER)
{
if (rc == APPMODEL_ERROR_NO_PACKAGE)
wprintf(L"Process has no package identity\n");
else
wprintf(L"Error %d in GetPackageFullName\n", rc);
return;
}
PWSTR fullName = (PWSTR) malloc(length * sizeof(*fullName));
if (fullName == NULL)
{
wprintf(L"Error allocating memory\n");
return;
}
rc = GetPackageFullName(process, &length, fullName);
if (rc != ERROR_SUCCESS)
wprintf(L"Error %d retrieving PackageFullName\n", rc);
else
wprintf(L"%s\n", fullName);
free(fullName);
}
Requisitos
| Requisito | Valor |
|---|---|
| cliente mínimo admitido | Windows 8 [solo aplicaciones de escritorio] |
| servidor mínimo admitido | Windows Server 2012 [solo aplicaciones de escritorio] |
| de la plataforma de destino de | Windows |
| encabezado de | appmodel.h |
| biblioteca de | Kernel32.lib |
| DLL de | Kernel32.dll |