> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MakeResident

> デバイスに対してオブジェクトを常駐状態にします。

デバイスに対してオブジェクトを常駐状態にします。

## 構文

```cpp theme={null}
HRESULT MakeResident(
    UINT NumObjects,
    ID3D12Pageable const  ppObjects
)
```

### パラメーター

*NumObjects*<br />型: UINT

デバイスに対して常駐状態にする <i>ppObjects</i> 配列内のオブジェクトの数。

*ppObjects \[in]*<br />型: ID3D12Pageable \*const \*

オブジェクトの [ID3D12Pageable](/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public) インターフェイス ポインターの配列を含むメモリ ブロックへのポインター。

ほとんどの D3D12 オブジェクトは [ID3D12Pageable](/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public) から継承しますが、常駐性の変更は次のオブジェクトでのみサポートされます: デスクリプター ヒープ、ヒープ、コミット済みリソース、およびクエリ ヒープ。

### 戻り値

型: HRESULT

このメソッドは [Direct3D 12 の戻りコード](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues) のいずれかを返します。

## 解説

**MakeResident** は、リソースに関連付けられたデータをディスクからロードし、リソースの適切なメモリ プールからメモリを再割り当てします。このメソッドは、物理メモリを所有するオブジェクトに対して呼び出す必要があります。

このメソッドと [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) を使用して GPU ビデオ メモリを管理します。これは D3D11 では自動的に行われていましたが、D3D12 ではアプリで行う必要があります。

**MakeResident** と [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) は、多くのアダプターで常駐予算の管理をアプリケーションが行うのに役立ちます。**MakeResident** は、明示的にデータをページインし、GPU がデータにアクセスできるようにページアウトを阻止します。**Evict** はページアウトを有効にします。

一部の GPU アーキテクチャでは、十分な GPU 仮想アドレス空間がないため、常駐性の操作の恩恵を受けません。プロセスあたりの最大 GPU VA 空間が常駐予算より小さいか、ほぼ同じサイズの場合を認識するには、[D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT](/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public) および [IDXGIAdapter3::QueryVideoMemoryInfo](https://learn.microsoft.com/en-us/windows/desktop/api/dxgi1_4/nf-dxgi1_4-idxgiadapter3-queryvideomemoryinfo) を使用します。そのようなアーキテクチャでは、常駐予算は常に GPU 仮想アドレス空間の量によって制約されます。[Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) は、そのようなシステムでは常駐予算を解放しません。

十分な常駐予算があるように見えても、アプリケーションは **MakeResident** の失敗を処理する必要があります。物理メモリの断片化とアダプター アーキテクチャの癖により、大きな連続した範囲の使用が阻止されることがあります。アプリケーションは、再試行する前により多くの常駐予算を解放する必要があります。

**MakeResident** は参照カウントされており、**Evict** が効果を発揮する前に、**MakeResident** と同じ回数だけ [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) を呼び出す必要があります。常駐性をサポートするオブジェクトは作成中に常駐状態にされるため、単一の **Evict** 呼び出しで実際にオブジェクトが排除されます。

アプリケーションは、フェンスを使用して GPU が非常駐オブジェクトを使用しないことを保証する必要があります。**MakeResident** は、GPU がオブジェクトを参照するコマンド リストを実行する前に返される必要があります。[Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) は、GPU がオブジェクトを参照するコマンド リストの実行を完了した後に呼び出す必要があります。

排除されたオブジェクトは依然として同じ GPU 仮想アドレスと同じ量の GPU 仮想アドレス空間を消費します。したがって、リソース記述子およびその他の GPU 仮想アドレス参照は [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) の後に無効化されません。

## 要件

**ヘッダー:** d3d12\_xs.h または d3d12\_x.h<br />**ライブラリ:** d3d12\_xs.lib または d3d12\_x.lib<br />**サポートされているプラットフォーム**: XBOX Series 本体および XBOX One ファミリ

## 関連項目

[ID3D12Device](/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [EnqueueMakeResident](/ja-jp/reference/graphics/d3d12/interfaces/id3d12device3/methods/id3d12device3_enqueuemakeresident_public.md)
- [ID3D12Pageable](/ja-jp/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public.md)
- [Evict](/ja-jp/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public.md)
- [D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT](/ja-jp/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public.md)
- [D3D12_RESIDENCY_FLAGS](/ja-jp/reference/graphics/d3d12/enums/d3d12_residency_flags_public.md)
