Condividi tramite


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 finché 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

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

Blocco dello 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 del dispositivo con un nome file diverso da SEEvents o quando è già presente un'altra richiesta in sospeso non ancora completata.
STATUS_INVALID_PARAMETER Questo codice viene restituito quando il buffer di output non è zero o quando il GUID dell'elemento sicuro non corrisponde a nessuno degli ID enumerati.

Commenti

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

  • Questo IOCTL deve essere chiamato su un handle con un nome di file relativo SEEvents ; 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 sicuri ricevuti che corrispondono al tipo di sottoscrizione.
  • Le condizioni seguenti devono essere soddisfatte quando questo IOCTL viene ricevuto nel driver:
    • Se la coda ricevuta è vuota, il driver deve pennare L'IOCTL per il completamento successivo.
    • Se la coda ricevuta non è vuota, il driver deve de-accodare un evento, copiare il buffer del messaggio nel buffer di output di IOCTL e completare immediatamente 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 sugli eventi degli elementi sicuri ricevuti sono troppo grandi da copiare nel buffer di IOCTL, il driver deve copiare le dimensioni del buffer necessarie nei primi 4 byte del buffer di output, impostare il campo informazioni IOCTL su sizeof(DWORD) e completare IOCTL con STATUS_BUFFER_OVERFLOW. L'evento deve quindi essere lasciato nella coda ricevuta.

Requisiti

Requisito Valore
Intestazione nfcsedev.h