IDiaDataSource ::getStreamRawData
Récupère les octets bruts du flux nommé.
Syntaxe
HRESULT getStreamRawData (
LPCOLESTR stream,
ULONGLONG cbOffset,
ULONGLONG cbRead,
ULONGLONG* pcbRead,
BYTE* pbData
);
Paramètres
stream
[in] Nom du flux dans les informations de débogage.
cbOffset
[in] Décalage dans le flux à partir duquel commencer la lecture des données.
cbRead
[in] Nombre d’octets à récupérer.
pcbRead
[out] Nombre d’octets réellement lus à partir du flux.
pbData
[out] Emplacement pour stocker les données de lecture. L’entrée doit comporter au moins cbRead
des octets de taille. Une fois les octets retournés *pcbRead
réussis, ils sont valides.
Valeur de retour
En cas de réussite, retourne S_OK
. Si le flux nommé n’existe pas dans la base de données PDB, l’API peut échouer ou retourner une longueur de 0.
Notes
Les bases de données de programme sont constituées de plusieurs flux de données. Certains de ces flux sont nommés. Vous pouvez utiliser cette méthode pour collecter des informations sur ces flux nommés.
Pour obtenir la taille du flux, utilisez la IDiaDataSourceEx::getStreamSize
méthode.
Exemple
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)) {
...