Метод IByteBuffer::Read
[Метод Read доступен для использования в операционных системах, указанных в разделе Требования. Он недоступен для использования в Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версиях, Windows Vista, Windows Server 2008 и последующих версиях операционной системы. Интерфейс IStream предоставляет аналогичные функциональные возможности.]
Метод Read считывает указанное количество байтов из объекта buffer в память, начиная с текущего указателя поиска.
Синтаксис
HRESULT Read(
[out] BYTE *pByte,
[in] LONG cb,
[out] LONG *pcbRead
);
Параметры
-
pByte [out]
-
Указывает на буфер, в который считываются данные потока. При возникновении ошибки это значение равно NULL.
-
cb [in]
-
Число байтов данных, которые необходимо считать из объекта потока.
-
pcbRead [out]
-
Адрес переменной LONG , которая получает фактическое количество байтов, считанных из объекта потока. Для этого указателя можно задать значение NULL , чтобы указать, что это значение вас не интересует. В этом случае этот метод не предоставляет фактическое число прочитанных байтов.
Возвращаемое значение
Возвращаемое значение — HRESULT. Значение S_OK указывает, что вызов выполнен успешно.
Комментарии
Этот метод считывает байты из этого объекта потока в память. Объект потока должен быть открыт в режиме STGM_READ. Этот метод корректирует указатель поиска на фактическое число прочитанных байтов.
Число фактических прочитанных байтов также возвращается в параметре pcbRead .
Примечания для тех, кто вызывает этот метод
Фактическое число прочитанных байтов может быть меньше запрошенного числа байтов при возникновении ошибки или при достижении конца потока во время операции чтения.
Некоторые реализации могут возвращать ошибку, если во время чтения достигается конец потока. Необходимо быть готовым к решению проблемы с возвратом ошибок или 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 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
IID |
IID_IByteBuffer определяется как E126F8FE-A7AF-11D0-B88A-00C04FD424B9 |