Win32 API 日本語リファレンス
ホームGraphics.Direct3D12 › ID3D12InfoQueue

ID3D12InfoQueue

COM
IID0742a90b-c387-483f-b946-30a7e4e61458継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

情報キューインターフェイスは、デバッグメッセージの格納、取得、フィルタリングを行います。キューは、メッセージキュー、省略可能な格納フィルタースタック、および省略可能な取得フィルタースタックで構成されます。(ID3D12InfoQueue)

解説(Remarks)

このインターフェイスは、ID3D12Device に対して IUnknown::QueryInterface を呼び出して取得します。この操作を成功させるには、ID3D12Debug::EnableDebugLayer によって ID3D12Debug レイヤーを有効にしておく必要があります。

メソッド 35

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetMessageCountLimit(ULONGLONG MessageCountLimit)

メッセージキューに追加できるメッセージの最大数を設定します。(ID3D12InfoQueue.SetMessageCountLimit)

MessageCountLimitULONGLONGin

メッセージキューに追加できるメッセージの最大数です。-1 は無制限を意味します。

メッセージキュー内のメッセージ数が上限に達すると、新たに到着したメッセージが古いメッセージを押し出します。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 4 void ClearStoredMessages()

メッセージキューからすべてのメッセージを消去します。(ID3D12InfoQueue.ClearStoredMessages)

vtbl 5 HRESULT GetMessage(ULONGLONG MessageIndex, D3D12_MESSAGE* pMessage, UINT_PTR* pMessageByteLength)

メッセージキューからメッセージを取得します。(ID3D12InfoQueue.GetMessage)

MessageIndexULONGLONGin省略可能な取得フィルターを適用した後のメッセージキューへのインデックスです。0 から、取得フィルターを通過したメッセージキュー内のメッセージ数(GetNumStoredMessagesAllowedByRetrievalFilter で取得できます)までの値を指定できます。0 はメッセージキューの先頭のメッセージです。
pMessageD3D12_MESSAGE*outoptional返されるメッセージです。
pMessageByteLengthUINT_PTR*inoutpMessage のサイズ(バイト単位)です。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

このメソッドはメッセージキューからメッセージを削除しません。

このメソッドは、省略可能な取得フィルターを適用した後のメッセージキューからメッセージを取得します。

アプリケーションは、メッセージを取得するためにこのメソッドを 2 回呼び出す必要があります。1 回目でメッセージのサイズを取得し、2 回目でメッセージ本体を取得します。典型的な例を次に示します。

 
// Get the size of the message
SIZE_T messageLength = 0;
HRESULT hr = pInfoQueue->GetMessage(0, NULL, &messageLength);

// Allocate space and get the message
D3D12_MESSAGE * pMessage = (D3D12_MESSAGE*)malloc(messageLength);
hr = pInfoQueue->GetMessage(0, pMessage, &messageLength); 
vtbl 6 ULONGLONG GetNumMessagesAllowedByStorageFilter()

格納フィルターの通過を許可されたメッセージの数を取得します。(ID3D12InfoQueue.GetNumMessagesAllowedByStorageFilter)

戻り値

型: UINT64

格納フィルターによって許可されたメッセージの数です。

vtbl 7 ULONGLONG GetNumMessagesDeniedByStorageFilter()

格納フィルターの通過を拒否されたメッセージの数を取得します。(ID3D12InfoQueue.GetNumMessagesDeniedByStorageFilter)

戻り値

型: UINT64

格納フィルターによって拒否されたメッセージの数です。

vtbl 8 ULONGLONG GetNumStoredMessages()

現在メッセージキューに格納されているメッセージの数を取得します。(ID3D12InfoQueue.GetNumStoredMessages)

戻り値

型: UINT64

現在メッセージキューに格納されているメッセージの数です。

vtbl 9 ULONGLONG GetNumStoredMessagesAllowedByRetrievalFilter()

取得フィルターを通過できるメッセージの数を取得します。(ID3D12InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter)

戻り値

型: UINT64

取得フィルターによって許可されたメッセージの数です。

vtbl 10 ULONGLONG GetNumMessagesDiscardedByMessageCountLimit()

メッセージ数の上限によって破棄されたメッセージの数を取得します。(ID3D12InfoQueue.GetNumMessagesDiscardedByMessageCountLimit)

戻り値

型: UINT64

破棄されたメッセージの数です。

解説(Remarks)

メッセージ数の上限の取得と設定には、それぞれ GetMessageCountLimitSetMessageCountLimit を使用します。

vtbl 11 ULONGLONG GetMessageCountLimit()

メッセージキューに追加できるメッセージの最大数を取得します。(ID3D12InfoQueue.GetMessageCountLimit)

戻り値

型: UINT64

キューに追加できるメッセージの最大数です。-1 は無制限を意味します。

メッセージキュー内のメッセージ数が上限に達すると、新たに到着したメッセージが古いメッセージを押し出します。

vtbl 12 HRESULT AddStorageFilterEntries(D3D12_INFO_QUEUE_FILTER* pFilter)

格納フィルタースタックの最上位に格納フィルターを追加します。(ID3D12InfoQueue.AddStorageFilterEntries)

pFilterD3D12_INFO_QUEUE_FILTER*in格納フィルターの配列です。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 13 HRESULT GetStorageFilter(D3D12_INFO_QUEUE_FILTER* pFilter, UINT_PTR* pFilterByteLength)

格納フィルタースタックの最上位にある格納フィルターを取得します。(ID3D12InfoQueue.GetStorageFilter)

pFilterD3D12_INFO_QUEUE_FILTER*outoptional格納フィルタースタックの最上位にある格納フィルターです。
pFilterByteLengthUINT_PTR*inout格納フィルターのサイズ(バイト単位)です。pFilter が NULL の場合、格納フィルターのサイズがこのパラメーターに出力されます。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 14 void ClearStorageFilter()

格納フィルタースタックの最上位から格納フィルターを削除します。(ID3D12InfoQueue.ClearStorageFilter)

vtbl 15 HRESULT PushEmptyStorageFilter()

空の格納フィルターを格納フィルタースタックにプッシュします。(ID3D12InfoQueue.PushEmptyStorageFilter)

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

空の格納フィルターは、すべてのメッセージの通過を許可します。

vtbl 16 HRESULT PushCopyOfStorageFilter()

格納フィルタースタックの最上位にある格納フィルターのコピーを、格納フィルタースタックにプッシュします。(ID3D12InfoQueue.PushCopyOfStorageFilter)

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 17 HRESULT PushStorageFilter(D3D12_INFO_QUEUE_FILTER* pFilter)

格納フィルターを格納フィルタースタックにプッシュします。(ID3D12InfoQueue.PushStorageFilter)

pFilterD3D12_INFO_QUEUE_FILTER*in格納フィルターへのポインターです。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 18 void PopStorageFilter()

格納フィルタースタックの最上位から格納フィルターをポップします。(ID3D12InfoQueue.PopStorageFilter)

vtbl 19 DWORD GetStorageFilterStackSize()

格納フィルタースタックのサイズ(バイト単位)を取得します。(ID3D12InfoQueue.GetStorageFilterStackSize)

戻り値

型: UINT

格納フィルタースタックのサイズ(バイト単位)です。

vtbl 20 HRESULT AddRetrievalFilterEntries(D3D12_INFO_QUEUE_FILTER* pFilter)

取得フィルタースタックの最上位に格納フィルターを追加します。(ID3D12InfoQueue.AddRetrievalFilterEntries)

pFilterD3D12_INFO_QUEUE_FILTER*in取得フィルターの配列です。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

このメソッドの使用例を次に示します。

 
D3D12_MESSAGE_CATEGORY cats[] = { ..., ..., ... };
D3D12_MESSAGE_SEVERITY sevs[] = { ..., ..., ... };
D3D12_MESSAGE_ID ids[] = { ..., ..., ... };

D3D12_INFO_QUEUE_FILTER filter;
memset( &filter, 0, sizeof(filter) );

// To set the type of messages to allow, 
// set filter.AllowList as follows:
filter.AllowList.NumCategories = _countof(cats);
filter.AllowList.pCategoryList = cats;
filter.AllowList.NumSeverities = _countof(sevs);
filter.AllowList.pSeverityList = sevs;
filter.AllowList.NumIDs = _countof(ids);
filter.AllowList.pIDList = ids;

// To set the type of messages to deny, set filter.DenyList 
// similarly to the preceding filter.AllowList.

// The following single call sets all of the preceding information.
hr = infoQueue->AddRetrievalFilterEntries( &filter );
 
vtbl 21 HRESULT GetRetrievalFilter(D3D12_INFO_QUEUE_FILTER* pFilter, UINT_PTR* pFilterByteLength)

取得フィルタースタックの最上位にある取得フィルターを取得します。(ID3D12InfoQueue.GetRetrievalFilter)

pFilterD3D12_INFO_QUEUE_FILTER*outoptional取得フィルタースタックの最上位にある取得フィルターです。
pFilterByteLengthUINT_PTR*inout取得フィルターのサイズ(バイト単位)です。pFilter が NULL の場合、取得フィルターのサイズがこのパラメーターに出力されます。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 22 void ClearRetrievalFilter()

取得フィルタースタックの最上位から取得フィルターを削除します。(ID3D12InfoQueue.ClearRetrievalFilter)

vtbl 23 HRESULT PushEmptyRetrievalFilter()

空の取得フィルターを取得フィルタースタックにプッシュします。(ID3D12InfoQueue.PushEmptyRetrievalFilter)

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

空の取得フィルターは、すべてのメッセージの通過を許可します。

vtbl 24 HRESULT PushCopyOfRetrievalFilter()

取得フィルタースタックの最上位にある取得フィルターのコピーを、取得フィルタースタックにプッシュします。(ID3D12InfoQueue.PushCopyOfRetrievalFilter)

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 25 HRESULT PushRetrievalFilter(D3D12_INFO_QUEUE_FILTER* pFilter)

取得フィルターを取得フィルタースタックにプッシュします。(ID3D12InfoQueue.PushRetrievalFilter)

pFilterD3D12_INFO_QUEUE_FILTER*in取得フィルターへのポインターです。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 26 void PopRetrievalFilter()

取得フィルタースタックの最上位から取得フィルターをポップします。(ID3D12InfoQueue.PopRetrievalFilter)

vtbl 27 DWORD GetRetrievalFilterStackSize()

取得フィルタースタックのサイズ(バイト単位)を取得します。(ID3D12InfoQueue.GetRetrievalFilterStackSize)

戻り値

型: UINT

取得フィルタースタックのサイズ(バイト単位)です。

vtbl 28 HRESULT AddMessage(D3D12_MESSAGE_CATEGORY Category, D3D12_MESSAGE_SEVERITY Severity, D3D12_MESSAGE_ID ID, LPSTR pDescription)

デバッグメッセージをメッセージキューに追加し、そのメッセージをデバッグ出力に送信します。

CategoryD3D12_MESSAGE_CATEGORYinメッセージのカテゴリです。
SeverityD3D12_MESSAGE_SEVERITYinメッセージの重大度です。
IDD3D12_MESSAGE_IDinメッセージの一意な識別子です。
pDescriptionLPSTRinユーザー定義のメッセージです。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

解説(Remarks)

このメソッドは、ランタイム内部の機構がデバッグメッセージをメッセージキューに追加し、デバッグ出力へ送信するために使用します。アプリケーションが独自のカスタムメッセージをメッセージキューに追加してデバッグ出力へ送信するには、ID3D12InfoQueue::AddApplicationMessage を呼び出してください。

vtbl 29 HRESULT AddApplicationMessage(D3D12_MESSAGE_SEVERITY Severity, LPSTR pDescription)

ユーザー定義のメッセージをメッセージキューに追加し、そのメッセージをデバッグ出力に送信します。

SeverityD3D12_MESSAGE_SEVERITYinメッセージの重大度です。
pDescriptionLPSTRinメッセージ文字列を指定します。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 30 HRESULT SetBreakOnCategory(D3D12_MESSAGE_CATEGORY Category, BOOL bEnable)

指定したカテゴリのメッセージが格納フィルターを通過したときにブレークするよう、メッセージカテゴリを設定します。(ID3D12InfoQueue.SetBreakOnCategory)

CategoryD3D12_MESSAGE_CATEGORYinブレーク対象とするメッセージカテゴリです。
bEnableBOOLinこのブレーク条件のオン/オフを切り替えます(true でオン、false でオフ)。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 31 HRESULT SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY Severity, BOOL bEnable)

指定した重大度のメッセージが格納フィルターを通過したときにブレークするよう、メッセージの重大度レベルを設定します。(ID3D12InfoQueue.SetBreakOnSeverity)

SeverityD3D12_MESSAGE_SEVERITYinブレーク対象とするメッセージの重大度レベルです。
bEnableBOOLinこのブレーク条件のオン/オフを切り替えます(true でオン、false でオフ)。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 32 HRESULT SetBreakOnID(D3D12_MESSAGE_ID ID, BOOL bEnable)

指定した識別子のメッセージが格納フィルターを通過したときにブレークするよう、メッセージ識別子を設定します。(ID3D12InfoQueue.SetBreakOnID)

IDD3D12_MESSAGE_IDinブレーク対象とするメッセージ識別子です。
bEnableBOOLinこのブレーク条件のオン/オフを切り替えます(true でオン、false でオフ)。

戻り値

型: HRESULT

このメソッドは Direct3D 12 の戻り値コードのいずれかを返します。

vtbl 33 BOOL GetBreakOnCategory(D3D12_MESSAGE_CATEGORY Category)

指定したカテゴリのメッセージが格納フィルターを通過したときにブレークするかどうかを取得します。(ID3D12InfoQueue.GetBreakOnCategory)

CategoryD3D12_MESSAGE_CATEGORYinブレーク対象とするメッセージカテゴリです。

戻り値

型: BOOL

このブレーク条件がオンかオフかを示します(true でオン、false でオフ)。

vtbl 34 BOOL GetBreakOnSeverity(D3D12_MESSAGE_SEVERITY Severity)

指定した重大度のメッセージが格納フィルターを通過したときにブレークするかどうかを取得します。(ID3D12InfoQueue.GetBreakOnSeverity)

SeverityD3D12_MESSAGE_SEVERITYinブレーク対象とするメッセージの重大度レベルです。

戻り値

型: BOOL

このブレーク条件がオンかオフかを示します(true でオン、false でオフ)。

vtbl 35 BOOL GetBreakOnID(D3D12_MESSAGE_ID ID)

指定した識別子のメッセージが格納フィルターを通過したときにブレークするかどうかを取得します。(ID3D12InfoQueue.GetBreakOnID)

IDD3D12_MESSAGE_IDinブレーク対象とするメッセージ識別子です。

戻り値

型: BOOL

このブレーク条件がオンかオフかを示します(true でオン、false でオフ)。

vtbl 36 void SetMuteDebugOutput(BOOL bMute)

デバッグ出力のオン/オフを切り替えるブール値を設定します。(ID3D12InfoQueue.SetMuteDebugOutput)

bMuteBOOLinデバッグ出力を無効化/有効化します(true で出力を無効(ミュート)、false で出力を有効)。

解説(Remarks)

これにより、格納フィルターを通過したメッセージがデバッグ出力に表示されなくなりますが、それらのメッセージはメッセージキューには引き続き追加されます。

vtbl 37 BOOL GetMuteDebugOutput()

デバッグ出力がオンかオフかを判定するブール値を取得します。

戻り値

型: BOOL

デバッグ出力がオンかオフかを示します(true でオン、false でオフ)。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ID3D12InfoQueue "{0742A90B-C387-483F-B946-30A7E4E61458}"
#usecom global ID3D12InfoQueue IID_ID3D12InfoQueue "{}"
#comfunc global ID3D12InfoQueue_SetMessageCountLimit                          3 int64
#comfunc global ID3D12InfoQueue_ClearStoredMessages                           4
#comfunc global ID3D12InfoQueue_GetMessage                                    5 int64,var,var
#comfunc global ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter          6
#comfunc global ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter           7
#comfunc global ID3D12InfoQueue_GetNumStoredMessages                          8
#comfunc global ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter  9
#comfunc global ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit    10
#comfunc global ID3D12InfoQueue_GetMessageCountLimit                          11
#comfunc global ID3D12InfoQueue_AddStorageFilterEntries                       12 var
#comfunc global ID3D12InfoQueue_GetStorageFilter                              13 var,var
#comfunc global ID3D12InfoQueue_ClearStorageFilter                            14
#comfunc global ID3D12InfoQueue_PushEmptyStorageFilter                        15
#comfunc global ID3D12InfoQueue_PushCopyOfStorageFilter                       16
#comfunc global ID3D12InfoQueue_PushStorageFilter                             17 var
#comfunc global ID3D12InfoQueue_PopStorageFilter                              18
#comfunc global ID3D12InfoQueue_GetStorageFilterStackSize                     19
#comfunc global ID3D12InfoQueue_AddRetrievalFilterEntries                     20 var
#comfunc global ID3D12InfoQueue_GetRetrievalFilter                            21 var,var
#comfunc global ID3D12InfoQueue_ClearRetrievalFilter                          22
#comfunc global ID3D12InfoQueue_PushEmptyRetrievalFilter                      23
#comfunc global ID3D12InfoQueue_PushCopyOfRetrievalFilter                     24
#comfunc global ID3D12InfoQueue_PushRetrievalFilter                           25 var
#comfunc global ID3D12InfoQueue_PopRetrievalFilter                            26
#comfunc global ID3D12InfoQueue_GetRetrievalFilterStackSize                   27
#comfunc global ID3D12InfoQueue_AddMessage                                    28 int,int,int,str
#comfunc global ID3D12InfoQueue_AddApplicationMessage                         29 int,str
#comfunc global ID3D12InfoQueue_SetBreakOnCategory                            30 int,int
#comfunc global ID3D12InfoQueue_SetBreakOnSeverity                            31 int,int
#comfunc global ID3D12InfoQueue_SetBreakOnID                                  32 int,int
#comfunc global ID3D12InfoQueue_GetBreakOnCategory                            33 int
#comfunc global ID3D12InfoQueue_GetBreakOnSeverity                            34 int
#comfunc global ID3D12InfoQueue_GetBreakOnID                                  35 int
#comfunc global ID3D12InfoQueue_SetMuteDebugOutput                            36 int
#comfunc global ID3D12InfoQueue_GetMuteDebugOutput                            37
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。