Fungsi SCardTransmit (winscard.h)
Fungsi SCardTransmit mengirimkan permintaan layanan ke kartu pintar dan mengharapkan untuk menerima data kembali dari kartu.
Sintaks
LONG SCardTransmit(
[in] SCARDHANDLE hCard,
[in] LPCSCARD_IO_REQUEST pioSendPci,
[in] LPCBYTE pbSendBuffer,
[in] DWORD cbSendLength,
[in, out, optional] LPSCARD_IO_REQUEST pioRecvPci,
[out] LPBYTE pbRecvBuffer,
[in, out] LPDWORD pcbRecvLength
);
Parameter
[in] hCard
Nilai referensi yang dikembalikan dari fungsi SCardConnect .
[in] pioSendPci
Penunjuk ke struktur header protokol untuk instruksi. Buffer ini dalam format struktur SCARD_IO_REQUEST , diikuti oleh informasi kontrol protokol (PCI) tertentu.
Untuk protokol T=0, T=1, dan Raw, struktur PCI konstan. Subsistem kartu pintar memasok struktur T=0, T=1, atau PCI Mentah global, yang dapat Anda referensikan dengan menggunakan simbol masing-masing SCARD_PCI_T0, SCARD_PCI_T1, dan SCARD_PCI_RAW.
[in] pbSendBuffer
Penunjuk ke data aktual yang akan ditulis ke kartu.
Untuk T=0, parameter data ditempatkan ke alamat yang ditujukan oleh pbSendBuffer sesuai dengan struktur berikut:
struct {
BYTE
bCla, // the instruction class
bIns, // the instruction code
bP1, // parameter to the instruction
bP2, // parameter to the instruction
bP3; // size of I/O transfer
} CmdBytes;
Data yang dikirim ke kartu harus segera mengikuti buffer kirim. Dalam kasus khusus di mana tidak ada data yang dikirim ke kartu dan tidak ada data yang diharapkan sebagai pengembalian, bP3 tidak dikirim.
[in] cbSendLength
Panjangnya, dalam byte, dari parameter pbSendBuffer .
Untuk T=0, dalam kasus khusus di mana tidak ada data yang dikirim ke kartu dan tidak ada data yang diharapkan sebagai imbalannya, panjang ini harus mencerminkan bahwa anggota bP3 tidak dikirim; panjangnya harus sizeof(CmdBytes) - sizeof(BYTE)
.
[in, out, optional] pioRecvPci
Arahkan ke struktur header protokol untuk instruksi, diikuti oleh buffer untuk menerima informasi kontrol protokol (PCI) yang dikembalikan khusus untuk protokol yang digunakan. Parameter ini bisa NULL jika tidak ada PCI yang dikembalikan.
[out] pbRecvBuffer
Arahkan ke data apa pun yang dikembalikan dari kartu.
Untuk T=0, data segera diikuti oleh byte status SW1 dan SW2. Jika tidak ada data yang dikembalikan dari kartu, maka buffer ini hanya akan berisi byte status SW1 dan SW2.
[in, out] pcbRecvLength
Memasok panjang, dalam byte, dari parameter pbRecvBuffer dan menerima jumlah byte aktual yang diterima dari kartu pintar.
Nilai ini tidak dapat SCARD_AUTOALLOCATE karena SCardTransmit tidak mendukung SCARD_AUTOALLOCATE.
Untuk T=0, buffer penerima harus setidaknya dua byte panjang untuk menerima byte status SW1 dan SW2.
Mengembalikan nilai
Jika fungsi berhasil mengirim permintaan layanan ke kartu pintar, nilai yang dikembalikan SCARD_S_SUCCESS.
Jika fungsi gagal, fungsi akan mengembalikan kode kesalahan. Untuk informasi selengkapnya, lihat Nilai Pengembalian Kartu Pintar.
Keterangan
Fungsi SCardTransmit adalah kartu pintar dan fungsi akses pembaca . Untuk informasi tentang fungsi akses lainnya, lihat Fungsi Akses Kartu Pintar dan Pembaca.
Untuk protokol T=0, data yang diterima kembali adalah kode status SW1 dan SW2, mungkin didahului oleh data respons. Paragraf berikut memberikan informasi tentang buffer kirim dan terima yang digunakan untuk mentransfer data dan mengeluarkan perintah.
Contoh
Contoh berikut menunjukkan pengiriman permintaan layanan ke kartu pintar.
// Transmit the request.
// lReturn is of type LONG.
// hCardHandle was set by a previous call to SCardConnect.
// pbSend points to the buffer of bytes to send.
// dwSend is the DWORD value for the number of bytes to send.
// pbRecv points to the buffer for returned bytes.
// dwRecv is the DWORD value for the number of returned bytes.
lReturn = SCardTransmit(hCardHandle,
SCARD_PCI_T0,
pbSend,
dwSend,
NULL,
pbRecv,
&dwRecv );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed SCardTransmit\n");
exit(1); // or other appropriate error action
}
Persyaratan
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winscard.h |
Pustaka | Winscard.lib |
DLL | Winscard.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk