ID3D11InfoQueue
COM公式ドキュメント
情報キュー インターフェイスは、デバッグ メッセージの格納、取得、フィルター処理を行います。キューは、メッセージ キュー、任意指定の格納フィルター スタック、および任意指定の取得フィルター スタックで構成されます。(ID3D11InfoQueue)
解説(Remarks)
このインターフェイスを取得するには、デバッグ レイヤーを有効にし、ID3D11Device に対して IUnknown::QueryInterface を使用します。
Windows Phone 8: この API はサポートされています。
メソッド 35
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メッセージ キューに追加できるメッセージの最大数を設定します。(ID3D11InfoQueue.SetMessageCountLimit)
| MessageCountLimit | ULONGLONG | in | メッセージ キューに追加できるメッセージの最大数。-1 は無制限を意味します。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
解説(Remarks)
メッセージ キュー内のメッセージ数が上限に達すると、新しく入ってくるメッセージが古いメッセージを押し出します。
メッセージ キューからすべてのメッセージを消去します。(ID3D11InfoQueue.ClearStoredMessages)
メッセージ キューからメッセージを取得します。(ID3D11InfoQueue.GetMessage)
| MessageIndex | ULONGLONG | in | 任意指定の取得フィルターが適用された後のメッセージ キューへのインデックス。0 から、取得フィルターを通過するメッセージ キュー内のメッセージ数 (ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter で取得できます) までの値を指定できます。0 はメッセージ キューの先頭にあるメッセージです。 |
| pMessage | D3D11_MESSAGE* | outoptional | 返されるメッセージ (D3D11_MESSAGE を参照)。 |
| pMessageByteLength | UINT_PTR* | inout | pMessage のサイズ (バイト単位)。pMessage が指すメッセージ文字列のサイズを含みます。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
解説(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
D3D11_MESSAGE * pMessage = (D3D11_MESSAGE*)malloc(messageLength);
hr = pInfoQueue->GetMessage(0, pMessage, &messageLength);
概要については、情報キューの概要を参照してください。
格納フィルターの通過を許可されたメッセージの数を取得します。(ID3D11InfoQueue.GetNumMessagesAllowedByStorageFilter)
戻り値
型: UINT64
格納フィルターによって許可されたメッセージの数。
格納フィルターの通過を拒否されたメッセージの数を取得します。(ID3D11InfoQueue.GetNumMessagesDeniedByStorageFilter)
戻り値
型: UINT64
格納フィルターによって拒否されたメッセージの数。
現在メッセージ キューに格納されているメッセージの数を取得します。(ID3D11InfoQueue.GetNumStoredMessages)
戻り値
型: UINT64
現在メッセージ キューに格納されているメッセージの数。
取得フィルターを通過できるメッセージの数を取得します。(ID3D11InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter)
戻り値
型: UINT64
取得フィルターによって許可されたメッセージの数。
メッセージ数の上限によって破棄されたメッセージの数を取得します。(ID3D11InfoQueue.GetNumMessagesDiscardedByMessageCountLimit)
戻り値
型: UINT64
破棄されたメッセージの数。
解説(Remarks)
メッセージ数の上限の取得と設定は、それぞれ ID3D11InfoQueue::GetMessageCountLimit と ID3D11InfoQueue::SetMessageCountLimit で行います。
メッセージ キューに追加できるメッセージの最大数を取得します。(ID3D11InfoQueue.GetMessageCountLimit)
戻り値
型: UINT64
キューに追加できるメッセージの最大数。-1 は無制限を意味します。
解説(Remarks)
メッセージ キュー内のメッセージ数が上限に達すると、新しく入ってくるメッセージが古いメッセージを押し出します。
格納フィルター スタックの最上位に格納フィルターを追加します。(ID3D11InfoQueue.AddStorageFilterEntries)
| pFilter | D3D11_INFO_QUEUE_FILTER* | in | 格納フィルターの配列 (D3D11_INFO_QUEUE_FILTER を参照)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
格納フィルター スタックの最上位にある格納フィルターを取得します。(ID3D11InfoQueue.GetStorageFilter)
| pFilter | D3D11_INFO_QUEUE_FILTER* | outoptional | 格納フィルター スタックの最上位にある格納フィルター。 |
| pFilterByteLength | UINT_PTR* | inout | 格納フィルターのサイズ (バイト単位)。pFilter が NULL の場合、格納フィルターのサイズがこのパラメーターに出力されます。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
格納フィルター スタックの最上位から格納フィルターを削除します。(ID3D11InfoQueue.ClearStorageFilter)
空の格納フィルターを格納フィルター スタックにプッシュします。(ID3D11InfoQueue.PushEmptyStorageFilter)
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
解説(Remarks)
空の格納フィルターは、すべてのメッセージの通過を許可します。
現在格納フィルター スタックの最上位にある格納フィルターのコピーを、格納フィルター スタックにプッシュします。(ID3D11InfoQueue.PushCopyOfStorageFilter)
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
格納フィルターを格納フィルター スタックにプッシュします。(ID3D11InfoQueue.PushStorageFilter)
| pFilter | D3D11_INFO_QUEUE_FILTER* | in | 格納フィルターへのポインター (D3D11_INFO_QUEUE_FILTER を参照)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
格納フィルター スタックの最上位から格納フィルターをポップします。(ID3D11InfoQueue.PopStorageFilter)
格納フィルター スタックのサイズをバイト単位で取得します。(ID3D11InfoQueue.GetStorageFilterStackSize)
戻り値
型: UINT
格納フィルター スタックのサイズ (バイト単位)。
取得フィルター スタックの最上位にフィルターを追加します。(ID3D11InfoQueue.AddRetrievalFilterEntries)
| pFilter | D3D11_INFO_QUEUE_FILTER* | in | 取得フィルターの配列 (D3D11_INFO_QUEUE_FILTER を参照)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
解説(Remarks)
次のコード例は、ID3D11InfoQueue::AddRetrievalFilterEntries の使用方法を示しています。
D3D11_MESSAGE_CATEGORY cats[] = { ..., ..., ... };
D3D11_MESSAGE_SEVERITY sevs[] = { ..., ..., ... };
UINT ids[] = { ..., ..., ... };
D3D11_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 = sizeof(cats / sizeof(D3D11_MESSAGE_CATEGORY));
filter.AllowList.pCategoryList = cats;
filter.AllowList.NumSeverities = sizeof(sevs / sizeof(D3D11_MESSAGE_SEVERITY));
filter.AllowList.pSeverityList = sevs;
filter.AllowList.NumIDs = sizeof(ids) / sizeof(UINT);
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 );
取得フィルター スタックの最上位にある取得フィルターを取得します。(ID3D11InfoQueue.GetRetrievalFilter)
| pFilter | D3D11_INFO_QUEUE_FILTER* | outoptional | 取得フィルター スタックの最上位にある取得フィルター。 |
| pFilterByteLength | UINT_PTR* | inout | 取得フィルターのサイズ (バイト単位)。pFilter が NULL の場合、取得フィルターのサイズがこのパラメーターに出力されます。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
取得フィルター スタックの最上位から取得フィルターを削除します。(ID3D11InfoQueue.ClearRetrievalFilter)
空の取得フィルターを取得フィルター スタックにプッシュします。(ID3D11InfoQueue.PushEmptyRetrievalFilter)
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
解説(Remarks)
空の取得フィルターは、すべてのメッセージの通過を許可します。
現在取得フィルター スタックの最上位にある取得フィルターのコピーを、取得フィルター スタックにプッシュします。(ID3D11InfoQueue.PushCopyOfRetrievalFilter)
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
取得フィルターを取得フィルター スタックにプッシュします。(ID3D11InfoQueue.PushRetrievalFilter)
| pFilter | D3D11_INFO_QUEUE_FILTER* | in | 取得フィルターへのポインター (D3D11_INFO_QUEUE_FILTER を参照)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
取得フィルター スタックの最上位から取得フィルターをポップします。(ID3D11InfoQueue.PopRetrievalFilter)
取得フィルター スタックのサイズをバイト単位で取得します。(ID3D11InfoQueue.GetRetrievalFilterStackSize)
戻り値
型: UINT
取得フィルター スタックのサイズ (バイト単位)。
デバッグ メッセージをメッセージ キューに追加し、そのメッセージをデバッグ出力に送信します。
| Category | D3D11_MESSAGE_CATEGORY | in | メッセージのカテゴリ (D3D11_MESSAGE_CATEGORY を参照)。 |
| Severity | D3D11_MESSAGE_SEVERITY | in | メッセージの重大度 (D3D11_MESSAGE_SEVERITY を参照)。 |
| ID | D3D11_MESSAGE_ID | in | メッセージの一意の識別子 (D3D11_MESSAGE_ID を参照)。 |
| pDescription | LPSTR | in | ユーザー定義のメッセージ。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
解説(Remarks)
このメソッドは、ランタイムの内部機構がデバッグ メッセージをメッセージ キューに追加し、デバッグ出力に送信するために使用します。アプリケーションが独自のカスタム メッセージをメッセージ キューに追加してデバッグ出力に送信するには、ID3D11InfoQueue::AddApplicationMessage を呼び出してください。
ユーザー定義のメッセージをメッセージ キューに追加し、そのメッセージをデバッグ出力に送信します。(ID3D11InfoQueue.AddApplicationMessage)
| Severity | D3D11_MESSAGE_SEVERITY | in | メッセージの重大度 (D3D11_MESSAGE_SEVERITY を参照)。 |
| pDescription | LPSTR | in | メッセージ文字列。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
指定したカテゴリのメッセージが格納フィルターを通過したときにブレークするよう、メッセージ カテゴリを設定します。(ID3D11InfoQueue.SetBreakOnCategory)
| Category | D3D11_MESSAGE_CATEGORY | in | ブレーク対象のメッセージ カテゴリ (D3D11_MESSAGE_CATEGORY を参照)。 |
| bEnable | BOOL | in | このブレーク条件のオン/オフを切り替えます (true でオン、false でオフ)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
指定した重大度レベルのメッセージが格納フィルターを通過したときにブレークするよう、メッセージの重大度レベルを設定します。(ID3D11InfoQueue.SetBreakOnSeverity)
| Severity | D3D11_MESSAGE_SEVERITY | in | ブレーク対象のメッセージ重大度レベルを表す D3D11_MESSAGE_SEVERITY。 |
| bEnable | BOOL | in | このブレーク条件のオン/オフを切り替えます (true でオン、false でオフ)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
指定した識別子のメッセージが格納フィルターを通過したときにブレークするよう、メッセージ識別子を設定します。(ID3D11InfoQueue.SetBreakOnID)
| ID | D3D11_MESSAGE_ID | in | ブレーク対象のメッセージ識別子 (D3D11_MESSAGE_ID を参照)。 |
| bEnable | BOOL | in | このブレーク条件のオン/オフを切り替えます (true でオン、false でオフ)。 |
戻り値
型: HRESULT
このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。
指定したカテゴリのメッセージが格納フィルターを通過したときにブレークするかどうかを、メッセージ カテゴリについて取得します。(ID3D11InfoQueue.GetBreakOnCategory)
| Category | D3D11_MESSAGE_CATEGORY | in | ブレーク対象のメッセージ カテゴリ (D3D11_MESSAGE_CATEGORY を参照)。 |
戻り値
型: BOOL
このブレーク条件がオンかオフか (true でオン、false でオフ)。
指定した重大度レベルのメッセージが格納フィルターを通過したときにブレークするかどうかを、メッセージ重大度レベルについて取得します。(ID3D11InfoQueue.GetBreakOnSeverity)
| Severity | D3D11_MESSAGE_SEVERITY | in | ブレーク対象のメッセージ重大度レベル (D3D11_MESSAGE_SEVERITY を参照)。 |
戻り値
型: BOOL
このブレーク条件がオンかオフか (true でオン、false でオフ)。
指定した識別子のメッセージが格納フィルターを通過したときにブレークするかどうかを、メッセージ識別子について取得します。(ID3D11InfoQueue.GetBreakOnID)
| ID | D3D11_MESSAGE_ID | in | ブレーク対象のメッセージ識別子 (D3D11_MESSAGE_ID を参照)。 |
戻り値
型: BOOL
このブレーク条件がオンかオフか (true でオン、false でオフ)。
デバッグ出力のオン/オフを切り替えるブール値を設定します。(ID3D11InfoQueue.SetMuteDebugOutput)
| bMute | BOOL | in | デバッグ出力を無効化/有効化します (TRUE で出力を無効化 (ミュート)、FALSE で出力を有効化)。 |
解説(Remarks)
これにより、格納フィルターを通過したメッセージがデバッグ出力に表示されなくなりますが、それらのメッセージはメッセージ キューには引き続き追加されます。
デバッグ出力のオン/オフを切り替えるブール値を取得します。(ID3D11InfoQueue.GetMuteDebugOutput)
戻り値
型: BOOL
デバッグ出力がオンかオフか (true でオン、false でオフ)。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D11InfoQueue "{6543DBB6-1B48-42F5-AB82-E97EC74326F6}" #usecom global ID3D11InfoQueue IID_ID3D11InfoQueue "{}" #comfunc global ID3D11InfoQueue_SetMessageCountLimit 3 int64 #comfunc global ID3D11InfoQueue_ClearStoredMessages 4 #comfunc global ID3D11InfoQueue_GetMessage 5 int64,var,var #comfunc global ID3D11InfoQueue_GetNumMessagesAllowedByStorageFilter 6 #comfunc global ID3D11InfoQueue_GetNumMessagesDeniedByStorageFilter 7 #comfunc global ID3D11InfoQueue_GetNumStoredMessages 8 #comfunc global ID3D11InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter 9 #comfunc global ID3D11InfoQueue_GetNumMessagesDiscardedByMessageCountLimit 10 #comfunc global ID3D11InfoQueue_GetMessageCountLimit 11 #comfunc global ID3D11InfoQueue_AddStorageFilterEntries 12 var #comfunc global ID3D11InfoQueue_GetStorageFilter 13 var,var #comfunc global ID3D11InfoQueue_ClearStorageFilter 14 #comfunc global ID3D11InfoQueue_PushEmptyStorageFilter 15 #comfunc global ID3D11InfoQueue_PushCopyOfStorageFilter 16 #comfunc global ID3D11InfoQueue_PushStorageFilter 17 var #comfunc global ID3D11InfoQueue_PopStorageFilter 18 #comfunc global ID3D11InfoQueue_GetStorageFilterStackSize 19 #comfunc global ID3D11InfoQueue_AddRetrievalFilterEntries 20 var #comfunc global ID3D11InfoQueue_GetRetrievalFilter 21 var,var #comfunc global ID3D11InfoQueue_ClearRetrievalFilter 22 #comfunc global ID3D11InfoQueue_PushEmptyRetrievalFilter 23 #comfunc global ID3D11InfoQueue_PushCopyOfRetrievalFilter 24 #comfunc global ID3D11InfoQueue_PushRetrievalFilter 25 var #comfunc global ID3D11InfoQueue_PopRetrievalFilter 26 #comfunc global ID3D11InfoQueue_GetRetrievalFilterStackSize 27 #comfunc global ID3D11InfoQueue_AddMessage 28 int,int,int,str #comfunc global ID3D11InfoQueue_AddApplicationMessage 29 int,str #comfunc global ID3D11InfoQueue_SetBreakOnCategory 30 int,int #comfunc global ID3D11InfoQueue_SetBreakOnSeverity 31 int,int #comfunc global ID3D11InfoQueue_SetBreakOnID 32 int,int #comfunc global ID3D11InfoQueue_GetBreakOnCategory 33 int #comfunc global ID3D11InfoQueue_GetBreakOnSeverity 34 int #comfunc global ID3D11InfoQueue_GetBreakOnID 35 int #comfunc global ID3D11InfoQueue_SetMuteDebugOutput 36 int #comfunc global ID3D11InfoQueue_GetMuteDebugOutput 37 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ID3D11InfoQueue "{6543DBB6-1B48-42F5-AB82-E97EC74326F6}" #usecom global ID3D11InfoQueue IID_ID3D11InfoQueue "{}" #comfunc global ID3D11InfoQueue_SetMessageCountLimit 3 int64 #comfunc global ID3D11InfoQueue_ClearStoredMessages 4 #comfunc global ID3D11InfoQueue_GetMessage 5 int64,sptr,sptr #comfunc global ID3D11InfoQueue_GetNumMessagesAllowedByStorageFilter 6 #comfunc global ID3D11InfoQueue_GetNumMessagesDeniedByStorageFilter 7 #comfunc global ID3D11InfoQueue_GetNumStoredMessages 8 #comfunc global ID3D11InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter 9 #comfunc global ID3D11InfoQueue_GetNumMessagesDiscardedByMessageCountLimit 10 #comfunc global ID3D11InfoQueue_GetMessageCountLimit 11 #comfunc global ID3D11InfoQueue_AddStorageFilterEntries 12 sptr #comfunc global ID3D11InfoQueue_GetStorageFilter 13 sptr,sptr #comfunc global ID3D11InfoQueue_ClearStorageFilter 14 #comfunc global ID3D11InfoQueue_PushEmptyStorageFilter 15 #comfunc global ID3D11InfoQueue_PushCopyOfStorageFilter 16 #comfunc global ID3D11InfoQueue_PushStorageFilter 17 sptr #comfunc global ID3D11InfoQueue_PopStorageFilter 18 #comfunc global ID3D11InfoQueue_GetStorageFilterStackSize 19 #comfunc global ID3D11InfoQueue_AddRetrievalFilterEntries 20 sptr #comfunc global ID3D11InfoQueue_GetRetrievalFilter 21 sptr,sptr #comfunc global ID3D11InfoQueue_ClearRetrievalFilter 22 #comfunc global ID3D11InfoQueue_PushEmptyRetrievalFilter 23 #comfunc global ID3D11InfoQueue_PushCopyOfRetrievalFilter 24 #comfunc global ID3D11InfoQueue_PushRetrievalFilter 25 sptr #comfunc global ID3D11InfoQueue_PopRetrievalFilter 26 #comfunc global ID3D11InfoQueue_GetRetrievalFilterStackSize 27 #comfunc global ID3D11InfoQueue_AddMessage 28 int,int,int,str #comfunc global ID3D11InfoQueue_AddApplicationMessage 29 int,str #comfunc global ID3D11InfoQueue_SetBreakOnCategory 30 int,int #comfunc global ID3D11InfoQueue_SetBreakOnSeverity 31 int,int #comfunc global ID3D11InfoQueue_SetBreakOnID 32 int,int #comfunc global ID3D11InfoQueue_GetBreakOnCategory 33 int #comfunc global ID3D11InfoQueue_GetBreakOnSeverity 34 int #comfunc global ID3D11InfoQueue_GetBreakOnID 35 int #comfunc global ID3D11InfoQueue_SetMuteDebugOutput 36 int #comfunc global ID3D11InfoQueue_GetMuteDebugOutput 37 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。