IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)

Mengembalikan buffer data berikutnya yang tersedia, atau jika tidak ada lagi data yang di-buffer, permintaan akan tetap tertunda hingga buffer APDU tersedia untuk dibaca. Buffer data kemudian akan dikembalikan ke pemanggil. Perhatikan bahwa pemanggil harus mengalokasikan buffer output yang cukup besar untuk menahan APDU terbesar yang telah diterima + overhead 4 byte.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Tidak ada

Panjang buffer input

Tidak ada

Buffer output

DWORD yang menunjukkan ukuran struktur SECURE_ELEMENT_HCE_DATA_PACKET ditambah payload-nya, segera diikuti oleh struktur SECURE_ELEMENT_HCE_DATA_PACKET itu sendiri.

Blok status

Irp->IoStatus.Status diatur ke STATUS_SUCCESS jika permintaan berhasil. Kemungkinan kode kesalahan adalah:

Kode Pengembalian Deskripsi
STATUS_BUFFER_OVERFLOW Buffer yang disediakan terlalu kecil untuk menerima pemberitahuan, DWORD pertama akan berisi ukuran buffer yang diharapkan.
STATUS_INVALID_PARAMETER Jika buffer input bukan nol.
STATUS_INVALID_DEVICE_STATE Jika IOCTL dikirim pada handel selain dengan nama relatif 'SEManage'.

Keterangan

Berikut ini adalah persyaratan yang harus dipatuhi pengemudi.

  • IOCTL ini dikirim pada koneksi yang ada setelah peristiwa HCE Diaktifkan dipicu.
  • Driver harus mendukung CancelIo pada IOCTL yang tertunda ini.
  • Driver harus mempertahankan antrean "Diterima" dari APDU yang diterima untuk koneksi saat ini.
  • Ketika IOCTL ini diterima di driver:
    • Jika antrean "Diterima" kosong, maka driver HARUS menunggu IOCTL untuk penyelesaian nanti.
    • Jika antrean "Diterima" tidak kosong, maka driver HARUS menghapus antrean satu APDU, menyalin buffer APDU ke buffer output IOCTL, dan menyelesaikan IOCTL dengan STATUS_SUCCESS segera.
  • Jika driver menyelesaikan IOCTL ini dengan STATUS_SUCCESS, DWORD pertama [4 byte] dari buffer output HARUS berisi ukuran struktur SECURE_ELEMENT_HCE_DATA_PACKET ditambah payload-nya.
  • Jika data APDU yang diterima terlalu besar untuk disalin ke dalam buffer output IOCTL ini, driver HARUS menyalin ukuran buffer yang diperlukan ke dalam 4 byte pertama dari buffer output, atur bidang informasi IOCTL ke sizeof (DWORD), dan lengkapi IOCTL dengan STATUS_BUFFER_OVERFLOW. Data APDU harus ditinggalkan dalam antrean "Diterima".

Persyaratan

Persyaratan Nilai
Header nfcsedev.h