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

ID3D10InfoQueue

COM
IID1b940b17-2642-4d1f-ab1f-b99bad0c395f継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

情報キューインターフェイスは、デバッグメッセージの格納、取得、フィルタリングを行います。このキューは、メッセージキュー、任意の格納フィルタースタック、任意の取得フィルタースタックで構成されます。(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。

vtbl 3 HRESULT SetMessageCountLimit(ULONGLONG MessageCountLimit)

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

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

戻り値

Type: HRESULT

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

解説(Remarks)

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

vtbl 4 void ClearStoredMessages()

メッセージキューからすべてのメッセージをクリアします。(ID3D10InfoQueue.ClearStoredMessages)

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

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

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

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

vtbl 6 ULONGLONG GetNumMessagesAllowedByStorageFilter()

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

戻り値

Type: UINT64

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

vtbl 7 ULONGLONG GetNumMessagesDeniedByStorageFilter()

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

戻り値

Type: UINT64

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

vtbl 8 ULONGLONG GetNumStoredMessages()

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

戻り値

Type: UINT64

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

vtbl 9 ULONGLONG GetNumStoredMessagesAllowedByRetrievalFilter()

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

戻り値

Type: UINT64

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

vtbl 10 ULONGLONG GetNumMessagesDiscardedByMessageCountLimit()

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

戻り値

Type: UINT64

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

解説(Remarks)

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

vtbl 11 ULONGLONG GetMessageCountLimit()

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

戻り値

Type: UINT64

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

解説(Remarks)

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

vtbl 12 HRESULT AddStorageFilterEntries(D3D10_INFO_QUEUE_FILTER* pFilter)

格納フィルタースタックの先頭に格納フィルターを追加します。(ID3D10InfoQueue.AddStorageFilterEntries)

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

戻り値

Type: HRESULT

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

解説(Remarks)

格納フィルターは、情報キューへの追加を許可するデバッグメッセージのグループを定義します。

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

格納フィルタースタックの先頭にある格納フィルターを取得します。(ID3D10InfoQueue.GetStorageFilter)

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

戻り値

Type: HRESULT

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

vtbl 14 void ClearStorageFilter()

格納フィルタースタックの先頭から格納フィルターを削除します。(ID3D10InfoQueue.ClearStorageFilter)

vtbl 15 HRESULT PushEmptyStorageFilter()

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

戻り値

Type: HRESULT

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

解説(Remarks)

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

vtbl 16 HRESULT PushCopyOfStorageFilter()

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

戻り値

Type: HRESULT

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

vtbl 17 HRESULT PushStorageFilter(D3D10_INFO_QUEUE_FILTER* pFilter)

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

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

戻り値

Type: HRESULT

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

vtbl 18 void PopStorageFilter()

格納フィルタースタックの先頭から格納フィルターをポップします。(ID3D10InfoQueue.PopStorageFilter)

vtbl 19 DWORD GetStorageFilterStackSize()

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

戻り値

Type: UINT

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

vtbl 20 HRESULT AddRetrievalFilterEntries(D3D10_INFO_QUEUE_FILTER* pFilter)

取得フィルタースタックの先頭に格納フィルターを追加します。(ID3D10InfoQueue.AddRetrievalFilterEntries)

pFilterD3D10_INFO_QUEUE_FILTER*in取得フィルターの配列(D3D10_INFO_QUEUE_FILTER を参照)。

戻り値

Type: HRESULT

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

解説(Remarks)

取得フィルターは、すでに情報キューにあるメッセージのサブグループを定義するために使用されます。
取得フィルターは、ID3D10InfoQueue::GetMessage によって返されるメッセージに影響します。

取得フィルターの通過を許可される、すでに情報キューにあるメッセージ数は、ID3D10InfoQueue::GetNumStoredMessagesAllowedByRetrievalFilter を呼び出すことで判定できます。

vtbl 21 HRESULT GetRetrievalFilter(D3D10_INFO_QUEUE_FILTER* pFilter, UINT_PTR* pFilterByteLength)

取得フィルタースタックの先頭にある取得フィルターを取得します。(ID3D10InfoQueue.GetRetrievalFilter)

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

戻り値

Type: HRESULT

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

vtbl 22 void ClearRetrievalFilter()

取得フィルタースタックの先頭から取得フィルターを削除します。(ID3D10InfoQueue.ClearRetrievalFilter)

vtbl 23 HRESULT PushEmptyRetrievalFilter()

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

戻り値

Type: HRESULT

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

解説(Remarks)

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

vtbl 24 HRESULT PushCopyOfRetrievalFilter()

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

戻り値

Type: HRESULT

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

vtbl 25 HRESULT PushRetrievalFilter(D3D10_INFO_QUEUE_FILTER* pFilter)

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

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

戻り値

Type: HRESULT

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

vtbl 26 void PopRetrievalFilter()

取得フィルタースタックの先頭から取得フィルターをポップします。(ID3D10InfoQueue.PopRetrievalFilter)

vtbl 27 DWORD GetRetrievalFilterStackSize()

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

戻り値

Type: UINT

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

vtbl 28 HRESULT AddMessage(D3D10_MESSAGE_CATEGORY Category, D3D10_MESSAGE_SEVERITY Severity, D3D10_MESSAGE_ID ID, LPSTR pDescription)

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

CategoryD3D10_MESSAGE_CATEGORYinメッセージのカテゴリ(D3D10_MESSAGE_CATEGORY を参照)。
SeverityD3D10_MESSAGE_SEVERITYinメッセージの重大度(D3D10_MESSAGE_SEVERITY を参照)。
IDD3D10_MESSAGE_IDinメッセージの一意の識別子(D3D10_MESSAGE_ID を参照)。
pDescriptionLPSTRinユーザー定義のメッセージ。

戻り値

Type: HRESULT

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

解説(Remarks)

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

vtbl 29 HRESULT AddApplicationMessage(D3D10_MESSAGE_SEVERITY Severity, LPSTR pDescription)

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

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

戻り値

Type: HRESULT

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

vtbl 30 HRESULT SetBreakOnCategory(D3D10_MESSAGE_CATEGORY Category, BOOL bEnable)

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

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

戻り値

Type: HRESULT

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

vtbl 31 HRESULT SetBreakOnSeverity(D3D10_MESSAGE_SEVERITY Severity, BOOL bEnable)

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

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

戻り値

Type: HRESULT

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

vtbl 32 HRESULT SetBreakOnID(D3D10_MESSAGE_ID ID, BOOL bEnable)

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

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

戻り値

Type: HRESULT

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

vtbl 33 BOOL GetBreakOnCategory(D3D10_MESSAGE_CATEGORY Category)

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

CategoryD3D10_MESSAGE_CATEGORYinブレーク対象とするメッセージカテゴリ(D3D10_MESSAGE_CATEGORY を参照)。

戻り値

Type: BOOL

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

vtbl 34 BOOL GetBreakOnSeverity(D3D10_MESSAGE_SEVERITY Severity)

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

SeverityD3D10_MESSAGE_SEVERITYinブレーク対象とするメッセージの重大度レベル(D3D10_MESSAGE_SEVERITY を参照)。

戻り値

Type: BOOL

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

vtbl 35 BOOL GetBreakOnID(D3D10_MESSAGE_ID ID)

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

IDD3D10_MESSAGE_IDinブレーク対象とするメッセージ識別子(D3D10_MESSAGE_ID を参照)。

戻り値

Type: BOOL

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

vtbl 36 void SetMuteDebugOutput(BOOL bMute)

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

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

解説(Remarks)

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

vtbl 37 BOOL GetMuteDebugOutput()

デバッグ出力のオン/オフを切り替えるブール値を取得します。(ID3D10InfoQueue.GetMuteDebugOutput)

戻り値

Type: 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_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 方式にも切替可。