Поделиться через


Функция GetStagedPackagePathByFullName (appmodel.h)

Возвращает путь к указанному промежуточному пакету.

Синтаксис

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

Параметры

[in] packageFullName

Тип: PCWSTR

Полное имя промежуточного пакета.

[in, out] pathLength

Тип: UINT32*

Указатель на переменную, содержащую количество символов (WCHARs) в строке пути к пакету, включающую признак конца null.

Сначала вы передаете значение NULL в путь , чтобы получить количество символов. Это число используется для выделения места в памяти для пути. Затем вы передаете адрес этого пространства памяти для заполнения пути.

[out, optional] path

Тип: PWSTR

Указатель на пространство памяти, получающий строку пути к пакету, включающую признак конца null.

Возвращаемое значение

Тип: LONG

Если функция завершается успешно, она возвращает ERROR_SUCCESS. В противном случае функция возвращает код ошибки. Возможные коды ошибок включают следующие.

Код возврата Описание
ERROR_INSUFFICIENT_BUFFER
Буфер, указанный путем , недостаточно велик для хранения данных. Требуемый размер задается параметром pathLength.

Комментарии

Эта функция выполняется успешно, если пакет является промежуточным, независимо от контекста пользователя или зарегистрирован ли пакет для текущего пользователя.

Примеры

#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;
}

Требования

Требование Значение
Минимальная версия клиента Windows 8.1 [только классические приложения]
Минимальная версия сервера Windows Server 2012 R2 [только классические приложения]
Целевая платформа Windows
Header appmodel.h
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

GetStagedPackagePathByFullName2