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

ID3D11InfoQueue

COM
IID6543dbb6-1b48-42f5-ab82-e97ec74326f6継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

情報キュー インターフェイスは、デバッグ メッセージの格納、取得、フィルター処理を行います。キューは、メッセージ キュー、任意指定の格納フィルター スタック、および任意指定の取得フィルター スタックで構成されます。(ID3D11InfoQueue)

解説(Remarks)

このインターフェイスを取得するには、デバッグ レイヤーを有効にし、ID3D11Device に対して IUnknown::QueryInterface を使用します。

Windows Phone 8: この API はサポートされています。

メソッド 35

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

vtbl 3 HRESULT SetMessageCountLimit(ULONGLONG MessageCountLimit)

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

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

解説(Remarks)

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

vtbl 4 void ClearStoredMessages()

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

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

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

MessageIndexULONGLONGin任意指定の取得フィルターが適用された後のメッセージ キューへのインデックス。0 から、取得フィルターを通過するメッセージ キュー内のメッセージ数 (ID3D11InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter で取得できます) までの値を指定できます。0 はメッセージ キューの先頭にあるメッセージです。
pMessageD3D11_MESSAGE*outoptional返されるメッセージ (D3D11_MESSAGE を参照)。
pMessageByteLengthUINT_PTR*inoutpMessage のサイズ (バイト単位)。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);

概要については、情報キューの概要を参照してください。

vtbl 6 ULONGLONG GetNumMessagesAllowedByStorageFilter()

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

戻り値

型: UINT64

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

vtbl 7 ULONGLONG GetNumMessagesDeniedByStorageFilter()

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

戻り値

型: UINT64

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

vtbl 8 ULONGLONG GetNumStoredMessages()

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

戻り値

型: UINT64

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

vtbl 9 ULONGLONG GetNumStoredMessagesAllowedByRetrievalFilter()

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

戻り値

型: UINT64

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

vtbl 10 ULONGLONG GetNumMessagesDiscardedByMessageCountLimit()

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

戻り値

型: UINT64

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

解説(Remarks)

メッセージ数の上限の取得と設定は、それぞれ ID3D11InfoQueue::GetMessageCountLimitID3D11InfoQueue::SetMessageCountLimit で行います。

vtbl 11 ULONGLONG GetMessageCountLimit()

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

戻り値

型: UINT64

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

解説(Remarks)

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

vtbl 12 HRESULT AddStorageFilterEntries(D3D11_INFO_QUEUE_FILTER* pFilter)

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

pFilterD3D11_INFO_QUEUE_FILTER*in格納フィルターの配列 (D3D11_INFO_QUEUE_FILTER を参照)。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

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

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

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 14 void ClearStorageFilter()

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

vtbl 15 HRESULT PushEmptyStorageFilter()

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

解説(Remarks)

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

vtbl 16 HRESULT PushCopyOfStorageFilter()

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 17 HRESULT PushStorageFilter(D3D11_INFO_QUEUE_FILTER* pFilter)

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

pFilterD3D11_INFO_QUEUE_FILTER*in格納フィルターへのポインター (D3D11_INFO_QUEUE_FILTER を参照)。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 18 void PopStorageFilter()

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

vtbl 19 DWORD GetStorageFilterStackSize()

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

戻り値

型: UINT

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

vtbl 20 HRESULT AddRetrievalFilterEntries(D3D11_INFO_QUEUE_FILTER* pFilter)

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

pFilterD3D11_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 );
vtbl 21 HRESULT GetRetrievalFilter(D3D11_INFO_QUEUE_FILTER* pFilter, UINT_PTR* pFilterByteLength)

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

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 22 void ClearRetrievalFilter()

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

vtbl 23 HRESULT PushEmptyRetrievalFilter()

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

解説(Remarks)

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

vtbl 24 HRESULT PushCopyOfRetrievalFilter()

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 25 HRESULT PushRetrievalFilter(D3D11_INFO_QUEUE_FILTER* pFilter)

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

pFilterD3D11_INFO_QUEUE_FILTER*in取得フィルターへのポインター (D3D11_INFO_QUEUE_FILTER を参照)。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 26 void PopRetrievalFilter()

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

vtbl 27 DWORD GetRetrievalFilterStackSize()

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

戻り値

型: UINT

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

vtbl 28 HRESULT AddMessage(D3D11_MESSAGE_CATEGORY Category, D3D11_MESSAGE_SEVERITY Severity, D3D11_MESSAGE_ID ID, LPSTR pDescription)

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

CategoryD3D11_MESSAGE_CATEGORYinメッセージのカテゴリ (D3D11_MESSAGE_CATEGORY を参照)。
SeverityD3D11_MESSAGE_SEVERITYinメッセージの重大度 (D3D11_MESSAGE_SEVERITY を参照)。
IDD3D11_MESSAGE_IDinメッセージの一意の識別子 (D3D11_MESSAGE_ID を参照)。
pDescriptionLPSTRinユーザー定義のメッセージ。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

解説(Remarks)

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

vtbl 29 HRESULT AddApplicationMessage(D3D11_MESSAGE_SEVERITY Severity, LPSTR pDescription)

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

SeverityD3D11_MESSAGE_SEVERITYinメッセージの重大度 (D3D11_MESSAGE_SEVERITY を参照)。
pDescriptionLPSTRinメッセージ文字列。

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 30 HRESULT SetBreakOnCategory(D3D11_MESSAGE_CATEGORY Category, BOOL bEnable)

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

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 31 HRESULT SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY Severity, BOOL bEnable)

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

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 32 HRESULT SetBreakOnID(D3D11_MESSAGE_ID ID, BOOL bEnable)

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

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

戻り値

型: HRESULT

このメソッドは、次の Direct3D 11 リターン コードのいずれかを返します。

vtbl 33 BOOL GetBreakOnCategory(D3D11_MESSAGE_CATEGORY Category)

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

CategoryD3D11_MESSAGE_CATEGORYinブレーク対象のメッセージ カテゴリ (D3D11_MESSAGE_CATEGORY を参照)。

戻り値

型: BOOL

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

vtbl 34 BOOL GetBreakOnSeverity(D3D11_MESSAGE_SEVERITY Severity)

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

SeverityD3D11_MESSAGE_SEVERITYinブレーク対象のメッセージ重大度レベル (D3D11_MESSAGE_SEVERITY を参照)。

戻り値

型: BOOL

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

vtbl 35 BOOL GetBreakOnID(D3D11_MESSAGE_ID ID)

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

IDD3D11_MESSAGE_IDinブレーク対象のメッセージ識別子 (D3D11_MESSAGE_ID を参照)。

戻り値

型: BOOL

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

vtbl 36 void SetMuteDebugOutput(BOOL bMute)

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

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

解説(Remarks)

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

vtbl 37 BOOL GetMuteDebugOutput()

デバッグ出力のオン/オフを切り替えるブール値を取得します。(ID3D11InfoQueue.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_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 方式にも切替可。