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 |