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 |