Неправильный ответ, но комментарии могут быть полезны.Мой другой ответ более правильный.
Этот вопрос можно улучшить.Например, вы можете показать некоторые примеры данных и описать результаты, когда попытаетесь прочитать эти данные с помощью своего кода.
Но я постараюсь ответить на основе имеющейся у меня информации.Вы вычислили длину текста следующим образом:
textLen = (pMime->wByteCount) - pMime->wHeadersLen - pMime->wBoundaryLen;
Мне это кажется правильным, но затем вы делаете это:
pText = (char *)pMime + sizeof(MIME_PART) + wHeadersLen;
wHeadersLen
гарантированно равно pMime->wHeadersLen
?Кроме того, вы не учли длину границы.Разве вы не должны вместо этого вычислять адрес?
pText = (char *)pMime + sizeof(MIME_PART) + pMime->wHeadersLen + pMime->wBoundaryLen;