ISCardCmd::get _ ApduReply-Methode

[Die get _ ApduReply-Methode ist für die Verwendung in den Im Abschnitt Anforderungen angegebenen Betriebssystemen verfügbar. 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 abund platziert sie in einem bestimmten Bytepuffer. Die Antwort kann NULL sein, wenn keine Transaktion für die Befehls-APDU ausgeführt wurde.

Syntax

HRESULT get_ApduReply(
  [out] LPBYTEBUFFER *ppReplyApdu
);

Parameter

ppReplyApdu [ out]

Zeiger auf den Bytepuffer (zugeordnet durch 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-ZEIGER
Ein fehlerhafter Zeiger wurde in ppReplyApdu übergeben.
E _ OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

Bemerkungen

Rufen Sie get _ ApduReplyLengthauf, um die Länge der APDU-Antwort zu bestimmen.

Rufen Sie zum Festlegen einer neuen Antwort-APDU 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 Smartcard-Fehlercode zurück, wenn eine Smartcardfunktion aufgerufen wurde, um die Anforderung zu erfüllen. 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 eine Instanz der IByteBuffer-Schnittstelle ist und dass pISCardCmd ein gültiger Zeiger auf eine Instanz 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.
    }
}

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Nur [ XP-Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Nur Server [ 2003-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 als D5778AE3-43DE-11D0-9171-00AA00C18068 definiert.

Weitere Informationen

get _ ApduReplyLength

ISCardCmd

put _ ApduReply