次の方法で共有


XPackageRegisterPackageInstalled

インストールが完了したときに呼び出されるコールバックを登録します。

構文

HRESULT XPackageRegisterPackageInstalled(  
         XTaskQueueHandle queue,  
         void* context,  
         XPackageInstalledCallback* callback,  
         XTaskQueueRegistrationToken* token  
)  

パラメーター

queue _In_
型: XTaskQueueHandle

コールバックを実行する非同期キュー。

context _In_opt_
型: void*

コールバックに渡すコンテキスト。

callback _In_
型: XPackageInstalledCallback*

インストールの完了時に呼び出されるユーザー定義のコールバック。

token _Out_
型: XTaskQueueRegistrationToken*

戻ったとき、XPackageUnregisterPackageInstalled でコールバックを登録解除するために使用できる、コールバックを示すトークンが格納されます。

戻り値

型: HRESULT

HRESULT 成功またはエラー コード。

解説

PackageInstalled 通知を使用して、新しいパッケージが完全にインストールされたタイミングを知ることができます。

XPackageEnumeratePackages API と XPackageRegisterPackageInstalled API はどちらも、XPackageDetails 構造体を通じてインストールに関する詳細を提供します。 パッケージがインストール中である場合、installing プロパティは true に設定され、インストール モニターを作成して、パッケージ ID にインストールの進行状況を監視させることができます。

一般的なインストール キューの通知はありません。その目的は、XPackageEnumeratePackages を使用して、処理中のアイテムを表示して追跡し、PackageInstalled を使用して、新しい DLC の存在を通知することです。 また、インストールを停止、開始、またはキャンセルする API もありません。 ゲームの観点からは、インストールは自動的に行われます。 エラーは自動的に再試行され、ゲームには不可視です。

次の例では、XPackageRegisterPackageInstalled を使用して、新しい DLC パッケージがインストールされたときにメッセージを出力します。

void CALLBACK NewPackageAdded(void* /* context */, const XPackageDetails* details)
{
    if (details->kind == XPackageKind::Content)
    {
        printf("Package added: %s\n", details->displayName);
    }
}

HRESULT ListenForNewDlc(XTaskQueueHandle queue, XTaskQueueRegistrationToken* token)
{
    HRESULT hr = XPackageRegisterPackageInstalled(queue, nullptr, NewPackageAdded, token);
    return hr;
}

void StopListeningForDlc(XTaskQueueRegistrationToken token)
{
    XPackageUnregisterPackageInstalled(token, false);
}

要件

ヘッダー: XPackage.h

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XPackage