Freigeben über


ISCardCmd::get_ApduReply-Methode

[Die get_ApduReply-Methode ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt "Anforderungen" angegeben sind. Es ist nicht für die Verwendung in Windows Server 2003 mit Service Pack 1 (SP1) und höher, Windows Vista, Windows Server 2008 und nachfolgenden Versionen des Betriebssystems verfügbar. Die Smartcardmodule bieten ähnliche Funktionen.]

Die get_ApduReply-Methode ruft die Antwort-APDU ab und platziert sie in einem bestimmten Bytepuffer. Die Antwort kann NULL sein, wenn keine Transaktion für den Befehl APDU ausgeführt wurde.

Syntax

HRESULT get_ApduReply(
  [out] LPBYTEBUFFER *ppReplyApdu
);

Parameter

ppReplyApdu [out]

Zeiger auf den Bytepuffer (zugeordnet über ein IStream-Objekt ), der die APDU-Antwortnachricht bei der Rückgabe enthält.

Rückgabewert

Die -Methode gibt einen der folgenden möglichen Werte zurück.

Rückgabecode BESCHREIBUNG
S_OK
Operation erfolgreich abgeschlossen.
E_INVALIDARG
Der ppReplyApdu-Parameter ist ungültig.
E_POINTER
Ein fehlerhafter Zeiger wurde in ppReplyApdu übergeben.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

 

Bemerkungen

Um die Länge der APDU-Antwort zu bestimmen, rufen Sie get_ApduReplyLength auf.

Um eine neue Antwort-APDU festzulegen, rufen Sie put_ApduReply auf.

Eine Liste aller von dieser Schnittstelle bereitgestellten Methoden finden Sie unter ISCardCmd.

Zusätzlich zu den oben aufgeführten COM-Fehlercodes gibt diese Schnittstelle möglicherweise einen Intelligenten Karte Fehlercode zurück, wenn eine Smart Karte-Funktion aufgerufen wurde, um die Anforderung abzuschließen. Weitere Informationen finden Sie unter Smartcard-Rückgabewerte.

Beispiele

Das folgende Beispiel zeigt, wie Antwortdaten abgerufen werden. Im Beispiel wird davon ausgegangen, dass lLe eine Variable vom Typ LONG ist, deren Wert durch einen vorherigen Aufruf der ISCardCmd::get_ApduReplyLength-Methode festgelegt wurde, dass pIByteReply ein gültiger Zeiger auf einen instance der IByteBuffer-Schnittstelle ist und dass pISCardCmd ein gültiger Zeiger auf eine instance der ISCardCmd-Schnittstelle ist.

HRESULT      hr;

if (lLe > 0)
{
    // Get reply data if available.
    hr = pISCardCmd->get_ApduReply(&pIByteReply);
    if (FAILED(hr)) 
    {
        printf("Failed ISCardCmd::get_ApduReply.\n");
        // Take other error handling action as needed.
    }
    else
    {
        BYTE byReplyBytes[256];
        LONG lBytesRead;

        hr = pIByteReply->Read(byReplyBytes, lLe, &lBytesRead);
        if (FAILED(hr))
        {
            printf("Failed IByteBuffer::Read.\n");
            // Take other error handling action as needed.
        }
        // Use the bytes in byReplyBytes as needed.
    }
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003 [nur Desktop-Apps]
Ende des Supports (Client)
Windows XP
Ende des Supports (Server)
Windows Server 2003
Header
Scarddat.h
Typbibliothek
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd ist definiert als D5778AE3-43DE-11D0-9171-00AA00C18068

Weitere Informationen

get_ApduReplyLength

ISCardCmd

put_ApduReply