Partager via


DXGKDDI_MIRACAST_HANDLE_IO_CONTROL fonction de rappel (dispmprt.h)

Appelé par le système d’exploitation pour demander que le pilote miniport d’affichage traite une demande de contrôle d’E/S synchrone en réponse à un appel de pilote d’affichage en mode utilisateur à la fonction MiracastIoControl .

Syntaxe

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

Paramètres

[in] DriverContext

Handle vers un bloc de contexte associé à un adaptateur d’affichage. La fonction DxgkDdiAddDevice du pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique DirectX.

[in] MiracastContext

Contexte de l’appareil Miracast, fourni par le système d’exploitation. Ce contexte a été fourni par le pilote de miniport d’affichage dans un appel à la fonction DxgkDdiMiracastCreateContext .

[in] InputBufferSize

Fourni par le système d’exploitation comme taille, en octets, de la mémoire tampon d’entrée pointée par pInputBuffer. Cette valeur provient du paramètre InputBufferSize de la fonction MiracastIoControl en mode utilisateur.

[in] pInputBuffer

Fourni par le système d’exploitation en tant que pointeur vers la mémoire tampon d’entrée. Cette valeur provient du paramètre InputBufferSize de la fonction MiracastIoControl en mode utilisateur.

InputBufferSize spécifie la taille de la mémoire tampon.

[in] OutputBufferSize

Fourni par le système d’exploitation comme taille, en octets, de la mémoire tampon de sortie pointée par pOutputBuffer.

Cette valeur provient du paramètre OutputBufferSize de la fonction MiracastIoControl en mode utilisateur.

[out] pOutputBuffer

Fourni par le système d’exploitation en tant que pointeur vers la mémoire tampon de sortie. Cette valeur provient du paramètre pOutputBuffer de la fonction MiracastIoControl en mode utilisateur.

OutBufferSize spécifie la taille de la mémoire tampon.

[out] BytesReturned

Fourni par le système d’exploitation en tant que pointeur vers une mémoire tampon qui contient une valeur de type ULONG qui correspond au nombre d’octets retourné par le pilote de miniport d’affichage dans la mémoire tampon vers laquelle pOutputBuffer pointe.

Valeur retournée

Retourne STATUS_SUCCESS si elle réussit. Sinon, elle retourne l’un des codes d’erreur définis dans Ntstatus.h.

Remarques

Le système d’exploitation garantit qu’un appel à DxgkDdiMiracastIoControl se produit dans le même espace de processus que la requête MiracastIoControl en mode utilisateur.

Même si le système d’exploitation copie simplement les valeurs des tailles de mémoire tampon d’entrée et de sortie à partir des paramètres respectifs de MiracastIoControl, le pilote de miniport d’affichage est chargé de vérifier les tailles de mémoire tampon avant d’utiliser les mémoires tampons. En outre, le pilote doit effectuer des opérations de sondage dans un bloc try/except appelant, à l’aide des fonctions ProbeForRead et/ou ProbeForWrite , pour vérifier toute mémoire en mode utilisateur vers laquelle les mémoires tampons d’entrée pointent.

Cette opération de contrôle d’E/S est traitée de manière synchrone avec un appel à la fonction MiracastIoControl en mode utilisateur.

Synchronisation

Le système d’exploitation regroupe les fonctions DxgkDdiMiracastCreateContext, DxgkDdiMiracastDestroyContext et DxgkDdiMiracastIoControl en tant que classe Miracast .

Le niveau de thread et de synchronisation pour cette fonction est défini par la façon dont le pilote en mode utilisateur définit le paramètre HardwareAccess dans un appel à la fonction MiracastIoControl :

  • Si HardwareAccess a la valeur FALSE, le système d’exploitation garantit que DxgkDdiMiracastIoControl suit le mode de synchronisation de deuxième niveau, tel que défini dans Threading et synchronisation second niveau. DxgkDdiMiracastIoControl peut être appelé lorsque d’autres classes de niveau 0, 1 ou non Miracast de fonctions de niveau 2 sont appelées sur un autre contexte de thread. Toutefois, une seule des fonctions de classe Miracast de niveau 2 peut être appelée à la fois.
  • Si HardwareAccess a la valeur TRUE, DxgkDdiMiracastIoControl suit le mode de synchronisation de troisième niveau tel que défini dans Threading et Synchronisation Troisième niveau. Notez que le vidage du GPU crée une surcharge de traitement importante.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1
Serveur minimal pris en charge Windows Server 2012 R2
Plateforme cible Desktop (Expérience utilisateur)
En-tête dispmprt.h (include Dispmprt.h)
IRQL PASSIVE_LEVEL

Voir aussi

DxgkDdiAddDevice

DxgkDdiMiracastCreateContext

MiracastIoControl

ProbeForRead

ProbeForWrite