Код, который вы показали, берет только младший байт разрешений, а затем преобразует его в целое число (указатель указывает на символ, поэтому строка выбирает только символ, а затем преобразует его в целое число).
Вы должны указать, что указатель указывает на значения TW_UNIT32 ДО чтения значения.
Например, число 44 является младшим байтом числа 300 (300 DPI)
Следующий код должен делатьэто:
TW_UINT32 res = ((TW_UINT32*)(en->ItemList))[i];
или
TW_UINT32 res = *((TW_UINT32*)(en->ItemList + i * 4));