Funzione MsiRecordReadStream (msiquery.h)
La funzione MsiRecordReadStream legge byte da un campo del flusso di record in un buffer.
Sintassi
UINT MsiRecordReadStream(
[in] MSIHANDLE hRecord,
[in] UINT iField,
[out] char *szDataBuf,
[in, out] LPDWORD pcbDataBuf
);
Parametri
[in] hRecord
Gestire il record.
[in] iField
Specifica il campo del record.
[out] szDataBuf
Buffer per ricevere il campo di flusso. È necessario assicurarsi che il buffer di destinazione sia la stessa dimensione o maggiore del buffer di origine. Vedere la sezione relativa alle osservazioni.
[in, out] pcbDataBuf
Specifica il numero di buffer in e out. In input, questa è la dimensione completa del buffer. Nell'output si tratta del numero di byte effettivamente scritti nel buffer. Vedere la sezione relativa alle osservazioni.
Valore restituito
Questa funzione restituisce UINT.
Commenti
Per leggere un flusso, impostare pcbDataBuf sul numero di byte da trasferire dal flusso al buffer ogni volta che viene chiamata la funzione. Al ritorno, msiRecordReadStream reimposta pcbDataBuf al numero di byte effettivamente trasferiti. Se il buffer è minore del flusso, il flusso viene riposizionato quando il buffer diventa pieno in modo che i dati successivi nel flusso vengano trasferiti dalla chiamata successiva alla funzione. Quando non sono disponibili più byte, MsiRecordReadStream restituisce ERROR_SUCCESS.
Se si passa 0 per szDataBuf , pcbDataBuf viene reimpostato sul numero di byte nel flusso rimanente da leggere.
L'esempio di codice seguente legge da un flusso che si trova nel campo 1 di un record specificato da hRecord e legge l'intero flusso 8 byte alla volta.
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
Vedere anche limitazioni OLE nei flussi.
Requisiti
Client minimo supportato | Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer in Windows Server 2003 o Windows XP |
Piattaforma di destinazione | Windows |
Intestazione | msiquery.h |
Libreria | Msi.lib |
DLL | Msi.dll |