IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)
Retourne la mémoire tampon de données suivante disponible ou, s’il n’y a plus de données mises en mémoire tampon, la demande reste en attente jusqu’à ce qu’une mémoire tampon APDU soit disponible pour lecture. La mémoire tampon de données doit ensuite être retournée à l’appelant. Notez que l’appelant doit allouer une mémoire tampon de sortie suffisamment grande pour contenir la plus grande APDU reçue + 4 octets de charge.
Code principal
Mémoire tampon d'entrée
None
Longueur de la mémoire tampon d’entrée
None
Mémoire tampon de sortie
DWORD indiquant la taille de la structure SECURE_ELEMENT_HCE_DATA_PACKET plus sa charge utile, immédiatement suivie de la structure SECURE_ELEMENT_HCE_DATA_PACKET elle-même.
Bloc d’état
Irp->IoStatus.Status est défini sur STATUS_SUCCESS si la demande réussit. Les codes d’erreur possibles sont les suivants :
Code de retour | Description |
---|---|
STATUS_BUFFER_OVERFLOW | La mémoire tampon fournie était trop petite pour recevoir la notification. Le premier DWORD contiendra la taille de mémoire tampon attendue. |
STATUS_INVALID_PARAMETER | Si la mémoire tampon d’entrée est différente de zéro. |
STATUS_INVALID_DEVICE_STATE | Si le IOCTL est envoyé sur un handle autre que celui portant le nom relatif « SEManage ». |
Remarques
Voici les exigences auxquelles le pilote doit se conformer.
- Ce IOCTL est envoyé sur une connexion existante après le déclenchement de l’événement activé par HCE.
- Le pilote doit prendre en charge CancelIo sur ce IOCTL suspendu.
- Le pilote doit conserver une file d’attente « Reçu » de l’API reçue pour la connexion actuelle.
- Lorsque ce IOCTL est reçu dans le pilote :
- Si la file d’attente « Reçu » est vide, le pilote DOIT mettre fin à IOCTL pour une exécution ultérieure.
- Si la file d’attente « Reçu » n’est pas vide, le pilote DOIT dé-mettre en file d’attente une API, copiez la mémoire tampon APDU dans la mémoire tampon de sortie du IOCTL et terminez le IOCTL avec STATUS_SUCCESS immédiatement.
- Si le pilote termine cette IOCTL avec STATUS_SUCCESS, le premier DWORD [4 octets] de la mémoire tampon de sortie DOIT contenir la taille de la structure SECURE_ELEMENT_HCE_DATA_PACKET plus sa charge utile.
- Si les données APDU reçues sont trop volumineuses pour être copiées dans la mémoire tampon de sortie de ce IOCTL, le pilote DOIT copier la taille de mémoire tampon requise dans les 4 premiers octets de la mémoire tampon de sortie, définir le champ d’informations d’IOCTL sur sizeof (DWORD) et compléter le IOCTL avec STATUS_BUFFER_OVERFLOW. Les données APDU doivent être laissées dans la file d’attente « Received ».
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | nfcsedev.h |