-1

WindowsMFCでJavaスマートカードアプリケーションを作成しています。接続されているスマートカードのドライブ名(「マイコンピュータ」に表示されている名前)を見つけるにはどうすればよいですか。たとえば。スマートカードを接続すると(スマートカードですが、メモリカードとして機能します)、「**リムーバブルディスク(F:)**」として表示されます。SCardConnect機能を使用してスマートカードに接続できます。SCardConnect関数からのハンドルリターンから、ドライブ名を取得できますか。

または、特定のドライブがスマートカードであるかどうかを確認する方法はありますか。すなわち。マシン内のリムーバブルディスクを簡単に見つけることができ、そこからスマートカードかどうかを知ることができます。

前もって感謝します

4

1 に答える 1

7

SmartCardデバイスを列挙するコードをCで記述しました。これが私が使用するコードです。

乾杯、詐欺

int findDevice(){
hContext = NULL;

log("\nSearching for the following device: XXX eKrypto Pinpad\n");

//Get a context to the resource manager 
lReturn = SCardEstablishContext(SCARD_SCOPE_USER,NULL,NULL,&hContext);
log("Context established.\n");
if(lReturn != SCARD_S_SUCCESS){
  logBytes("SCardEstablishContext failed with error: ", (byte *)&lReturn, sizeof(LONG));
  return 0;
}

contextEstablished = true;

//Get the readers list
DWORD chReaders = 250;
lReturn = SCardListReaders(hContext,NULL,readerNames,&chReaders);
log("Reader List obtained.\n");
if(lReturn != SCARD_S_SUCCESS){
    logBytes("  SCardListReaders failed with error: \n", (byte *)&lReturn, sizeof(LONG));
    return 0;
}

//Search for device
char *pReaders = readerNames;
log(pReaders);
while(strlen(pReaders) != 0 && deviceFound == false){
    if(!memcmp(pReaders, "ETS eKrypto Pinpad", 18)){
        deviceFound = true;
        memcpy(currentReader, pReaders, strlen(pReaders));
    }
    pReaders += strlen (pReaders)+1;
}
if(deviceFound == false){
    log("  Specified ETS device not found\n");
    return 0;
}

log("  Successful\n");
return 1;
}
于 2012-07-02T15:58:04.050 に答える