DXGKDDI_MIRACAST_HANDLE_IO_CONTROL Rückruffunktion (dispmprt.h)
Vom Betriebssystem aufgerufen, um anzufordern, dass der Anzeige-Miniporttreiber eine synchrone E/A-Steuerungsanforderung als Reaktion auf einen Benutzermodus-Anzeigetreiberaufruf 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 zu einem Kontextblock, der einem Anzeigeadapter zugeordnet ist. Die DxgkDdiAddDevice-Funktion des Display-Miniporttreibers stellt dieses Handle zuvor für das DirectX-Grafik-Kernel-Subsystem bereit.
[in] MiracastContext
Der Miracast-Gerätekontext, der vom Betriebssystem bereitgestellt wird. Dieser Kontext wurde vom Display miniport-Treiber in einem Aufruf der DxgkDdiMiracastCreateContext-Funktion bereitgestellt.
[in] InputBufferSize
Wird vom Betriebssystem als Größe des Eingabepuffers in Bytes bereitgestellt, auf den pInputBufferverweist. Dieser Wert stammt aus dem Benutzermodus MiracastIoControlInputBufferSize Parameter der Funktion.
[in] pInputBuffer
Vom Betriebssystem als Zeiger auf den Eingabepuffer bereitgestellt. Dieser Wert stammt aus dem Benutzermodus MiracastIoControlInputBufferSize Parameter der Funktion.
InputBufferSize- gibt die Größe des Puffers an.
[in] OutputBufferSize
Vom Betriebssystem als Größe des Ausgabepuffers in Bytes bereitgestellt, auf den pOutputBufferverweist.
Dieser Wert stammt aus dem Benutzermodus MiracastIoControlOutputBufferSize Parameter der Funktion.
[out] pOutputBuffer
Vom Betriebssystem als Zeiger auf den Ausgabepuffer bereitgestellt. Dieser Wert stammt aus dem Benutzermodus MiracastIoControlpOutputBuffer Parameter der Funktion.
OutBufferSize- gibt die Größe des Puffers an.
[out] BytesReturned
Wird vom Betriebssystem als Zeiger auf einen Puffer bereitgestellt, der einen ULONG-wert-type enthält, der die Anzahl der Bytes darstellt, auf die der im Puffer zurückgegebene Anzeigeminiporttreiber durch pOutputBufferverweist.
Rückgabewert
Gibt STATUS_SUCCESS zurück, wenn dies erfolgreich ist. Andernfalls wird eine der Fehlercodes zurückgegeben, die in Ntstatus.h definiert sind.
Bemerkungen
Das Betriebssystem garantiert, dass ein Aufruf von DxgkDdiMiracastIoControl- im gleichen Prozessbereich auftritt wie der Benutzermodus MiracastIoControl Anforderung aufgerufen wird.
Obwohl das Betriebssystem lediglich die Werte der Eingabe- und Ausgabepuffergrößen aus den jeweiligen Parametern von MiracastIoControlkopiert, ist der Miniporttreiber für die Überprüfung der Puffergrößen verantwortlich, bevor die Puffer verwendet werden. Außerdem sollte der Treiber Probingvorgänge innerhalb eines Try/except-Aufrufblocks ausführen, indem ProbeForRead- und/oder ProbeForWrite--Funktionen verwendet werden, um den Speicher des Benutzermodus zu überprüfen, auf den die Eingabepuffer verweisen.
Dieser E/A-Steuerungsvorgang wird synchron mit einem Aufruf des Benutzermodus MiracastIoControl-Funktion verarbeitet.
Synchronisierung
Das Betriebssystem gruppiert die DxgkDdiMiracastCreateContext, DxgkDdiMiracastDestroyContextund DxgkDdiMiracastIoControl als Miracast Klasse.Die Threading- und Synchronisierungsebene für diese Funktion wird festgelegt, indem der Benutzermodustreiber den parameter HardwareAccess in einem Aufruf der MiracastIoControl--Funktion festlegt:
- Wenn HardwareAccess-FALSE-ist, garantiert das Betriebssystem, dass DxgkDdiMiracastIoControl dem Synchronisierungsmodus der zweiten Ebene folgt, wie in Threading and Synchronization Second Leveldefiniert. DxgkDdiMiracastIoControl- kann aufgerufen werden, wenn andere Klassen der Ebene 0, 1 oder nicht miracast von Funktionen der Ebene 2 in einem anderen Threadkontext aufgerufen werden. Allerdings kann jeweils nur eine der Miracast-Klassenfunktionen der Ebene 2 aufgerufen werden.
- Wenn HardwareAccess-TRUEist, folgt DxgkDdiMiracastIoControl dem Synchronisierungsmodus der dritten Ebene gemäß der Definition in Threading and Synchronization Third Level. Beachten Sie, dass durch die Spülung der GPU ein erheblicher Verarbeitungsaufwand entsteht.
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 |