DXGKDDI_MIRACAST_HANDLE_IO_CONTROL funzione di callback (dispmprt.h)

Chiamato dal sistema operativo per richiedere che il driver miniport di visualizzazione elabori una richiesta di controllo I/O sincrona in risposta a una chiamata del driver di visualizzazione in modalità utente alla funzione MiracastIoControl .

Sintassi

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
)
{...}

Parametri

[in] DriverContext

Handle di un blocco di contesto associato a una scheda di visualizzazione. La funzione DxgkDdiAddDevice del driver miniport di visualizzazione ha fornito in precedenza questo handle al sottosistema del kernel grafico DirectX.

[in] MiracastContext

Contesto del dispositivo Miracast, fornito dal sistema operativo. Questo contesto è stato fornito dal driver miniport di visualizzazione in una chiamata alla funzione DxgkDdiMiracastCreateContext .

[in] InputBufferSize

Fornito dal sistema operativo come dimensione, in byte, del buffer di input a cui punta pInputBuffer. Questo valore ha avuto origine come parametro InputBufferSize della funzione MiracastIoControl in modalità utente.

[in] pInputBuffer

Fornito dal sistema operativo come puntatore al buffer di input. Questo valore ha avuto origine come parametro InputBufferSize della funzione MiracastIoControl in modalità utente.

InputBufferSize specifica le dimensioni del buffer.

[in] OutputBufferSize

Fornito dal sistema operativo come dimensione, in byte, del buffer di output a cui punta pOutputBuffer.

Questo valore ha avuto origine come parametro OutputBufferSize della funzione MiracastIoControl in modalità utente.

[out] pOutputBuffer

Fornito dal sistema operativo come puntatore al buffer di output. Questo valore ha avuto origine come parametro pOutputBuffer della funzione miracastIoControl in modalità utente.

OutBufferSize specifica le dimensioni del buffer.

[out] BytesReturned

Fornito dal sistema operativo come puntatore a un buffer che contiene un valore di tipo ULONG che corrisponde al numero di byte restituito dal driver miniport di visualizzazione nel buffer a cui punta pOutputBuffer.

Valore restituito

Restituisce STATUS_SUCCESS se ha esito positivo. In caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h.

Commenti

Il sistema operativo garantisce che una chiamata a DxgkDdiMiracastIoControl si verifichi nello stesso spazio di processo in cui viene chiamata la richiesta MiracastIoControl in modalità utente.

Anche se il sistema operativo copia semplicemente i valori delle dimensioni del buffer di input e output dai rispettivi parametri di MiracastIoControl, il driver miniport di visualizzazione è responsabile del controllo delle dimensioni del buffer prima di usare i buffer. Inoltre, il driver deve eseguire operazioni di probe all'interno di un blocco di chiamata try/except, usando le funzioni ProbeForRead e/o ProbeForWrite , per verificare qualsiasi memoria in modalità utente a cui puntano i buffer di input.

Questa operazione di controllo di I/O viene elaborata in modo sincrono con una chiamata alla funzione MiracastIoControl in modalità utente.

Sincronizzazione

Il sistema operativo raggruppa dxgkDdiMiracastCreateContext, DxgkDdiMiracastDestroyContext e DxgkDdiMiracastIoControl come classe Miracast .

Il livello di threading e sincronizzazione per questa funzione viene impostato dal modo in cui il driver in modalità utente imposta il parametro HardwareAccess in una chiamata alla funzione MiracastIoControl :

  • Se HardwareAccess è FALSE, il sistema operativo garantisce che DxgkDdiMiracastIoControl segua la modalità di sincronizzazione di secondo livello, come definito in Threading e synchronization Second Level. DxgkDdiMiracastIoControl può essere chiamato quando vengono chiamate altre classi di livello 0, 1 o non Miracast di funzioni di livello 2 in un altro contesto di thread. Tuttavia, solo una delle funzioni di classe Miracast di livello 2 può essere chiamata alla volta.
  • Se HardwareAccess è TRUE, DxgkDdiMiracastIoControl segue la modalità di sincronizzazione di terzo livello, come definito in Threading e synchronization Third Level. Si noti che lo scaricamento della GPU creerà un notevole sovraccarico di elaborazione.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1
Server minimo supportato Windows Server 2012 R2
Piattaforma di destinazione Desktop
Intestazione dispmprt.h (include Dispmprt.h)
IRQL PASSIVE_LEVEL

Vedi anche

DxgkDdiAddDevice

DxgkDdiMiracastCreateContext

MiracastIoControl

ProbeForRead

ProbeForWrite