XPersistentLocalStorageGetPath
デバイス上の永続的なローカル ストレージ (PLS) へのゲーム固有のパスを返します。
構文
HRESULT XPersistentLocalStorageGetPath(
size_t pathSize,
char* path,
size_t* pathUsed
)
パラメーター
pathSize _In_
型: size_t
PLS パスに提供されるバッファー内の文字数。 この値を取得するには、XPersistentLocalStorageGetPathSize を呼び出します。
path _Out_writes_to_(pathSize,pathUsed)
型: char
ゲームがデータを書き込むことができる PLS パス。
pathUsed _Out_opt_
型: size_t*
指定されたバッファーに書き込まれた文字数。
戻り値
型: HRESULT
正常に実行された場合は S_OK が返され、それ以外の場合はエラー コードが返されます。 エラー コードの一覧については、「エラー コード」を参照してください。 pathSize が PLS のパスの長さより小さいために関数が失敗した場合、戻り値は Xbox デバイスでは E_FAIL、PC デバイスでは HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER) に設定されます。
解説
注意
この関数は、時間依存のスレッドで呼び出すのに安全ではありません。 詳細については、「時間依存のスレッド」を参照してください。
ゲームでは、ステージング領域、ゲーム内 DLC、コンテンツのオンデマンド生成などのタスクに PLS が必要になる場合があります。 この領域はゲームの複数のアクティブ化にわたって保持されますが、ユーザーが削除することもできます。 PLS の詳細については、「ローカル ストレージ」を参照してください。
PLS は、デバイスのファミリーに従ってアクセスおよび管理されます。 Xbox デバイスでは、ドライブのルートにマウントされたフォルダーへのアクセスを提供します。 そのフォルダーにプロビジョニングされたストレージ領域の容量は、ゲームの MicrosoftGame.config ファイルで指定されます。 プロビジョニングされた領域は利用可能で、ゲームの起動中に常に存在します。 空き領域を増やすには、ゲームを実行していないときに、ユーザーはゲームをアンインストールせずに、プロビジョニングされた領域を削除することができます。ただし、ゲームの実行中は、ストレージの可用性が保証されます。 この領域を Xbox デバイス用にプロビジョニングするには、MicrosoftGame.config ファイルに対応するエントリが必要です。
PC デバイスでは、PC 上のローカル ストレージ フォルダーの場所へのアクセスを提供しますが、ゲームのための領域は特にプロビジョニングされていません。 ユーザーは、ゲームの実行中でもその領域を削除できます。 ストレージの可用性は保証されていません。ストレージ領域を要求するために、MicrosoftGame.config ファイルのエントリは必須ではありません。 最初に、ローカル ストレージ フォルダーで使用可能な領域がゲームの目的に十分であることを確認する必要があります。
この関数を呼び出して PLS パスを取得する前に、XPersistentLocalStorageGetPathSize 関数を呼び出して PLS パスの文字数を取得し、pathSize パラメーターにその値を指定して、その数以上の文字を path パラメーターに割り当てます。 pathSize で指定された文字が PLS パスに含まれる文字よりも少ない場合、エラーが発生します。
次の例は、XPersistentLocalStorageGetPathSize 関数と XPersistentLocalStorageGetPath 関数を使用して、ゲームの PLS パスを取得する方法を示しています。
// Confirm that all of the features needed to run asynchronous tasks on
// task queues are available.
LPCSTR Game::CheckPLSPath()
{
// Confirm the length of the path to the local storage folder.
LPCSTR returnPath = "";
size_t pathSize;
if (SUCCEEDED(XPersistentLocalStorageGetPathSize(&pathSize)))
{
char * path = new char[pathSize];
size_t * pathUsed = new size_t;
if (path != nullptr)
{
// Get the path to the local storage folder.
if (SUCCEEDED(XPersistentLocalStorageGetPath(pathSize, path, pathUsed)))
{
// Just to be safe, copy the bytes used in the buffer
// to a separate string.
char * actualPath = new char[*pathUsed];
strncpy(actualPath, path, *pathUsed);
returnPath = actualPath;
}
}
};
return returnPath;
}
要件
ヘッダー: XPersistentLocalStorage.h
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体
関連項目
XPersistentLocalStorageGetPathSize
XPersistentLocalStorage
新しい MicrosoftGame.config ファイルを使用する方法