Udostępnij za pośrednictwem


IDiaDataSource::getStreamRawData

Pobiera nieprzetworzone bajty nazwanego strumienia.

Składnia

HRESULT getStreamRawData (
   LPCOLESTR  stream,
   ULONGLONG  cbOffset,
   ULONGLONG  cbRead,
   ULONGLONG* pcbRead,
   BYTE*      pbData
);

Parametry

stream

[in] Nazwa strumienia w ramach informacji debugowania.

cbOffset

[in] Przesunięcie w strumieniu w celu rozpoczęcia odczytywania danych.

cbRead

[in] Liczba bajtów do pobrania.

pcbRead

[out] Liczba bajtów odczytanych ze strumienia.

pbData

[out] Lokalizacja do przechowywania danych odczytu. W danych wejściowych musi mieć rozmiar co najmniej cbRead bajtów. Po pomyślnym powrocie *pcbRead bajty będą prawidłowe.

Wartość zwracana

Jeśli operacja powiedzie się, zwraca wartość S_OK. Jeśli nazwany strumień nie istnieje w pliku PDB, interfejs API może zakończyć się niepowodzeniem lub może zwrócić długość 0.

Uwagi

Bazy danych programu składają się z wielu strumieni danych. Niektóre z tych strumieni są nazwane. Ta metoda służy do zbierania informacji o tych nazwanych strumieniach.

Aby uzyskać rozmiar strumienia, użyj IDiaDataSourceEx::getStreamSize metody .

Przykład

ULONGLONG countBytes = 0;
LPCOLESTR stream = L"/names";
HRESULT hr = pSource->getStreamSize( stream, &countBytes );
if (SUCCEEDED(hr)) {
  for (ULONGLONG cbOffset = 0, cbRead = 0; cbOffset < countBytes; cbOffset += cbRead) {
    BYTE buffer[100];
    cbRead = 0;
    hr = pSource->getStreamRawBytes( stream, cbOffset, std::min(countBytes - cbOffset, sizeof(buffer)), &cbRead, buffer);
    if (SUCCEEDED(hr)) {
      ...

Zobacz też