Compartilhar via


Método ISCardCmd::BuildCmd

[O método BuildCmd 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 BuildCmd constrói uma APDU (unidade de dados de protocolo de aplicativo) de comando válida para transmissão para um cartão inteligente.

Sintaxe

HRESULT BuildCmd(
  [in] BYTE         byClassId,
  [in] BYTE         byInsId,
  [in] BYTE         byP1,
  [in] BYTE         byP2,
  [in] LPBYTEBUFFER pbyData,
  [in] LONG         *p1Le
);

Parâmetros

byClassId [in]

Identificador de classe de comando.

byInsId [in]

Identificador de instrução de comando.

byP1 [in]

O primeiro parâmetro do comando.

byP2 [in]

Segundo parâmetro do comando.

pbyData [in]

Ponteiro para a parte de dados do comando.

p1Le [in]

Ponteiro para um inteiro LONG que contém o comprimento esperado dos dados retornados.

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
Um dos parâmetros não é válido.
E_POINTER
Um ponteiro inválido foi passado.
E_OUTOFMEMORY
Sem memória.

 

Comentários

Para encapsular o comando em outro comando, chame Encapsular.

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 construir uma APDU de comando. O exemplo pressupõe que pISCardCmd é um ponteiro válido para uma instância da interface ISCardCmd e que pIByteRequest é um ponteiro válido para uma instância da interface IByteBuffer inicializada com uma chamada anterior para o método IByteBuffer::Initialize .

LONG       lLe = 0;
HRESULT    hr;

hr = pISCardCmd->BuildCmd(0x00,   // Some cards prefer 0xC0
                          0xa4,   // 'Select File'
                          0x00,
                          0x00,
                          pIByteRequest,
                          &lLe);
if (FAILED(hr))
{
    printf("Failed ISCardCmd::BuildCmd\n");
    // Take other error handling action 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

Encapsular

ISCardCmd