Partager via


PackageNameAndPublisherIdFromFamilyName, fonction (appmodel.h)

Obtient le nom du package et l’identificateur d’éditeur (ID) pour le nom de famille de packages spécifié.

Syntaxe

LONG PackageNameAndPublisherIdFromFamilyName(
  [in]            PCWSTR packageFamilyName,
  [in, out]       UINT32 *packageNameLength,
  [out, optional] PWSTR  packageName,
  [in, out]       UINT32 *packagePublisherIdLength,
  [out, optional] PWSTR  packagePublisherId
);

Paramètres

[in] packageFamilyName

Type : PCWSTR

Nom de famille d’un package.

[in, out] packageNameLength

Type : UINT32*

Lors de l’entrée, la taille de la mémoire tampon packageName , en caractères. Lors de la sortie, la taille du nom du package retournée, en caractères, y compris la marque de fin null.

[out, optional] packageName

Type : PWSTR

Nom du package.

[in, out] packagePublisherIdLength

Type : UINT32*

Lors de l’entrée, la taille de la mémoire tampon packagePublishId , en caractères. Lors de la sortie, la taille de l’ID d’éditeur est retournée, en caractères, y compris la marque de fin null.

[out, optional] packagePublisherId

Type : PWSTR

ID de l’éditeur de package.

Valeur retournée

Type : LONG

Si la fonction réussit, elle retourne ERROR_SUCCESS. Sinon, la fonction retourne un code d’erreur. Les codes d’erreur possibles sont les suivants.

Code de retour Description
ERROR_INSUFFICIENT_BUFFER
L’une des mémoires tampons n’est pas assez grande pour contenir les données. Les tailles requises sont spécifiées par packageNameLength et packagePublisherIdLength.

Remarques

Pour plus d’informations sur les limites de taille de chaîne, consultez Constantes d’identité.

Exemples

#define _UNICODE 1
#define UNICODE 1

#include <Windows.h>
#include <appmodel.h>
#include <malloc.h>
#include <stdio.h>

int ShowUsage();
void FamilyNameToNameAndPublisherId(__in PCWSTR familyName);

int ShowUsage()
{
    wprintf(L"Usage: PackageNameAndPublisherIdFromFamilyName <familyname> [<familyname>...]\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)
        FamilyNameToNameAndPublisherId(argv[i]);

    return 0;
}

void FamilyNameToNameAndPublisherId(__in PCWSTR familyName)
{
    wprintf(L"FamilyName: %s\n", familyName);
    UINT32 nameLength = 0;
    UINT32 publisherIdLength = 0;
    LONG rc = PackageNameAndPublisherIdFromFamilyName(familyName, &nameLength, NULL, &publisherIdLength, NULL);
    if (rc == ERROR_SUCCESS)
    {
        wprintf(L"PackageNameAndPublisherIdFromFamilyName unexpectedly succeeded\n");
        return;
    }
    else if (rc != ERROR_INSUFFICIENT_BUFFER)
    {
        wprintf(L"Error %d in PackageNameAndPublisherIdFromFamilyName\n", rc);
        return;
    }

    PWSTR name = (PWSTR) malloc(nameLength * sizeof(WCHAR));
    if (name == NULL)
    {
        wprintf(L"Error allocating memory\n");
        return;
    }

    PWSTR publisherId = (PWSTR) malloc(publisherIdLength * sizeof(WCHAR));
    if (publisherId == NULL)
    {
        wprintf(L"Error allocating memory\n");
        free(name);
        return;
    }

    rc = PackageNameAndPublisherIdFromFamilyName(familyName, &nameLength, name, &publisherIdLength, publisherId);
    if (rc != ERROR_SUCCESS)
        wprintf(L"Error %d converting PackageFamilyName to Name and PublisherId\n", rc);
    else
    {
        wprintf(L"        Name = %s\n", name);
        wprintf(L"Publisher Id = %s\n", publisherId);
    }

    free(name);
    free(publisherId);
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête appmodel.h
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

PackageFamilyNameFromFullName

PackageFamilyNameFromId

PackageFullNameFromId

PackageIdFromFullName