XPackageEnumerateChunkAvailability
インストール パッケージを調べて、指定されたセレクターと一致するすべてのチャンクの使用可能性を列挙します。
構文
HRESULT XPackageEnumerateChunkAvailability(
const char* packageIdentifier,
XPackageChunkSelectorType type,
void* context,
XPackageChunkAvailabilityCallback* callback
)
パラメーター
packageIdentifier _In_z_
型: char*
ディスクにインストールされているパッケージを一意に識別する文字列。 パッケージ識別子の詳細については、「ダウンロード可能なコンテンツ (DLC) の管理とライセンス」を参照してください。
type _In_
型: XPackageChunkSelectorType
列挙する属性の種類。
context _In_
型: void*
callback パラメーターで指定されているコールバックに渡すコンテキスト。
callback _In_
型: XPackageChunkAvailabilityCallback*
完了時に呼び出されるコールバック。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。
解説
注意
この関数は、時間依存のスレッドで呼び出すのに安全ではありません。 詳細については、「時間依存のスレッド」を参照してください。
XPackageEnumerateChunkAvailability は、パッケージを確認し、特定の種類のセレクターすべての利用可能性を列挙するために使用されます。 たとえば、XPackageChunkSelectorType::Language でこれを呼び出すと、パッケージのすべての言語属性と、その利用可能性が列挙されます。
下の例では、ゲームでサポートされるすべての言語が表示され、言語をインストールまたは削除することをユーザーに許可します。 これを行うため、パッケージにクエリして、どの言語が利用可能であり、その言語がインストールされているかどうかを確認します。
HRESULT GetPackageLanguages(_Out_ std::map<std::string, bool>& languages)
{
char id[XPACKAGE_IDENTIFIER_MAX_LENGTH];
HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id);
if (FAILED(hr)) return hr;
hr = XPackageEnumerateChunkAvailability(id,
XPackageChunkSelectorType::Language, &languages,
[](void* context, const XPackageChunkSelector* sel, XPackageChunkAvailability av)
{
auto languages = static_cast<std::map<std::string, bool>*>(context);
switch (av)
{
case XPackageChunkAvailability::Ready:
case XPackageChunkAvailability::Pending:
languages->emplace(sel->language, true);
break;
case XPackageChunkAvailability::Installable:
languages->emplace(sel->language, false);
break;
case XPackageChunkAvailability::Unavailable:
default:
break;
}
return true;
});
return hr;
}
要件
ヘッダー: XPackage.h
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体