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

IRP_MJ_DEVICE_CONTROL

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