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)) {
...