Функция MsiRecordReadStream (msiquery.h)
Функция MsiRecordReadStream считывает байты из поля потока записей в буфер.
Синтаксис
UINT MsiRecordReadStream(
[in] MSIHANDLE hRecord,
[in] UINT iField,
[out] char *szDataBuf,
[in, out] LPDWORD pcbDataBuf
);
Параметры
[in] hRecord
Дескриптор записи.
[in] iField
Указывает поле записи.
[out] szDataBuf
Буфер для получения поля потока. Убедитесь, что целевой буфер имеет тот же размер или больше, чем исходный буфер. См. раздел «Примечания».
[in, out] pcbDataBuf
Указывает количество входных и выходных буферов. На входных данных это полный размер буфера. В выходных данных это число байтов, которые были записаны в буфер. См. раздел «Примечания».
Возвращаемое значение
Эта функция возвращает UINT.
Комментарии
Чтобы прочитать поток, задайте для pcbDataBuf количество байтов, которые будут передаваться из потока в буфер при каждом вызове функции. При возврате MsiRecordReadStream сбрасывает pcbDataBuf до количества фактически переданных байтов. Если буфер меньше потока, поток перемещается при заполнении буфера таким образом, что следующие данные в потоке передаются при следующем вызове функции. Если доступных байтов больше нет, MsiRecordReadStream возвращает ERROR_SUCCESS.
Если передать значение 0 для szDataBuf , pcbDataBuf сбрасывается до количества байтов в потоке, оставшихся для чтения.
Следующий пример кода считывает из потока, который находится в поле 1 записи, указанной параметром hRecord, и считывает весь поток по 8 байт за раз.
char szBuffer[8];
PMSIHANDLE hRecord;
DWORD cbBuf = sizeof(szBuffer);
do
{
if (MsiRecordReadStream(hRecord, 1, szBuffer,
&cbBuf) != ERROR_SUCCESS)
break; /* error */
}
while (cbBuf == 8); //continue reading the stream while you receive a full buffer
//cbBuf will be less once you reach the end of the stream and cannot fill your
//buffer with stream data
См. также ограничения OLE для потоков.
Требования
Минимальная версия клиента | Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или Установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows в Windows Server 2003 или Windows XP |
Целевая платформа | Windows |
Header | msiquery.h |
Библиотека | Msi.lib |
DLL | Msi.dll |