Fungsi MsiRecordReadStream (msiquery.h)

Fungsi MsiRecordReadStream membaca byte dari bidang aliran rekaman ke dalam buffer.

Sintaks

UINT MsiRecordReadStream(
  [in]      MSIHANDLE hRecord,
  [in]      UINT      iField,
  [out]     char      *szDataBuf,
  [in, out] LPDWORD   pcbDataBuf
);

Parameter

[in] hRecord

Tangani ke rekaman.

[in] iField

Menentukan bidang rekaman.

[out] szDataBuf

Buffer untuk menerima bidang stream. Anda harus memastikan buffer tujuan berukuran sama atau lebih besar dari buffer sumber. Lihat bagian Keterangan.

[in, out] pcbDataBuf

Menentukan jumlah buffer masuk dan keluar. Pada input, ini adalah ukuran penuh buffer. Pada output, ini adalah jumlah byte yang benar-benar ditulis ke buffer. Lihat bagian Keterangan.

Menampilkan nilai

Fungsi ini mengembalikan UINT.

Keterangan

Untuk membaca aliran, atur pcbDataBuf ke jumlah byte yang akan ditransfer dari aliran ke buffer setiap kali fungsi dipanggil. Saat kembali, MsiRecordReadStream mengatur ulang pcbDataBuf ke jumlah byte yang benar-benar ditransfer. Jika buffer lebih kecil dari aliran, aliran diposisikan ulang ketika buffer menjadi penuh sehingga data berikutnya dalam aliran ditransfer oleh panggilan berikutnya ke fungsi. Ketika tidak ada lagi byte yang tersedia, MsiRecordReadStream mengembalikan ERROR_SUCCESS.

Jika Anda meneruskan 0 untuk szDataBuf , maka pcbDataBuf diatur ulang ke jumlah byte di aliran yang tersisa untuk dibaca.

Sampel kode berikut membaca dari aliran yang berada di bidang 1 dari rekaman yang ditentukan oleh hRecord dan membaca seluruh aliran 8 byte sekaligus.

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

Lihat juga Batasan OLE pada Aliran.

Persyaratan

   
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Pemasang Windows pada Windows Server 2003 atau Windows XP
Target Platform Windows
Header msiquery.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

Fungsi Pemrosesan Rekaman