Поделиться через


Метод 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
Header dxgidebug.h
DLL DXGIDebug.dll

См. также раздел

IDXGIInfoQueue