Я встроил собственный поток в дампе (т. Е. Передал аргумент UserStreamParam функции MiniDumpWriteDump). Теперь я пытаюсь извлечь поток из расширения WinDbg. (Обратите внимание, что я проверил, что я могу получить поток, используя функцию MiniDumpReadDumpStream).Как извлечь пользовательский поток из расширения WinDbg?
Я использую метод IDebugAdvanced2::Request с запросом DEBUG_REQUEST_READ_USER_MINIDUMP_STREAM. Я могу получить данные из стандартных потоков. Например, следующий фрагмент будет правильно извлекать содержимое потока информации misc.
DEBUG_READ_USER_MINIDUMP_STREAM rums = {};
rums.StreamType = MiscInfoStream;
rums.Buffer = &buf;
rums.BufferSize = sizeof buf;
hr = p->Request(DEBUG_REQUEST_READ_USER_MINIDUMP_STREAM,
&rums, sizeof rums, 0, 0, 0);
Однако, пытаясь получить свой собственный поток приведет к ошибке (0x80070570, ERROR_FILE_CORRUPT) и Windbg выходов
Dir entry 11, ??? stream has unknown stream type 6381921
Обратите внимание, что появляется такое же сообщение, как часть .dumpdebug
продукции.
Stream 11: type ??? (6381921), size 00000038, RVA 00033FA9
Dir entry 11, ??? stream has unknown stream type 6381921
В чем проблема? Как получить содержимое моего пользовательского потока?
Это то, что я пробовал и не работает (вот что говорит вторая часть вопроса). – avakar