Metodo ISCardCmd::get_ApduReply
[Il metodo get_ApduReply è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. Non è disponibile per l'uso in Windows Server 2003 con Service Pack 1 (SP1) e versioni successive, Windows Vista, Windows Server 2008 e versioni successive del sistema operativo. I moduli smart card offrono funzionalità simili.
Il metodo get_ApduReply recupera l'APDU di risposta, inserendola in un buffer di byte specifico. La risposta può essere NULL se non è stata eseguita alcuna transazione nel comando APDU.
Sintassi
HRESULT get_ApduReply(
[out] LPBYTEBUFFER *ppReplyApdu
);
Parametri
-
ppReplyApdu [out]
-
Puntatore al buffer di byte (mappato tramite un oggetto IStream ) che contiene il messaggio di risposta APDU al momento della restituzione.
Valore restituito
Il metodo restituisce uno dei valori possibili seguenti.
Codice restituito | Descrizione |
---|---|
|
Operazione completata correttamente. |
|
Il parametro ppReplyApdu non è valido. |
|
Un puntatore non valido è stato passato in ppReplyApdu. |
|
Memoria insufficiente. |
Commenti
Per determinare la lunghezza della risposta APDU, chiamare get_ApduReplyLength.
Per impostare una nuova APDU di risposta, chiamare put_ApduReply.
Per un elenco di tutti i metodi forniti da questa interfaccia, vedere ISCardCmd.
Oltre ai codici di errore COM elencati in precedenza, questa interfaccia può restituire un codice di errore della smart card se è stata chiamata una funzione smart card per completare la richiesta. Per altre informazioni, vedere Valori restituiti della smart card.
Esempio
Nell'esempio seguente viene illustrato come recuperare i dati di risposta. L'esempio presuppone che lLe sia una variabile di tipo LONG il cui valore è stato impostato da una chiamata precedente al metodo ISCardCmd::get_ApduReplyLength , che pIByteReply è un puntatore valido a un'istanza dell'interfaccia IByteBuffer e che pISCardCmd è un puntatore valido a un'istanza dell'interfaccia 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.
}
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows XP [solo app desktop] |
Server minimo supportato |
Windows Server 2003 [solo app desktop] |
Fine del supporto client |
Windows XP |
Fine del supporto server |
Windows Server 2003 |
Intestazione |
|
Libreria dei tipi |
|
DLL |
|
IID |
IID_ISCardCmd è definito come D5778AE3-43DE-11D0-9171-00AA00C18068 |
Vedi anche