DXGKCB_MIRACAST_SEND_MESSAGE fonction de rappel (dispmprt.h)
Envoie un message asynchrone au pilote d’affichage en mode utilisateur.
Syntaxe
DXGKCB_MIRACAST_SEND_MESSAGE DxgkcbMiracastSendMessage;
NTSTATUS DxgkcbMiracastSendMessage(
[in] HANDLE MiracastHandle,
[in] ULONG InputBufferSize,
[in] VOID *pInputBuffer,
[in] ULONG OutputBufferSize,
[out] VOID *pOutputBuffer,
[in, optional] DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK pCallback,
[in, optional] PVOID pCallbackContext
)
{...}
Paramètres
[in] MiracastHandle
Handle fourni par le pilote au périphérique d’affichage Miracast. Ce handle a été transmis à l’origine dans le membre MiracastHandle de la structure DXGK_MIRACAST_DISPLAY_CALLBACKS dans un appel à la fonction DxgkDdiMiracastCreateContext .
[in] InputBufferSize
Taille, en octets, de la mémoire tampon d’entrée pointée par pInputBuffer.
[in] pInputBuffer
Pointeur vers la mémoire tampon d’entrée. InputBufferSize spécifie la taille de la mémoire tampon.
Pour plus d’informations sur la mémoire tampon d’entrée, consultez Remarques.
[in] OutputBufferSize
Taille, en octets, de la mémoire tampon de sortie pointée par pOutputBuffer.
[out] pOutputBuffer
Pointeur vers la mémoire tampon de sortie. OutBufferSize spécifie la taille de la mémoire tampon.
Pour plus d’informations sur la mémoire tampon de sortie, consultez Remarques.
[in, optional] pCallback
Pointeur facultatif, fourni par le pilote miniport d’affichage, vers la fonction de rappel DxgkCbMiracastSendMessageCallback .
Si le pilote miniport d’affichage fournit le pointeur vers DxgkCbMiracastSendMessageCallback, une fois que le pilote en mode utilisateur a géré le message, le système d’exploitation envoie un message au pilote en mode utilisateur de manière asynchrone en appelant DxgkCbMiracastSendMessageCallback.
Pour plus d’informations sur les appels à DxgkCbMiracastSendMessageCallback, consultez Les sections Valeur de retour et Remarques.
[in, optional] pCallbackContext
Pointeur facultatif fourni par le pilote vers le contexte de rappel fourni par le pilote. Le système d’exploitation transmet ce contexte à la routine de rappel fournie par le pilote une fois l’opération terminée.
Valeur retournée
Retourne STATUS_PENDING s’il remet correctement le message. Sinon, il retourne l’un des codes d’erreur définis dans Ntstatus.h.
Si le pilote miniport d’affichage doit connaître les status de gestion des messages en mode utilisateur, il doit fournir la fonction DxgkCbMiracastSendMessageCallback dans le paramètre pCallback et case activée le status de retour dans le paramètre pIoStatusBlock de cette fonction.
Remarques
Si le pilote miniport d’affichage fournit les mémoires tampons pInputBuffer et pOutputBuffer , il est de la responsabilité du pilote de conserver ces deux mémoires tampons jusqu’à ce que la fonction DxgkCbMiracastSendMessageCallback soit appelée. Sinon, un problème d’altération de la mémoire aléatoire peut être créé.
Si le pilote fournit le DxgkCbMiracastSendMessageCallback dans le paramètre pCallback , il est possible que DxgkCbMiracastSendMessageCallback soit retourné avant le retour de DxgkCbMiracastSendMessage .
Exemple de séquence d’appel
Voici un exemple de code qui montre comment utiliser cette fonction :typedef struct _CALLBACK_CONTEXT
{
UCHAR InputBuffer[INPUT_BUFFER_SIZE];
UCHAR OutputBuffer[OUTPUT_BUFFER_SIZE];
} CALLBACK_CONTEXT, *PCALLBACK_CONTEXT;
...
_IRQL_requires_(PASSIVE_LEVEL)
VOID
DriverCallbackFunction(
_In_ PVOID Context,
_In_ PIO_STATUS_BLOCK pIoStatusBlock
)
{
PCALLBACK_CONTEXT CallbackContex = (PCALLBACK_CONTEXT)Context;
ExFreePool(CallbackContex);
}
...
CallbackContex = (PCALLBACK_CONTEXT)ExAllocatePoolWithTag(
PagedPool,
sizeof(CALLBACK_CONTEXT),
DRIVER_TAG);
if (CallbackContex == NULL)
{
return STATUS_NO_MEMORY;
}
RtlZeroMemory(CallbackContex, sizeof(CALLBACK_CONTEXT));
CallbackContex->InputBuffer[0] = 0xaa;
CallbackContex->InputBuffer[1] = 0x55;
Status =
pDeviceContext->MiracastCallbacks.DxgkCbMiracastSendMessage(
pDeviceContext->MiracastCallbacks.MiracastHandle,
sizeof(CallbackContex->InputBuffer),
CallbackContex->InputBuffer,
sizeof(CallbackContex->OutputBuffer),
CallbackContext->OutputBuffer,
&DriverCallbackFunction,
CallbackContex);
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 (inclure Dispmprt.h) |
IRQL | PASSIVE_LEVEL |
Voir aussi
DXGK_MIRACAST_DISPLAY_CALLBACKS