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