Freigeben über


DXGKDDI_MIRACAST_HANDLE_IO_CONTROL Rückruffunktion (dispmprt.h)

Wird vom Betriebssystem aufgerufen, um anzufordern, dass der Anzeigeminiporttreiber eine synchrone E/A-Steuerungsanforderung als Reaktion auf einen Aufruf des Benutzermodusanzeigetreibers an die MiracastIoControl-Funktion verarbeitet.

Syntax

DXGKDDI_MIRACAST_HANDLE_IO_CONTROL DxgkddiMiracastHandleIoControl;

NTSTATUS DxgkddiMiracastHandleIoControl(
  [in]  PVOID DriverContext,
  [in]  PVOID MiracastContext,
  [in]  ULONG InputBufferSize,
  [in]  VOID *pInputBuffer,
  [in]  ULONG OutputBufferSize,
  [out] VOID *pOutputBuffer,
  [out] ULONG *BytesReturned
)
{...}

Parameter

[in] DriverContext

Ein Handle für einen Kontextblock, der einem Anzeigeadapter zugeordnet ist. Die DxgkDdiAddDevice-Funktion des Anzeigeminiporttreibers hat dieses Handle zuvor für das DirectX-Grafikkernsubsystem bereitgestellt.

[in] MiracastContext

Der Vom Betriebssystem bereitgestellte Miracast-Gerätekontext. Dieser Kontext wurde vom Anzeigeminiporttreiber in einem Aufruf der DxgkDdiMiracastCreateContext-Funktion bereitgestellt.

[in] InputBufferSize

Wird vom Betriebssystem als Größe des Eingabepuffers in Bytes angegeben, auf die pInputBuffer verweist. Dieser Wert entstand als InputBufferSize-Parameter der MiracastIoControl-Funktion des Benutzermodus.

[in] pInputBuffer

Wird vom Betriebssystem als Zeiger auf den Eingabepuffer bereitgestellt. Dieser Wert entstand als InputBufferSize-Parameter der MiracastIoControl-Funktion des Benutzermodus.

InputBufferSize gibt die Größe des Puffers an.

[in] OutputBufferSize

Wird vom Betriebssystem als Größe des Ausgabepuffers in Bytes angegeben, auf die pOutputBuffer verweist.

Dieser Wert entstand als OutputBufferSize-Parameter der MiracastIoControl-Funktion im Benutzermodus.

[out] pOutputBuffer

Wird vom Betriebssystem als Zeiger auf den Ausgabepuffer bereitgestellt. Dieser Wert entstand als pOutputBuffer-Parameter der MiracastIoControl-Funktion im Benutzermodus.

OutBufferSize gibt die Größe des Puffers an.

[out] BytesReturned

Wird vom Betriebssystem als Zeiger auf einen Puffer bereitgestellt, der einen Wert vom Typ ULONG enthält, der die Anzahl von Bytes darstellt, die der Anzeigeminiporttreiber im Puffer zurückgegeben hat, auf den pOutputBuffer verweist.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist. Andernfalls wird einer der Fehlercodes zurückgegeben, die in Ntstatus.h definiert sind.

Hinweise

Das Betriebssystem garantiert, dass ein Aufruf von DxgkDdiMiracastIoControl im selben Prozessbereich erfolgt, in dem die MiracastIoControl-Anforderung im Benutzermodus aufgerufen wird.

Obwohl das Betriebssystem lediglich die Werte der Eingabe- und Ausgabepuffergrößen aus den jeweiligen Parametern von MiracastIoControl kopiert, ist der Anzeigeminiporttreiber für die Überprüfung der Puffergrößen vor der Verwendung der Puffer zuständig. Außerdem sollte der Treiber Mithilfe der Funktionen ProbeForRead und/oder ProbeForWrite innerhalb eines try/except-Aufrufblocks untersuchen, um den Arbeitsspeicher im Benutzermodus zu überprüfen, auf den Eingabepuffer verweisen.

Dieser E/A-Steuerungsvorgang wird synchron mit einem Aufruf der MiracastIoControl-Funktion im Benutzermodus verarbeitet.

Synchronisierung

Das Betriebssystem gruppiert die Funktionen DxgkDdiMiracastCreateContext, DxgkDdiMiracastDestroyContext und DxgkDdiMiracastIoControl als Miracast-Klasse .

Die Threading- und Synchronisierungsebene für diese Funktion wird festgelegt, indem der Benutzermodustreiber den HardwareAccess-Parameter in einem Aufruf der MiracastIoControl-Funktion festlegt:

  • Wenn HardwareAccessFALSE ist, garantiert das Betriebssystem, dass DxgkDdiMiracastIoControl dem Synchronisierungsmodus der zweiten Ebene folgt, wie in Threading und Synchronisierung zweiter Ebene definiert. DxgkDdiMiracastIoControl kann aufgerufen werden, wenn andere Klassen der Ebene 0, 1 oder Nicht-Miracast-Klassen von Funktionen der Ebene 2 in einem anderen Threadkontext aufgerufen werden. Es kann jedoch nur eine der Miracast-Klassenfunktionen der Ebene 2 gleichzeitig aufgerufen werden.
  • Wenn HardwareAccessTRUE ist, folgt DxgkDdiMiracastIoControl dem Synchronisierungsmodus der dritten Ebene, der in Threading und Synchronisierung dritter Ebene definiert ist. Beachten Sie, dass das Leeren der GPU zu einem erheblichen Verarbeitungsaufwand führt.

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

DxgkDdiAddDevice

DxgkDdiMiracastCreateContext

MiracastIoControl

ProbeForRead

ProbeForWrite