Fungsi SCardGetAttrib (winscard.h)
Fungsi SCardGetAttrib mengambil atribut pembaca saat ini untuk handel yang diberikan. Ini tidak mempengaruhi statuspembaca, driver, atau kartu.
Sintaks
LONG SCardGetAttrib(
[in] SCARDHANDLE hCard,
[in] DWORD dwAttrId,
[out] LPBYTE pbAttr,
[in, out] LPDWORD pcbAttrLen
);
Parameter
[in] hCard
Nilai referensi yang dikembalikan dari SCardConnect.
[in] dwAttrId
Pengidentifikasi untuk atribut yang akan didapatkan. Tabel berikut ini mencantumkan nilai yang mungkin untuk dwAttrId. Nilai-nilai ini bersifat baca-saja. Perhatikan bahwa vendor mungkin tidak mendukung semua atribut.
Nilai | Makna |
---|---|
|
Jawaban untuk mengatur ulang (ATR) string. |
|
DWORD dikodekan sebagai 0xDDDDCCCC, di mana DDDD = jenis saluran data dan CCCC = nomor saluran:
|
|
DWORD menunjukkan karakteristik mekanis mana yang didukung. Jika nol, tidak ada karakteristik khusus yang didukung. Perhatikan bahwa beberapa bit dapat diatur:
|
|
Waktu tunggu blok saat ini. |
|
Laju jam saat ini, dalam kHz. |
|
Waktu tunggu karakter saat ini. |
|
Faktor konversi laju bit. |
|
Pengodean kontrol blok kesalahan saat ini.
0 = pemeriksaan redundansi longitudinal (LRC) 1 = pemeriksaan redundansi siklus (CRC) |
|
Faktor konversi jam. |
|
Ukuran byte saat ini untuk kartu ukuran bidang informasi. |
|
Ukuran byte saat ini untuk perangkat ukuran bidang informasi. |
|
Waktu penjaga saat ini. |
|
DWORD dikodekan sebagai 0x0rrrpppp di mana rrr adalah RFU dan harus 0x000. pppp mengodekan jenis protokol saat ini. Bit mana pun yang telah ditetapkan menunjukkan protokol ISO mana yang saat ini sedang digunakan. (Misalnya, jika bit nol diatur, protokol T=0 berlaku.) |
|
Waktu tunggu pekerjaan saat ini. |
|
Laju jam default, dalam kHz. |
|
Tingkat data default, dalam bps. |
|
Nama tampilan pembaca. |
|
Disiapkan untuk penggunaan masa mendatang. |
|
Nama sistem pembaca. |
|
Contoh pembaca vendor ini yang terpasang pada komputer. Instans pertama adalah unit perangkat 0, berikutnya adalah unit 1 (jika merupakan merek pembaca yang sama) dan sebagainya. Dua merek pembaca yang berbeda keduanya akan memiliki nol untuk nilai ini. |
|
Byte tunggal. Nol jika kontak listrik kartu pintar tidak aktif; bukan nol jika kontak aktif. |
|
Byte tunggal yang menunjukkan kehadiran kartu pintar: 0 = tidak ada 1 = kartu ada tetapi tidak ditelan (hanya berlaku jika pembaca mendukung menelan kartu pintar) 2 = kartu ada (dan ditelan jika pembaca mendukung menelan kartu pintar) 4 = kartu disita. |
|
Byte tunggal yang menunjukkan jenis kartu pintar: 0 = tipe tidak diketahui 1 = 7816 Asinkron 2 = 7816 Sinkron Nilai lain RFU. |
|
Laju jam maksimum, dalam kHz. |
|
Tingkat data maksimum, dalam bps. |
|
Byte maksimum untuk perangkat ukuran file informasi. |
|
Nol jika perangkat tidak mendukung daya mati saat kartu pintar dimasukkan. Bukan nol jika tidak. |
|
DWORD dikodekan sebagai 0x0rrrpppp di mana rrr adalah RFU dan harus 0x000. pppp mengodekan jenis protokol yang didukung. '1' dalam posisi bit tertentu menunjukkan dukungan untuk protokol ISO terkait, jadi jika bit nol dan satu diatur, protokol T=0 dan T=1 didukung. |
|
Nomor seri perangkat antarmuka yang disediakan vendor. |
|
Jenis perangkat antarmuka yang disediakan vendor (penetapan model pembaca). |
|
Versi perangkat antarmuka yang disediakan vendor (DWORD dalam bentuk 0xMMmmbbbb di mana MM = versi utama, mm = versi minor, dan bbbb = nomor build). |
|
Nama vendor. |
[out] pbAttr
Pointer ke buffer yang menerima atribut yang ID-nya disediakan dalam dwAttrId. Jika nilai ini NULL, SCardGetAttrib mengabaikan panjang buffer yang disediakan dalam pcbAttrLen, menulis panjang buffer yang akan dikembalikan jika parameter ini belum NULL ke pcbAttrLen, dan mengembalikan kode keberhasilan.
[in, out] pcbAttrLen
Panjang buffer pbAttr dalam byte, dan menerima panjang sebenarnya dari atribut yang diterima Jika panjang buffer ditentukan sebagai SCARD_AUTOALLOCATE, maka pbAttr dikonversi ke penunjuk ke penunjuk byte, dan menerima alamat blok memori yang berisi atribut . Blok memori ini harus dialokasikan dengan SCardFreeMemory.
Mengembalikan nilai
Fungsi ini mengembalikan nilai yang berbeda tergantung pada apakah berhasil atau gagal.
Menampilkan kode | Deskripsi |
---|---|
|
SCARD_S_SUCCESS. |
|
ERROR_NOT_SUPPORTED. |
|
Kode kesalahan. Untuk informasi selengkapnya, lihat Nilai Pengembalian Kartu Pintar. |
Keterangan
Fungsi SCardGetAttrib adalah fungsi akses kartu langsung. Untuk informasi selengkapnya tentang fungsi akses langsung lainnya, lihat Fungsi Akses Kartu Langsung.
Contoh
Contoh berikut menunjukkan cara mengambil atribut untuk pembaca kartu. Contoh mengasumsikan bahwa hCardHandle adalah handel valid yang diperoleh dari panggilan sebelumnya ke fungsi SCardConnect .
LPBYTE pbAttr = NULL;
DWORD cByte = SCARD_AUTOALLOCATE;
DWORD i;
LONG lReturn;
lReturn = SCardGetAttrib(hCardHandle,
SCARD_ATTR_VENDOR_NAME,
(LPBYTE)&pbAttr,
&cByte);
if ( SCARD_S_SUCCESS != lReturn )
{
if ( ERROR_NOT_SUPPORTED == lReturn )
printf("Value not supported\n");
else
{
// Some other error occurred.
printf("Failed SCardGetAttrib - %x\n", lReturn);
exit(1); // Or other appropriate action
}
}
else
{
// Output the bytes.
for (i = 0; i < cByte; i++)
printf("%c", *(pbAttr+i));
printf("\n");
// Free the memory when done.
// hContext was set earlier by SCardEstablishContext
lReturn = SCardFreeMemory( hContext, pbAttr );
}
Persyaratan
Persyaratan | Nilai |
---|---|
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