2013-09-03 8 views
-1

CryptAcquireContext()에서 암호 컨텍스트를 얻으려면 현재 슬롯에있는 스마트 카드의 공급자 이름을 알아야합니다.SCardGetCardTypeProviderName()에 대한 스마트 카드의 "이름"얻기

설명서에 따르면 SCardGetCardTypeProviderName()이이를 수행하지만, 매개 변수 2는 카드 이름이므로 비대화 형 방식을 결정하는 방법을 알 수 없습니다. 모든 설명서/예제 나는 하코드 이름을 보거나 UI를 표시하는 SCardUIDlgSelectCard()에 의존합니다.

그것이 내가 SCardListCards()에서 채우는거야하는, 다시 삽입 한 스마트 카드의 이름을 식별 아무것도 통과하지 않는 것 (스마트 카드 이름의 목록을 소요하지만 마찬가지로, 주변 SCardLocateCards()을 읽고.

I 내가 뭔가 명백한 실종 해요 생각하지만, 나는 무엇을 볼 수 없습니다

답변

0

내가 잃어버린 무언가 strucutre 다음 SCardListCards에서 사용할 수있는 스마트 카드의 ATR의 일환으로 SCardLocateCards 반환 :..

SCARD_READERSTATE smartcardState[MAXIMUM_SMARTCARD_READERS]; 

result = SCardLocateCards (context, cardsList, smartcardState, readerCount); 
if (result == SCARD_S_SUCCESS) { 
    int i; 
    for (i = 0; i < readerCount; i++) 
    { 
     if (SCARD_STATE_ATRMATCH & smartcardState[i].dwEventState) { 
      break; 
     } 
    } 

    result = SCardListCards (NULL, smartcardState[i].rgbAtr, NULL, NULL, cardName, &count); 
    if (result == SCARD_S_SUCCESS) { 
     // Cardname for CryptAquireContext in cardName 
    } 
} 

누군가가 더 나은 경로 전달을하면 알려주세요 - 나는 이것이 내가 볼 수있는 유일한 방법이라고 생각합니다.