Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mendapatkan nama lengkap paket untuk proses yang ditentukan.
Sintaks
LONG GetPackageFullName(
[in] HANDLE hProcess,
[in, out] UINT32 *packageFullNameLength,
[out, optional] PWSTR packageFullName
);
Parameter
[in] hProcess
Jenis: HANDEL
Handel untuk proses yang memiliki hak akses PROCESS_QUERY_INFORMATION atau PROCESS_QUERY_LIMITED_INFORMATION . Untuk informasi selengkapnya, lihat Keamanan Proses dan Hak Akses.
[in, out] packageFullNameLength
Jenis: UINT32*
Pada input, ukuran buffer packageFullName , dalam karakter. Pada output, ukuran nama lengkap paket dikembalikan, dalam karakter, termasuk terminator null.
[out, optional] packageFullName
Jenis: PWSTR
Nama lengkap paket.
Menampilkan nilai
Jenis: LONG
Jika fungsi berhasil, fungsi akan mengembalikan ERROR_SUCCESS. Jika tidak, fungsi mengembalikan kode kesalahan. Kode kesalahan yang mungkin mencakup yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Proses ini tidak memiliki identitas paket. |
|
Buffer tidak cukup besar untuk menyimpan data. Ukuran yang diperlukan ditentukan oleh packageFullNameLength. |
Keterangan
Untuk informasi tentang batas ukuran string, lihat Konstanta identitas.
Contoh
#define _UNICODE 1
#define UNICODE 1
#include <Windows.h>
#include <appmodel.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
int ShowUsage();
void ShowProcessPackageFullName(__in const UINT32 pid, __in HANDLE process);
int ShowUsage()
{
wprintf(L"Usage: GetPackageFullName <pid> [<pid>...]\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)
{
UINT32 pid = wcstoul(argv[i], NULL, 10);
if (pid > 0)
{
HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (process == NULL)
wprintf(L"Error %d in OpenProcess (pid=%u)\n", GetLastError(), pid);
else
{
ShowProcessPackageFullName(pid, process);
CloseHandle(process);
}
}
}
return 0;
}
void ShowProcessPackageFullName(__in const UINT32 pid, __in HANDLE process)
{
wprintf(L"Process %u (handle=%p)\n", pid, process);
UINT32 length = 0;
LONG rc = GetPackageFullName(process, &length, NULL);
if (rc != ERROR_INSUFFICIENT_BUFFER)
{
if (rc == APPMODEL_ERROR_NO_PACKAGE)
wprintf(L"Process has no package identity\n");
else
wprintf(L"Error %d in GetPackageFullName\n", rc);
return;
}
PWSTR fullName = (PWSTR) malloc(length * sizeof(*fullName));
if (fullName == NULL)
{
wprintf(L"Error allocating memory\n");
return;
}
rc = GetPackageFullName(process, &length, fullName);
if (rc != ERROR_SUCCESS)
wprintf(L"Error %d retrieving PackageFullName\n", rc);
else
wprintf(L"%s\n", fullName);
free(fullName);
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 [khusus aplikasi desktop] |
Server minimum yang didukung | Windows Server 2012 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | appmodel.h |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |