Freigeben über


DXGKCB_MIRACAST_SEND_MESSAGE Rückruffunktion (dispmprt.h)

Sendet eine asynchrone Nachricht an den Benutzermodus-Anzeigetreiber.

Syntax

DXGKCB_MIRACAST_SEND_MESSAGE DxgkcbMiracastSendMessage;

NTSTATUS DxgkcbMiracastSendMessage(
  [in]           HANDLE MiracastHandle,
  [in]           ULONG InputBufferSize,
  [in]           VOID *pInputBuffer,
  [in]           ULONG OutputBufferSize,
  [out]          VOID *pOutputBuffer,
  [in, optional] DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK pCallback,
  [in, optional] PVOID pCallbackContext
)
{...}

Parameter

[in] MiracastHandle

Ein vom Treiber bereitgestelltes Handle für das Miracast-Anzeigegerät. Dieses Handle wurde ursprünglich im MiracastHandle-Member der DXGK_MIRACAST_DISPLAY_CALLBACKS-Struktur in einem Aufruf der DxgkDdiMiracastCreateContext-Funktion übergeben.

[in] InputBufferSize

Die Größe des Eingabepuffers in Bytes, auf den pInputBuffer verweist.

[in] pInputBuffer

Ein Zeiger auf den Eingabepuffer. InputBufferSize gibt die Größe des Puffers an.

Weitere Informationen zum Eingabepuffer finden Sie unter Hinweise.

[in] OutputBufferSize

Die Größe des Ausgabepuffers in Bytes, auf den pOutputBuffer verweist.

[out] pOutputBuffer

Ein Zeiger auf den Ausgabepuffer. OutBufferSize gibt die Größe des Puffers an.

Weitere Informationen zum Ausgabepuffer finden Sie unter Hinweise.

[in, optional] pCallback

Ein optionaler Zeiger, der vom Anzeigeminiporttreiber bereitgestellt wird, auf die Rückruffunktion DxgkCbMiracastSendMessageCallback .

Wenn der Anzeige-Miniporttreiber den Zeiger auf DxgkCbMiracastSendMessageCallback bereitstellt, sendet das Betriebssystem, nachdem der Benutzermodustreiber die Nachricht verarbeitet hat, eine Nachricht asynchron an den Benutzermodustreiber, indem DxgkCbMiracastSendMessageCallback aufgerufen wird.

Weitere Informationen zu Aufrufen von DxgkCbMiracastSendMessageCallback finden Sie in den Abschnitten Rückgabewert und Hinweise.

[in, optional] pCallbackContext

Ein optionaler vom Treiber bereitgestellter Zeiger auf den vom Treiber bereitgestellten Rückrufkontext. Das Betriebssystem übergibt diesen Kontext nach Abschluss des Vorgangs an die vom Treiber bereitgestellte Rückrufroutine.

Rückgabewert

Gibt STATUS_PENDING zurück, wenn die Nachricht erfolgreich übermittelt wurde. Andernfalls wird einer der Fehlercodes zurückgegeben, die in Ntstatus.h definiert sind.

Wenn der Anzeige-Miniporttreiber die status der Nachrichtenverarbeitung im Benutzermodus kennen muss, sollte er die DxgkCbMiracastSendMessageCallback-Funktion im pCallback-Parameter bereitstellen und die Rückgabe status im pIoStatusBlock-Parameter dieser Funktion überprüfen.

Hinweise

Wenn der Anzeige-Miniporttreiber die Puffer pInputBuffer und pOutputBuffer bereitstellt, liegt es in der Verantwortung des Treibers, diese beiden Puffer so lange zu halten, bis die DxgkCbMiracastSendMessageCallback-Funktion aufgerufen wird. Andernfalls kann ein zufälliges Speicherproblem erstellt werden.

Wenn der Treiber dxgkCbMiracastSendMessageCallback im pCallback-Parameter bereitstellt, gibt DxgkCbMiracastSendMessageCallback möglicherweise zurück, bevor DxgkCbMiracastSendMessage zurückgibt.

Beispielaufrufsequenz

Im folgenden Beispielcode wird die Verwendung dieser Funktion veranschaulicht:
typedef struct _CALLBACK_CONTEXT
{
    UCHAR InputBuffer[INPUT_BUFFER_SIZE];
    UCHAR OutputBuffer[OUTPUT_BUFFER_SIZE];
} CALLBACK_CONTEXT, *PCALLBACK_CONTEXT;

...

_IRQL_requires_(PASSIVE_LEVEL)
VOID
DriverCallbackFunction(
    _In_ PVOID Context,
    _In_ PIO_STATUS_BLOCK pIoStatusBlock
    )
{
    PCALLBACK_CONTEXT CallbackContex = (PCALLBACK_CONTEXT)Context;

    ExFreePool(CallbackContex);
}

...

    CallbackContex = (PCALLBACK_CONTEXT)ExAllocatePoolWithTag(
                            PagedPool,
                            sizeof(CALLBACK_CONTEXT),
                            DRIVER_TAG);

    if (CallbackContex == NULL)
    {
        return STATUS_NO_MEMORY;
    }

    RtlZeroMemory(CallbackContex, sizeof(CALLBACK_CONTEXT));

    CallbackContex->InputBuffer[0] = 0xaa;
    CallbackContex->InputBuffer[1] = 0x55;

    Status = 
      pDeviceContext->MiracastCallbacks.DxgkCbMiracastSendMessage(
          pDeviceContext->MiracastCallbacks.MiracastHandle,
          sizeof(CallbackContex->InputBuffer),
          CallbackContex->InputBuffer,
          sizeof(CallbackContex->OutputBuffer),
          CallbackContext->OutputBuffer,
          &DriverCallbackFunction,
          CallbackContex);

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8.1
Unterstützte Mindestversion (Server) Windows Server 2012 R2
Zielplattform Desktop
Kopfzeile dispmprt.h (include Dispmprt.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

DXGK_MIRACAST_DISPLAY_CALLBACKS

DxgkCbMiracastSendMessageCallback

DxgkDdiMiracastCreateContext