Condividi tramite


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
S_OK
Operazione completata correttamente.
E_INVALIDARG
Il parametro ppReplyApdu non è valido.
E_POINTER
Un puntatore non valido è stato passato in ppReplyApdu.
E_OUTOFMEMORY
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
Scarddat.h
Libreria dei tipi
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd è definito come D5778AE3-43DE-11D0-9171-00AA00C18068

Vedi anche

get_ApduReplyLength

ISCardCmd

put_ApduReply