Partager via


GetStagedPackagePathByFullName, fonction (appmodel.h)

Obtient le chemin du package intermédiaire spécifié.

Syntaxe

LONG GetStagedPackagePathByFullName(
  [in]            PCWSTR packageFullName,
  [in, out]       UINT32 *pathLength,
  [out, optional] PWSTR  path
);

Paramètres

[in] packageFullName

Type : PCWSTR

Nom complet du package intermédiaire.

[in, out] pathLength

Type : UINT32*

Pointeur vers une variable qui contient le nombre de caractères (WCHARs) dans la chaîne de chemin d’accès du package, qui inclut la fin null.

Tout d’abord, vous passez la valeur NULL au chemin d’accès pour obtenir le nombre de caractères. Vous utilisez ce nombre pour allouer de l’espace mémoire pour le chemin d’accès. Ensuite, vous passez l’adresse de cet espace mémoire pour remplir le chemin d’accès.

[out, optional] path

Type : PWSTR

Pointeur vers l’espace mémoire qui reçoit la chaîne de chemin d’accès du package, qui inclut la fin null.

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
La mémoire tampon spécifiée par chemin d’accès n’est pas assez grande pour contenir les données. La taille requise est spécifiée par pathLength.

Remarques

Cette fonction réussit si le package est intermédiaire, quel que soit le contexte utilisateur ou si le package est inscrit pour l’utilisateur actuel.

Exemples

#define _UNICODE 1
#define UNICODE 1

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

int ShowUsage();

int ShowUsage()
{
    wprintf(L"Usage: GetStagedPackagePathByFullName <fullname> [<fullname>...]\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)
    {
        PCWSTR fullName = argv[i];
        UINT32 length = 0;
        LONG rc = GetStagedPackagePathByFullName(fullName, &length, NULL);
        if (rc != ERROR_INSUFFICIENT_BUFFER)
        {
            wprintf(L"Error %d in GetStagedPackagePathByFullName\n", rc);
            return 2;
        }

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

        rc = GetStagedPackagePathByFullName(fullName, &length, path);
        if (rc != ERROR_SUCCESS)
            wprintf(L"Error %d retrieving Package's path\n", rc);
        else
            wprintf(L"Path = %s\n", path);

        free(path);
    }

    return 0;
}

Configuration requise

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

Voir aussi

GetStagedPackagePathByFullName2