Compartilhar via


Método ISCardCmd::get_ApduReply

[O método get_ApduReply está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele não está disponível para uso no Windows Server 2003 com Service Pack 1 (SP1) e posterior, Windows Vista, Windows Server 2008 e versões subsequentes do sistema operacional. Os Módulos de Cartão Inteligente fornecem funcionalidade semelhante.]

O método get_ApduReply recupera a APDU de resposta, colocando-a em um buffer de bytes específico. A resposta poderá ser NULL se nenhuma transação tiver sido executada no comando APDU.

Sintaxe

HRESULT get_ApduReply(
  [out] LPBYTEBUFFER *ppReplyApdu
);

Parâmetros

ppReplyApdu [out]

Ponteiro para o buffer de bytes (mapeado por meio de um objeto IStream ) que contém a mensagem de resposta APDU no retorno.

Valor retornado

O método retorna um dos valores possíveis a seguir.

Código de retorno Descrição
S_OK
Operação concluída com sucesso.
E_INVALIDARG
O parâmetro ppReplyApdu não é válido.
E_POINTER
Um ponteiro inválido foi passado em ppReplyApdu.
E_OUTOFMEMORY
Sem memória.

 

Comentários

Para determinar o comprimento da resposta apdu, chame get_ApduReplyLength.

Para definir uma nova APDU de resposta, chame put_ApduReply.

Para obter uma lista de todos os métodos fornecidos por essa interface, consulte ISCardCmd.

Além dos códigos de erro COM listados acima, essa interface poderá retornar um código de erro de cartão inteligente se uma função de cartão inteligente tiver sido chamada para concluir a solicitação. Para obter mais informações, consulte Valores retornados de cartão inteligente.

Exemplos

O exemplo a seguir mostra como recuperar dados de resposta. O exemplo pressupõe que lLe é uma variável do tipo LONG cujo valor foi definido por uma chamada anterior para o método ISCardCmd::get_ApduReplyLength , que pIByteReply é um ponteiro válido para uma instância da interface IByteBuffer e que pISCardCmd é um ponteiro válido para uma instância da 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.
    }
}

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Fim do suporte ao cliente
Windows XP
Fim do suporte ao servidor
Windows Server 2003
Cabeçalho
Scarddat.h
Biblioteca de tipos
Scarddat.tlb
DLL
Scardssp.dll
IID
IID_ISCardCmd é definido como D5778AE3-43DE-11D0-9171-00AA00C18068

Confira também

get_ApduReplyLength

ISCardCmd

put_ApduReply