Что означает код HRESULT 0x80097007 (MSSIPOTF_E_TABLE_LONGWORD)?

 
Предыдущий Следующий
MSSIPOTF_E_TABLE_TAGORDER MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT

MSSIPOTF_E_TABLE_LONGWORD

Таблица начинается на неправильной границе

MSSIPOTF_E_TABLE_LONGWORD указывает на дефект выравнивания смещения таблицы. Длина таблиц OpenType может не быть кратной четырём, однако их размещение должно соблюдать четырёхбайтовые границы; промежуток до следующей таблицы заполняется выравнивающими байтами.

Этот код отличается от MSSIPOTF_E_TABLE_PADBYTES. Здесь следующая таблица начинается с неправильного смещения. Ошибка заполнения, напротив, относится к размеру или содержимому промежутка, даже если следующее смещение выглядит правдоподобным. Для исправления нужно пересчитать последующие смещения, а не просто вставить один байт.

Как провести диагностику

  • Проверьте остаток от деления каждого смещения каталога на четыре и найдите первую невыровненную запись.
  • Перепакуйте таблицы с нулевым заполнением до следующей четырёхбайтовой границы, затем перепишите все затронутые смещения.
  • После изменения компоновки пересчитайте контрольные суммы каталога, checkSumAdjustmentи все подписи.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.