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 reste 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

Aucun

Longueur de la mémoire tampon d’entrée

Aucun

Mémoire tampon de sortie

Une 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 :

Retour du code Description
STATUS_INVALID_DEVICE_STATE Ce code est retourné lorsque cette IOCTL est appelée 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 n’est pas zéro, ou lorsque le GUID de l’élément sécurisé ne correspond à aucun des ID énumérés.

Remarques

Voici les exigences auxquelles le pilote doit adhérer.

  • Ce 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 le IOCTL pour la fin 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 du IOCTL et terminer la durée de vie du CIO 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’élément sécurisé reçues 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 du IOCTL sur sizeof(DWORD) et terminer la durée de vie du CIO avec STATUS_BUFFER_OVERFLOW. L’événement doit ensuite être laissé dans la file d’attente reçue.

Exigences

Exigence Valeur
d’en-tête nfcsedev.h