IByteBuffer::Read 方法

[ Read 方法可用于“要求”部分中指定的操作系统。 它不适用于 Windows Server 2003 Service Pack 1 (SP1) 及更高版本、Windows Vista、Windows Server 2008 和操作系统的后续版本。 IStream 接口提供类似的功能。]

Read 方法从当前搜寻指针处开始,将缓冲区对象中的指定字节数读取到内存中。

语法

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

parameters

pByte [out]

指向在其中读取流数据的缓冲区。 如果发生错误,此值为 NULL

cb [in]

要尝试从流对象中读取的数据字节数。

2013 年 [out]

接收从流对象读取的实际字节数的 LONG 变量的地址。 可以将此指针设置为 NULL ,以指示你对此值不感兴趣。 在这种情况下,此方法不提供实际读取的字节数。

返回值

返回值为 HRESULT。 值 S_OK 表示调用成功。

备注

此方法将字节从此流对象读取到内存中。 必须在STGM_READ模式下打开流对象。 此方法按读取的实际字节数调整查找指针。

实际读取的字节数也返回在 参数中

调用方说明

如果发生错误或在读取操作期间到达流的末尾,读取的实际字节数可以小于请求的字节数。

如果在读取期间到达流的末尾,某些实现可能会返回错误。 必须准备好处理错误返回或在流读取结束时S_OK返回值。

示例

以下示例显示从缓冲区读取字节。

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");

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
终止客户端支持
Windows XP
终止服务器支持
Windows Server 2003
标头
Scardssp.h
类型库
Scardssp.tlb
DLL
Scardssp.dll
IID
IID_IByteBuffer定义为 E126F8FE-A7AF-11D0-B88A-00C04FD424B9