Método IByteBuffer::Read

[O método Read 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. A interface IStream fornece funcionalidade semelhante.]

O método Read lê um número especificado de bytes do objeto buffer na memória, começando no ponteiro de busca atual.

Sintaxe

HRESULT Read(
  [out] BYTE *pByte,
  [in]  LONG cb,
  [out] LONG *pcbRead
);

Parâmetros

pByte [out]

Aponta para o buffer no qual os dados de fluxo são lidos. Se ocorrer um erro, esse valor será NULL.

cb [in]

Número de bytes de dados para tentar ler do objeto de fluxo.

pcbRead [out]

Endereço de uma variável LONG que recebe o número real de bytes lidos do objeto de fluxo. Você pode definir esse ponteiro como NULL para indicar que não está interessado nesse valor. Nesse caso, esse método não fornece o número real de bytes lidos.

Valor retornado

O valor retornado é um HRESULT. Um valor de S_OK indica que a chamada foi bem-sucedida.

Comentários

Esse método lê bytes desse objeto de fluxo na memória. O objeto de fluxo deve ser aberto no modo STGM_READ. Esse método ajusta o ponteiro de busca pelo número real de bytes lidos.

O número de bytes realmente lidos também é retornado no parâmetro pcbRead .

Notas aos Chamadores

O número real de bytes lidos pode ser menor do que o número de bytes solicitados se ocorrer um erro ou se o final do fluxo for atingido durante a operação de leitura.

Algumas implementações poderão retornar um erro se o final do fluxo for atingido durante a leitura. Você deve estar preparado para lidar com o retorno de erro ou S_OK valores retornados no final das leituras de fluxo.

Exemplos

O exemplo a seguir mostra a leitura de bytes do buffer.

BYTE     byAtr[32];
long     lBytesRead, i;
HRESULT  hr;

// pAtr is a pointer to a previously instantiated IByteBuffer.
// It was used in an earlier call by ISCard::get_Atr.
// Use IByteBuffer::Read to access the retrieved ATR bytes.
hr = pAtr->Read(byAtr, 32, &lBytesRead);
// Use the ATR value. (This example merely displays the bytes.)
for ( i = 0; i < lBytesRead; i++)
    printf("%c", *(byAtr + i));
printf("\n");

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
Scardssp.h
Biblioteca de tipos
Scardssp.tlb
DLL
Scardssp.dll
IID
IID_IByteBuffer é definido como E126F8FE-A7AF-11D0-B88A-00C04FD424B9