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 dei dati verrà quindi restituito al chiamante. Si noti che il chiamante deve allocare un buffer di output sufficientemente 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

DWORD che indica le dimensioni della struttura SECURE_ELEMENT_HCE_DATA_PACKET più il relativo payload, immediatamente seguito dalla struttura SECURE_ELEMENT_HCE_DATA_PACKET 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_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'.

Commenti

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

  • Questo IOCTL viene inviato su una connessione esistente dopo l'attivazione dell'evento HCE Activated.
  • Il driver deve supportare CancelIo in questo IOCTL con penna.
  • Il driver deve mantenere una coda "Ricevuta" dell'APDU ricevuta 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 de-accodare 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 "Received".

Requisiti

Requisito Valore
Intestazione nfcsedev.h