Freigeben über


DXGKCB_MIRACAST_SEND_MESSAGE Rückruffunktion (dispmprt.h)

Sendet eine asynchrone Nachricht an den Anzeigetreiber für den Benutzermodus.

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 bereitgestellter 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 die pInputBufferverweist.

[in] pInputBuffer

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

Weitere Informationen zum Eingabepuffer finden Sie in den Hinweisen.

[in] OutputBufferSize

Die Größe des Ausgabepuffers in Bytes, auf die pOutputBufferverweist.

[out] pOutputBuffer

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

Weitere Informationen zum Ausgabepuffer finden Sie in den Hinweisen.

[in, optional] pCallback

Ein optionaler Zeiger, der vom Display miniport-Treiber bereitgestellt wird, auf die DxgkCbMiracastSendMessageCallback Rückruffunktion.

Wenn der Anzeige-Miniporttreiber den Zeiger auf DxgkCbMiracastSendMessageCallbackbereitstellt, sendet das Betriebssystem nach der Verarbeitung der Nachricht eine Nachricht an den Benutzermodustreiber, indem DxgkCbMiracastSendMessageCallbackaufgerufen wird.

Weitere Informationen zu Aufrufen von DxgkCbMiracastSendMessageCallbackfinden 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 an die vom Treiber bereitgestellte Rückrufroutine, nachdem der Vorgang abgeschlossen wurde.

Rückgabewert

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

Wenn der Anzeigeminiporttreiber den Status der Nachrichtenbehandlung im Benutzermodus kennen muss, sollte er die DxgkCbMiracastSendMessageCallback-funktion im pCallback Parameter angeben und den Rückgabestatus im pIoStatusBlock Parameter dieser Funktion überprüfen.

Bemerkungen

Wenn der Anzeigeminiporttreiber den pInputBuffer und pOutputBuffer Puffer bereitstellt, liegt es in der Verantwortung des Treibers, diese beiden Puffer zu halten, bis die DxgkCbMiracastSendMessageCallback Funktion aufgerufen wird. Andernfalls kann ein Problem mit zufälliger Speicherbeschädigung erstellt werden.

Wenn der Treiber die DxgkCbMiracastSendMessageCallback- im parameter pCallback bereitstellt, ist es möglich, dass DxgkCbMiracastSendMessageCallback- zurückgegeben wird, bevor DxgkCbMiracastSendMessage zurückgegeben wird.

Beispielaufrufsequenz

Im folgenden Beispielcode wird gezeigt, wie sie diese Funktion verwenden:
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
mindestens unterstützte Client- Windows 8.1
mindestens unterstützte Server- Windows Server 2012 R2
Zielplattform- Desktop
Header- dispmprt.h (include Dispmprt.h)
IRQL- PASSIVE_LEVEL

Siehe auch

DXGK_MIRACAST_DISPLAY_CALLBACKS

DxgkCbMiracastSendMessageCallback

DxgkDdiMiracastCreateContext