IDXGIObject::SetPrivateData メソッド (dxgi.h)
アプリケーション定義データを オブジェクトに設定し、そのデータを GUID に関連付けます。
構文
HRESULT SetPrivateData(
[in] REFGUID Name,
UINT DataSize,
[in] const void *pData
);
パラメーター
[in] Name
型: REFGUID
データを識別する GUID。 GetPrivateData の呼び出しでこの GUID を使用して、データを取得します。
DataSize
型: UINT
オブジェクトのデータのサイズ。
[in] pData
型: const void*
オブジェクトのデータへのポインター。
戻り値
型: HRESULT
DXGI_ERROR値のいずれかを返します。
解説
SetPrivateData は、指定されたデータのコピーを作成し、 オブジェクトと共に格納します。
SetPrivateData がオブジェクトに格納するプライベート データは、関連付けられた Direct3D オブジェクトによって格納されるプライベート データと同じストレージ領域を占有します (たとえば、Microsoft Direct3D 11 デバイスから ID3D11Device::SetPrivateData を介して、または ID3D11DeviceChild::SetPrivateData を介した Direct3D 11 子デバイスなど)。
デバッグ レイヤーは、オブジェクト インターフェイス ポインターの一覧とそのフレンドリ名を出力することで、メモリ リークを報告します。 既定のフレンドリ名は "<unnamed>" です。 フレンドリ名を設定して、対応するオブジェクト インターフェイス ポインターによってリークが発生したかどうかを判断できます。 フレンドリ名を設定するには、 SetPrivateData メソッドと、D3Dcommon.h にある既知のプライベート データ GUID (WKPDID_D3DDebugObjectName) を使用します。 たとえば、pContext に [マイ名] というフレンドリ名を付ける場合は、次のコードを使用します。
static const char c_szName[] = "My name";
hr = pContext->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
WKPDID_D3DDebugObjectNameを使用してメモリ リークを追跡し、アプリケーションのパフォーマンス特性を理解できます。 この情報は、メモリ リーク (ID3D11Debug::ReportLiveDeviceObjects) に関連するデバッグ レイヤーの出力と、Windows 8 に追加した Windows イベントのイベント トレースに反映されます。
要件
対象プラットフォーム | Windows |
ヘッダー | dxgi.h |
Library | DXGI.lib |