Condividi tramite


IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)

Restituisce il buffer di dati successivo disponibile o, se non sono presenti più dati memorizzati nel buffer, la richiesta rimarrà in sospeso fino a quando non sarà disponibile un buffer APDU per la lettura. Il buffer di dati verrà quindi restituito al chiamante. Si noti che il chiamante deve allocare un buffer di output abbastanza grande per contenere l'APDU più grande che è stato ricevuto + 4 byte sovraccarico.

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_HCE_DATA_PACKET più il relativo payload, seguito immediatamente dalla struttura SECURE_ELEMENT_HCE_DATA_PACKET 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_BUFFER_OVERFLOW Il buffer fornito era troppo piccolo per ricevere la notifica, il primo DWORD conterrà le dimensioni previste del buffer.
STATUS_INVALID_PARAMETER Se il buffer di input è diverso da zero.
STATUS_INVALID_DEVICE_STATE Se l'IOCTL viene inviato su un handle diverso dal nome relativo 'SEManage'.

Osservazioni

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

  • Questo IOCTL viene inviato in una connessione esistente dopo l'attivazione dell'evento HCE Activated.
  • Il driver deve supportare CancelIo su questo IOCTL pended.
  • Il driver deve mantenere una coda "Ricevuta" dell'APDU ricevuto per la connessione corrente.
  • Quando questo IOCTL viene ricevuto nel driver:
    • Se la coda "Ricevuta" è vuota, il driver DEVE eseguire la penna IOCTL per il completamento successivo.
    • Se la coda "Ricevuta" non è vuota, il driver DEVE eseguire la de-coda di un'APIDU, copiare il buffer APDU 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_HCE_DATA_PACKET più il relativo payload.
  • Se i dati APDU ricevuti sono troppo grandi da copiare nel buffer di output di questo IOCTL, il driver DEVE copiare le dimensioni del buffer necessarie nei primi 4 byte del buffer di output, impostare il campo delle informazioni di IOCTL su sizeof(DWORD) e completare IOCTL con STATUS_BUFFER_OVERFLOW. I dati APDU devono essere lasciati nella coda "Ricevuta".

Fabbisogno

Requisito Valore
intestazione nfcsedev.h