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

注解

此方法不会从消息队列中删除任何消息。

此方法在应用可选检索筛选器后从消息队列中获取消息。

调用此方法两次以检索消息,第一次是获取消息的大小,第二次是获取消息。 下面是一个典型示例:


// 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 软件开发工具包 (SDK) Windows 8。
 

要求

要求
最低受支持的客户端 Windows 8 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows
标头 dxgidebug.h
DLL DXGIDebug.dll

另请参阅

IDXGIInfoQueue