PFN_GET_NEXT_CHUNK_DATA fonction de rappel (netdispumdddi.h)

Fournit des informations sur le bloc d’encodage Miracast suivant qui a été signalé au sous-système du noyau graphique Microsoft DirectX lorsque le type d’interruption DXGK_INTERRUPT_TYPE est DXGK_INTERRUPT_MICACAST_CHUNK_PROCESSING_COMPLETE. Le type de données de cette fonction est PFN_GET_NEXT_CHUNK_DATA.

Syntaxe

PFN_GET_NEXT_CHUNK_DATA PfnGetNextChunkData;

NTSTATUS PfnGetNextChunkData(
  [in]           HANDLE hMiracastDeviceHandle,
  [in]           UINT TimeoutInMilliseconds,
  [in]           UINT AdditionalWaitEventCount,
  [in, optional] HANDLE *pAdditionalWaitEvents,
  [in, out]      UINT *pChunkDataBufferSize,
  [out]          MIRACAST_CHUNK_DATA *pChunkDataBuffer,
  [out]          UINT *pOutstandingChunksToProcess
)
{...}

Paramètres

[in] hMiracastDeviceHandle

Handle qui représente un appareil Miracast. Le pilote en mode utilisateur Miracast a précédemment obtenu ce handle en tant que paramètre hMiracastDeviceHandle dans un appel à la fonction CreateMiracastContext .

[in] TimeoutInMilliseconds

Valeur de l’intervalle de délai d’expiration, en millisecondes, fournie par le pilote en mode utilisateur Miracast.

Si cette valeur est INFINITE, le système d’exploitation bloque les appels à GetNextChunkData jusqu’à ce qu’un bloc soit disponible.

Si cette valeur est égale à zéro et qu’un bloc n’est pas prêt, le système d’exploitation ne bloque pas un appel à GetNextChunkData.

[in] AdditionalWaitEventCount

Nombre d’événements supplémentaires fournis dans le paramètre pAdditionalWaitEvents .

Un maximum de 4 événements d’attente peuvent être fournis.

[in, optional] pAdditionalWaitEvents

Pointeur facultatif vers un tableau d’événements que GetNextChunkData attendra pendant l’attente d’un nouveau bloc d’encodage.

[in, out] pChunkDataBufferSize

Pointeur vers une variable qui contient la taille, en octets, de la mémoire tampon pChunkDataBuffer .

Lorsque GetNextChunkData est appelé, ce paramètre contient la taille de pChunkDataBuffer.

Lorsque GetNextChunkData retourne un code de réussite, ce paramètre contient la taille des données de bloc de code réelles retournées dans pChunkDataBuffer.

[out] pChunkDataBuffer

Pointeur vers une mémoire tampon de type MIRACAST_CHUNK_DATA que le système d’exploitation fournit pour stocker des informations sur le segment de code suivant. Ce paramètre est fourni uniquement si l’appel à GetNextChunkData réussit.

[out] pOutstandingChunksToProcess

Pointeur vers une variable qui contient le nombre de blocs d’encodage en attente disponibles pour le pilote au moment du retour de cet appel. Ce paramètre est fourni uniquement si l’appel à GetNextChunkData réussit.

Notez que, à mesure que les blocs sont complétés par le GPU de façon asynchrone, ce paramètre donne uniquement une indication du nombre de blocs en attente.

Valeur retournée

Si les informations sur un bloc d’encodage ont été retournées avec succès, la STATUS_SUCCESS status code est retournée et la valeur de *pChunkDataBufferSize est différente de zéro.

Ces codes status supplémentaires peuvent être retournés :

Remarques

Cette fonction est facultative. Le pilote d’affichage en mode utilisateur ne doit l’appeler que si le pilote miniport d’affichage répond aux interruptions du GPU lorsque le GPU termine l’encodage d’un bloc en passant des données dans le MIRACAST_CHUNK_DATA. Membre PrivateDriverData à ce moment d’interruption.

Le pilote d’affichage en mode utilisateur peut utiliser les tailles de la structure MIRACAST_CHUNK_DATA et de la MIRACAST_CHUNK_DATA. Membre PrivateDriverData pour calculer la taille d’un bloc et, par conséquent, comment passer d’un bloc à un autre dans la mémoire tampon retournée.

Dans un appel à cette fonction, autant de paquets disponibles que possible sont placés séquentiellement dans la mémoire tampon fournie. Cet extrait de code montre comment calculer la taille de chaque paquet :

ChunkSize == FIELD_OFFSET
    (D3DKMT_MIRACAST_CHUNK_DATA, PrivateDriverData) \
    + Chunk->ChunkData.PrivateDriverDataSize;

Cohérence de thread

Un seul thread doit appeler cette fonction à la fois. Dans le cas contraire, il est imprévisible quel appel recevrait des informations de bloc et quel appel échouerait.

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 netdispumdddi.h (inclure Netdispumdddi.h)

Voir aussi

CreateMiracastContext

DXGK_INTERRUPT_TYPE

MIRACAST_CHUNK_DATA