Partager via


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 d’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 peut être fourni.

[in, optional] pAdditionalWaitEvents

Un pointeur facultatif vers un tableau d’événements qui GetNextChunkData attend 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 tampon.

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 encodées 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 bloc encodé 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 où cet appel a été retourné. 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 manière asynchrone, ce paramètre indique uniquement le nombre de blocs en attente.

Valeur de retour

Si des informations sur un bloc encode ont été retournées avec succès, le code d’état STATUS_SUCCESS est retourné et la valeur de *pChunkDataBufferSize n’est pas zéro.

Ces codes d’état 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 transmettant 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 du MIRACAST_CHUNK_DATA.privateDriverData membre pour calculer la taille d’un bloc et par conséquent comment passer d’un bloc à un bloc dans la mémoire tampon retournée.

Dans un appel à cette fonction, autant de paquets disponibles que possible seront 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;

Sécurité des threads

Un seul thread doit appeler cette fonction à la fois. Sinon, il est imprévisible que l’appel recevrait des informations de bloc et quel appel échouerait.

Exigences

Exigence Valeur
client minimum pris en charge Windows 8.1
serveur minimum pris en charge Windows Server 2012 R2
plateforme cible Bureau
d’en-tête netdispumdddi.h (include Netdispumdddi.h)

Voir aussi

CreateMiracastContext

DXGK_INTERRUPT_TYPE

MIRACAST_CHUNK_DATA