2009-08-12 7 views
1

Я пытаюсь вычислить имя потока для именованной части свойства файла MSG, в частности строковые именованные свойства. MSG file format specificationsays, что идентификатор генерируется следующим образом:Расчет идентификатора потока MSG

Stream ID = 0x100m ((ID XOR (GUID index << 1 | 1)) MOD 0x1f

В случае, если значение идентификатора является CRC-32 для "Unicode идентификатора имени". Я также уверен, что 0x100m на самом деле 0x1000.

Это каким-то образом отображает 'x-mailer' к 0x100f, когда индекс GUID равен 3. Значение идентификатора 0x894e50ff (так как он хранится в другом месте), но как 'x-mailer' преобразуются в это значение?

(Это свойства, хранящиеся под "__nameid_version1.0", частично внутри потока "__substg1.0_00040102").

ответ

1

Вот answer от инженера Microsoft:

Привет Люк,

К сожалению это заняло так много времени, чтобы вернуться к вас об этом. Я проверил расчет CRC-32 , и это действительно приводит к значению 0xff504e89 для строки «x-mailer». Две вещи, которые вам нужно рассмотреть:

  1. убедитесь, что вы вычисления CRC для «X-Mailer» в виде строки UNICODE. ASCII даст вам другой результат .
  2. убедитесь, что вы используете алгоритм, определенный MS-OXRTFCP разделов 3.1.3.2 и 3.1.4, включая с использованием предварительно вычисленные таблиц подстановок и соответствующий алгоритм псевдокодом.

Если вы им следуете, вы получите правильный результат .

Дайте мне знать, если вы в состоянии получить этот рабочий.

С уважением, Том Jebo Старший Поддержка Эскалация инженер Microsoft DS Protocol Team

Смежные вопросы