Función MsiRecordReadStream (msiquery.h)
La función MsiRecordReadStream lee bytes de un campo de secuencia de registros en un búfer.
Sintaxis
UINT MsiRecordReadStream(
[in] MSIHANDLE hRecord,
[in] UINT iField,
[out] char *szDataBuf,
[in, out] LPDWORD pcbDataBuf
);
Parámetros
[in] hRecord
Identificador del registro.
[in] iField
Especifica el campo del registro.
[out] szDataBuf
Búfer para recibir el campo de flujo. Debe asegurarse de que el búfer de destino tenga el mismo tamaño o mayor que el búfer de origen. Consulte la sección Comentarios.
[in, out] pcbDataBuf
Especifica el número de búferes dentro y fuera. En la entrada, este es el tamaño completo del búfer. En la salida, este es el número de bytes que se escribieron realmente en el búfer. Consulte la sección Comentarios.
Valor devuelto
Esta función devuelve UINT.
Comentarios
Para leer una secuencia, establezca pcbDataBuf en el número de bytes que se van a transferir de la secuencia al búfer cada vez que se llama a la función. Al devolver, MsiRecordReadStream restablece pcbDataBuf al número de bytes que se transfirieron realmente. Si el búfer es menor que el flujo, se cambia la posición de la secuencia cuando el búfer se llena para que la siguiente llamada a la función transfiera los datos siguientes del flujo. Cuando no hay más bytes disponibles, MsiRecordReadStream devuelve ERROR_SUCCESS.
Si pasa 0 para szDataBuf , pcbDataBuf se restablece al número de bytes de la secuencia restante que se va a leer.
El ejemplo de código siguiente lee de una secuencia que se encuentra en el campo 1 de un registro especificado por hRecord y lee toda la secuencia 8 bytes a la vez.
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
Consulte también Limitaciones OLE en secuencias.
Requisitos
Cliente mínimo compatible | Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 en Windows Server 2008 o Windows Vista. Windows Installer en Windows Server 2003 o Windows XP |
Plataforma de destino | Windows |
Encabezado | msiquery.h |
Library | Msi.lib |
Archivo DLL | Msi.dll |