IOCTL_NFCSE_GET_NEXT_EVENT IOCTL (nfcsedev.h)

Il codice di controllo IOCTL_NFCSE_GET_NEXT_EVENT restituisce l'evento successivo disponibile nel buffer oppure se non sono presenti altri eventi memorizzati nel buffer rimane in sospeso fino a quando non è disponibile un evento di elemento sicuro. I dettagli dell'evento devono quindi essere restituiti al chiamante.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

Nessuno

Lunghezza del buffer di input

Nessuno

Buffer di output

Un DWORD che indica le dimensioni della struttura SECURE_ELEMENT_EVENT_INFO più il relativo payload, seguito immediatamente dalla struttura SECURE_ELEMENT_EVENT_INFO stessa.

Blocco di stato

> Irp-IoStatus.Status è impostato su STATUS_SUCCESS se la richiesta ha esito positivo. I codici di errore possibili sono:

Codice restituito Descrizione
STATUS_INVALID_DEVICE_STATE Questo codice viene restituito quando questo IOCTL viene chiamato su un handle di dispositivo con un nome di file diverso da SEEvents o quando è già presente un'altra richiesta in sospeso che non è ancora stata completata.
STATUS_INVALID_PARAMETER Questo codice viene restituito quando il buffer di output è diverso da zero o quando il GUID dell'elemento sicuro non corrisponde ad alcun ID enumerato.

Osservazioni

Di seguito sono riportati i requisiti che il driver deve rispettare.

  • Questo IOCTL deve essere chiamato su un handle con un SEEvents nome file relativo; in caso contrario, il driver restituisce STATUS_INVALID_DEVICE_STATE
  • Questo driver deve supportare CancelIO per questo IOCTL in sospeso.
  • Questo driver deve mantenere una coda ricevuta degli eventi di elemento sicuro ricevuti che corrispondono al tipo di sottoscrizione.
  • Quando questo IOCTL viene ricevuto nel driver, è necessario soddisfare le condizioni seguenti:
    • Se la coda ricevuta è vuota, il driver deve eseguire la penna dell'IOCTL per il completamento successivo.
    • Se la coda ricevuta non è vuota, il driver deve annullare la coda di un evento, copiare il buffer dei messaggi nel buffer di output di IOCTL e completare immediatamente l'IOCTL con STATUS_SUCCESS.
  • Se il driver completa questo IOCTL con STATUS_SUCCESS, il primo DWORD [4 byte] del buffer di output deve contenere le dimensioni della struttura SECURE_ELEMENT_EVENT_INFO più il relativo payload.
  • Se le informazioni sull'evento dell'elemento sicuro ricevuto sono troppo grandi da copiare nel buffer di questo IOCTL, il driver deve copiare le dimensioni del buffer necessarie nei primi 4 byte del buffer di output, impostare il campo informazioni di IOCTL su sizeof(DWORD) e completare IOCTL con STATUS_BUFFER_OVERFLOW. L'evento deve quindi essere lasciato nella coda ricevuta.

Fabbisogno

Requisito Valore
intestazione nfcsedev.h