IDXGIInfoQueue::GetMessage メソッド (dxgidebug.h)

メッセージ キューからメッセージを取得します。

構文

HRESULT GetMessage(
  [in]            DXGI_DEBUG_ID           Producer,
  [in]            UINT64                  MessageIndex,
  [out, optional] DXGI_INFO_QUEUE_MESSAGE *pMessage,
  [in, out]       SIZE_T                  *pMessageByteLength
);

パラメーター

[in] Producer

メッセージ 取得するエンティティを識別するDXGI_DEBUG_ID値。

[in] MessageIndex

オプションの取得フィルターが適用された後のメッセージ キューへのインデックス。 0 から、取得フィルターを通過するメッセージ キュー内のメッセージの数を指定できます。 この番号を取得するには、 IDXGIInfoQueue::GetNumStoredMessagesAllowedByRetrievalFilters を呼び出します。 0 は、メッセージ キューの先頭にあるメッセージです。

[out, optional] pMessage

メッセージを記述 するDXGI_INFO_QUEUE_MESSAGE 構造体へのポインター。

[in, out] pMessageByteLength

pMessage が指すメッセージ記述のサイズ (バイト単位) を受け取る変数へのポインター。 このサイズには、 DXGI_INFO_QUEUE_MESSAGE 構造体のサイズ (バイト単位) が含まれます。

戻り値

成功した場合はS_OKを返します。それ以外の場合はエラー コード。 エラー コードの一覧については、「 DXGI_ERROR」を参照してください。

注釈

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

このメソッドは、オプションの取得フィルターが適用された後、メッセージ キューからメッセージを取得します。

このメソッドを 2 回呼び出してメッセージを取得し、最初にメッセージのサイズを取得し、次にメッセージを取得します。 一般的な例を次に示します。


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

    // Allocate space and get the message.
    DXGI_INFO_QUEUE_MESSAGE * pMessage = (DXGI_INFO_QUEUE_MESSAGE*)malloc(messageLength);
    hr = pInfoQueue->GetMessage(DXGI_DEBUG_ALL, 0, pMessage, &messageLength);
    
    // Do something with the message and free it
    if(hr == S_OK){
    
        // ...
        // ...
        // ...
        free(pMessage);
    }
}
メモこの API には、Windows 8用の Windows ソフトウェア開発キット (SDK) が必要です。
 

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー dxgidebug.h
[DLL] DXGIDebug.dll

こちらもご覧ください

IDXGIInfoQueue