Partager via


IOCTL_NFCSE_GET_NEXT_EVENT IOCTL (nfcsedev.h)

Le code de contrôle IOCTL_NFCSE_GET_NEXT_EVENT retourne l’événement suivant disponible dans la mémoire tampon, ou s’il n’y a plus d’événements mis en mémoire tampon en attente jusqu’à ce qu’un événement d’élément sécurisé soit disponible. Les détails de l’événement doivent ensuite être retournés à l’appelant.

Code principal

IRP_MJ_DEVICE_CONTROL

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_EVENT_INFO plus sa charge utile, immédiatement suivie de la structure SECURE_ELEMENT_EVENT_INFO 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_INVALID_DEVICE_STATE Ce code est retourné lorsque cet IOCTL est appelé sur un handle d’appareil qui a un nom de fichier autre que SEEvents, ou lorsqu’il existe déjà une autre demande en attente qui n’est pas encore terminée.
STATUS_INVALID_PARAMETER Ce code est retourné lorsque la mémoire tampon de sortie est différente de zéro ou lorsque le GUID de l’élément sécurisé ne correspond à aucun des ID énumérés.

Remarques

Voici les exigences que le pilote doit respecter.

  • Cet IOCTL doit être appelé sur un handle qui a un nom de fichier relatif SEEvents ; sinon, le pilote retourne STATUS_INVALID_DEVICE_STATE
  • Ce pilote doit prendre en charge CancelIO pour ce IOCTL en attente.
  • Ce pilote doit conserver une file d’attente reçue des événements d’élément sécurisé reçus qui correspondent au type d’abonnement.
  • Les conditions suivantes doivent être remplies lorsque ce IOCTL est reçu dans le pilote :
    • Si la file d’attente reçue est vide, le pilote doit mettre en attente l’IOCTL pour une exécution ultérieure.
    • Si la file d’attente reçue n’est pas vide, le pilote doit dé-mettre en file d’attente un événement, copier la mémoire tampon de message dans la mémoire tampon de sortie de l’IOCTL et terminer l’IOCTL avec STATUS_SUCCESS immédiatement.
  • Si le pilote termine ce 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_EVENT_INFO plus sa charge utile.
  • Si les informations d’événement d’un élément sécurisé reçu sont trop volumineuses pour être copiées dans la mémoire tampon 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 l’IOCTL avec STATUS_BUFFER_OVERFLOW. L’événement doit ensuite être laissé dans la file d’attente reçue.

Configuration requise

Condition requise Valeur
En-tête nfcsedev.h