Freigeben über


IDXGIInfoQueue::GetMessage-Methode (dxgidebug.h)

Ruft eine Nachricht aus der Nachrichtenwarteschlange ab.

Syntax

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

Parameter

[in] Producer

Ein DXGI_DEBUG_ID Wert, der die Entität identifiziert, die die Nachricht abruft.

[in] MessageIndex

Ein Index in die Nachrichtenwarteschlange, nachdem ein optionaler Abruffilter angewendet wurde. Dies kann zwischen 0 und der Anzahl der Nachrichten in der Nachrichtenwarteschlange sein, die den Abruffilter durchlaufen. Rufen Sie IDXGIInfoQueue::GetNumStoredMessagesAllowedByRetrievalFilters auf, um diese Nummer zu erhalten. 0 ist die Nachricht am Anfang der Nachrichtenwarteschlange.

[out, optional] pMessage

Ein Zeiger auf eine DXGI_INFO_QUEUE_MESSAGE-Struktur , die die Nachricht beschreibt.

[in, out] pMessageByteLength

Ein Zeiger auf eine Variable, die die Größe der Nachrichtenbeschreibung in Bytes empfängt, auf die pMessage verweist. Diese Größe umfasst die Größe der DXGI_INFO_QUEUE_MESSAGE-Struktur in Bytes.

Rückgabewert

Gibt bei erfolgreicher Ausführung S_OK zurück. andernfalls ein Fehlercode. Eine Liste der Fehlercodes finden Sie unter DXGI_ERROR.

Hinweise

Diese Methode entfernt keine Nachrichten aus der Nachrichtenwarteschlange.

Diese Methode ruft eine Nachricht aus der Nachrichtenwarteschlange ab, nachdem ein optionaler Abruffilter angewendet wurde.

Rufen Sie diese Methode zweimal auf, um eine Nachricht abzurufen, zuerst, um die Größe der Nachricht abzurufen, und dann, um die Nachricht abzurufen. Hier ist ein typisches Beispiel:


// 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);
    }
}
Hinweis Für diese API ist das Windows Software Development Kit (SDK) für Windows 8 erforderlich.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile dxgidebug.h
DLL DXGIDebug.dll

Weitere Informationen

IDXGIInfoQueue