ID3D10InfoQueue
COM公式ドキュメント
情報キューインターフェイスは、デバッグメッセージの格納、取得、フィルタリングを行います。このキューは、メッセージキュー、任意の格納フィルタースタック、任意の取得フィルタースタックで構成されます。(ID3D10InfoQueue)
解説(Remarks)
このインターフェイスは、デバッグレイヤーを有効にし、ID3D10Device インターフェイスから IUnknown::QueryInterface を使用してクエリすることで取得します。
hr = D3D10CreateDeviceAndSwapChain( NULL, g_driverType, NULL, D3D10_CREATE_DEVICE_DEBUG, D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice );
...
ID3D10InfoQueue * infoQueue;
g_pd3dDevice->QueryInterface(__uuidof(ID3D10InfoQueue), (void **)&infoQueue);
メソッド 35
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メッセージキューに追加できるメッセージの最大数を設定します。(ID3D10InfoQueue.SetMessageCountLimit)
| MessageCountLimit | ULONGLONG | in | メッセージキューに追加できるメッセージの最大数。-1 は無制限を意味します。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
メッセージキュー内のメッセージ数が上限に達すると、新しく入ってくるメッセージが古いメッセージを押し出します。
メッセージキューからすべてのメッセージをクリアします。(ID3D10InfoQueue.ClearStoredMessages)
メッセージキューからメッセージを取得します。(ID3D10InfoQueue.GetMessage)
| MessageIndex | ULONGLONG | in | 任意の取得フィルターが適用された後のメッセージキューへのインデックス。これは 0 から、取得フィルターを通過するメッセージキュー内のメッセージ数(ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter で取得可能)までの範囲を取り得ます。0 はメッセージキューの先頭にあるメッセージです。 |
| pMessage | D3D10_MESSAGE* | outoptional | 返されるメッセージ(D3D10_MESSAGE を参照)。 |
| pMessageByteLength | UINT_PTR* | inout | pMessage のサイズ(バイト単位)。pMessage が指すメッセージ文字列のサイズを含みます。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
このメソッドはメッセージキューからメッセージを削除しません。
このメソッドは、任意の取得フィルターが適用された後のメッセージをメッセージキューから取得します。
アプリケーションはメッセージを取得するために、このメソッドを 2 回呼び出す必要があります。1 回目はメッセージのサイズを取得するため、2 回目はメッセージを取得するためです。以下は典型的な例です。
// メッセージのサイズを取得する
SIZE_T messageLength = 0;
HRESULT hr = pInfoQueue->GetMessage(0, NULL, &messageLength);
// 領域を確保してメッセージを取得する
D3D10_MESSAGE * pMessage = (D3D10_MESSAGE*)malloc(messageLength);
hr = pInfoQueue->GetMessage(0, pMessage, &messageLength);
概要については 情報キューの概要を参照してください。
格納フィルターの通過を許可されたメッセージ数を取得します。(ID3D10InfoQueue.GetNumMessagesAllowedByStorageFilter)
戻り値
Type: UINT64
格納フィルターによって許可されたメッセージ数。
格納フィルターの通過を拒否されたメッセージ数を取得します。(ID3D10InfoQueue.GetNumMessagesDeniedByStorageFilter)
戻り値
Type: UINT64
格納フィルターによって拒否されたメッセージ数。
現在メッセージキューに格納されているメッセージ数を取得します。(ID3D10InfoQueue.GetNumStoredMessages)
戻り値
Type: UINT64
現在メッセージキューに格納されているメッセージ数。
取得フィルターを通過できるメッセージ数を取得します。(ID3D10InfoQueue.GetNumStoredMessagesAllowedByRetrievalFilter)
戻り値
Type: UINT64
取得フィルターによって許可されたメッセージ数。
メッセージ数の上限により破棄されたメッセージ数を取得します。(ID3D10InfoQueue.GetNumMessagesDiscardedByMessageCountLimit)
戻り値
Type: UINT64
破棄されたメッセージ数。
解説(Remarks)
メッセージ数の上限の取得と設定は、それぞれ ID3D10InfoQueue::GetMessageCountLimit と ID3D10InfoQueue::SetMessageCountLimit で行います。
メッセージキューに追加できるメッセージの最大数を取得します。(ID3D10InfoQueue.GetMessageCountLimit)
戻り値
Type: UINT64
キューに追加できるメッセージの最大数。-1 は無制限を意味します。
解説(Remarks)
メッセージキュー内のメッセージ数が上限に達すると、新しく入ってくるメッセージが古いメッセージを押し出します。
格納フィルタースタックの先頭に格納フィルターを追加します。(ID3D10InfoQueue.AddStorageFilterEntries)
| pFilter | D3D10_INFO_QUEUE_FILTER* | in | 格納フィルターの配列(D3D10_INFO_QUEUE_FILTER を参照)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
格納フィルターは、情報キューへの追加を許可するデバッグメッセージのグループを定義します。
格納フィルタースタックの先頭にある格納フィルターを取得します。(ID3D10InfoQueue.GetStorageFilter)
| pFilter | D3D10_INFO_QUEUE_FILTER* | outoptional | 格納フィルタースタックの先頭にある格納フィルター。 |
| pFilterByteLength | UINT_PTR* | inout | 格納フィルターのサイズ(バイト単位)。pFilter が NULL の場合、格納フィルターのサイズがこのパラメーターに出力されます。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
格納フィルタースタックの先頭から格納フィルターを削除します。(ID3D10InfoQueue.ClearStorageFilter)
空の格納フィルターを格納フィルタースタックにプッシュします。(ID3D10InfoQueue.PushEmptyStorageFilter)
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
空の格納フィルターは、すべてのメッセージの通過を許可します。
現在格納フィルタースタックの先頭にある格納フィルターのコピーを、格納フィルタースタックにプッシュします。(ID3D10InfoQueue.PushCopyOfStorageFilter)
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
格納フィルターを格納フィルタースタックにプッシュします。(ID3D10InfoQueue.PushStorageFilter)
| pFilter | D3D10_INFO_QUEUE_FILTER* | in | 格納フィルターへのポインター(D3D10_INFO_QUEUE_FILTER を参照)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
格納フィルタースタックの先頭から格納フィルターをポップします。(ID3D10InfoQueue.PopStorageFilter)
格納フィルタースタックのサイズをバイト単位で取得します。(ID3D10InfoQueue.GetStorageFilterStackSize)
戻り値
Type: UINT
格納フィルタースタックのサイズ(バイト単位)。
取得フィルタースタックの先頭に格納フィルターを追加します。(ID3D10InfoQueue.AddRetrievalFilterEntries)
| pFilter | D3D10_INFO_QUEUE_FILTER* | in | 取得フィルターの配列(D3D10_INFO_QUEUE_FILTER を参照)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
取得フィルターは、すでに情報キューにあるメッセージのサブグループを定義するために使用されます。
取得フィルターは、ID3D10InfoQueue::GetMessage によって返されるメッセージに影響します。
取得フィルターの通過を許可される、すでに情報キューにあるメッセージ数は、ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter を呼び出すことで判定できます。
取得フィルタースタックの先頭にある取得フィルターを取得します。(ID3D10InfoQueue.GetRetrievalFilter)
| pFilter | D3D10_INFO_QUEUE_FILTER* | outoptional | 取得フィルタースタックの先頭にある取得フィルター。 |
| pFilterByteLength | UINT_PTR* | inout | 取得フィルターのサイズ(バイト単位)。pFilter が NULL の場合、取得フィルターのサイズがこのパラメーターに出力されます。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
取得フィルタースタックの先頭から取得フィルターを削除します。(ID3D10InfoQueue.ClearRetrievalFilter)
空の取得フィルターを取得フィルタースタックにプッシュします。(ID3D10InfoQueue.PushEmptyRetrievalFilter)
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
空の取得フィルターは、すべてのメッセージの通過を許可します。
現在取得フィルタースタックの先頭にある取得フィルターのコピーを、取得フィルタースタックにプッシュします。(ID3D10InfoQueue.PushCopyOfRetrievalFilter)
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
取得フィルターを取得フィルタースタックにプッシュします。(ID3D10InfoQueue.PushRetrievalFilter)
| pFilter | D3D10_INFO_QUEUE_FILTER* | in | 取得フィルターへのポインター(D3D10_INFO_QUEUE_FILTER を参照)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
取得フィルタースタックの先頭から取得フィルターをポップします。(ID3D10InfoQueue.PopRetrievalFilter)
取得フィルタースタックのサイズをバイト単位で取得します。(ID3D10InfoQueue.GetRetrievalFilterStackSize)
戻り値
Type: UINT
取得フィルタースタックのサイズ(バイト単位)。
Direct3D 10 のデバッグメッセージをメッセージキューに追加し、そのメッセージをデバッグ出力に送信します。
| Category | D3D10_MESSAGE_CATEGORY | in | メッセージのカテゴリ(D3D10_MESSAGE_CATEGORY を参照)。 |
| Severity | D3D10_MESSAGE_SEVERITY | in | メッセージの重大度(D3D10_MESSAGE_SEVERITY を参照)。 |
| ID | D3D10_MESSAGE_ID | in | メッセージの一意の識別子(D3D10_MESSAGE_ID を参照)。 |
| pDescription | LPSTR | in | ユーザー定義のメッセージ。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
解説(Remarks)
このメソッドは、ランタイムの内部機構が Direct3D 10 のデバッグメッセージをメッセージキューに追加し、デバッグ出力に送信するために使用します。アプリケーションが独自のカスタムメッセージをメッセージキューに追加してデバッグ出力に送信するには、ID3D10InfoQueue::AddApplicationMessage を呼び出してください。
ユーザー定義のメッセージをメッセージキューに追加し、そのメッセージをデバッグ出力に送信します。(ID3D10InfoQueue.AddApplicationMessage)
| Severity | D3D10_MESSAGE_SEVERITY | in | メッセージの重大度(D3D10_MESSAGE_SEVERITY を参照)。 |
| pDescription | LPSTR | in | メッセージ文字列。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
指定したカテゴリのメッセージが格納フィルターを通過したときにブレークするよう、メッセージカテゴリを設定します。(ID3D10InfoQueue.SetBreakOnCategory)
| Category | D3D10_MESSAGE_CATEGORY | in | ブレーク対象とするメッセージカテゴリ(D3D10_MESSAGE_CATEGORY を参照)。 |
| bEnable | BOOL | in | このブレーク条件のオン/オフを切り替えます(オンは true、オフは false)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
指定した重大度のメッセージが格納フィルターを通過したときにブレークするよう、メッセージの重大度レベルを設定します。(ID3D10InfoQueue.SetBreakOnSeverity)
| Severity | D3D10_MESSAGE_SEVERITY | in | ブレーク対象とするメッセージの重大度レベル(D3D10_MESSAGE_SEVERITY を参照)。 |
| bEnable | BOOL | in | このブレーク条件のオン/オフを切り替えます(オンは true、オフは false)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
指定した識別子のメッセージが格納フィルターを通過したときにブレークするよう、メッセージ識別子を設定します。(ID3D10InfoQueue.SetBreakOnID)
| ID | D3D10_MESSAGE_ID | in | ブレーク対象とするメッセージ識別子(D3D10_MESSAGE_ID を参照)。 |
| bEnable | BOOL | in | このブレーク条件のオン/オフを切り替えます(オンは true、オフは false)。 |
戻り値
Type: HRESULT
このメソッドは、次の Direct3D 10 リターンコードのいずれかを返します。
指定したカテゴリのメッセージが格納フィルターを通過したときにブレークするメッセージカテゴリを取得します。(ID3D10InfoQueue.GetBreakOnCategory)
| Category | D3D10_MESSAGE_CATEGORY | in | ブレーク対象とするメッセージカテゴリ(D3D10_MESSAGE_CATEGORY を参照)。 |
戻り値
Type: BOOL
このブレーク条件がオンかオフか(オンは true、オフは false)。
指定した重大度のメッセージが格納フィルターを通過したときにブレークするメッセージの重大度レベルを取得します。(ID3D10InfoQueue.GetBreakOnSeverity)
| Severity | D3D10_MESSAGE_SEVERITY | in | ブレーク対象とするメッセージの重大度レベル(D3D10_MESSAGE_SEVERITY を参照)。 |
戻り値
Type: BOOL
このブレーク条件がオンかオフか(オンは true、オフは false)。
指定した識別子のメッセージが格納フィルターを通過したときにブレークするメッセージ識別子を取得します。(ID3D10InfoQueue.GetBreakOnID)
| ID | D3D10_MESSAGE_ID | in | ブレーク対象とするメッセージ識別子(D3D10_MESSAGE_ID を参照)。 |
戻り値
Type: BOOL
このブレーク条件がオンかオフか(オンは true、オフは false)。
デバッグ出力のオン/オフを切り替えるブール値を設定します。(ID3D10InfoQueue.SetMuteDebugOutput)
| bMute | BOOL | in | デバッグ出力を無効化/有効化します(TRUE で出力を無効化(ミュート)、FALSE で出力を有効化)。 |
解説(Remarks)
これにより、格納フィルターを通過したメッセージがデバッグ出力に表示されなくなりますが、それらのメッセージは引き続きメッセージキューに追加されます。
デバッグ出力のオン/オフを切り替えるブール値を取得します。(ID3D10InfoQueue.GetMuteDebugOutput)
戻り値
Type: BOOL
デバッグ出力がオンかオフか(オンは true、オフは false)。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D10InfoQueue "{1B940B17-2642-4D1F-AB1F-B99BAD0C395F}" #usecom global ID3D10InfoQueue IID_ID3D10InfoQueue "{}" #comfunc global ID3D10InfoQueue_SetMessageCountLimit 3 int64 #comfunc global ID3D10InfoQueue_ClearStoredMessages 4 #comfunc global ID3D10InfoQueue_GetMessage 5 int64,var,var #comfunc global ID3D10InfoQueue_GetNumMessagesAllowedByStorageFilter 6 #comfunc global ID3D10InfoQueue_GetNumMessagesDeniedByStorageFilter 7 #comfunc global ID3D10InfoQueue_GetNumStoredMessages 8 #comfunc global ID3D10InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter 9 #comfunc global ID3D10InfoQueue_GetNumMessagesDiscardedByMessageCountLimit 10 #comfunc global ID3D10InfoQueue_GetMessageCountLimit 11 #comfunc global ID3D10InfoQueue_AddStorageFilterEntries 12 var #comfunc global ID3D10InfoQueue_GetStorageFilter 13 var,var #comfunc global ID3D10InfoQueue_ClearStorageFilter 14 #comfunc global ID3D10InfoQueue_PushEmptyStorageFilter 15 #comfunc global ID3D10InfoQueue_PushCopyOfStorageFilter 16 #comfunc global ID3D10InfoQueue_PushStorageFilter 17 var #comfunc global ID3D10InfoQueue_PopStorageFilter 18 #comfunc global ID3D10InfoQueue_GetStorageFilterStackSize 19 #comfunc global ID3D10InfoQueue_AddRetrievalFilterEntries 20 var #comfunc global ID3D10InfoQueue_GetRetrievalFilter 21 var,var #comfunc global ID3D10InfoQueue_ClearRetrievalFilter 22 #comfunc global ID3D10InfoQueue_PushEmptyRetrievalFilter 23 #comfunc global ID3D10InfoQueue_PushCopyOfRetrievalFilter 24 #comfunc global ID3D10InfoQueue_PushRetrievalFilter 25 var #comfunc global ID3D10InfoQueue_PopRetrievalFilter 26 #comfunc global ID3D10InfoQueue_GetRetrievalFilterStackSize 27 #comfunc global ID3D10InfoQueue_AddMessage 28 int,int,int,str #comfunc global ID3D10InfoQueue_AddApplicationMessage 29 int,str #comfunc global ID3D10InfoQueue_SetBreakOnCategory 30 int,int #comfunc global ID3D10InfoQueue_SetBreakOnSeverity 31 int,int #comfunc global ID3D10InfoQueue_SetBreakOnID 32 int,int #comfunc global ID3D10InfoQueue_GetBreakOnCategory 33 int #comfunc global ID3D10InfoQueue_GetBreakOnSeverity 34 int #comfunc global ID3D10InfoQueue_GetBreakOnID 35 int #comfunc global ID3D10InfoQueue_SetMuteDebugOutput 36 int #comfunc global ID3D10InfoQueue_GetMuteDebugOutput 37 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ID3D10InfoQueue "{1B940B17-2642-4D1F-AB1F-B99BAD0C395F}" #usecom global ID3D10InfoQueue IID_ID3D10InfoQueue "{}" #comfunc global ID3D10InfoQueue_SetMessageCountLimit 3 int64 #comfunc global ID3D10InfoQueue_ClearStoredMessages 4 #comfunc global ID3D10InfoQueue_GetMessage 5 int64,sptr,sptr #comfunc global ID3D10InfoQueue_GetNumMessagesAllowedByStorageFilter 6 #comfunc global ID3D10InfoQueue_GetNumMessagesDeniedByStorageFilter 7 #comfunc global ID3D10InfoQueue_GetNumStoredMessages 8 #comfunc global ID3D10InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter 9 #comfunc global ID3D10InfoQueue_GetNumMessagesDiscardedByMessageCountLimit 10 #comfunc global ID3D10InfoQueue_GetMessageCountLimit 11 #comfunc global ID3D10InfoQueue_AddStorageFilterEntries 12 sptr #comfunc global ID3D10InfoQueue_GetStorageFilter 13 sptr,sptr #comfunc global ID3D10InfoQueue_ClearStorageFilter 14 #comfunc global ID3D10InfoQueue_PushEmptyStorageFilter 15 #comfunc global ID3D10InfoQueue_PushCopyOfStorageFilter 16 #comfunc global ID3D10InfoQueue_PushStorageFilter 17 sptr #comfunc global ID3D10InfoQueue_PopStorageFilter 18 #comfunc global ID3D10InfoQueue_GetStorageFilterStackSize 19 #comfunc global ID3D10InfoQueue_AddRetrievalFilterEntries 20 sptr #comfunc global ID3D10InfoQueue_GetRetrievalFilter 21 sptr,sptr #comfunc global ID3D10InfoQueue_ClearRetrievalFilter 22 #comfunc global ID3D10InfoQueue_PushEmptyRetrievalFilter 23 #comfunc global ID3D10InfoQueue_PushCopyOfRetrievalFilter 24 #comfunc global ID3D10InfoQueue_PushRetrievalFilter 25 sptr #comfunc global ID3D10InfoQueue_PopRetrievalFilter 26 #comfunc global ID3D10InfoQueue_GetRetrievalFilterStackSize 27 #comfunc global ID3D10InfoQueue_AddMessage 28 int,int,int,str #comfunc global ID3D10InfoQueue_AddApplicationMessage 29 int,str #comfunc global ID3D10InfoQueue_SetBreakOnCategory 30 int,int #comfunc global ID3D10InfoQueue_SetBreakOnSeverity 31 int,int #comfunc global ID3D10InfoQueue_SetBreakOnID 32 int,int #comfunc global ID3D10InfoQueue_GetBreakOnCategory 33 int #comfunc global ID3D10InfoQueue_GetBreakOnSeverity 34 int #comfunc global ID3D10InfoQueue_GetBreakOnID 35 int #comfunc global ID3D10InfoQueue_SetMuteDebugOutput 36 int #comfunc global ID3D10InfoQueue_GetMuteDebugOutput 37 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。