PCSC那事儿(二十三--SCardSetAttrib)

来源:互联网 发布:程序员吴云洋 编辑:程序博客网 时间:2024/06/05 05:30

 

SCardSetAttrib

 

343行,SCardSetAttrib定义在winscard_clnt.c

实现如下:

 

2732 LONG SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,

2733         DWORD cbAttrLen)

2734 {

2735         LONG ret;

2736

2737         PROFILE_START

2738

2739         if (NULL == pbAttr || 0 == cbAttrLen)

2740                 return SCARD_E_INVALID_PARAMETER;

2741

 

2742         ret = SCardGetSetAttrib(hCard, SCARD_SET_ATTRIB, dwAttrId, (LPBYTE)pbAttr,

2743                 &cbAttrLen);

2744

2745         PROFILE_END(ret)

2746

2747         return ret;

2748 }

 

 

 

 

2734~2741行,检查检查。

2742行,SCardGetSetAttrib,前面提过了,不过这次第二个参数是 SCARD_SET_ATTRIB.

SCardSetAttrib也是SCardGetSetAttrib的一个wrapper.

 

343行,是要设置ATR字符串.ATR能设置的吗?看看服务端如何实现了?

 

 

345

346         printf("Testing SCardStatus/t/t: ");

347

348 #ifdef USE_AUTOALLOCATE

349         dwReaderLen = SCARD_AUTOALLOCATE;

350         dwAtrLen = SCARD_AUTOALLOCATE;

351         rv = SCardStatus(hCard, (LPSTR)&pcReaders, &dwReaderLen, &dwState, &dwProt,

352                 (LPBYTE)&pbAtr, &dwAtrLen);

353 #else

354         dwReaderLen = 100;

355         pcReaders   = malloc(sizeof(char) * 100);

356         dwAtrLen    = MAX_ATR_SIZE;

357

358         rv = SCardStatus(hCard, pcReaders, &dwReaderLen, &dwState, &dwProt,

359                 pbAtr, &dwAtrLen);

360 #endif

 

 

 

351行,358行,测试SCardStatus,同样存在是否由SCardStatus内部分配内存。

SCardStatus定义在winscard_clnt.c

实现如下:

原创粉丝点击