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 |