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

DxgkCbMiracastSendMessageCallback

DxgkDdiMiracastCreateContext