Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ruft den vollständigen Paketnamen für den angegebenen Prozess ab.
Syntax
LONG GetPackageFullName(
[in] HANDLE hProcess,
[in, out] UINT32 *packageFullNameLength,
[out, optional] PWSTR packageFullName
);
Parameter
[in] hProcess
Typ: HANDLE
Ein Handle für den Prozess, der über das zugriffsrecht PROCESS_QUERY_INFORMATION oder PROCESS_QUERY_LIMITED_INFORMATION verfügt. Weitere Informationen finden Sie unter Prozesssicherheit und Zugriffsrechte.
[in, out] packageFullNameLength
Typ: UINT32*
Bei der Eingabe die Größe des packageFullName-Puffers in Zeichen. Bei der Ausgabe wird die Größe des vollständigen Paketnamens in Zeichen einschließlich des NULL-Abschlusszeichens zurückgegeben.
[out, optional] packageFullName
Typ: PWSTR
Der vollständige Name des Pakets.
Rückgabewert
Typ: LONG
Wenn die Funktion erfolgreich ist, gibt sie ERROR_SUCCESS zurück. Andernfalls gibt die Funktion einen Fehlercode zurück. Folgende Fehlercodes sind möglich.
| Rückgabecode | Beschreibung |
|---|---|
|
Der Prozess verfügt über keine Paketidentität. |
|
Der Puffer ist nicht groß genug, um die Daten aufzunehmen. Die erforderliche Größe wird von packageFullNameLength angegeben. |
Hinweise
Informationen zu Grenzwerten für die Zeichenfolgengröße finden Sie unter Identitätskonstanten.
Beispiele
#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);
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) | Windows 8 [nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) | Windows Server 2012 [nur Desktop-Apps] |
| Zielplattform | Windows |
| Kopfzeile | appmodel.h |
| Bibliothek | Kernel32.lib |
| DLL | Kernel32.dll |