Используйте GetProcAddress()
для динамической загрузки GetPackageFamilyName()
во время выполнения, например:
typedef LONG WINAPI (*LPFN_GPFN)(HANDLE, UINT32*, PWSTR);
bool bIsUWP = false;
LPFN_GPFN lpGetPackageFamilyName = (LPFN_GPFN) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "GetPackageFamilyName");
if (lpGetPackageFamilyName)
{
UINT32 size = 0;
if (lpGetPackageFamilyName(GetCurrentProcess(), &size, NULL) == ERROR_INSUFFICIENT_BUFFER)
bIsUWP = true;
}
if (bIsUWP)
{
//...
}
else
{
//...
}
В качестве альтернативы рассмотрите возможность использования одной из GetCurentPackage...()
функций (GetCurrentPackageFamilyName()
, GetCurrentPackageId()
, GetCurrentPackageInfo()
и т. Д.) Вместо использования GetPackageFamilyName()
с HANDLE
для вызывающего процесса.