Partager via


ISCardCmd::get_ApduReply, méthode

[La méthode get_ApduReply est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il n’est pas disponible pour une utilisation dans Windows Server 2003 avec Service Pack 1 (SP1) et versions ultérieures, Windows Vista, Windows Server 2008 et les versions ultérieures du système d’exploitation. Les modules de carte à puce offrent des fonctionnalités similaires.]

La méthode get_ApduReply récupère l’API de réponse, en la plaçant dans une mémoire tampon d’octets spécifique. La réponse peut être NULL si aucune transaction n’a été effectuée sur la commande APDU.

Syntaxe

HRESULT get_ApduReply(
  [out] LPBYTEBUFFER *ppReplyApdu
);

Paramètres

ppReplyApdu [out]

Pointeur vers la mémoire tampon d’octets (mappée via un objet IStream ) qui contient le message de réponse APDU au retour.

Valeur retournée

La méthode retourne l’une des valeurs possibles suivantes.

Code de retour Description
S_OK
Opération exécutée avec succès.
E_INVALIDARG
Le paramètre ppReplyApdu n’est pas valide.
E_POINTER
Un pointeur incorrect a été passé dans ppReplyApdu.
E_OUTOFMEMORY
Mémoire insuffisante.

 

Notes

Pour déterminer la longueur de la réponse APDU, appelez get_ApduReplyLength.

Pour définir une nouvelle API de réponse, appelez put_ApduReply.

Pour obtenir la liste de toutes les méthodes fournies par cette interface, consultez ISCardCmd.

En plus des codes d’erreur COM répertoriés ci-dessus, cette interface peut renvoyer un code d’erreur smart carte si une fonction smart carte a été appelée pour terminer la demande. Pour plus d’informations, consultez Valeurs de retour de carte à puce.

Exemples

L’exemple suivant montre comment récupérer des données de réponse. L’exemple suppose que lLe est une variable de type LONG dont la valeur a été définie par un appel précédent à la méthode ISCardCmd::get_ApduReplyLength, que pIByteReply est un pointeur valide vers un instance de l’interface IByteBuffer et que pISCardCmd est un pointeur valide vers un instance de l’interface ISCardCmd.

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.
    }
}

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
Fin de la prise en charge des clients
Windows XP
Fin de la prise en charge des serveurs
Windows Server 2003
En-tête
Scarddat.h
Bibliothèque de types
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd est défini comme D5778AE3-43DE-11D0-9171-00AA00C18068

Voir aussi

get_ApduReplyLength

ISCardCmd

put_ApduReply