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 identificador de paquete (ID) especificado.
Sintaxis
LONG PackageFullNameFromId(
[in] const PACKAGE_ID *packageId,
[in, out] UINT32 *packageFullNameLength,
[out, optional] PWSTR packageFullName
);
Parámetros
[in] packageId
Tipo: const PACKAGE_ID*
Identificador del paquete
[in, out] packageFullNameLength
Tipo: UINT32*
En la entrada, el tamaño del búfer packageFullName , en caracteres. En la salida, se devuelve el tamaño del nombre completo del paquete, 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 posibles códigos de error incluyen lo siguiente.
| Código devuelto | Descripción |
|---|---|
|
El búfer no es lo suficientemente grande como para contener los datos. PackageFullNameLength especifica el tamaño necesario. |
Comentarios
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 <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;
}
Requisitos
| Requisito | Value |
|---|---|
| Cliente mínimo compatible | Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP] |
| Servidor mínimo compatible | Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP] |
| Plataforma de destino | Windows |
| Encabezado | appmodel.h |
| Library | Kernel32.lib |
| Archivo DLL | Kernel32.dll |