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