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 Paketbezeichner (ID) ab.
Syntax
LONG PackageFullNameFromId(
[in] const PACKAGE_ID *packageId,
[in, out] UINT32 *packageFullNameLength,
[out, optional] PWSTR packageFullName
);
Parameter
[in] packageId
Typ: const PACKAGE_ID*
Die Paket-ID.
[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 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 <errno.h>
#include <stdio.h>
int ShowUsage();
bool ParseArchitecture(__in PCWSTR architectureString, __out UINT32 * architecture);
bool ParseVersion(__in PCWSTR versionString, __out PACKAGE_VERSION * version);
int ShowUsage()
{
wprintf(L"Usage: PackageFullNameFromId <name><version> <arch> <resourceid> <publisher>\n");
return 1;
}
int __cdecl wmain(__in int argc, __in_ecount(argc) WCHAR * argv[])
{
if (argc <= 5)
return ShowUsage();
PACKAGE_ID packageId;
ZeroMemory(&packageId, sizeof(packageId));
packageId.name = argv[1];
if (!ParseVersion(argv[2], &packageId.version))
return 2;
if (!ParseArchitecture(argv[3], &packageId.processorArchitecture))
return 3;
packageId.resourceId = argv[4];
packageId.publisher = argv[5];
UINT32 length = 0;
LONG rc = PackageFullNameFromId(&packageId, &length, NULL);
if (rc == ERROR_SUCCESS)
{
wprintf(L"PackageFullNameFromId unexpectedly succeeded\n");
return 4;
}
else if (rc != ERROR_INSUFFICIENT_BUFFER)
{
wprintf(L"Error %d in PackageFullNameFromId\n", rc);
return 5;
}
PWSTR fullName = (PWSTR) malloc(length * sizeof(WCHAR));
if (fullName == NULL)
{
wprintf(L"Error allocating memory\n");
return 6;
}
rc = PackageFullNameFromId(&packageId, &length, fullName);
if (rc != ERROR_SUCCESS)
wprintf(L"Error %d converting Package Id to Full Name\n", rc);
else
wprintf(L"Package Full Name = %s\n", fullName);
free(fullName);
return rc == ERROR_SUCCESS ? 0 : 7;
}
bool ParseArchitecture(__in PCWSTR architectureString, __out UINT32 * architecture)
{
if (_wcsicmp(architectureString, L"neutral") == 0)
*architecture = PROCESSOR_ARCHITECTURE_NEUTRAL;
else if (_wcsicmp(architectureString, L"x86") == 0)
*architecture = PROCESSOR_ARCHITECTURE_INTEL;
else if (_wcsicmp(architectureString, L"x64") == 0)
*architecture = PROCESSOR_ARCHITECTURE_AMD64;
else if (_wcsicmp(architectureString, L"arm") == 0)
*architecture = PROCESSOR_ARCHITECTURE_ARM;
else
{
wprintf(L"Invalid architecture\n");
return false;
}
return true;
}
bool ParseVersion(__in PCWSTR versionString, __out PACKAGE_VERSION * version)
{
PWSTR s = (PWSTR) versionString;
ULONG n = wcstoul(s, &s, 10);
if (((n == 0) || (n > 65535)) && (errno == ERANGE)) {
wprintf(L"Invalid Version (Major)\n");
return false;
}
version->Major = (USHORT) n;
if (*s != L'.')
{
wprintf(L"Invalid Version\n");
return false;
}
n = wcstoul(++s, &s, 10);
if (((n == 0) || (n > 65535)) && (errno == ERANGE)) {
wprintf(L"Invalid Version (Minor)\n");
return false;
}
version->Minor = (USHORT) n;
if (*s != L'.')
{
wprintf(L"Invalid Version\n");
return false;
}
n = wcstoul(++s, &s, 10);
if (((n == 0) || (n > 65535)) && (errno == ERANGE)) {
wprintf(L"Invalid Version (Build)\n");
return false;
}
version->Build = (USHORT) n;
if (*s != L'.')
{
wprintf(L"Invalid Version\n");
return false;
}
n = wcstoul(++s, &s, 10);
if (((n == 0) || (n > 65535)) && (errno == ERANGE)) {
wprintf(L"Invalid Version (Revision)\n");
return false;
}
version->Revision = (USHORT) n;
return true;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) | Windows 8 [Desktop-Apps | UWP-Apps] |
| Unterstützte Mindestversion (Server) | Windows Server 2012 [Desktop-Apps | UWP-Apps] |
| Zielplattform | Windows |
| Kopfzeile | appmodel.h |
| Bibliothek | Kernel32.lib |
| DLL | Kernel32.dll |
Siehe auch
PackageFamilyNameFromId-Funktion (appmodel.h)
PackageNameAndPublisherIdFromFamilyName-Funktion (appmodel.h)