IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)
Gibt entweder den nächsten verfügbaren Datenpuffer zurück, oder wenn keine gepufferten Daten mehr vorhanden sind, bleibt die Anforderung ausstehend, bis ein APDU-Puffer zum Lesen verfügbar ist. Der Datenpuffer wird dann an den Aufrufer zurückgegeben. Beachten Sie, dass der Aufrufer einen Ausgabepuffer zuordnen muss, der groß genug ist, um die größte empfangene APDU + 4 Byte Mehraufwand zu enthalten.
Hauptcode
Eingabepuffer
Keine
Länge des Eingabepuffers
Keine
Ausgabepuffer
Ein DWORD , das die Größe der SECURE_ELEMENT_HCE_DATA_PACKET-Struktur plus ihrer Nutzlast angibt, unmittelbar gefolgt von der SECURE_ELEMENT_HCE_DATA_PACKET-Struktur selbst.
Statusblock
Irp->IoStatus.Status ist auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist. Mögliche Fehlercodes sind:
Rückgabecode | BESCHREIBUNG |
---|---|
STATUS_BUFFER_OVERFLOW | Der bereitgestellte Puffer war zu klein, um die Benachrichtigung zu empfangen. Das erste DWORD enthält die erwartete Puffergröße. |
STATUS_INVALID_PARAMETER | Wenn der Eingabepuffer ungleich 0 (null) ist. |
STATUS_INVALID_DEVICE_STATE | Wenn die IOCTL auf einem anderen Handle als mit dem relativen Namen "SEManage" gesendet wird. |
Hinweise
Im Folgenden sind Die Anforderungen aufgeführt, die der Treiber erfüllen muss.
- Diese IOCTL wird für eine vorhandene Verbindung gesendet, nachdem das HCE Activated-Ereignis ausgelöst wurde.
- Der Treiber muss CancelIo für diese pended IOCTL unterstützen.
- Der Treiber muss eine "Received"-Warteschlange der empfangenen APDU für die aktuelle Verbindung verwalten.
- Wenn diese IOCTL im Treiber empfangen wird:
- Wenn die Warteschlange "Empfangen" leer ist, MUSS der Treiber die IOCTL für den späteren Abschluss ausfüllen.
- Wenn die Warteschlange "Received" nicht leer ist, MUSS der Treiber die Warteschlange um eine APDU aufheben, den APDU-Puffer in den Ausgabepuffer der IOCTL kopieren und die IOCTL mit STATUS_SUCCESS sofort abschließen.
- Wenn der Treiber diese IOCTL mit STATUS_SUCCESS abschließt, MUSS das erste DWORD [4 Byte] des Ausgabepuffers die Größe der SECURE_ELEMENT_HCE_DATA_PACKET-Struktur plus ihrer Nutzlast enthalten.
- Wenn eine empfangene APDU-Daten zu groß ist, um in den Ausgabepuffer dieser IOCTL kopiert zu werden, MUSS der Treiber die erforderliche Puffergröße in die ersten 4 Byte des Ausgabepuffers kopieren, das Informationsfeld der IOCTL auf sizeof(DWORD) festlegen und die IOCTL mit STATUS_BUFFER_OVERFLOW abschließen. Die APDU-Daten müssen in der Warteschlange "Empfangen" verbleiben.
Anforderungen
Anforderung | Wert |
---|---|
Header | nfcsedev.h |